@splinetool/loader 0.9.56 → 0.9.57

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,4 +1,4 @@
1
- var Rm=Object.create;var jn=Object.defineProperty,Fm=Object.defineProperties,Vm=Object.getOwnPropertyDescriptor,jm=Object.getOwnPropertyDescriptors,Um=Object.getOwnPropertyNames,vc=Object.getOwnPropertySymbols,km=Object.getPrototypeOf,wc=Object.prototype.hasOwnProperty,Hm=Object.prototype.propertyIsEnumerable;var Sc=(i,t,e)=>t in i?jn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,O=(i,t)=>{for(var e in t||(t={}))wc.call(t,e)&&Sc(i,e,t[e]);if(vc)for(var e of vc(t))Hm.call(t,e)&&Sc(i,e,t[e]);return i},H=(i,t)=>Fm(i,jm(t));var qm=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Lc=(i,t)=>{for(var e in t)jn(i,e,{get:t[e],enumerable:!0})},Wm=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Um(t))!wc.call(i,o)&&o!==e&&jn(i,o,{get:()=>t[o],enumerable:!(r=Vm(t,o))||r.enumerable});return i};var $m=(i,t,e)=>(e=i!=null?Rm(km(i)):{},Wm(t||!i||!i.__esModule?jn(e,"default",{value:i,enumerable:!0}):e,i));var dm=qm((_a,um)=>{(function(i,t){typeof _a=="object"&&typeof um<"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,f,g,S,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],w=[],k=[],T=e==="f"?A:b,m=g=u=0;m<A;m++)w[m]=new Array(T).fill(0);for(m=0;m<b;m++)k[m]=new Array(b).fill(0);var I,x=new Array(b).fill(0);for(m=0;m<A;m++)for(s=0;s<b;s++)w[m][s]=t[m][s];for(m=0;m<b;m++){for(N[m]=u,f=0,l=m+1,s=m;s<A;s++)f+=Math.pow(w[s][m],2);if(f<n)u=0;else for(d=(p=w[m][m])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[m][m]=p-u,s=l;s<b;s++){for(f=0,a=m;a<A;a++)f+=w[a][m]*w[a][s];for(p=f/d,a=m;a<A;a++)w[a][s]=w[a][s]+p*w[a][m]}for(x[m]=u,f=0,s=l;s<b;s++)f+=Math.pow(w[m][s],2);if(f<n)u=0;else{for(d=(p=w[m][m+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[m][m+1]=p-u,s=l;s<b;s++)N[s]=w[m][s]/d;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=w[s][a]*w[m][a];for(a=l;a<b;a++)w[s][a]=w[s][a]+f*N[a]}}g<(S=Math.abs(x[m])+Math.abs(N[m]))&&(g=S)}if(r)for(m=b-1;0<=m;m--){if(u!==0){for(d=w[m][m+1]*u,s=l;s<b;s++)k[s][m]=w[m][s]/d;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=w[m][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][m]}}for(s=l;s<b;s++)k[m][s]=0,k[s][m]=0;k[m][m]=1,u=N[m],l=m}if(e){if(e==="f")for(m=b;m<A;m++){for(s=b;s<A;s++)w[m][s]=0;w[m][m]=1}for(m=b-1;0<=m;m--){for(l=m+1,u=x[m],s=l;s<T;s++)w[m][s]=0;if(u!==0){for(d=w[m][m]*u,s=l;s<T;s++){for(f=0,a=l;a<A;a++)f+=w[a][m]*w[a][s];for(p=f/d,a=m;a<A;a++)w[a][s]=w[a][s]+p*w[a][m]}for(s=m;s<A;s++)w[s][m]=w[s][m]/u}else for(s=m;s<A;s++)w[s][m]=0;w[m][m]=w[m][m]+1}}for(o*=g,a=b-1;0<=a;a--)for(var L=0;L<50;L++){for(I=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){I=!0;break}if(Math.abs(x[l-1])<=o)break}if(!I){for(h=0,c=l-(f=1),m=l;m<a+1&&(p=f*N[m],N[m]=h*N[m],!(Math.abs(p)<=o));m++)if(u=x[m],x[m]=Math.sqrt(p*p+u*u),h=u/(d=x[m]),f=-p/d,e)for(s=0;s<A;s++)S=w[s][c],y=w[s][m],w[s][c]=S*h+y*f,w[s][m]=-S*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((S=x[a-1])-y)*(S+y)+((u=N[a-1])-(d=N[a]))*(u+d))/(2*d*S),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(S/(p<0?p-u:p+u)-d))/g,m=l+(f=h=1);m<a+1;m++){if(u=N[m],S=x[m],d=f*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(N[m-1]=y))+u*(f=d/y),u=-g*f+u*h,d=S*f,S*=h,r)for(s=0;s<b;s++)g=k[s][m-1],y=k[s][m],k[s][m-1]=g*h+y*f,k[s][m]=-g*f+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(x[m-1]=y))*u+(f=d/y)*S,g=-f*u+h*S,e)for(s=0;s<A;s++)S=w[s][m-1],y=w[s][m],w[s][m-1]=S*h+y*f,w[s][m]=-S*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(m=0;m<b;m++)x[m]<o&&(x[m]=0);return{u:w,q:x,v:k}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as L1,Loader as C1}from"three";function Cc(i){return Array.isArray(i)?i:[i]}var Jm=typeof global=="object"&&global&&global.Object===Object&&global,Un=Jm;var Ym=typeof self=="object"&&self&&self.Object===Object&&self,Km=Un||Ym||Function("return this")(),Qe=Km;var Xm=Qe.Symbol,Ct=Xm;var Tc=Object.prototype,Zm=Tc.hasOwnProperty,Qm=Tc.toString,Ri=Ct?Ct.toStringTag:void 0;function ef(i){var t=Zm.call(i,Ri),e=i[Ri];try{i[Ri]=void 0;var r=!0}catch{}var o=Qm.call(i);return r&&(t?i[Ri]=e:delete i[Ri]),o}var Nc=ef;var tf=Object.prototype,rf=tf.toString;function of(i){return rf.call(i)}var Mc=of;var nf="[object Null]",sf="[object Undefined]",Pc=Ct?Ct.toStringTag:void 0;function af(i){return i==null?i===void 0?sf:nf:Pc&&Pc in Object(i)?Nc(i):Mc(i)}var zt=af;function lf(i){return i!=null&&typeof i=="object"}var xt=lf;var cf="[object Symbol]";function hf(i){return typeof i=="symbol"||xt(i)&&zt(i)==cf}var Oo=hf;function pf(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 kn=pf;var uf=Array.isArray,et=uf;var df=1/0,Oc=Ct?Ct.prototype:void 0,Ic=Oc?Oc.toString:void 0;function Ac(i){if(typeof i=="string")return i;if(et(i))return kn(i,Ac)+"";if(Oo(i))return Ic?Ic.call(i):"";var t=i+"";return t=="0"&&1/i==-df?"-0":t}var Dc=Ac;function mf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var bt=mf;function ff(i){return i}var Hn=ff;var yf="[object AsyncFunction]",gf="[object Function]",xf="[object GeneratorFunction]",bf="[object Proxy]";function vf(i){if(!bt(i))return!1;var t=zt(i);return t==gf||t==xf||t==yf||t==bf}var Io=vf;var Sf=Qe["__core-js_shared__"],qn=Sf;var Bc=function(){var i=/[^.]+$/.exec(qn&&qn.keys&&qn.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function wf(i){return!!Bc&&Bc in i}var Ec=wf;var Lf=Function.prototype,Cf=Lf.toString;function Tf(i){if(i!=null){try{return Cf.call(i)}catch{}try{return i+""}catch{}}return""}var Mr=Tf;var Nf=/[\\^$.*+?()[\]{}|]/g,Mf=/^\[object .+?Constructor\]$/,Pf=Function.prototype,Of=Object.prototype,If=Pf.toString,Af=Of.hasOwnProperty,Df=RegExp("^"+If.call(Af).replace(Nf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Bf(i){if(!bt(i)||Ec(i))return!1;var t=Io(i)?Df:Mf;return t.test(Mr(i))}var _c=Bf;function Ef(i,t){return i==null?void 0:i[t]}var Gc=Ef;function _f(i,t){var e=Gc(i,t);return _c(e)?e:void 0}var It=_f;var Gf=It(Qe,"WeakMap"),Wn=Gf;var zc=Object.create,zf=function(){function i(){}return function(t){if(!bt(t))return{};if(zc)return zc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Rc=zf;function Rf(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 Fc=Rf;function Ff(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var $n=Ff;var Vf=800,jf=16,Uf=Date.now;function kf(i){var t=0,e=0;return function(){var r=Uf(),o=jf-(r-e);if(e=r,o>0){if(++t>=Vf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Vc=kf;function Hf(i){return function(){return i}}var jc=Hf;var qf=function(){try{var i=It(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ao=qf;var Wf=Ao?function(i,t){return Ao(i,"toString",{configurable:!0,enumerable:!1,value:jc(t),writable:!0})}:Hn,Uc=Wf;var $f=Vc(Uc),Jn=$f;function Jf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var kc=Jf;var Yf=9007199254740991,Kf=/^(?:0|[1-9]\d*)$/;function Xf(i,t){var e=typeof i;return t=t==null?Yf:t,!!t&&(e=="number"||e!="symbol"&&Kf.test(i))&&i>-1&&i%1==0&&i<t}var Yn=Xf;function Zf(i,t,e){t=="__proto__"&&Ao?Ao(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Do=Zf;function Qf(i,t){return i===t||i!==i&&t!==t}var jr=Qf;var ey=Object.prototype,ty=ey.hasOwnProperty;function ry(i,t,e){var r=i[t];(!(ty.call(i,t)&&jr(r,e))||e===void 0&&!(t in i))&&Do(i,t,e)}var Kn=ry;function oy(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?Do(e,a,l):Kn(e,a,l)}return e}var kt=oy;var Hc=Math.max;function iy(i,t,e){return t=Hc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Hc(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),Fc(i,this,a)}}var Xn=iy;function ny(i,t){return Jn(Xn(i,t,Hn),i+"")}var qc=ny;var sy=9007199254740991;function ay(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=sy}var Zn=ay;function ly(i){return i!=null&&Zn(i.length)&&!Io(i)}var Ur=ly;function cy(i,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?Ur(e)&&Yn(t,e.length):r=="string"&&t in e)?jr(e[t],i):!1}var Wc=cy;function hy(i){return qc(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&&Wc(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 $c=hy;var py=Object.prototype;function uy(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||py;return i===e}var Bo=uy;function dy(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Jc=dy;var my="[object Arguments]";function fy(i){return xt(i)&&zt(i)==my}var Ra=fy;var Yc=Object.prototype,yy=Yc.hasOwnProperty,gy=Yc.propertyIsEnumerable,xy=Ra(function(){return arguments}())?Ra:function(i){return xt(i)&&yy.call(i,"callee")&&!gy.call(i,"callee")},ho=xy;function by(){return!1}var Kc=by;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,vy=Xc&&Xc.exports===Qc,Zc=vy?Qe.Buffer:void 0,Sy=Zc?Zc.isBuffer:void 0,wy=Sy||Kc,Eo=wy;var Ly="[object Arguments]",Cy="[object Array]",Ty="[object Boolean]",Ny="[object Date]",My="[object Error]",Py="[object Function]",Oy="[object Map]",Iy="[object Number]",Ay="[object Object]",Dy="[object RegExp]",By="[object Set]",Ey="[object String]",_y="[object WeakMap]",Gy="[object ArrayBuffer]",zy="[object DataView]",Ry="[object Float32Array]",Fy="[object Float64Array]",Vy="[object Int8Array]",jy="[object Int16Array]",Uy="[object Int32Array]",ky="[object Uint8Array]",Hy="[object Uint8ClampedArray]",qy="[object Uint16Array]",Wy="[object Uint32Array]",Ue={};Ue[Ry]=Ue[Fy]=Ue[Vy]=Ue[jy]=Ue[Uy]=Ue[ky]=Ue[Hy]=Ue[qy]=Ue[Wy]=!0;Ue[Ly]=Ue[Cy]=Ue[Gy]=Ue[Ty]=Ue[zy]=Ue[Ny]=Ue[My]=Ue[Py]=Ue[Oy]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=!1;function $y(i){return xt(i)&&Zn(i.length)&&!!Ue[zt(i)]}var eh=$y;function Jy(i){return function(t){return i(t)}}var _o=Jy;var th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fi=th&&typeof module=="object"&&module&&!module.nodeType&&module,Yy=Fi&&Fi.exports===th,Fa=Yy&&Un.process,Ky=function(){try{var i=Fi&&Fi.require&&Fi.require("util").types;return i||Fa&&Fa.binding&&Fa.binding("util")}catch{}}(),Pr=Ky;var rh=Pr&&Pr.isTypedArray,Xy=rh?_o(rh):eh,Qn=Xy;var Zy=Object.prototype,Qy=Zy.hasOwnProperty;function eg(i,t){var e=et(i),r=!e&&ho(i),o=!e&&!r&&Eo(i),n=!e&&!r&&!o&&Qn(i),s=e||r||o||n,a=s?Jc(i.length,String):[],l=a.length;for(var c in i)(t||Qy.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Yn(c,l)))&&a.push(c);return a}var es=eg;function tg(i,t){return function(e){return i(t(e))}}var ts=tg;var rg=ts(Object.keys,Object),oh=rg;var og=Object.prototype,ig=og.hasOwnProperty;function ng(i){if(!Bo(i))return oh(i);var t=[];for(var e in Object(i))ig.call(i,e)&&e!="constructor"&&t.push(e);return t}var ih=ng;function sg(i){return Ur(i)?es(i):ih(i)}var Go=sg;function ag(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var nh=ag;var lg=Object.prototype,cg=lg.hasOwnProperty;function hg(i){if(!bt(i))return nh(i);var t=Bo(i),e=[];for(var r in i)r=="constructor"&&(t||!cg.call(i,r))||e.push(r);return e}var sh=hg;function pg(i){return Ur(i)?es(i,!0):sh(i)}var lr=pg;var ug=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dg=/^\w*$/;function mg(i,t){if(et(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Oo(i)?!0:dg.test(i)||!ug.test(i)||t!=null&&i in Object(t)}var ah=mg;var fg=It(Object,"create"),Or=fg;function yg(){this.__data__=Or?Or(null):{},this.size=0}var lh=yg;function gg(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ch=gg;var xg="__lodash_hash_undefined__",bg=Object.prototype,vg=bg.hasOwnProperty;function Sg(i){var t=this.__data__;if(Or){var e=t[i];return e===xg?void 0:e}return vg.call(t,i)?t[i]:void 0}var hh=Sg;var wg=Object.prototype,Lg=wg.hasOwnProperty;function Cg(i){var t=this.__data__;return Or?t[i]!==void 0:Lg.call(t,i)}var ph=Cg;var Tg="__lodash_hash_undefined__";function Ng(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Or&&t===void 0?Tg:t,this}var uh=Ng;function zo(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])}}zo.prototype.clear=lh;zo.prototype.delete=ch;zo.prototype.get=hh;zo.prototype.has=ph;zo.prototype.set=uh;var Va=zo;function Mg(){this.__data__=[],this.size=0}var dh=Mg;function Pg(i,t){for(var e=i.length;e--;)if(jr(i[e][0],t))return e;return-1}var kr=Pg;var Og=Array.prototype,Ig=Og.splice;function Ag(i){var t=this.__data__,e=kr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Ig.call(t,e,1),--this.size,!0}var mh=Ag;function Dg(i){var t=this.__data__,e=kr(t,i);return e<0?void 0:t[e][1]}var fh=Dg;function Bg(i){return kr(this.__data__,i)>-1}var yh=Bg;function Eg(i,t){var e=this.__data__,r=kr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var gh=Eg;function Ro(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])}}Ro.prototype.clear=dh;Ro.prototype.delete=mh;Ro.prototype.get=fh;Ro.prototype.has=yh;Ro.prototype.set=gh;var Hr=Ro;var _g=It(Qe,"Map"),qr=_g;function Gg(){this.size=0,this.__data__={hash:new Va,map:new(qr||Hr),string:new Va}}var xh=Gg;function zg(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var bh=zg;function Rg(i,t){var e=i.__data__;return bh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Wr=Rg;function Fg(i){var t=Wr(this,i).delete(i);return this.size-=t?1:0,t}var vh=Fg;function Vg(i){return Wr(this,i).get(i)}var Sh=Vg;function jg(i){return Wr(this,i).has(i)}var wh=jg;function Ug(i,t){var e=Wr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Lh=Ug;function Fo(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])}}Fo.prototype.clear=xh;Fo.prototype.delete=vh;Fo.prototype.get=Sh;Fo.prototype.has=wh;Fo.prototype.set=Lh;var Vi=Fo;var kg="Expected a function";function ja(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(kg);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(ja.Cache||Vi),e}ja.Cache=Vi;var Ch=ja;var Hg=500;function qg(i){var t=Ch(i,function(r){return e.size===Hg&&e.clear(),r}),e=t.cache;return t}var Th=qg;var Wg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$g=/\\(\\)?/g,Jg=Th(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Wg,function(e,r,o,n){t.push(o?n.replace($g,"$1"):r||e)}),t}),Nh=Jg;function Yg(i){return i==null?"":Dc(i)}var Mh=Yg;function Kg(i,t){return et(i)?i:ah(i,t)?[i]:Nh(Mh(i))}var Vo=Kg;var Xg=1/0;function Zg(i){if(typeof i=="string"||Oo(i))return i;var t=i+"";return t=="0"&&1/i==-Xg?"-0":t}var rs=Zg;function Qg(i,t){t=Vo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[rs(t[e++])];return e&&e==r?i:void 0}var Ph=Qg;function ex(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var jo=ex;var Oh=Ct?Ct.isConcatSpreadable:void 0;function tx(i){return et(i)||ho(i)||!!(Oh&&i&&i[Oh])}var Ih=tx;function Ah(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Ih),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Ah(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Dh=Ah;function rx(i){var t=i==null?0:i.length;return t?Dh(i,1):[]}var Bh=rx;function ox(i){return Jn(Xn(i,void 0,Bh),i+"")}var Eh=ox;var ix=ts(Object.getPrototypeOf,Object),Uo=ix;var nx="[object Object]",sx=Function.prototype,ax=Object.prototype,_h=sx.toString,lx=ax.hasOwnProperty,cx=_h.call(Object);function hx(i){if(!xt(i)||zt(i)!=nx)return!1;var t=Uo(i);if(t===null)return!0;var e=lx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&_h.call(e)==cx}var os=hx;function px(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 Gh=px;function ux(){this.__data__=new Hr,this.size=0}var zh=ux;function dx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Rh=dx;function mx(i){return this.__data__.get(i)}var Fh=mx;function fx(i){return this.__data__.has(i)}var Vh=fx;var yx=200;function gx(i,t){var e=this.__data__;if(e instanceof Hr){var r=e.__data__;if(!qr||r.length<yx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Vi(r)}return e.set(i,t),this.size=e.size,this}var jh=gx;function ko(i){var t=this.__data__=new Hr(i);this.size=t.size}ko.prototype.clear=zh;ko.prototype.delete=Rh;ko.prototype.get=Fh;ko.prototype.has=Vh;ko.prototype.set=jh;var is=ko;function xx(i,t){return i&&kt(t,Go(t),i)}var Uh=xx;function bx(i,t){return i&&kt(t,lr(t),i)}var kh=bx;var $h=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Hh=$h&&typeof module=="object"&&module&&!module.nodeType&&module,vx=Hh&&Hh.exports===$h,qh=vx?Qe.Buffer:void 0,Wh=qh?qh.allocUnsafe:void 0;function Sx(i,t){if(t)return i.slice();var e=i.length,r=Wh?Wh(e):new i.constructor(e);return i.copy(r),r}var ns=Sx;function wx(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 Jh=wx;function Lx(){return[]}var ss=Lx;var Cx=Object.prototype,Tx=Cx.propertyIsEnumerable,Yh=Object.getOwnPropertySymbols,Nx=Yh?function(i){return i==null?[]:(i=Object(i),Jh(Yh(i),function(t){return Tx.call(i,t)}))}:ss,Ho=Nx;function Mx(i,t){return kt(i,Ho(i),t)}var Kh=Mx;var Px=Object.getOwnPropertySymbols,Ox=Px?function(i){for(var t=[];i;)jo(t,Ho(i)),i=Uo(i);return t}:ss,as=Ox;function Ix(i,t){return kt(i,as(i),t)}var Xh=Ix;function Ax(i,t,e){var r=t(i);return et(i)?r:jo(r,e(i))}var ls=Ax;function Dx(i){return ls(i,Go,Ho)}var Zh=Dx;function Bx(i){return ls(i,lr,as)}var cs=Bx;var Ex=It(Qe,"DataView"),hs=Ex;var _x=It(Qe,"Promise"),ps=_x;var Gx=It(Qe,"Set"),us=Gx;var Qh="[object Map]",zx="[object Object]",ep="[object Promise]",tp="[object Set]",rp="[object WeakMap]",op="[object DataView]",Rx=Mr(hs),Fx=Mr(qr),Vx=Mr(ps),jx=Mr(us),Ux=Mr(Wn),po=zt;(hs&&po(new hs(new ArrayBuffer(1)))!=op||qr&&po(new qr)!=Qh||ps&&po(ps.resolve())!=ep||us&&po(new us)!=tp||Wn&&po(new Wn)!=rp)&&(po=function(i){var t=zt(i),e=t==zx?i.constructor:void 0,r=e?Mr(e):"";if(r)switch(r){case Rx:return op;case Fx:return Qh;case Vx:return ep;case jx:return tp;case Ux:return rp}return t});var qo=po;var kx=Object.prototype,Hx=kx.hasOwnProperty;function qx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Hx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ip=qx;var Wx=Qe.Uint8Array,Ua=Wx;function $x(i){var t=new i.constructor(i.byteLength);return new Ua(t).set(new Ua(i)),t}var Wo=$x;function Jx(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var np=Jx;var Yx=/\w*$/;function Kx(i){var t=new i.constructor(i.source,Yx.exec(i));return t.lastIndex=i.lastIndex,t}var sp=Kx;var ap=Ct?Ct.prototype:void 0,lp=ap?ap.valueOf:void 0;function Xx(i){return lp?Object(lp.call(i)):{}}var cp=Xx;function Zx(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ds=Zx;var Qx="[object Boolean]",e0="[object Date]",t0="[object Map]",r0="[object Number]",o0="[object RegExp]",i0="[object Set]",n0="[object String]",s0="[object Symbol]",a0="[object ArrayBuffer]",l0="[object DataView]",c0="[object Float32Array]",h0="[object Float64Array]",p0="[object Int8Array]",u0="[object Int16Array]",d0="[object Int32Array]",m0="[object Uint8Array]",f0="[object Uint8ClampedArray]",y0="[object Uint16Array]",g0="[object Uint32Array]";function x0(i,t,e){var r=i.constructor;switch(t){case a0:return Wo(i);case Qx:case e0:return new r(+i);case l0:return np(i,e);case c0:case h0:case p0:case u0:case d0:case m0:case f0:case y0:case g0:return ds(i,e);case t0:return new r;case r0:case n0:return new r(i);case o0:return sp(i);case i0:return new r;case s0:return cp(i)}}var hp=x0;function b0(i){return typeof i.constructor=="function"&&!Bo(i)?Rc(Uo(i)):{}}var ms=b0;var v0="[object Map]";function S0(i){return xt(i)&&qo(i)==v0}var pp=S0;var up=Pr&&Pr.isMap,w0=up?_o(up):pp,dp=w0;var L0="[object Set]";function C0(i){return xt(i)&&qo(i)==L0}var mp=C0;var fp=Pr&&Pr.isSet,T0=fp?_o(fp):mp,yp=T0;var N0=1,M0=2,P0=4,gp="[object Arguments]",O0="[object Array]",I0="[object Boolean]",A0="[object Date]",D0="[object Error]",xp="[object Function]",B0="[object GeneratorFunction]",E0="[object Map]",_0="[object Number]",bp="[object Object]",G0="[object RegExp]",z0="[object Set]",R0="[object String]",F0="[object Symbol]",V0="[object WeakMap]",j0="[object ArrayBuffer]",U0="[object DataView]",k0="[object Float32Array]",H0="[object Float64Array]",q0="[object Int8Array]",W0="[object Int16Array]",$0="[object Int32Array]",J0="[object Uint8Array]",Y0="[object Uint8ClampedArray]",K0="[object Uint16Array]",X0="[object Uint32Array]",Re={};Re[gp]=Re[O0]=Re[j0]=Re[U0]=Re[I0]=Re[A0]=Re[k0]=Re[H0]=Re[q0]=Re[W0]=Re[$0]=Re[E0]=Re[_0]=Re[bp]=Re[G0]=Re[z0]=Re[R0]=Re[F0]=Re[J0]=Re[Y0]=Re[K0]=Re[X0]=!0;Re[D0]=Re[xp]=Re[V0]=!1;function fs(i,t,e,r,o,n){var s,a=t&N0,l=t&M0,c=t&P0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!bt(i))return i;var h=et(i);if(h){if(s=ip(i),!a)return $n(i,s)}else{var p=qo(i),u=p==xp||p==B0;if(Eo(i))return ns(i,a);if(p==bp||p==gp||u&&!o){if(s=l||u?{}:ms(i),!a)return l?Xh(i,kh(s,i)):Kh(i,Uh(s,i))}else{if(!Re[p])return o?i:{};s=hp(i,p,a)}}n||(n=new is);var d=n.get(i);if(d)return d;n.set(i,s),yp(i)?i.forEach(function(S){s.add(fs(S,t,e,S,i,n))}):dp(i)&&i.forEach(function(S,y){s.set(y,fs(S,t,e,y,i,n))});var f=c?l?cs:Zh:l?lr:Go,g=h?void 0:f(i);return kc(g||i,function(S,y){g&&(y=S,S=i[y]),Kn(s,y,fs(S,t,e,y,i,n))}),s}var ys=fs;var Z0=1,Q0=4;function eb(i){return ys(i,Z0|Q0)}var ji=eb;function tb(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 vp=tb;var rb=vp(),Sp=rb;function ob(i,t,e){(e!==void 0&&!jr(i[t],e)||e===void 0&&!(t in i))&&Do(i,t,e)}var Ui=ob;function ib(i){return xt(i)&&Ur(i)}var wp=ib;function nb(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var ki=nb;function sb(i){return kt(i,lr(i))}var Lp=sb;function ab(i,t,e,r,o,n,s){var a=ki(i,e),l=ki(t,e),c=s.get(l);if(c){Ui(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=et(l),d=!u&&Eo(l),f=!u&&!d&&Qn(l);h=l,u||d||f?et(a)?h=a:wp(a)?h=$n(a):d?(p=!1,h=ns(l,!0)):f?(p=!1,h=ds(l,!0)):h=[]:os(l)||ho(l)?(h=a,ho(a)?h=Lp(a):(!bt(a)||Io(a))&&(h=ms(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Ui(i,e,h)}var Cp=ab;function Tp(i,t,e,r,o){i!==t&&Sp(t,function(n,s){if(o||(o=new is),bt(n))Cp(i,t,s,e,Tp,r,o);else{var a=r?r(ki(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Ui(i,s,a)}},lr)}var Np=Tp;function lb(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Mp=lb;function cb(i,t){return t.length<2?i:Ph(i,Gh(t,0,-1))}var Pp=cb;var hb=$c(function(i,t,e){Np(i,t,e)}),uo=hb;function pb(i,t){return t=Vo(t,i),i=Pp(i,t),i==null||delete i[rs(Mp(t))]}var Op=pb;function ub(i){return os(i)?void 0:i}var Ip=ub;var db=1,mb=2,fb=4,yb=Eh(function(i,t){var e={};if(i==null)return e;var r=!1;t=kn(t,function(n){return n=Vo(n,i),r||(r=n.length>1),n}),kt(i,cs(i),e),r&&(e=ys(e,db|mb|fb,Ip));for(var o=t.length;o--;)Op(e,t[o]);return e}),$o=yb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var mo;(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})(mo||(mo={}));var Ap;(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})(Ap||(Ap={}));var Yo;(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})(Yo||(Yo={}));var Dp;(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})(Dp||(Dp={}));var $r;(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!=null?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})($r||($r={}));var Rt;(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})(Rt||(Rt={}));var cr;(s=>{s.white=H(O({},Rt.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 H(O({},Rt.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 Rt.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})(cr||(cr={}));var gs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(gs||(gs={}));var Bp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Bp||(Bp={}));var Ep;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Ep||(Ep={}));var xs;(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})(xs||(xs={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n=H(O({},r),{[t]:e});return Object.setPrototypeOf(n,Ht.prototype),n}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o: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=H(O({},e),{[n]:s});return Object.setPrototypeOf(a,Ht.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=O({},e);return Object.setPrototypeOf(n,Ht.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Hi(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"&&Hi(r)}return Object.freeze(i)}function _p(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 bs=class extends Error{};function hr(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 Gp(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 zp(){return typeof process<"u"}function Rp(i,t){for(let e of i)t(e.id,e.data),Rp(e.children,t)}function Fp(i,t){t(i.id,i.data);for(let e of i.children)Fp(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(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){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Fp(o,r)}}traverse(e){Rp(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]=H(O({},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]=H(O({},n[c]),{children:a})}Object.setPrototypeOf(n,qt.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:H(O({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 bs("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(O({},h),{fi:o}),l=[...l,h],l.sort((d,f)=>d.fi-f.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(O({},o),n))}r.sort((o,n)=>_p(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 H(O({},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 hr(0,o,o);{let s=n[0].fi;return hr(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 hr(l,l+o,o)}else return hr(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=O({},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 Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(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){var r;return(r=this.get(e))==null?void 0:r.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]=H(O({},a),{data:r}),this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return zp()||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:O({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=H(O({},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 hr(0,r,r);{let n=o[0].fi;return hr(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 hr(a,a+r,r)}else return hr(n.fi,s.fi,r)}}};var Vp=Symbol(),ws=Symbol(),Ko=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Ss);){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[ws];r&&r(),delete this._children[t]}}}},Ha=class extends Ko{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=H(O({},this._current),{[t]:e})}runOp(t){this.reportOp(t,vs.runOp(this._current,t))}},qa=class extends Ko{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(O({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(i,t){if(t===ws)return()=>{i._parent=null};if(t===Vp)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=Ls(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]}}},gb=H(O({},jp),{set(i,t,e){var o;let r={type:0,props:{[t]:(o=Ja(e))!=null?o: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}}),xb=H(O({},jp),{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}}),Xo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{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){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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)}},Zo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{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 H(O({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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&&Cs.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push(H(O({},t),{path:e}))}var Ss=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 Ls(i,t,e){return e instanceof qt?new Xo(i,t,e):e instanceof Je?new Zo(i,t,e):e instanceof Ht?new Proxy(new qa(i,t,e),xb):e!==null&&typeof e=="object"?Gp(e)?e:new Proxy(new Ha(i,t,e),gb):e}function Wa(i){let t=new Ss(i);return[Ls(t,"",i),t]}function $a(i,t){let[e,r]=Wa(i);return t(e),r.result()}function Ja(i){return i instanceof Xo||i instanceof Zo?i._current:i!==null&&typeof i=="object"?i[Vp]:i}var Cs;(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=O({},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 qt||o instanceof Xo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Je||o instanceof Zo)&&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})(Cs||(Cs={}));var Ts=class{},qi=class extends Ts{constructor(e){super();this.id=e}},Wi=class extends Ts{constructor(e){super();this.data=e}};var Ka;try{Ka=new TextDecoder}catch{}var ee,Yr,v=0;var Yp=[],Xa=Yp,Za=0,At={},Oe,Jr,Wt=0,pr=0,Ft,Ir,Tt=[],Ae,Up={useRecords:!1,mapsAsObjects:!0},$i=class{},el=new $i;el.name="MessagePack 0xC1";var Qo=!1,ur=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(ee)return eu(()=>(Ms(),this?this.unpack(t,e):ur.prototype.unpack.call(Up,t,e)));Yr=e>-1?e:t.length,v=0,Za=0,pr=0,Jr=null,Xa=Yp,Ft=null,ee=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=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 ur){if(At=this,this.structures)return Oe=this.structures,Ns();(!Oe||Oe.length>0)&&(Oe=[])}else At=Up,(!Oe||Oe.length>0)&&(Oe=[]);return Ns()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let n=t.length,s=this?this.unpack(t,n):Is.unpack(t,n);if(e){for(e(s);v<n;)if(o=v,e(Ns())===!1)return}else{for(r=[s];v<n;)o=v,r.push(Ns());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{Qo=!1,Ms()}}_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 Ns(){try{if(!At.trusted&&!Qo){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let i=Ye();if(v==Yr)Oe.restoreStructures&&kp(),Oe=null,ee=null,Ir&&(Ir=null);else if(v>Yr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Oe.restoreStructures&&kp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function kp(){for(let i in Oe.restoreStructures)Oe[i]=Oe.restoreStructures[i];Oe.restoreStructures=null}function Ye(){let i=ee[v++];if(i<160)if(i<128){if(i<64)return i;{let t=Oe[i&63]||At.getStructures&&Kp()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Zp()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}else if(i<192){let t=i-160;if(pr>=v)return Jr.slice(v-Wt,(v+=t)-Wt);if(pr==0&&Yr<140){let e=t<16?rl(t):Xp(t);if(e!=null)return e}return Qa(t)}else{let t;switch(i){case 192:return null;case 193:return Ft?(t=Ye(),t>0?Ft[1].slice(Ft.position1,Ft.position1+=t):Ft[0].slice(Ft.position0,Ft.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ya(ee[v++]);case 197:return t=Ae.getUint16(v),v+=2,Ya(t);case 198:return t=Ae.getUint32(v),v+=4,Ya(t);case 199:return fo(ee[v++]);case 200:return t=Ae.getUint16(v),v+=2,fo(t);case 201:return t=Ae.getUint32(v),v+=4,fo(t);case 202:if(t=Ae.getFloat32(v),At.useFloat32>2){let e=Os[(ee[v]&127)<<1|ee[v+1]>>7];return v+=4,(e*t+(t>0?.5:-.5)>>0)/e}return v+=4,t;case 203:return t=Ae.getFloat64(v),v+=8,t;case 204:return ee[v++];case 205:return t=Ae.getUint16(v),v+=2,t;case 206:return t=Ae.getUint32(v),v+=4,t;case 207:return At.int64AsNumber?(t=Ae.getUint32(v)*4294967296,t+=Ae.getUint32(v+4)):t=Ae.getBigUint64(v),v+=8,t;case 208:return Ae.getInt8(v++);case 209:return t=Ae.getInt16(v),v+=2,t;case 210:return t=Ae.getInt32(v),v+=4,t;case 211:return At.int64AsNumber?(t=Ae.getInt32(v)*4294967296,t+=Ae.getUint32(v+4)):t=Ae.getBigInt64(v),v+=8,t;case 212:if(t=ee[v++],t==114)return Jp(ee[v++]&63);{let e=Tt[t];if(e)return e.read?(v++,e.read(Ye())):e.noBuffer?(v++,e()):e(ee.subarray(v,++v));throw new Error("Unknown extension "+t)}case 213:return t=ee[v],t==114?(v++,Jp(ee[v++]&63,ee[v++])):fo(2);case 214:return fo(4);case 215:return fo(8);case 216:return fo(16);case 217:return t=ee[v++],pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):vb(t);case 218:return t=Ae.getUint16(v),v+=2,pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):Sb(t);case 219:return t=Ae.getUint32(v),v+=4,pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):wb(t);case 220:return t=Ae.getUint16(v),v+=2,qp(t);case 221:return t=Ae.getUint32(v),v+=4,qp(t);case 222:return t=Ae.getUint16(v),v+=2,Wp(t);case 223:return t=Ae.getUint32(v),v+=4,Wp(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 bb=/^[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=>bb.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ye);return i.highByte===0&&(i.read=Hp(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Ye()}return r}return e.count=0,i.highByte===0?Hp(t,e):e}var Hp=(i,t)=>function(){let e=ee[v++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Oe[r]||Kp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Kp(){let i=eu(()=>(ee=null,At.getStructures()));return Oe=At._mergeStructures(i,Oe)}var Qa=Ps,vb=Ps,Sb=Ps,wb=Ps;function Ps(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ka)return Ka.decode(ee.subarray(v,v+=i));let e=v+i,r=[];for(t="";v<e;){let o=ee[v++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=ee[v++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=ee[v++]&63,s=ee[v++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=ee[v++]&63,s=ee[v++]&63,a=ee[v++]&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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function qp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}function Wp(i){if(At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Zp()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}}var at=String.fromCharCode;function Xp(i){let t=v,e=new Array(i);for(let r=0;r<i;r++){let o=ee[v++];if((o&128)>0){v=t;return}e[r]=o}return at.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=ee[v++];if((t&128)>1){v-=1;return}return at(t)}}else{let t=ee[v++],e=ee[v++];if((t&128)>0||(e&128)>0){v-=2;return}if(i<3)return at(t,e);let r=ee[v++];if((r&128)>0){v-=3;return}return at(t,e,r)}else{let t=ee[v++],e=ee[v++],r=ee[v++],o=ee[v++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){v-=4;return}if(i<6){if(i===4)return at(t,e,r,o);{let n=ee[v++];if((n&128)>0){v-=5;return}return at(t,e,r,o,n)}}else if(i<8){let n=ee[v++],s=ee[v++];if((n&128)>0||(s&128)>0){v-=6;return}if(i<7)return at(t,e,r,o,n,s);let a=ee[v++];if((a&128)>0){v-=7;return}return at(t,e,r,o,n,s,a)}else{let n=ee[v++],s=ee[v++],a=ee[v++],l=ee[v++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){v-=8;return}if(i<10){if(i===8)return at(t,e,r,o,n,s,a,l);{let c=ee[v++];if((c&128)>0){v-=9;return}return at(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=ee[v++],h=ee[v++];if((c&128)>0||(h&128)>0){v-=10;return}if(i<11)return at(t,e,r,o,n,s,a,l,c,h);let p=ee[v++];if((p&128)>0){v-=11;return}return at(t,e,r,o,n,s,a,l,c,h,p)}else{let c=ee[v++],h=ee[v++],p=ee[v++],u=ee[v++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){v-=12;return}if(i<14){if(i===12)return at(t,e,r,o,n,s,a,l,c,h,p,u);{let d=ee[v++];if((d&128)>0){v-=13;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,d)}}else{let d=ee[v++],f=ee[v++];if((d&128)>0||(f&128)>0){v-=14;return}if(i<15)return at(t,e,r,o,n,s,a,l,c,h,p,u,d,f);let g=ee[v++];if((g&128)>0){v-=15;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,d,f,g)}}}}}function Ya(i){return At.copyBuffers?Uint8Array.prototype.slice.call(ee,v,v+=i):ee.subarray(v,v+=i)}function fo(i){let t=ee[v++];if(Tt[t])return Tt[t](ee.subarray(v,v+=i));throw new Error("Unknown extension type "+t)}var $p=new Array(4096);function Zp(){let i=ee[v++];if(i>=160&&i<192){if(i=i-160,pr>=v)return Jr.slice(v-Wt,(v+=i)-Wt);if(!(pr==0&&Yr<180))return Qa(i)}else return v--,Ye();let t=(i<<5^(i>1?Ae.getUint16(v):i>0?ee[v]:0))&4095,e=$p[t],r=v,o=v+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ae.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=ee[r++],n!=e[s++]){r=1879048192;break}if(r===o)return v=r,e.string;o-=3,r=v}for(e=[],$p[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=ee[r++],e.push(n);let a=i<16?rl(i):Xp(i);return a!=null?e.string=a:e.string=Qa(i)}var Jp=(i,t)=>{var e=Ye();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Oe[i];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[i]=o),Oe[i]=e,e.read=tl(e,r),e.read()},Qp=typeof self=="object"?self:global;Tt[0]=()=>{};Tt[0].noBuffer=!0;Tt[101]=()=>{let i=Ye();return(Qp[i[0]]||Error)(i[1])};Tt[105]=i=>{let t=Ae.getUint32(v-4);Ir||(Ir=new Map);let e=ee[v],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ir.set(t,o);let n=Ye();return o.used?Object.assign(r,n):(o.target=n,n)};Tt[112]=i=>{let t=Ae.getUint32(v-4),e=Ir.get(t);return e.used=!0,e.target};Tt[115]=()=>new Set(Ye());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Tt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Qp[e](Uint8Array.prototype.slice.call(i,1).buffer)};Tt[120]=()=>{let i=Ye();return new RegExp(i[0],i[1])};Tt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=v;v+=t-4,Ft=[Ye(),Ye()],Ft.position0=0,Ft.position1=0;let r=v;v=e;try{return Ye()}finally{v=r}};Tt[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 eu(i){let t=Yr,e=v,r=Za,o=Wt,n=pr,s=Jr,a=Xa,l=Ir,c=Ft,h=new Uint8Array(ee.slice(0,Yr)),p=Oe,u=Oe.slice(0,Oe.length),d=At,f=Qo,g=i();return Yr=t,v=e,Za=r,Wt=o,pr=n,Jr=s,Xa=a,Ir=l,Ft=c,ee=h,Qo=f,Oe=p,Oe.splice(0,Oe.length,...u),At=d,Ae=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Ms(){ee=null,Ir=null,Oe=null}function tu(i){i.unpack?Tt[i.type]=i.unpack:Tt[i.type]=i}var Os=new Array(147);for(let i=0;i<256;i++)Os[i]=+("1e"+Math.floor(45.15-i*.30103));var Is=new ur({useRecords:!1}),Lb=Is.unpack,Cb=Is.unpackMultiple,Tb=Is.unpack,As={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Nb=new Float32Array(1),eA=new Uint8Array(Nb.buffer,0,4);var Ds;try{Ds=new TextEncoder}catch{}var Bs,nl,Es=typeof Buffer<"u",il=Es?Buffer.allocUnsafeSlow:Uint8Array,nu=Es?Buffer:Uint8Array,ru=Es?4294967296:2144337920,_,Ke,M=0,dr,mr=null,Mb=/[\u0080-\uFFFF]/,Ji=Symbol("record-id"),yo=class extends ur{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=nu.prototype.utf8Write?function(m,I,x){return _.utf8Write(m,I,x)}:Ds&&Ds.encodeInto?function(m,I){return Ds.encodeInto(m,_.subarray(I)).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 f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,S=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(m,I){if(_||(_=new il(8192),Ke=new DataView(_.buffer,0,8192),M=0),dr=_.length-10,dr-M<2048?(_=new il(_.length),Ke=new DataView(_.buffer,0,_.length),dr=_.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(mr=["",""],_[M++]=214,_[M++]=98,mr.position=M-r,M+=4):mr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>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 L=0;L<x;L++){let C=o[L];if(!C)continue;let P,$=o.transitions;for(let J=0,oe=C.length;J<oe;J++){let he=C[J];P=$[he],P||(P=$[he]=Object.create(null)),$=P}$[Ji]=L+64}l=x}p||(o.nextId=x+64)}n&&(n=!1),s=o||[];try{if(w(m),mr){Ke.setUint32(mr.position+r,M-mr.position-r);let x=mr;mr=null,w(x[0]),w(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>dr&&T(M),h.offset=M;let x=Ob(_.subarray(r,M),a.idsToInsert);return a=null,x}return I&au?(_.start=r,_.end=M,_):_.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,L=b.length;x<L;x++)b[x][Ji]=0;b=[]}if(n&&h.saveStructures){let x=o.sharedLength||d;o.length>x&&(o=o.slice(0,x));let L=_.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(m)):(l=x,L)}}I&Gb&&(M=r)}};let w=m=>{M>dr&&(_=T(M));var I=typeof m,x;if(I==="string"){let L=m.length;if(mr&&L>=8&&L<4096){let $=Mb.test(m);mr[$?0:1]+=m,_[M++]=193,w($?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let P=L*3;if(M+P>dr&&(_=T(M+P)),L<64||!c){let $,J,oe,he=M+C;for($=0;$<L;$++)J=m.charCodeAt($),J<128?_[he++]=J:J<2048?(_[he++]=J>>6|192,_[he++]=J&63|128):(J&64512)===55296&&((oe=m.charCodeAt($+1))&64512)===56320?(J=65536+((J&1023)<<10)+(oe&1023),$++,_[he++]=J>>18|240,_[he++]=J>>12&63|128,_[he++]=J>>6&63|128,_[he++]=J&63|128):(_[he++]=J>>12|224,_[he++]=J>>6&63|128,_[he++]=J&63|128);x=he-M-C}else x=c(m,M+C,P);x<32?_[M++]=160|x:x<256?(C<2&&_.copyWithin(M+2,M+1,M+1+x),_[M++]=217,_[M++]=x):x<65536?(C<3&&_.copyWithin(M+3,M+2,M+2+x),_[M++]=218,_[M++]=x>>8,_[M++]=x&255):(C<5&&_.copyWithin(M+5,M+3,M+3+x),_[M++]=219,Ke.setUint32(M,x),M+=4),M+=x}else if(I==="number")if(m>>>0===m)m<64?_[M++]=m:m<256?(_[M++]=204,_[M++]=m):m<65536?(_[M++]=205,_[M++]=m>>8,_[M++]=m&255):(_[M++]=206,Ke.setUint32(M,m),M+=4);else if(m>>0===m)m>=-32?_[M++]=256+m:m>=-128?(_[M++]=208,_[M++]=m+256):m>=-32768?(_[M++]=209,Ke.setInt16(M,m),M+=2):(_[M++]=210,Ke.setInt32(M,m),M+=4);else{let L;if((L=this.useFloat32)>0&&m<4294967296&&m>=-2147483648){_[M++]=202,Ke.setFloat32(M,m);let C;if(L<4||(C=m*Os[(_[M]&127)<<1|_[M+1]>>7])>>0===C){M+=4;return}else M--}_[M++]=203,Ke.setFloat64(M,m),M+=8}else if(I==="object")if(!m)_[M++]=192;else{if(a){let C=a.get(m);if(C){if(!C.id){let P=a.idsToInsert||(a.idsToInsert=[]);C.id=P.push(C)}_[M++]=214,_[M++]=112,Ke.setUint32(M,C.id),M+=4;return}else a.set(m,{offset:M-r})}let L=m.constructor;if(L===Object)k(m,!0);else if(L===Array){x=m.length,x<16?_[M++]=144|x:x<65536?(_[M++]=220,_[M++]=x>>8,_[M++]=x&255):(_[M++]=221,Ke.setUint32(M,x),M+=4);for(let C=0;C<x;C++)w(m[C])}else if(L===Map){x=m.size,x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ke.setUint32(M,x),M+=4);for(let[C,P]of m)w(C),w(P)}else{for(let C=0,P=Bs.length;C<P;C++){let $=nl[C];if(m instanceof $){let J=Bs[C];if(J.write){J.type&&(_[M++]=212,_[M++]=J.type,_[M++]=0),w(J.write.call(this,m));return}let oe=_,he=Ke,se=M;_=null;let ge;try{ge=J.pack.call(this,m,F=>(_=oe,oe=null,M+=F,M>dr&&T(M),{target:_,targetView:Ke,position:M-F}),w)}finally{oe&&(_=oe,Ke=he,M=se,dr=_.length-10)}ge&&(ge.length+M>dr&&T(ge.length+M),M=Pb(ge,_,M,J.type));return}}k(m,!m.hasOwnProperty)}}else if(I==="boolean")_[M++]=m?195:194;else if(I==="bigint"){if(m<BigInt(1)<<BigInt(63)&&m>=-(BigInt(1)<<BigInt(63)))_[M++]=211,Ke.setBigInt64(M,m);else if(m<BigInt(1)<<BigInt(64)&&m>0)_[M++]=207,Ke.setBigUint64(M,m);else if(this.largeBigIntToFloat)_[M++]=203,Ke.setFloat64(M,Number(m));else throw new RangeError(m+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?_[M++]=192:(_[M++]=212,_[M++]=0,_[M++]=0);else if(I==="function")w(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},k=this.useRecords===!1?this.variableMapSize?m=>{let I=Object.keys(m),x=I.length;x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ke.setUint32(M,x),M+=4);let L;for(let C=0;C<x;C++)w(L=I[C]),w(m[L])}:(m,I)=>{_[M++]=222;let x=M-r;M+=2;let L=0;for(let C in m)(I||m.hasOwnProperty(C))&&(w(C),w(m[C]),L++);_[x+++r]=L>>8,_[x+r]=L&255}:m=>{let I=Object.keys(m),x,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let $=0,J=I.length;$<J;$++){let oe=I[$];x=L[oe],x||(x=L[oe]=Object.create(null),C++),L=x}let P=L[Ji];if(P)P>=96&&g?(_[M++]=((P-=96)&31)+96,_[M++]=P>>5):_[M++]=P;else{P=s.nextId,P||(P=64),P<S&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(P=s.nextOwnId,P<y||(P=S),s.nextOwnId=P+1):(P>=y&&(P=S),s.nextId=P+1);let $=I.highByte=P>=96&&g?P-96>>5:-1;L[Ji]=P,s[P-64]=I,P<S?(I.isShared=!0,s.sharedLength=P-63,n=!0,$>=0?(_[M++]=(P&31)+96,_[M++]=$):_[M++]=P):($>=0?(_[M++]=213,_[M++]=114,_[M++]=(P&31)+96,_[M++]=$):(_[M++]=212,_[M++]=114,_[M++]=P),C&&(A+=N*C),b.length>=f&&(b.shift()[Ji]=0),b.push(L),w(I))}for(let $=0,J=I.length;$<J;$++)w(m[I[$]])},T=m=>{let I;if(m>16777216){if(m-r>ru)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(ru,Math.round(Math.max((m-r)*(m>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(m-r<<2,_.length-1)>>12)+1<<12;let x=new il(I);return Ke=new DataView(x.buffer,0,I),_.copy?_.copy(x,0,r,m):x.set(_.slice(r,m)),M-=r,r=0,dr=x.length-10,_=x}}useBuffer(t){_=t,Ke=new DataView(_.buffer,_.byteOffset,_.byteLength),M=0}};nl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,$i];Bs=[{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?ou(i,16,t):iu(Es?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==nu&&this.structuredClone?ou(i,ol.indexOf(e.name),t):iu(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function ou(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 iu(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 Pb(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 Ob(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 go(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)");nl.unshift(i.Class),Bs.unshift(i)}tu(i)}var su=new yo({useRecords:!1}),Ib=su.pack,Ab=su.pack;var{NEVER:Db,ALWAYS:Bb,DECIMAL_ROUND:Eb,DECIMAL_FIT:_b}=As,au=512,Gb=1024;var lu=new yo({structuredClone:!0});go({Class:Ht.prototype.constructor,type:1,write(i){return O({},i)},read(i){return Object.setPrototypeOf(i,Ht.prototype),i}});go({Class:Je.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});go({Class:qt.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,qt.prototype),i}});go({Class:qi.prototype.constructor,type:4,write(i){return i.id},read(i){return new qi(i)}});go({Class:Wi.prototype.constructor,type:5,write(i){return i.data},read(i){return new Wi(i)}});function zb(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}var _s;(r=>{function i(o){return lu.pack(o)}r.serialize=i;function t(o){return lu.unpack(o)}r.deserialize=t;function e(o){return zb(i(o)).toString()}r.checksum=e})(_s||(_s={}));var Gs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gs||(Gs={}));var zs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(zs||(zs={}));var sl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(sl||(sl={}));var al;(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})(al||(al={}));var Rs;(t=>t.defaultData=H(O(O({},al.defaultData),sl.defaultData),{cloner:null,booleanExclude:null}))(Rs||(Rs={}));var ll=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(ll||{}),cl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(cl||{}),hl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(hl||{}),Fs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Fs||(Fs={}));var ei;(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:Rt.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]],steps:[0,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:H(O({},Rt.fromHex(6710886)),{a:1}),colorB:H(O({},Rt.fromHex(6710886)),{a:1}),colorC:H(O({},Rt.fromHex(16777215)),{a:1}),colorD:H(O({},Rt.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:cr.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"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}}}})(ei||(ei={}));var xo;(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 Je}}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 Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=ei.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Je;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(xo||(xo={}));var ti;(t=>{function i(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ti||(ti={}));var Vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Vs||(Vs={}));var Yi;(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:ti.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0};throw new Error("not implemented")}t.defaultData=i})(Yi||(Yi={}));var Ki;(o=>{o.identity=H(O({},gs.identity),{hiddenMatrix:$r.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==null?void 0:s.position)||n.position,rotation:(s==null?void 0:s.rotation)||n.rotation,scale:(s==null?void 0:s.scale)||n.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Yo.isEqual(n.position,s.position)?null:s.position,rotation:Yo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Yo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:$r.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Ki||(Ki={}));var Ar;(t=>t.defaultData=O({states:new Je,events:new Je,visible:!0,raycastLock:!1},Ki.identity))(Ar||(Ar={}));var cu;(t=>t.defaultData=O({type:"Empty"},Ar.defaultData))(cu||(cu={}));var js;(t=>t.defaultData=O(O({type:"Mesh"},Ar.defaultData),Rs.defaultData))(js||(js={}));var hu;(t=>t.defaultData=O(O({type:"TextFrame"},Ar.defaultData),Fs.defaultData))(hu||(hu={}));var Us;(t=>t.defaultData=O(O(O({},Ar.defaultData),Ki.identity),mo.defaultData))(Us||(Us={}));var pu;(t=>{function i(e){return O(O({},Ar.defaultData),zs.defaultData(e))}t.defaultData=i})(pu||(pu={}));var uu;(r=>(r.defaultCamera=O({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:$r.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},mo.defaultData),r.defaultMeshObject=H(O(O({name:"Rectangle"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("RectangleGeometry"),material:xo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(O(O({name:"Boolean"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("BooleanGeometry"),material:xo.defaultTwoLayerData("phong","layer1","layer2")})))(uu||(uu={}));var du;(e=>{function i(r,o){if(o===void 0)return r;let n=O({},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&&uo(c,l)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{var a,l;for(let c=0;c<n.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let d=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);d&&uo(d,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){var s,a;if(o===void 0)return r;let n=O({},r);if(Object.assign(n,Ki.merge(n,o)),Jo.is(r.type)){n.orthographic=O({},n.orthographic),n.perspective=O({},n.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(n.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(n.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")n.geometry=O({},n.geometry),Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Gs.is(r.type)){let l=o;n.intensity!==void 0&&(n.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?n.color=l.color:n.color=Rt.clone(l.color))}return n}e.patch=t})(du||(du={}));import{ConeBufferGeometry as Vb}from"three";import{BufferGeometry as Rb,CylinderBufferGeometry as Fb,Float32BufferAttribute as pl,Vector2 as Qt,Vector3 as ks}from"three";var fu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{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=(a=e.radiusTop)!=null?a:r,n=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h: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,f;return p||d?f=new Xi(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,d):f=new Fb(c,h,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(O({},i),{type:"CylinderGeometry"})})}};function Kr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function mu(i){return new Qt(i.y,-i.x)}var Xi=class extends Rb{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 f=[],g=[],S=[],y=[],b=0,A=r/2,N=new ks,w=new ks;d&&t==0&&(t=c),d&&e==0&&(e=h);let k=new Qt(t,A),T=new Qt(e,-A),m=null,I=null,x=null,L=null,C=k.clone().sub(T),P=0,$=0,J=0;u>0&&(P=Math.min(t,e)*(1-u),$=t-P,J=e-P);let oe=k.clone();oe.x-=P;let he=Math.PI-C.angle(),se=C.angle(),ge=Math.tan(se/2),F=Math.tan(he/2),G=ge+F,B=u?G:F,z=u?G:ge;if(c=Math.min(c,(t-$)/B,C.length()/G),h=Math.min(h,(e-J)/z,C.length()/G),c>0){let V=c/ge;m=k.clone().sub(new Qt(V,c)),u&&(x=m.clone(),x.x-=P-G*c),k.sub(C.clone().setLength(V))}if(h>0){let V=h/F;I=T.clone().sub(new Qt(V,-h)),T.add(C.clone().setLength(V)),u&&(L=I.clone(),L.x-=P-G*h,oe.sub(C.clone().setLength(V)))}C=k.clone().sub(T);let D=C.length()<.5,R=[];for(let V=0;V<=o;V++){let E=[],U=V/o,ne=U*l+a,q=new Qt(Math.sin(ne),Math.cos(ne));L&&I?(Y(E,U,q,he,h,L,-1,!0),Y(E,U,q,se,h,I,-1,!1)):I?(Z(E,q,I.x,0,-1),Y(E,U,q,se,h,I,-1,!1)):s||Z(E,q,e,J,-1);let W=mu(C).normalize();if(Kr(W,q,N),!D)for(let K=0;K<=n;K++){let X=K/n,Q=C.clone().multiplyScalar(X).add(T);Kr(Q,q,w),g.push(w.x,w.y,w.z),S.push(N.x,N.y,N.z),y.push(U,.5+w.y/r),E.push(b++)}if(x&&m?(Y(E,U,q,he,c,m,1,!1),Y(E,U,q,se,c,x,1,!0)):m?(Y(E,U,q,he,c,m,1,!1),Z(E,q,m.x,0,1)):s||Z(E,q,t,$,1),u&&!D){let K=mu(C).multiplyScalar(-1).normalize();Kr(K,q,N);for(let X=0;X<=n;X++){let Q=X/n,ae=C.clone().multiplyScalar(-Q).add(oe);Kr(ae,q,w),g.push(w.x,w.y,w.z),S.push(N.x,N.y,N.z),y.push(U,.5+w.y/r),E.push(b++)}}u&&!s&&E.push(E[0]),R.push(E)}for(let V=0;V<R.length-1;V++)for(let E=0;E<R[0].length-1;E++){if(s&&u&&E==n)continue;let U=R[V][E],ne=R[V+1][E],q=R[V+1][E+1],W=R[V][E+1],K=g[q*3+0],X=g[q*3+2];f.push(U,ne,W),(K!=0||X!=0)&&f.push(ne,q,W)}l<Math.PI*2&&(j(-1,R[0],a),j(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new pl(g,3)),this.setAttribute("normal",new pl(S,3)),this.setAttribute("uv",new pl(y,2));function Y(V,E,U,ne,q,W,K,X){for(let Q=0;Q<p+1;Q++){let ae=Q/p,ie=K<0?ae:1-ae;X&&(ie-=1),ie*=ne;let pe=new Qt(Math.sin(ie),Math.cos(ie)*K),Ge=pe.clone().multiplyScalar(q).add(W);Kr(Ge,U,w),g.push(w.x,w.y,w.z),Kr(pe,U,N),S.push(N.x,N.y,N.z),y.push(E,.5+w.y/r),V.push(b++)}}function Z(V,E,U,ne,q){let W=new ks,K=new Qt,X=[U,ne];q<0&&X.reverse();for(let Q of X)K.set(Q,A*q),Kr(K,E,W),g.push(W.x,W.y,W.z),S.push(0,q,0),y.push(.5,.5),V.push(b++)}function j(V,E,U){let ne=new Qt(Math.sin(U),Math.cos(U)),q=new Qt(-Math.cos(U),Math.sin(U)),W=new ks,K=V<0?(ae,ie,pe)=>f.push(ae,ie,pe):(ae,ie,pe)=>f.push(ae,pe,ie),X=new Qt((t+e+$+J)/4,0);Kr(X,ne,W),g.push(W.x,W.y,W.z),S.push(q.x,0,q.y),y.push(.5,.5);let Q=b++;for(let ae of E){let ie=g.slice(ae*3,ae*3+3);g.push(...ie),S.push(q.x,0,q.y);let pe=y.slice(ae*2,ae*2+2);y.push(...pe),b++}for(let ae=Q+1;ae<b-1;ae++)K(Q,ae,ae+1);K(Q,b-1,Q+1)}}};var yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Xi(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new Vb(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:H(O({},i),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as jb,BufferGeometry as Ub,Float32BufferAttribute as ul,Vector3 as Zi}from"three";var gu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 jb(t,e,r,o,n,s):c=new ml(t,e,r,o,n,s,a,l),Object.assign(c,{userData:H(O({},i),{type:"CubeGeometry"})})}},dl=Math.PI/2,ml=class extends Ub{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=[],f=0,g=0;S("z","y","x",-1,-1,r,e,t,s,n,0),S("z","y","x",1,-1,r,e,-t,s,n,1),S("x","z","y",1,1,t,r,e,o,s,2),S("x","z","y",1,-1,t,r,-e,o,s,3),S("x","y","z",1,-1,t,e,r,o,n,4),S("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),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ul(p,3)),this.setAttribute("normal",new ul(u,3)),this.setAttribute("uv",new ul(d,2));function S(A,N,w,k,T,m,I,x,L,C,P){let $=(m-2*a)/L,J=(I-2*a)/C,oe=m/2-a,he=I/2-a,se=x/2,ge=L+1,F=C+1,G=0,B=0,z=new Zi;for(let D=0;D<F;D++){let R=D*J-he;for(let Y=0;Y<ge;Y++){let Z=Y*$-oe;z[A]=Z*k,z[N]=R*T,z[w]=se,p.push(z.x,z.y,z.z),z[A]=0,z[N]=0,z[w]=x>0?1:-1,u.push(z.x,z.y,z.z),d.push(Y/L),d.push(1-D/C),G+=1}}for(let D=0;D<C;D++)for(let R=0;R<L;R++){let Y=f+R+ge*D,Z=f+R+ge*(D+1),j=f+(R+1)+ge*(D+1),V=f+(R+1)+ge*D;h.push(Y,Z,V),h.push(Z,j,V),B+=6}c.addGroup(g,B,P),g+=B,f+=G}function y(A,N,w,k,T,m,I,x,L,C,P){let $=(I-2*a)/C,J=I/2-a,oe=x/2-a,he=L/2,se=C+1,ge=0,F=0,G=new Zi,B=new Zi;for(let z=0;z<l+1;z++){let D=z/l*dl,R=Math.sin(D)*a,Y=(1-Math.cos(D))*a,Z=Math.sin(D),j=Math.cos(D);G[N]=(oe+R)*T,G[w]=(he-Y)*m,B[A]=0,B[N]=Z*Math.sign(G[N]),B[w]=j*Math.sign(G[w]);for(let V=0;V<se;V++){let E=V*$-J;G[A]=E*k,p.push(G.x,G.y,G.z),u.push(B.x,B.y,B.z),d.push(V/C),d.push(0),ge+=1}}for(let z=0;z<l;z++)for(let D=0;D<C;D++){let R=f+D+se*z,Y=f+D+se*(z+1),Z=f+(D+1)+se*(z+1),j=f+(D+1)+se*z;h.push(R,Y,j),h.push(Y,Z,j),F+=6}c.addGroup(g,F,P),g+=F,f+=ge}function b(A,N,w){let k=new Zi,T=new Zi(t/2,e/2,r/2);T.subScalar(a);let m=[],I=A*N*w>0?(L,C,P)=>h.push(L,C,P):(L,C,P)=>h.push(L,P,C);for(let L=0;L<=l;L++){let C=[],P=dl*(1-L/l),$=Math.cos(P),J=Math.sin(P),oe=0;for(let he=0;he<=L;he++){let se=Math.cos(oe),ge=Math.sin(oe);k.x=$*se,k.y=J,k.z=$*ge;let F=T.clone().addScaledVector(k,a);p.push(A*F.x,N*F.y,w*F.z),u.push(A*k.x,N*k.y,w*k.z),d.push(0,0),C.push(f++),oe+=dl/L}m.push(C)}let x=m.length-1;for(let L=0;L<x;L++){let C=m[L],P=m[L+1],$=C.length-1;I(C[0],P[1],P[0]);for(let J=1;J<=$;J++)I(C[J-1],C[J],P[J]),I(C[J],P[J+1],P[J])}}}};import{BufferGeometry as kb,Float32BufferAttribute as fl,Triangle as Hb,Vector3 as Dr,Vector2 as yl}from"three";var Xr=class extends kb{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new fl(a,3)),this.setAttribute("normal",new fl(c,3)),this.setAttribute("uv",new fl(l,2));return;function h(){var ge;n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Dr,g=f.clone(),S=new Hb,y=n*o,b=o-y,A=s+1,N=new Dr,w=(F,G)=>N.subVectors(F,G).normalize(),k=(F,G)=>Array(F).fill(void 0).map(G),T=k(t.length/3,(F,G)=>new Dr().fromArray(t,G*3).setLength(o)),m=[],I=1e6;for(let F=0;F<T.length;F++){let G=T[F],B=[],z,D,R,Y=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let U=Z-Z%3;z=e[U+(Z+1)%3],D=e[U+(Z+2)%3],R=G.distanceToSquared(T[z]),Y=Math.min(Y,R),B.push([z,D,R])}Y+=1e-6;let j=[],V=0,E=B.length;for(let U=0;U<E;U++){[z,D,R]=B[V];let ne=((ge=m[z])==null?void 0:ge.includes(F))==!0;R<=Y&&j.push(z+ +ne*I),V=B.findIndex(q=>q[0]==D)}m.push(j)}let x=[];{let F=0,G=0,B,z,D=d==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let Y=0;Y<s-R;Y++)[F,G]=[B+Y+R+2,z+Y+R+3],x.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];x.push(B,z,B+s+2)}}let L=f.clone(),C=f.clone(),P=f.clone(),$=f.clone(),J=f.clone(),oe=[],he=k(T.length,()=>k(d,()=>f.clone()));for(let F=0;F<T.length;F++){f.copy(T[F]).normalize(),L.copy(f).multiplyScalar(b);let G=m[F];for(let j=0;j<G.length;j++){let V=G[j],E=G[(j+1)%d];S.setFromPointsAndIndices(T,F,V%I,E%I),S.b.sub(S.a).setLength(1e10).add(S.a),S.c.sub(S.a).setLength(1e10).add(S.a),S.closestPointToPoint(L,he[F][j])}let B=[],z=[],D=[],R=new Dr;s==0&&[...he[F]].reduce((j,V)=>j.add(V),R).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],E=(j-1+d)%d,U=he[F][E],ne=he[F][j];f.copy(U).sub(L),g.copy(ne).sub(L);let q=L.angleTo(f),W=f.angleTo(g),K=Math.cos(q)*y;s==0?C.copy(R):C.copy(L).setLength(b+K),z.push(K);let X=[C,U,ne];for(let Q=0;Q<2;Q++){let ae=X[Q],ie=X[Q+1];$.subVectors(ae,L),J.subVectors(ie,L),P.crossVectors($,J).normalize();for(let pe=0;pe<A;pe++){let Ge=[q,W][Q]*pe/A;f.copy($).applyAxisAngle(P,Ge).add(L),B.push(f.clone()),Q&&(w(f,L),V.push([pe==0?ae:f.clone(),N.clone()]))}Q&&(w(ie,L),V.push([ie,N.clone()]))}D.push(V)}oe.push(D);let Y=2*A,Z=2;for(let j=0;j<d;j++){let V=Y*j,E=Y*((j+1)%d),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],J=B[E+q],U.push($);for(let W=1,K=q-Z+1;W<=K;W++)f.lerpVectors($,J,W/(K+1)),f.sub(L).setLength(z[j]).add(L),U.push(f.clone());U.push(J)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[E+A]);let ne=x.map(q=>U[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(w(q,L),[N.x,N.y,N.z])).flat())}}let se=[];for(let F=0;F<m.length;F++)for(let G=0;G<d;G++){let B=m[F][G];if(B<I){let z=m[B].findIndex(Y=>Y%I==F),D=oe[F][G],R=oe[B][z];for(let Y=0;Y<A;Y++){let Z=D[Y],j=R[A-Y],V=D[Y+1],E=R[A-(Y+1)];[Z,j,V,V,j,E].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}se.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;se.length;){let F,G,B,z;[F,G]=se.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=se.indexOf(G),z=B%2,G=se.splice(B-z,2)[1-z];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=N.dot(D[0])<0;R&&N.negate();for(let Y=1;Y<=D.length-2;Y++)[D[Y+ +R],D[Y+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Dr;for(let T=0;T<a.length;T+=3){u.x=a[T+0],u.y=a[T+1],u.z=a[T+2];let m=w(u)/2/Math.PI+.5,I=k(u)/Math.PI+.5;l.push(m,1-I)}let d=new Dr,f=new Dr,g=new Dr,S=new Dr,y=new yl,b=new yl,A=new yl,N=(T,m,I,x)=>{x<0&&T.x===1&&(l[m]=T.x-1),I.x===0&&I.z===0&&(l[m]=x/2/Math.PI+.5)};for(let T=0,m=0;T<a.length;T+=9,m+=6){d.set(a[T+0],a[T+1],a[T+2]),f.set(a[T+3],a[T+4],a[T+5]),g.set(a[T+6],a[T+7],a[T+8]),y.set(l[m+0],l[m+1]),b.set(l[m+2],l[m+3]),A.set(l[m+4],l[m+5]),S.copy(d).add(f).add(g).divideScalar(3);let I=w(S);N(y,m+0,d,I),N(b,m+2,f,I),N(A,m+4,g,I)}for(let T=0;T<l.length;T+=6){let m=l[T+0],I=l[T+2],x=l[T+4],L=Math.max(m,I,x),C=Math.min(m,I,x);L>.9&&C<.1&&(m<.2&&(l[T+0]+=1),I<.2&&(l[T+2]+=1),x<.2&&(l[T+4]+=1))}function w(T){return Math.atan2(T.z,-T.x)}function k(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as qb}from"three";var xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Qi(t*.5,n,s):new qb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(O({},i),{type:"DodecahedronGeometry"})})}},Qi=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 Qi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as rv,Plane as ov,Shape as Du,Vector2 as Br,Vector3 as iv,MathUtils as Ll,LineCurve as Cl,QuadraticBezierCurve as Bu,CubicBezierCurve as $s}from"three";import{CubicBezierCurve as Hs,EllipseCurve as Wb,LineCurve as qs,LineCurve3 as $b,MathUtils as Jb,QuadraticBezierCurve as xl,SplineCurve as Yb,Vector2 as er,Vector3 as vu}from"three";var en=1e-12,ri=class{constructor(t){this.position=new er;this.startPosition=new er;this.uuid=Jb.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 ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},tr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new tr(e,new er(...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 tr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},bl=i=>i,ii=new er,Ws=new er,Kb=new er,Xb=new er,Zb=new er,Qb=new er,Su=new vu,wu=new vu;function Lu(i){let t=new er;t.addVectors(i.v0,ii.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new er;return e.addVectors(i.v2,Ws.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new Hs(i.v0,t,e,i.v2)}function tn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function ev(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function tv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function vl(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 Cu(i,t,e){return bu(i,t)&&bu(t,e)&&gl(i.position,t.position,e.position)}function gl(i,t,e){return ii.copy(t).sub(i).cross(Ws.copy(e).sub(i))===0}function Tu(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 Nu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Mu(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 vl(t,i,e)>Math.PI&&(h*=-1),tn(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 Sl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function bu(i,t){return gl(i.position,i.controls[1].position,t.position)&&gl(i.position,t.controls[0].position,t.position)}function Pu(i,t,e,r,o=.5){let n=ii.subVectors(t,i).multiplyScalar(o).add(i),s=Ws.subVectors(e,t).multiplyScalar(o).add(t),a=Kb.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=Xb.subVectors(s,n).multiplyScalar(o).add(n),h=Zb.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Qb.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 Ou(i,t,e=12,r=!0){let o=wu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=bl(t[l]),h=ii,p=Zr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Hs||c instanceof xl||c instanceof qs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&tv(n,o))continue;n===void 0&&(n=Su),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 Iu(i,t,e,r=12,o=!0){let n=wu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=bl(t[l]),p=ii,u=Zr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof Hs||h instanceof xl||h instanceof qs){if(h.getPoint(d/u,p),n.set(p.x,p.y,0),c!=null&&c.equals(n))continue;c===void 0?c=Su:(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 wl(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=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Zr(i[0].roundedCurveCorner,t)*.5),r}function Zr(i,t=12){return i&&i instanceof Wb?t*2:i&&(i instanceof qs||i instanceof $b)?1:i&&i instanceof Yb?t*i.points.length:t}function Au(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=bl(t[s]),l=Zr(a,e),c=ii;for(let h=0;h<=l;h++)if(a instanceof Hs||a instanceof xl||a instanceof qs){if(a.getPoint(h/l,c),o!==void 0&&ev(o,c,en))continue;o===void 0&&(o=Ws),o.copy(c),i.push(c.x,c.y),n++}}return tn(i[0],i[i.length-2],en)&&tn(i[1],i[i.length-1],en)&&(i.pop(),i.pop()),r&&n>1&&!(tn(i[n-1],i[1],en)&&tn(i[n-2],i[0],en))&&(i.push(i[0],i[1]),n++),i}var Tl=new Br,nv=new Br,sv=new Br,av=new Br,lv=new Br,cv=new Br,Pe=class extends Du{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new rv;this.plane=new ov(new iv(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=Ll.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Pe;return n.isClosed=e.isClosed,n.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Pe.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=Tl.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=Ll.generateUUID()){let n;e instanceof Br?n=e:n=new Br(e,r);let s=new tr(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 Ou(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=wl(this.points,e,!1),this.roundedCurveDivisions=wl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Iu(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),Au(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=Zr(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(Sl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(Tl.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){Sl(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){var o,n,s;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let a=0,l=this.points.length;a<l;a++){let c=this.points[a];if(a===0)this.moveTo(c.position.x,c.position.y);else{let h=this.points[a-1];this._applyCurveForPoint(c,h)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let a=this.points[0],l=this.points[this.points.length-1];this._applyCurveForPoint(a,l)}if(this.points.length>2){let a=0;for(let l=0,c=this.points.length;l<c;l++){let h=this.points[l],p=(o=this.points[l-1])!=null?o:this.points[this.points.length-1],u=(n=this.points[l+1])!=null?n:this.points[0],d=h.roundness,f=p&&u&&Cu(p,h,u);if(!h.controlsMoved()&&d>0&&!f){let g=h.curveBefore,S=h.curveAfter;if(g===void 0||S===void 0)continue;let y=h.roundedCurveBefore,b=h.roundedCurveAfter,A=g.getLength(),N=S.getLength(),w=Math.min(d,A*.499),k=Math.min(d,N*.499),T=Math.min(w,k),m=1-T/A,I=T/N,x=g.getPointAt(m,Tl),L=S.getPointAt(I,nv);this._subSplitCurve(g,y,m,x,void 0),this._subSplitCurve(S,b,I,void 0,L);let C;if(this.useCubicForRoundedCorners){let P=vl(x,h.position,L)/2,$=Math.tan(P)*x.distanceTo(h.position),[J,oe]=Tu(x,L,$,sv,av),he=Nu(J,oe,h.position),[se,ge]=Mu(he,x,L,$,lv,cv);C=new $s(x.clone(),se.clone(),ge.clone(),L.clone())}else C=new Bu(x.clone(),h.position.clone(),L.clone());h.roundedCurveCorner=C,this.roundedCurves.splice(l+a,0,C),a++}}}e&&((s=this.eventDispatcher)==null||s.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,n,s){if(e instanceof Cl)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=Pu(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 Pe(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){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let n=0;n<r;n++){let s=n*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],u=e.points[s+5],d=e.points[s+6],f=new tr(Ll.generateUUID(),new Br(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(n=>{let s=new Pe;return s.fromJSON(n),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof $s&&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 Bu&&(n[a]=Lu(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 $s?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof Cl&&(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 $s?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof Cl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Du&&(this.shapeHoles=e.holes.map(n=>{let s=new Pe;return s.fromShape(n),s})),this.update(),this}};var Ml=Math.PI*2;function Nl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function hv(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 Eu(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 pv(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),f=h*p-h*d-p*u;f<0&&(f=0),f/=h*d+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,S=f*-n/o*s,y=g+(i+e)/2,b=S+(t+r)/2,A=(s-g)/o,N=(a-S)/n,w=(-s-g)/o,k=(-a-S)/n,T=Eu(1,0,A,N),m=Eu(A,N,w,k);return!c&&m>0&&(m-=Ml),c&&m<0&&(m+=Ml),{centerx:y,centery:b,ang1:T,ang2:m}}function _u({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=pv(i,t,e,r,o,n,c,h,s,a),{ang1:d,ang2:f}=u,{centerx:g,centery:S}=u,y=Math.abs(f)/(Ml/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(hv(d,f)),d+=f;return l.map(A=>{let{x:N,y:w}=Nl(A[0],o,n,g,S),{x:k,y:T}=Nl(A[1],o,n,g,S),{x:m,y:I}=Nl(A[2],o,n,g,S);return{x1:N,y1:w,x2:k,y2:T,x:m,y:I}})}import{BufferAttribute as Ys,BufferGeometry as yv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function de(i,t){if(!i)throw t||"Assertion Failed!"}var le=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){de(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){de(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){de(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){de(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}(),rn=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}(),Js=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}(),ni=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}(),Gu=function(){function i(){var t=new ni,e=new rn,r=new Js(0),o=new Js(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 Js(0),r=new Js(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;de(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;de(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 ni,e=new ni,r=new rn,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 ni;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new rn;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 rn;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 ni;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 rn;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&&le.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&le.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){de(o.prev===n),l=o.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(de(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){de(s.prev===a),l=s.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(de(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)de(l.Sym.next===c.Sym),de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Org!==null),de(l.Dst!==null),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l);de(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}(),zu=function(){function i(){this.handle=null}return i}(),Ru=function(){function i(){this.key=null,this.node=0}return i}(),uv=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 zu,this.handles[r]=new Ru;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,de(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 zu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Ru}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;de(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}(),Pl=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}(),Fu=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),dv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Fu,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 Fu;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}(),mv=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?le.vertLeq(n.Org,s.Org)?le.edgeSign(s.Dst,n.Org,s.Org)<=0:le.edgeSign(n.Dst,s.Org,n.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(n.Dst,o,n.Org)>=0;var a=le.edgeEval(n.Dst,o,n.Org),l=le.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&de(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){de(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 Pl;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.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 de(le.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,de(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=le.vertL1dist(e,t),n=le.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(le.vertLeq(o.Org,n.Org)){if(le.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;le.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(le.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(de(!le.vertEq(o.Dst,n.Dst)),le.vertLeq(o.Dst,n.Dst)){if(le.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(le.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 ni,d,f;if(de(!le.vertEq(c,l)),de(le.edgeSign(l,t.event,s)<=0),de(le.edgeSign(c,t.event,a)>=0),de(s!==t.event&&a!==t.event),de(!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(le.vertLeq(s,a)){if(le.edgeSign(c,s,a)>0)return!1}else if(le.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),le.intersect(l,s,c,a,u),de(Math.min(s.t,l.t)<=u.t),de(u.t<=Math.max(a.t,c.t)),de(Math.min(c.s,l.s)<=u.s),de(u.s<=Math.max(a.s,s.s)),le.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=le.vertLeq(s,a)?s:a,le.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),le.vertEq(u,s)||le.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!le.vertEq(l,t.event)&&le.edgeSign(l,t.event,u)>=0||!le.vertEq(c,t.event)&&le.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),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(le.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),le.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),le.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),le.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}le.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,le.vertEq(o.Org,r)){de(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!le.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}de(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(de(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),le.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 Pl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=le.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);de(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 Pl,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 dv(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||(de(e.fixUpperEdge),de(++r===1)),de(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,le.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 uv(n,le.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,de(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||!le.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}(),fv=function(){function i(){this.mesh=new Gu,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=qe.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],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var S=0;S<3;++S)n=e.coords[S],c[S]=n,f[S]=e,l[S]=n,d[S]=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,f[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=d[b],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(;le.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;le.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(le.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(le.edgeGoesLeft(o.Lnext)||le.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&&(le.edgeGoesRight(r.Lprev)||le.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===ot.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===ot.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var f=l;f<r;++f)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 Gu),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=qe.ODD),e===void 0&&(e=ot.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_(),mv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function bo(i){var t=i.windingRule,e=t===void 0?qe.ODD:t,r=i.elementType,o=r===void 0?ot.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,f=d===void 0?!0:d,g=i.debug,S=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new fv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:S?y.mesh:void 0}}}var UD=qe.ODD,kD=qe.NONZERO,HD=qe.POSITIVE,qD=qe.NEGATIVE,WD=qe.ABS_GEQ_TWO,$D=ot.POLYGONS,JD=ot.CONNECTED_POLYGONS,YD=ot.BOUNDARY_CONTOURS;var si=class extends yv{constructor(e,r=12,o={}){var f,g,S;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=n.length/2;y<b;y++){let A=y*2,N=n[A+0],w=n[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&w!==p&&(c=!1),h=N,p=w,!l&&!c)break}!l&&!c&&(a=bo({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=(f=a==null?void 0:a.vertexCount)!=null?f:1,d=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new Ys(new Float32Array(u*3),3),this._normalAttribute=new Ys(new Float32Array(u*3),3),this._uvAttribute=new Ys(new Float32Array(u*2),2),this._indexAttribute=new Ys(new Uint32Array(d*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let T=0,m=u;T<m;T++){let I=T*2,x=a.vertices[I+0],L=a.vertices[I+1];x<y&&(y=x),x>b&&(b=x),L<A&&(A=L),L>N&&(N=L)}let w=b-y,k=N-A;for(let T=0,m=u;T<m;T++){let I=T*2,x=a.vertices[I+0],L=a.vertices[I+1],C=(x-y)/w,P=(L-A)/k;this._positionAttribute.setXYZ(T,x,L,0),this._normalAttribute.setXYZ(T,0,0,1),this._uvAttribute.setXY(T,C,P)}for(let T=0,m=d;T<m;T++){let I=T*3,x=a.elements[I+0],L=a.elements[I+1],C=a.elements[I+2];this._indexAttribute.setX(I+0,x),this._indexAttribute.setX(I+1,L),this._indexAttribute.setX(I+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((S=a==null?void 0:a.elementCount)!=null?S:1)*3)}clone(){let e=new si(this._shape,this._curveSegments);return e.userData=ji(this.userData),e}};import{BufferAttribute as Xs,BufferGeometry as gv}from"three";var Ks=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*Ks.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*Ks.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)}},on=Ks;on.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ol=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),ai=class extends gv{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(T=>{let m=T.extractShapePointsToFlatArray([],n),I=[];for(let x=m.length-1;x>=1;x-=2){let L=m[x-1],C=m[x-0];I.push(L,C)}return I}),c=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=bo({windingRule:qe.ODD,elementType:ot.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 T=0;T<h.elements.length;T++){let m=h.elements[T],I=T%2===0?c.vertexCount:0;c.elements.push(m+I)}for(let T=0;T<h.vertexIndices.length;T++){let m=h.vertexIndices[T],I=c.vertexCount;c.vertexIndices.push(m+I)}for(let T=0;T<h.vertices.length;T++){let m=h.vertices[T];c.vertices.push(m)}}let u=1/0,d=-1/0,f=1/0,g=-1/0;for(let T=0,m=c.vertexCount;T<m;T++){let I=T*2,x=c.vertices[I+0],L=c.vertices[I+1];x<u&&(u=x),x>d&&(d=x),L<f&&(f=L),L>g&&(g=L)}this._minX=u,this._minY=f,this._width=d-u,this._height=g-f;let S=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new on(S);let y=[],b=[];for(let T=c.elementCount-1;T>=0;T--){let m=T>=p,I=T*2,x=c.elements[I+0],L=c.elements[I+1],C=x+L,P={start:x,count:L,normals:[],continuous:[],concave:[]},$=x,J=C-1,oe=x+1,he=this._shape.roundedCurves.length;do{let G=$-x,B=c.vertices[J*2+0],z=c.vertices[J*2+1],D=c.vertices[$*2+0],R=c.vertices[$*2+1],Y=c.vertices[oe*2+0],Z=c.vertices[oe*2+1],j=D-B,V=R-z,E=Math.sqrt(j*j+V*V);j/=E,V/=E;let U=D-Y,ne=R-Z,q=Math.sqrt(U*U+ne*ne);U/=q,ne/=q,P.normals[G*2+0]=-ne,P.normals[G*2+1]=U,P.concave[G]=j*ne-V*U>0;let W=c.vertexIndices[$];if(Array.isArray(W))P.continuous[G]=!1;else{let[K,X]=this._shape.getCurveIndexFromVertexId(W-1,!0);if(X>0&&X<1)P.continuous[G]=!0;else{let Q=X===1?K+1:K-1;Q=(Q+he)%he;let ae=X===1?0:1,ie=this._shape.roundedCurves[K].getTangent(X),pe=this._shape.roundedCurves[Q].getTangent(ae);P.continuous[G]=ie.dot(pe)>.95}}m&&(P.normals[G*2+0]*=-1,P.normals[G*2+1]*=-1),[J,$,oe]=[$,oe,oe+1],oe>=C&&(oe-=L)}while(oe!==x+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((G,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,C*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],Y=[],Z=[],j=0;for(let E=0;E<L;E++){let U=E*2,ne=(E-1+L)%L*2,q=c.vertices[P.start*2+U+0],W=c.vertices[P.start*2+U+1],K=-P.normals[ne+0]*z,X=-P.normals[ne+1]*z,Q=-P.normals[U+0]*z,ae=-P.normals[U+1]*z;if(P.concave[E]||!P.concave[E]&&m){let ie=Math.atan2(X,K),pe=Math.atan2(ae,Q);pe>ie&&(pe-=Math.PI*2);let Ge=pe-ie;if(P.continuous[E]||m){let xe=ie+Ge/2,$e=Math.cos(xe)*z,Te=Math.sin(xe)*z;D[2*j+0]=q+$e*(m?-1:1),D[2*j+1]=W+Te*(m?-1:1),Z[j]=E,j++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=xe;$e++){let Te=ie+Ge*($e/xe),ht=Math.cos(Te)*z,Lt=Math.sin(Te)*z;D[2*j+0]=q+ht,D[2*j+1]=W+Lt,Z[j]=E,j++}}}else D[2*j+0]=q+K,D[2*j+1]=W+X,Z[j]=E,R[E]=j,j++,D[2*j+0]=q,D[2*j+1]=W,Z[j]=E,j++,D[2*j+0]=q+Q,D[2*j+1]=W+ae,Z[j]=E,Y[E]=j,j++}let V=bo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],W=Z[(ne+1)%Z.length];E.idx=[q,W],E.Sym.idx=[W,q]},vertexIdCallback:E=>{let U=E.Lprev.idx;return[U?U[1]:0,E.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!V.vertexCount)break;for(let E=0;E<V.vertexIndices.length;E++){let[U,ne]=V.vertexIndices[E];if(U===ne)continue;let q=ne;ne<U&&(q+=L);for(let W=U;W<q;W++){let K=W%L,X=(W+1)%L;if(!P.continuous[K]||!P.continuous[X]){V.vertexIndices[E]=[U,K],V.vertexIndices.splice(E+1,0,[X,ne]),V.vertices.splice((E+1)*2,0,V.vertices[E*2],V.vertices[E*2+1]);break}}}se.push({bevelI:G,angle:B,size:z,boundary:V,reverseMap:Z,insetPoints:D})}let ge=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<se.length;G++){let B=se[G-1],z=se[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let Y=P.concave.length,Z=0,j=Ol(Z,L);for(;!B.boundary.vertexIndices.filter(j).length||!z.boundary.vertexIndices.filter(j).length;)Z++,j=Ol(Z,L);let V=B.boundary.vertexIndices.findIndex(j),E=z.boundary.vertexIndices.findIndex(j);do V=(V+1)%D;while(j(B.boundary.vertexIndices[V]));do E=(E+1)%R;while(j(z.boundary.vertexIndices[E]));Z=(Z+1)%L;let U=Z,ne=this.buildBevelVert(P,B,(V-1+D)%D),q=this.buildBevelVert(P,z,(E-1+R)%R),W=ne,K=q,X,Q,ae=!1;do{j=Ol(Z,L);let ie=ge(B,V,j),pe=ge(z,E,j),Ge=ae;if(ae=!1,ie&&!pe){for(let xe=0;xe<ie;xe++)X=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X;ae=!0}else if(!ie&&pe)for(let xe=0;xe<pe;xe++)Q=this.buildBevelVert(P,z,(E+xe)%R,xe/(pe-1)),y.push(K.topN,W.topP,Q.topP),y.push(W.bottomP,K.bottomN,Q.bottomP),K=Q;else if(ie&&pe)if(X=this.buildBevelVert(P,B,V,0),Q=this.buildBevelVert(P,z,E,0),Ge?(y.push(W.topN,Q.topP,K.topN),y.push(W.topN,X.topP,Q.topP),y.push(Q.bottomP,W.bottomN,K.bottomN),y.push(Q.bottomP,X.bottomP,W.bottomN)):(y.push(K.topN,W.topN,X.topP),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,K.bottomN),y.push(X.bottomP,K.bottomN,Q.bottomP)),W=X,K=Q,ie===pe)for(let xe=1;xe<ie;xe++)X=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),Q=this.buildBevelVert(P,z,(E+xe)%R,xe/(pe-1)),y.push(W.topN,X.topP,K.topN),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,K.bottomN),y.push(X.bottomP,K.bottomN,Q.bottomP),W=X,K=Q;else if(ie>pe){let xe=ie/pe,$e=0;for(let Te=1;Te<ie;Te++)X=this.buildBevelVert(P,B,(V+Te)%D,Te/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X,Te>($e+1)*xe&&($e++,Q=this.buildBevelVert(P,z,(E+$e)%R,$e/(pe-1)),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,K.bottomN,Q.bottomP),K=Q)}else{let xe=pe/ie,$e=0;for(let Te=1;Te<pe;Te++)Q=this.buildBevelVert(P,z,(E+Te)%R,Te/(pe-1)),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,K.bottomN,Q.bottomP),K=Q,Te>($e+1)*xe&&($e++,X=this.buildBevelVert(P,B,(V+$e)%D,$e/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X)}V=(V+ie)%D,E=(E+pe)%R,Z=(Z+1)%Y}while(Z!==U)}{let G=se[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(P,G,B),R=this.buildBevelVert(P,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(m){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(m){let G=[];for(let B=se[se.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=se[se.length-1].boundary.vertices[B-1],D=se[se.length-1].boundary.vertices[B-0];G.push(z,D)}b.push(G)}if(!m){let G=se[se.length-1],B=bo({windingRule:se.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),Y=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,Y.top),y.push(Y.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Xs(Uint32Array.from(y),1),N=new Xs(this._buffer.positions,3),w=new Xs(this._buffer.normals,3),k=new Xs(this._buffer.uvs,2);N.needsUpdate=!0,w.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",w),this.setAttribute("uv",k),this.setIndex(A)}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),f=Math.sin(r.angle),g=o*2,S=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,w=(b-this._minX)/this._width,k=(A-this._minY)/this._height,T=e.normals[S+0],m=e.normals[S+1],I=e.normals[y+0],x=e.normals[y+1];if(u){let J=I-T,oe=x-m;T=T+J*(1-n),m=m+oe*(1-n);let he=Math.sqrt(T*T+m*m);T/=he,m/=he}let L=this._buffer.get(p?2:4),C=L*3,P=L*2,$={i:o,fi:c,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=T*d,this._buffer.normals[C+1]=m*d,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=T*d,this._buffer.normals[C+4]=m*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=w,p||(L+=2,C+=6,P+=4,$.topP=L+0,$.bottomP=L+1,this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=I*d,this._buffer.normals[C+1]=x*d,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=I*d,this._buffer.normals[C+4]=x*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=w),this.vertexCache[s]=$,$}clone(){let e=new ai(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ji(this.userData),e}};var ut=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var c,h,p,u,d,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),n=Math.abs((p=e.depth)!=null?p:0),s=(u=i.shape)!=null?u:t==null?void 0:t.shape,a=(d=s==null?void 0:s.roundness)!=null?d:e.roundness;s!==void 0&&(s instanceof Pe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Pe(r,o).fromJSON(s),((f=i.parameters)==null?void 0:f.roundness)!==void 0&&((g=i.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Pe(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 si(i.shape,o):s=new ai(i.shape,t,e,o,r),Object.assign(s,{userData:H(O({},i),{type:"VectorGeometry"})})}};import{MathUtils as ju,Vector2 as Uu}from"three";var ku=Math.PI*2,Hu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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=xv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:H(O({},i),{type:"EllipseGeometry"})})}};function xv(i,t,e,r,o,n){if(r>=ku)return o>30||o%4===0?(vv(i,t,e,n),Math.round(o/4)):Vu(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=_u({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?bv(i,s.x,s.y,c,o,t,e,n):Vu(i,r,o,t,e,n)}function bv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(li(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],d=li(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?qu(i,n,s,a):i.addPoint(li(0,0)),l}function Vu(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(li(c,h))}return t<ku?n>0?qu(i,r,o,n):i.addPoint(li(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Wu(i,r,o,n)),1}function vv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Zs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Zs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Zs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Zs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Wu(i,t,e,r)}function li(i,t){return new tr(ju.generateUUID(),new Uu(i,t))}function Zs(i,t,e,r,o,n){let s=li(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function qu(i,t,e,r){$u(i,t,e,r).forEach(n=>i.addPoint(n))}function Wu(i,t,e,r){let o=$u(i,t,e,r),n=new Pe;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function $u(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new Uu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=ju.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}import{BufferGeometry as Sv,Float32BufferAttribute as Il,Vector3 as Ju}from"three";var Yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{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((l=e.height)!=null?l:r),n=Math.abs((c=e.depth)!=null?c: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 nn(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:H(O({},i),{type:"HelixGeometry"})})}},nn=class extends Sv{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 f=()=>new Ju,g=new Ju,S=f(),y=f(),b=f(),A,N,w,k,T,m,I,x,L=f(),C=f(),P=f(),$=f(),J=f(),oe=f(),he=f(),se=f(),ge=r-2*l+.001,F=ge/s,G=Math.ceil(a*s),B=G+1,z=ge/G,D=-ge/2,R=h+1,Y=2*Math.PI/h,Z=Math.PI/2/u,j=.01,V=Math.min((1-p/100)*l,l-j),E=l-V,U=0,ne=2,q=u*ne+ne,W=R*q/ne,K=W+R*B,X=R*(B+q),[Q,ae,ie]=[3,3,2].map(ke=>Array(X*ke).fill(0)),pe=[],Ge=n-l;function xe(ke,gt){let _t=Math.PI/2;m=gt*z,x=2*Math.PI*(m%F)/F+_t,m+=D,I=Math.sin(x)*Ge,T=Math.cos(x)*Ge,t?ke.set(T,I,m):ke.set(T,m,I)}xe(g,-1e-10),xe(S,0),L.copy(g),xe(g,1);let $e=g.distanceTo(S),Te=E+V,ht=$e*G+2*Te,Lt=V,Cr=ht-Te;for(let ke=0;ke<=G;ke++){xe(y,ke),se.subVectors(y,L).normalize(),L.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),he.crossVectors(se,oe).normalize();let gt=ke===0,_t=ke===G,En=gt?3*Math.PI/2:Z,_n=gt?Lt:Cr,Gn=gt?R:K,zn=gt?0:X-R,Rn=se.clone().multiplyScalar(gt?-E:E).add(y),Fn=se.clone().multiplyScalar(gt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let zi=Ut*Y;if(C.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(zi)),S.copy(he).multiplyScalar(l*Math.sin(zi))),P.copy(C).normalize(),gt||_t){d||(U=zn+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=Rn.getComponent(pt),ae[U*3+pt]=Fn.getComponent(pt)}),ie[U*2]=+_t,ie[U*2+1]=Ut/h),S.copy(P).multiplyScalar(V),b.addVectors(y,S);for(let pt=0;pt<u;pt++){let Po=pt*Z+En;$.addVectors(g.copy(se).multiplyScalar(E*Math.sin(Po)),S.copy(P).multiplyScalar(E*Math.cos(Po))),J.copy($).normalize(),S.addVectors(b,$),$.normalize(),U=Gn+pt*R+Ut,[0,1,2].forEach(co=>{Q[U*3+co]=S.getComponent(co),ae[U*3+co]=J.getComponent(co)});let Vn=+gt+Math.sin(Po);ie[U*2]=(_n+E*Vn)/ht,ie[U*2+1]=Ut/h}}S.addVectors(y,C),U=W+ke*R+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=S.getComponent(pt),ae[U*3+pt]=P.getComponent(pt)}),ie[U*2]=(Te+ke*$e)/ht,ie[U*2+1]=Ut/h}}let yt=B+2*u+ne,Tr=1,[ao,lo]=d?[Tr,Tr+B-1]:[0,yt-1];for(let ke=ao;ke<=lo-1;ke++){let gt=d&&ke===lo-1;for(let _t=0;_t<R-1;_t++)A=ke*R+_t,N=A+1,w=(gt?_t:A)+R,k=(gt?_t+1:N)+R,ke===0?pe.push(N,k,w):ke===yt-2?pe.push(A,N,w):pe.push(A,N,w,N,k,w)}this.setIndex(pe),this.setAttribute("position",new Il(Q,3)),this.setAttribute("normal",new Il(ae,3)),this.setAttribute("uv",new Il(ie,2))}};import{IcosahedronBufferGeometry as wv}from"three";var Ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 sn(t*.5,n,s):new wv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(O({},i),{type:"IcosahedronGeometry"})})}},sn=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 sn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Lv,Shape as Cv}from"three";var Xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s,a;((o=(r=i.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Cv;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 Lv(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:H(O({},i),{type:"LatheGeometry"})})}};import{BufferGeometry as Qu,BufferGeometryLoader as Av,Vector3 as Dv,BoxBufferGeometry as ed}from"three";import{BufferGeometry as Tv,Vector2 as Al,Vector3 as Zu}from"three";import{Geometry as Nv,Face3 as Mv}from"three/examples/jsm/deprecated/Geometry.js";var Pv=["a","b","c"];function Ov(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Dl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Bl(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 Iv(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],Bl(s.a,s.b,i,r,s,e),Bl(s.b,s.c,i,r,s,e),Bl(s.c,s.a,i,r,s,e)}function Qs(i,t,e,r,o){i.push(new Mv(t,e,r,void 0,void 0,o))}function ci(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function ea(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ta=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Tv?t=new Nv().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 Zu,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;Iv(l,c,u,d);let f=[],g,S,y,b,A,N,w;for(let j of Array.from(d.keys())){for(S=d.get(j),y=new Zu,A=3/8,N=1/8,w=S.faces.length,w!=2&&(A=.5,N=0,w!=1),y.addVectors(S.a,S.b).multiplyScalar(A),e.set(0,0,0),s=0;s<w;s++){for(b=S.faces[s],a=0;a<3&&(g=l[Ov(b,Pv[a])],!(g!==S.a&&g!==S.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),S.newEdge=f.length,f.push(y)}let k,T,m,I,x,L,C,P=[];for(o=0,n=l.length;o<n;o++){for(L=l[o],x=u[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),T=1-r*Number(k),m=k,r<=2&&(r==2?(T=3/4,m=1/8):r==1||r==0),C=L.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)I=x[s],g=I.a!==L?I.a:I.b,e.add(g);e.multiplyScalar(Number(m)),C.add(e),P.push(C)}let $=P.concat(f),J=P.length,oe,he,se,ge=[],F=[],G,B,z,D,R=new Al,Y=new Al,Z=new Al;for(o=0,n=c.length;o<n;o++)b=c[o],oe=Number(Dl(b.a,b.b,d).newEdge)+J,he=Number(Dl(b.b,b.c,d).newEdge)+J,se=Number(Dl(b.c,b.a,d).newEdge)+J,Qs(ge,oe,he,se,b.materialIndex),Qs(ge,b.a,oe,se,b.materialIndex),Qs(ge,b.b,he,oe,b.materialIndex),Qs(ge,b.c,se,he,b.materialIndex),p&&(G=h[o],B=G[0],z=G[1],D=G[2],R.set(ci(B.x,z.x),ci(B.y,z.y)),Y.set(ci(z.x,D.x),ci(z.y,D.y)),Z.set(ci(B.x,D.x),ci(B.y,D.y)),ea(F,R,Y,Z),ea(F,B,R,Z),ea(F,z,Y,R),ea(F,D,Z,Y));t.vertices=$,t.faces=ge,p&&(t.faceVertexUvs[0]=F)}};var it=new Dv,td=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s;let e=(s=(n=i.geometry)!=null?n:t==null?void 0:t.geometry)!=null?s:new Qu().copy(new ed(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=O(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){var l;let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=(l=i.geometry)!=null?l:new Qu().copy(new ed(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&n.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=n.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=n),n=new ta(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:H(O({},i),{type:"NonParametricGeometry"})})}static loadFromUrl(i,t,e){new Av(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(n.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(n))})}};var rd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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 S=d*g,y=p+Math.sin(S)*c,b=u+Math.cos(S)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,S=l.points.length;g<S;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(O({},i),{type:"PolygonGeometry"})})}};import{BufferGeometry as Bv,Float32BufferAttribute as El,Vector2 as fr,Vector3 as lt}from"three";var od=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Gl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(O({},i),{type:"PyramidGeometry"})})}};function an(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function _l(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 Ev(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Gl=class extends Bv{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,f=Math.PI/r,g=t*Math.cos(Math.PI/r),S=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-d,0),N=new lt(0,d,0),w=new fr(t,-d),k=new fr(g,-d),T=new fr(0,N.y).sub(k),m=new fr(0,N.y).sub(w),I=new fr(T.y,-T.x).normalize(),x=new fr(m.y,-m.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,C);let P;{let F=new lt(I.x,I.y,0),G=new lt(Math.cos(S)*F.x,F.y,Math.sin(S)*F.x);P=F.angleTo(G)}let $=s/Math.tan((Math.PI-T.angle())/2),J=s/Math.tan((Math.PI-P)/2),oe=new lt;if(!n){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let F=u++,G=[],B=w.clone(),z=$/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,Y=new fr(Math.sin(R),Math.cos(R));an(B,Y,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),G.push(u++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let he=[];{let F=new lt,G=new lt,B=new lt,z=new lt,D=new lt,R=new lt;for(let Y=0;Y<r;Y++){let Z=Y/r*Math.PI*2+f,j=(Y+.5)/r*Math.PI*2+f,V=(Y+1)/r*Math.PI*2+f,E=new fr(Math.sin(Z),Math.cos(Z)),U=new fr(Math.sin(j),Math.cos(j)),ne=new fr(Math.sin(V),Math.cos(V));an(w,E,G),an(w,ne,B),an(I,U,F),_l(N,G,B,J,J,z),c.push(z.x,z.y,z.z),_l(G,N,B,J,$,D),c.push(D.x,D.y,D.z),_l(B,G,N,$,J,R),c.push(R.x,R.y,R.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=u++,W=u++,K=u++;if(l.push(q,W,K),s>0){{let ae=G.clone().add(B).multiplyScalar(.5),ie=N.clone().sub(ae).normalize(),Ge=A.clone().sub(ae).normalize().add(ie).normalize().multiplyScalar(-1),xe=R.clone().sub(D);se(ae,xe,Ge,T.angle())}let X,Q;{let ae=new lt;an(x,ne,ae);let ie=R.clone().add(z).multiplyScalar(.5);ie=Ev(ie,B,N);let pe=R.clone().sub(z);[X,Q]=se(ie,pe,ae,P,z.y)}{let ae=X,ie=ae.clone().setY(0).normalize(),pe=new lt(0,-1,0),Ge=ie.clone().cross(pe);ge(ae,ie,pe,Ge)}he.concat(Q);{let ae=T.angle(),ie=Math.PI-ae,pe=N.clone();pe.y-=s/Math.sin(ae-Math.PI/2);let Ge=new lt,xe=[];for(let Te=0;Te<a;Te++){let ht=[],Lt=Math.PI/2-ie*Te/a,Cr=Math.cos(Lt),yt=Math.sin(Lt),Tr=j;for(let ao=0;ao<=Te;ao++){let lo=Math.cos(Tr),ke=Math.sin(Tr);F.x=Cr*ke,F.y=yt,F.z=Cr*lo,Ge.copy(pe).addScaledVector(F,s),c.push(Ge.x,Ge.y,Ge.z),h.push(F.x,F.y,F.z),p.push(0,0),ht.push(u++),Tr+=Math.PI*2/Te/r}xe.push(ht)}Q.reverse(),xe.push(Q);let $e=xe.length-1;for(let Te=0;Te<$e;Te++){let ht=xe[Te],Lt=xe[Te+1],Cr=ht.length-1;l.push(Lt[1],ht[0],Lt[0]);for(let yt=1;yt<=Cr;yt++)l.push(ht[yt],ht[yt-1],Lt[yt]),l.push(Lt[yt+1],ht[yt],Lt[yt])}}}}}this.setIndex(l),this.setAttribute("position",new El(c,3)),this.setAttribute("normal",new El(h,3)),this.setAttribute("uv",new El(p,2));function se(F,G,B,z,D){let R=-z/2,Y=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(Y));let j=new lt,V=new lt,E=1,U=u,ne=[];for(let q=0;q<=a;q++){let W=R+q/a*z;V.set(0,0,0),V.addScaledVector(Z,Math.sin(W)),V.addScaledVector(B,Math.cos(W));for(let K=0;K<=E;K++){let X=K/E-.5;if(j.copy(F),j.addScaledVector(G,X),j.addScaledVector(V,s),D!=null){let Q=Math.max(0,j.y-D);j.addScaledVector(G,-Q/G.y)}c.push(j.x,j.y,j.z),h.push(V.x,V.y,V.z),p.push(0,0),K===0&&ne.push(u),u++}}for(let q=0;q<a;q++)for(let W=0;W<E;W++){let K=U+W+(E+1)*q,X=K+(E+1),Q=X+1,ae=K+1;l.push(K,X,ae),l.push(X,Q,ae)}return[F.clone().addScaledVector(G,.5),ne]}function ge(F,G,B,z){let D=Math.PI/2,R=m.angle()-D,Y=[],Z=new lt,j=new lt;for(let E=0;E<=a;E++){let U=[],ne=E/a;for(let q=0;q<=E;q++){let K=((E?q/E:0)-.5)*b,X=Math.cos(K),Q=Math.sin(K),ae=Math.atan(Math.tan(R)*X),ie=(D+ae)*ne,pe=Math.cos(ie),Ge=Math.sin(ie);Z.set(0,0,0),Z.addScaledVector(G,Ge*X),Z.addScaledVector(B,pe),Z.addScaledVector(z,Ge*Q),j.copy(F).addScaledVector(Z,s),c.push(j.x,j.y,j.z),h.push(Z.x,Z.y,Z.z),p.push(0,0),U.push(u++)}Y.push(U)}let V=Y.length-1;for(let E=0;E<V;E++){let U=Y[E],ne=Y[E+1],q=U.length-1;l.push(U[0],ne[1],ne[0]);for(let W=1;W<=q;W++)l.push(U[W-1],U[W],ne[W]),l.push(U[W],ne[W+1],ne[W])}}}};var ra=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s,a,l;let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs((l=e.depth)!=null?l: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(N,w,k){return w>e&&k>r?Math.min(N*e/w,N*r/k):w>e?N*e/w:k>r?N*r/k:N}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 f=h.x,g=p.x,S=p.y,y=h.y;t.addPoint(t.createPoint(f,S)),t.addPoint(t.createPoint(g,S)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,w=t.points.length;N<w;N++)t.points[N].roundness=d[N],N>0&&d[N]!==d[N-1]&&(b=!1);b&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(O({},i),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as _v}from"three";var id=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 _v(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(O({},i),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Gv}from"three";var nd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Gv(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:H(O({},i),{type:"PlaneGeometry"})})}};var sd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{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 Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,f=0,g=s*Math.PI/360/o,S=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let w=g*N,k=d+Math.sin(w)*p,T=f+Math.cos(w)*u;h.addPoint(h.createPoint(k,T))}}else for(let N=0;N<o;N++){let w=d+Math.cos(S)*p,k=f+Math.sin(S)*u;h.addPoint(h.createPoint(w,k)),S+=g,w=d+Math.cos(S)*y,k=f+Math.sin(S)*b,N<=o,h.addPoint(h.createPoint(w,k)),S+=g}h.isClosed=!0;for(let N=0,w=h.points.length;N<w;N++)h.points[N].roundness=n;h.roundness=n,h.update();let A=ut.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(O({},i),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as zv}from"three";var oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new zv(t,e);return Object.assign(r,{userData:H(O({},i),{type:"TextFrameGeometry"})})}};var ad=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),n=Math.abs((l=e.depth)!=null?l: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=Rv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(O({},i),{type:"TorusGeometry"})})}};function Rv(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 nn(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as Fv}from"three";var ld=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width),tube:(s=e.tube)!=null?s: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 Fv(a,e,r,o,n,s);return Object.assign(l,{userData:H(O({},i),{type:"TorusKnotGeometry"})})}};var cd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs((s=e.depth)!=null?s: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=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(O({},i),{type:"TriangleGeometry"})})}};var ln={};Lc(ln,{addBarycentricAttribute:()=>Hv,fixUvs:()=>Wv,loadFromUrl:()=>qv,resizeGeometry:()=>kv,roundShapePolygon:()=>Uv});import{BufferGeometryLoader as Vv,Float32BufferAttribute as jv,Vector3 as zl}from"three";var hd=function(i,t){let e=t.x-i.x,r=t.y-i.y,o=Math.sqrt(e*e+r*r),n=e/o,s=r/o,a=Math.atan2(s,n);return{x:e,y:r,len:o,nx:n,ny:s,ang:a}},Uv=(i,t,e)=>{let r,o,n,s,a,l,c,h,p,u,d,f,g,S,y=t.length;for(s=t[y-2],i.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=hd(a,s),A=hd(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,d=Math.asin(c),p=1,u=!1,h<0?d<0?d=Math.PI+d:(d=Math.PI-d,p=-1,u=!0):d>0&&(p=-1,u=!0),f=d/2,S=Math.abs(Math.cos(f)*e/Math.sin(f)),S>Math.min(b.len/2,A.len/2)?(S=Math.min(b.len/2,A.len/2),g=Math.abs(S*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*S,n=a.y+A.ny*S,o+=-A.ny*g*p,n+=A.nx*g*p,i.absarc(o,n,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,u),s=a,a=l}i.closePath()},kv=(i,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=i.userData.parameters,n,s,a;t===0?(t=o.width,n=1):n=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,i.scale(n,s,a),o.width=t,o.height=e,o.depth=r},Hv=(i,t)=>{let e=[new zl(1,0,0),new zl(0,1,0),new zl(0,0,1)],r=i.attributes.position,o=new Float32Array(r.count*3);for(let n=0,s=r.count;n<s;n++)e[n%3].toArray(o,n*3);i.setAttribute(t,new jv(o,3))},qv=i=>new Promise(t=>{new Vv().load(i,r=>t(r))}),Wv=(i,t,e)=>{let r=i.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let n=r.getX(o),s=r.getY(o);r.setXY(o,(n+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as kd,BufferAttribute as Hd,Uint32BufferAttribute as oc,Float32BufferAttribute as ic,Matrix4 as tw,Vector3 as La}from"three";var $v,ia=new Promise(i=>{$v=i});import{BufferGeometryLoader as QS}from"three";import{DoubleSide as YS,EventDispatcher as KS,Matrix3 as XS,Vector3 as rc}from"three";import{NormalBlending as fS,ShaderMaterial as yS,FrontSide as gS}from"three";import{CubeReflectionMapping as sS,CubeRefractionMapping as aS,CubeUVReflectionMapping as lS,LinearEncoding as fd,sRGBEncoding as cS}from"three";var cn=class{constructor(t){t=t!=null?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}};import{MathUtils as Jv}from"three";var ue=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Jv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?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!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?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!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?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}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof ue&&(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)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),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}},nt=new Rl;import{Vector2 as pd}from"three";import{MathUtils as Yv}from"three";var me=class extends ue{constructor(e,r){super(e);this.scope="";r=r!=null?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!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Yv.generateUUID()),o=e.getUUID(o!=null?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!=null?o:this.uuid,e.getTempVar(o,n!=null?n:this.getType(e),s,this.getLabel()).name}};var Fe=class extends me{constructor(e,r){r=r!=null?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}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?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 vt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof pd?e:new pd(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}};import{Vector3 as ud}from"three";var St=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof ud?e:new ud(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}};import{Color as Kv}from"three";var Dt=class extends Kv{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}};var Er=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Dt?e:new Dt(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 Xv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,dd=/[a-z_0-9]+/gi,re=class extends me{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],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&nt.containsKeyword(d)){let S=this.keywords[d];if(!S){let y=nt.getKeywordData(d);y.cache&&(S=e.keywords[d]),S=S||nt.getKeyword(d,e),y.cache&&(e.keywords[d]=S)}g=S.build(e)}d!==g&&(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&&nt.contains(g)&&e.include(nt.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!=null?r:[],this.extensions=o!=null?o:{},this.keywords=n!=null?n:{},this.isMethod){let s=Xv.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}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let n={};for(let s in this.keywords)n[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=n,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var Zv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Fl=class extends me{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Fl.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=Zv.exec(e);this.useDefine=s!=null?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=Fl;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var Qv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
1
+ var Rm=Object.create;var jn=Object.defineProperty,Fm=Object.defineProperties,Vm=Object.getOwnPropertyDescriptor,jm=Object.getOwnPropertyDescriptors,Um=Object.getOwnPropertyNames,vc=Object.getOwnPropertySymbols,km=Object.getPrototypeOf,wc=Object.prototype.hasOwnProperty,Hm=Object.prototype.propertyIsEnumerable;var Sc=(i,t,e)=>t in i?jn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,O=(i,t)=>{for(var e in t||(t={}))wc.call(t,e)&&Sc(i,e,t[e]);if(vc)for(var e of vc(t))Hm.call(t,e)&&Sc(i,e,t[e]);return i},H=(i,t)=>Fm(i,jm(t));var qm=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Lc=(i,t)=>{for(var e in t)jn(i,e,{get:t[e],enumerable:!0})},Wm=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Um(t))!wc.call(i,o)&&o!==e&&jn(i,o,{get:()=>t[o],enumerable:!(r=Vm(t,o))||r.enumerable});return i};var $m=(i,t,e)=>(e=i!=null?Rm(km(i)):{},Wm(t||!i||!i.__esModule?jn(e,"default",{value:i,enumerable:!0}):e,i));var dm=qm((_a,um)=>{(function(i,t){typeof _a=="object"&&typeof um<"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,f,g,S,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],w=[],k=[],T=e==="f"?A:b,m=g=u=0;m<A;m++)w[m]=new Array(T).fill(0);for(m=0;m<b;m++)k[m]=new Array(b).fill(0);var I,x=new Array(b).fill(0);for(m=0;m<A;m++)for(s=0;s<b;s++)w[m][s]=t[m][s];for(m=0;m<b;m++){for(N[m]=u,f=0,l=m+1,s=m;s<A;s++)f+=Math.pow(w[s][m],2);if(f<n)u=0;else for(d=(p=w[m][m])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[m][m]=p-u,s=l;s<b;s++){for(f=0,a=m;a<A;a++)f+=w[a][m]*w[a][s];for(p=f/d,a=m;a<A;a++)w[a][s]=w[a][s]+p*w[a][m]}for(x[m]=u,f=0,s=l;s<b;s++)f+=Math.pow(w[m][s],2);if(f<n)u=0;else{for(d=(p=w[m][m+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[m][m+1]=p-u,s=l;s<b;s++)N[s]=w[m][s]/d;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=w[s][a]*w[m][a];for(a=l;a<b;a++)w[s][a]=w[s][a]+f*N[a]}}g<(S=Math.abs(x[m])+Math.abs(N[m]))&&(g=S)}if(r)for(m=b-1;0<=m;m--){if(u!==0){for(d=w[m][m+1]*u,s=l;s<b;s++)k[s][m]=w[m][s]/d;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=w[m][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][m]}}for(s=l;s<b;s++)k[m][s]=0,k[s][m]=0;k[m][m]=1,u=N[m],l=m}if(e){if(e==="f")for(m=b;m<A;m++){for(s=b;s<A;s++)w[m][s]=0;w[m][m]=1}for(m=b-1;0<=m;m--){for(l=m+1,u=x[m],s=l;s<T;s++)w[m][s]=0;if(u!==0){for(d=w[m][m]*u,s=l;s<T;s++){for(f=0,a=l;a<A;a++)f+=w[a][m]*w[a][s];for(p=f/d,a=m;a<A;a++)w[a][s]=w[a][s]+p*w[a][m]}for(s=m;s<A;s++)w[s][m]=w[s][m]/u}else for(s=m;s<A;s++)w[s][m]=0;w[m][m]=w[m][m]+1}}for(o*=g,a=b-1;0<=a;a--)for(var L=0;L<50;L++){for(I=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){I=!0;break}if(Math.abs(x[l-1])<=o)break}if(!I){for(h=0,c=l-(f=1),m=l;m<a+1&&(p=f*N[m],N[m]=h*N[m],!(Math.abs(p)<=o));m++)if(u=x[m],x[m]=Math.sqrt(p*p+u*u),h=u/(d=x[m]),f=-p/d,e)for(s=0;s<A;s++)S=w[s][c],y=w[s][m],w[s][c]=S*h+y*f,w[s][m]=-S*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((S=x[a-1])-y)*(S+y)+((u=N[a-1])-(d=N[a]))*(u+d))/(2*d*S),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(S/(p<0?p-u:p+u)-d))/g,m=l+(f=h=1);m<a+1;m++){if(u=N[m],S=x[m],d=f*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(N[m-1]=y))+u*(f=d/y),u=-g*f+u*h,d=S*f,S*=h,r)for(s=0;s<b;s++)g=k[s][m-1],y=k[s][m],k[s][m-1]=g*h+y*f,k[s][m]=-g*f+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(x[m-1]=y))*u+(f=d/y)*S,g=-f*u+h*S,e)for(s=0;s<A;s++)S=w[s][m-1],y=w[s][m],w[s][m-1]=S*h+y*f,w[s][m]=-S*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(m=0;m<b;m++)x[m]<o&&(x[m]=0);return{u:w,q:x,v:k}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as w1,Loader as L1}from"three";function Cc(i){return Array.isArray(i)?i:[i]}var Jm=typeof global=="object"&&global&&global.Object===Object&&global,Un=Jm;var Ym=typeof self=="object"&&self&&self.Object===Object&&self,Km=Un||Ym||Function("return this")(),Qe=Km;var Xm=Qe.Symbol,Ct=Xm;var Tc=Object.prototype,Zm=Tc.hasOwnProperty,Qm=Tc.toString,Ri=Ct?Ct.toStringTag:void 0;function ef(i){var t=Zm.call(i,Ri),e=i[Ri];try{i[Ri]=void 0;var r=!0}catch{}var o=Qm.call(i);return r&&(t?i[Ri]=e:delete i[Ri]),o}var Nc=ef;var tf=Object.prototype,rf=tf.toString;function of(i){return rf.call(i)}var Mc=of;var nf="[object Null]",sf="[object Undefined]",Pc=Ct?Ct.toStringTag:void 0;function af(i){return i==null?i===void 0?sf:nf:Pc&&Pc in Object(i)?Nc(i):Mc(i)}var zt=af;function lf(i){return i!=null&&typeof i=="object"}var xt=lf;var cf="[object Symbol]";function hf(i){return typeof i=="symbol"||xt(i)&&zt(i)==cf}var Oo=hf;function pf(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 kn=pf;var uf=Array.isArray,et=uf;var df=1/0,Oc=Ct?Ct.prototype:void 0,Ic=Oc?Oc.toString:void 0;function Ac(i){if(typeof i=="string")return i;if(et(i))return kn(i,Ac)+"";if(Oo(i))return Ic?Ic.call(i):"";var t=i+"";return t=="0"&&1/i==-df?"-0":t}var Dc=Ac;function mf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var bt=mf;function ff(i){return i}var Hn=ff;var yf="[object AsyncFunction]",gf="[object Function]",xf="[object GeneratorFunction]",bf="[object Proxy]";function vf(i){if(!bt(i))return!1;var t=zt(i);return t==gf||t==xf||t==yf||t==bf}var Io=vf;var Sf=Qe["__core-js_shared__"],qn=Sf;var Bc=function(){var i=/[^.]+$/.exec(qn&&qn.keys&&qn.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function wf(i){return!!Bc&&Bc in i}var Ec=wf;var Lf=Function.prototype,Cf=Lf.toString;function Tf(i){if(i!=null){try{return Cf.call(i)}catch{}try{return i+""}catch{}}return""}var Mr=Tf;var Nf=/[\\^$.*+?()[\]{}|]/g,Mf=/^\[object .+?Constructor\]$/,Pf=Function.prototype,Of=Object.prototype,If=Pf.toString,Af=Of.hasOwnProperty,Df=RegExp("^"+If.call(Af).replace(Nf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Bf(i){if(!bt(i)||Ec(i))return!1;var t=Io(i)?Df:Mf;return t.test(Mr(i))}var _c=Bf;function Ef(i,t){return i==null?void 0:i[t]}var Gc=Ef;function _f(i,t){var e=Gc(i,t);return _c(e)?e:void 0}var It=_f;var Gf=It(Qe,"WeakMap"),Wn=Gf;var zc=Object.create,zf=function(){function i(){}return function(t){if(!bt(t))return{};if(zc)return zc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Rc=zf;function Rf(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 Fc=Rf;function Ff(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var $n=Ff;var Vf=800,jf=16,Uf=Date.now;function kf(i){var t=0,e=0;return function(){var r=Uf(),o=jf-(r-e);if(e=r,o>0){if(++t>=Vf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Vc=kf;function Hf(i){return function(){return i}}var jc=Hf;var qf=function(){try{var i=It(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ao=qf;var Wf=Ao?function(i,t){return Ao(i,"toString",{configurable:!0,enumerable:!1,value:jc(t),writable:!0})}:Hn,Uc=Wf;var $f=Vc(Uc),Jn=$f;function Jf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var kc=Jf;var Yf=9007199254740991,Kf=/^(?:0|[1-9]\d*)$/;function Xf(i,t){var e=typeof i;return t=t==null?Yf:t,!!t&&(e=="number"||e!="symbol"&&Kf.test(i))&&i>-1&&i%1==0&&i<t}var Yn=Xf;function Zf(i,t,e){t=="__proto__"&&Ao?Ao(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Do=Zf;function Qf(i,t){return i===t||i!==i&&t!==t}var jr=Qf;var ey=Object.prototype,ty=ey.hasOwnProperty;function ry(i,t,e){var r=i[t];(!(ty.call(i,t)&&jr(r,e))||e===void 0&&!(t in i))&&Do(i,t,e)}var Kn=ry;function oy(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?Do(e,a,l):Kn(e,a,l)}return e}var kt=oy;var Hc=Math.max;function iy(i,t,e){return t=Hc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Hc(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),Fc(i,this,a)}}var Xn=iy;function ny(i,t){return Jn(Xn(i,t,Hn),i+"")}var qc=ny;var sy=9007199254740991;function ay(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=sy}var Zn=ay;function ly(i){return i!=null&&Zn(i.length)&&!Io(i)}var Ur=ly;function cy(i,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?Ur(e)&&Yn(t,e.length):r=="string"&&t in e)?jr(e[t],i):!1}var Wc=cy;function hy(i){return qc(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&&Wc(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 $c=hy;var py=Object.prototype;function uy(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||py;return i===e}var Bo=uy;function dy(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Jc=dy;var my="[object Arguments]";function fy(i){return xt(i)&&zt(i)==my}var Ra=fy;var Yc=Object.prototype,yy=Yc.hasOwnProperty,gy=Yc.propertyIsEnumerable,xy=Ra(function(){return arguments}())?Ra:function(i){return xt(i)&&yy.call(i,"callee")&&!gy.call(i,"callee")},ho=xy;function by(){return!1}var Kc=by;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,vy=Xc&&Xc.exports===Qc,Zc=vy?Qe.Buffer:void 0,Sy=Zc?Zc.isBuffer:void 0,wy=Sy||Kc,Eo=wy;var Ly="[object Arguments]",Cy="[object Array]",Ty="[object Boolean]",Ny="[object Date]",My="[object Error]",Py="[object Function]",Oy="[object Map]",Iy="[object Number]",Ay="[object Object]",Dy="[object RegExp]",By="[object Set]",Ey="[object String]",_y="[object WeakMap]",Gy="[object ArrayBuffer]",zy="[object DataView]",Ry="[object Float32Array]",Fy="[object Float64Array]",Vy="[object Int8Array]",jy="[object Int16Array]",Uy="[object Int32Array]",ky="[object Uint8Array]",Hy="[object Uint8ClampedArray]",qy="[object Uint16Array]",Wy="[object Uint32Array]",Ue={};Ue[Ry]=Ue[Fy]=Ue[Vy]=Ue[jy]=Ue[Uy]=Ue[ky]=Ue[Hy]=Ue[qy]=Ue[Wy]=!0;Ue[Ly]=Ue[Cy]=Ue[Gy]=Ue[Ty]=Ue[zy]=Ue[Ny]=Ue[My]=Ue[Py]=Ue[Oy]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=!1;function $y(i){return xt(i)&&Zn(i.length)&&!!Ue[zt(i)]}var eh=$y;function Jy(i){return function(t){return i(t)}}var _o=Jy;var th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fi=th&&typeof module=="object"&&module&&!module.nodeType&&module,Yy=Fi&&Fi.exports===th,Fa=Yy&&Un.process,Ky=function(){try{var i=Fi&&Fi.require&&Fi.require("util").types;return i||Fa&&Fa.binding&&Fa.binding("util")}catch{}}(),Pr=Ky;var rh=Pr&&Pr.isTypedArray,Xy=rh?_o(rh):eh,Qn=Xy;var Zy=Object.prototype,Qy=Zy.hasOwnProperty;function eg(i,t){var e=et(i),r=!e&&ho(i),o=!e&&!r&&Eo(i),n=!e&&!r&&!o&&Qn(i),s=e||r||o||n,a=s?Jc(i.length,String):[],l=a.length;for(var c in i)(t||Qy.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Yn(c,l)))&&a.push(c);return a}var es=eg;function tg(i,t){return function(e){return i(t(e))}}var ts=tg;var rg=ts(Object.keys,Object),oh=rg;var og=Object.prototype,ig=og.hasOwnProperty;function ng(i){if(!Bo(i))return oh(i);var t=[];for(var e in Object(i))ig.call(i,e)&&e!="constructor"&&t.push(e);return t}var ih=ng;function sg(i){return Ur(i)?es(i):ih(i)}var Go=sg;function ag(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var nh=ag;var lg=Object.prototype,cg=lg.hasOwnProperty;function hg(i){if(!bt(i))return nh(i);var t=Bo(i),e=[];for(var r in i)r=="constructor"&&(t||!cg.call(i,r))||e.push(r);return e}var sh=hg;function pg(i){return Ur(i)?es(i,!0):sh(i)}var lr=pg;var ug=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dg=/^\w*$/;function mg(i,t){if(et(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Oo(i)?!0:dg.test(i)||!ug.test(i)||t!=null&&i in Object(t)}var ah=mg;var fg=It(Object,"create"),Or=fg;function yg(){this.__data__=Or?Or(null):{},this.size=0}var lh=yg;function gg(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ch=gg;var xg="__lodash_hash_undefined__",bg=Object.prototype,vg=bg.hasOwnProperty;function Sg(i){var t=this.__data__;if(Or){var e=t[i];return e===xg?void 0:e}return vg.call(t,i)?t[i]:void 0}var hh=Sg;var wg=Object.prototype,Lg=wg.hasOwnProperty;function Cg(i){var t=this.__data__;return Or?t[i]!==void 0:Lg.call(t,i)}var ph=Cg;var Tg="__lodash_hash_undefined__";function Ng(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Or&&t===void 0?Tg:t,this}var uh=Ng;function zo(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])}}zo.prototype.clear=lh;zo.prototype.delete=ch;zo.prototype.get=hh;zo.prototype.has=ph;zo.prototype.set=uh;var Va=zo;function Mg(){this.__data__=[],this.size=0}var dh=Mg;function Pg(i,t){for(var e=i.length;e--;)if(jr(i[e][0],t))return e;return-1}var kr=Pg;var Og=Array.prototype,Ig=Og.splice;function Ag(i){var t=this.__data__,e=kr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Ig.call(t,e,1),--this.size,!0}var mh=Ag;function Dg(i){var t=this.__data__,e=kr(t,i);return e<0?void 0:t[e][1]}var fh=Dg;function Bg(i){return kr(this.__data__,i)>-1}var yh=Bg;function Eg(i,t){var e=this.__data__,r=kr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var gh=Eg;function Ro(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])}}Ro.prototype.clear=dh;Ro.prototype.delete=mh;Ro.prototype.get=fh;Ro.prototype.has=yh;Ro.prototype.set=gh;var Hr=Ro;var _g=It(Qe,"Map"),qr=_g;function Gg(){this.size=0,this.__data__={hash:new Va,map:new(qr||Hr),string:new Va}}var xh=Gg;function zg(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var bh=zg;function Rg(i,t){var e=i.__data__;return bh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Wr=Rg;function Fg(i){var t=Wr(this,i).delete(i);return this.size-=t?1:0,t}var vh=Fg;function Vg(i){return Wr(this,i).get(i)}var Sh=Vg;function jg(i){return Wr(this,i).has(i)}var wh=jg;function Ug(i,t){var e=Wr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Lh=Ug;function Fo(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])}}Fo.prototype.clear=xh;Fo.prototype.delete=vh;Fo.prototype.get=Sh;Fo.prototype.has=wh;Fo.prototype.set=Lh;var Vi=Fo;var kg="Expected a function";function ja(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(kg);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(ja.Cache||Vi),e}ja.Cache=Vi;var Ch=ja;var Hg=500;function qg(i){var t=Ch(i,function(r){return e.size===Hg&&e.clear(),r}),e=t.cache;return t}var Th=qg;var Wg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$g=/\\(\\)?/g,Jg=Th(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Wg,function(e,r,o,n){t.push(o?n.replace($g,"$1"):r||e)}),t}),Nh=Jg;function Yg(i){return i==null?"":Dc(i)}var Mh=Yg;function Kg(i,t){return et(i)?i:ah(i,t)?[i]:Nh(Mh(i))}var Vo=Kg;var Xg=1/0;function Zg(i){if(typeof i=="string"||Oo(i))return i;var t=i+"";return t=="0"&&1/i==-Xg?"-0":t}var rs=Zg;function Qg(i,t){t=Vo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[rs(t[e++])];return e&&e==r?i:void 0}var Ph=Qg;function ex(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var jo=ex;var Oh=Ct?Ct.isConcatSpreadable:void 0;function tx(i){return et(i)||ho(i)||!!(Oh&&i&&i[Oh])}var Ih=tx;function Ah(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Ih),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Ah(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Dh=Ah;function rx(i){var t=i==null?0:i.length;return t?Dh(i,1):[]}var Bh=rx;function ox(i){return Jn(Xn(i,void 0,Bh),i+"")}var Eh=ox;var ix=ts(Object.getPrototypeOf,Object),Uo=ix;var nx="[object Object]",sx=Function.prototype,ax=Object.prototype,_h=sx.toString,lx=ax.hasOwnProperty,cx=_h.call(Object);function hx(i){if(!xt(i)||zt(i)!=nx)return!1;var t=Uo(i);if(t===null)return!0;var e=lx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&_h.call(e)==cx}var os=hx;function px(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 Gh=px;function ux(){this.__data__=new Hr,this.size=0}var zh=ux;function dx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Rh=dx;function mx(i){return this.__data__.get(i)}var Fh=mx;function fx(i){return this.__data__.has(i)}var Vh=fx;var yx=200;function gx(i,t){var e=this.__data__;if(e instanceof Hr){var r=e.__data__;if(!qr||r.length<yx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Vi(r)}return e.set(i,t),this.size=e.size,this}var jh=gx;function ko(i){var t=this.__data__=new Hr(i);this.size=t.size}ko.prototype.clear=zh;ko.prototype.delete=Rh;ko.prototype.get=Fh;ko.prototype.has=Vh;ko.prototype.set=jh;var is=ko;function xx(i,t){return i&&kt(t,Go(t),i)}var Uh=xx;function bx(i,t){return i&&kt(t,lr(t),i)}var kh=bx;var $h=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Hh=$h&&typeof module=="object"&&module&&!module.nodeType&&module,vx=Hh&&Hh.exports===$h,qh=vx?Qe.Buffer:void 0,Wh=qh?qh.allocUnsafe:void 0;function Sx(i,t){if(t)return i.slice();var e=i.length,r=Wh?Wh(e):new i.constructor(e);return i.copy(r),r}var ns=Sx;function wx(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 Jh=wx;function Lx(){return[]}var ss=Lx;var Cx=Object.prototype,Tx=Cx.propertyIsEnumerable,Yh=Object.getOwnPropertySymbols,Nx=Yh?function(i){return i==null?[]:(i=Object(i),Jh(Yh(i),function(t){return Tx.call(i,t)}))}:ss,Ho=Nx;function Mx(i,t){return kt(i,Ho(i),t)}var Kh=Mx;var Px=Object.getOwnPropertySymbols,Ox=Px?function(i){for(var t=[];i;)jo(t,Ho(i)),i=Uo(i);return t}:ss,as=Ox;function Ix(i,t){return kt(i,as(i),t)}var Xh=Ix;function Ax(i,t,e){var r=t(i);return et(i)?r:jo(r,e(i))}var ls=Ax;function Dx(i){return ls(i,Go,Ho)}var Zh=Dx;function Bx(i){return ls(i,lr,as)}var cs=Bx;var Ex=It(Qe,"DataView"),hs=Ex;var _x=It(Qe,"Promise"),ps=_x;var Gx=It(Qe,"Set"),us=Gx;var Qh="[object Map]",zx="[object Object]",ep="[object Promise]",tp="[object Set]",rp="[object WeakMap]",op="[object DataView]",Rx=Mr(hs),Fx=Mr(qr),Vx=Mr(ps),jx=Mr(us),Ux=Mr(Wn),po=zt;(hs&&po(new hs(new ArrayBuffer(1)))!=op||qr&&po(new qr)!=Qh||ps&&po(ps.resolve())!=ep||us&&po(new us)!=tp||Wn&&po(new Wn)!=rp)&&(po=function(i){var t=zt(i),e=t==zx?i.constructor:void 0,r=e?Mr(e):"";if(r)switch(r){case Rx:return op;case Fx:return Qh;case Vx:return ep;case jx:return tp;case Ux:return rp}return t});var qo=po;var kx=Object.prototype,Hx=kx.hasOwnProperty;function qx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Hx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ip=qx;var Wx=Qe.Uint8Array,Ua=Wx;function $x(i){var t=new i.constructor(i.byteLength);return new Ua(t).set(new Ua(i)),t}var Wo=$x;function Jx(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var np=Jx;var Yx=/\w*$/;function Kx(i){var t=new i.constructor(i.source,Yx.exec(i));return t.lastIndex=i.lastIndex,t}var sp=Kx;var ap=Ct?Ct.prototype:void 0,lp=ap?ap.valueOf:void 0;function Xx(i){return lp?Object(lp.call(i)):{}}var cp=Xx;function Zx(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ds=Zx;var Qx="[object Boolean]",e0="[object Date]",t0="[object Map]",r0="[object Number]",o0="[object RegExp]",i0="[object Set]",n0="[object String]",s0="[object Symbol]",a0="[object ArrayBuffer]",l0="[object DataView]",c0="[object Float32Array]",h0="[object Float64Array]",p0="[object Int8Array]",u0="[object Int16Array]",d0="[object Int32Array]",m0="[object Uint8Array]",f0="[object Uint8ClampedArray]",y0="[object Uint16Array]",g0="[object Uint32Array]";function x0(i,t,e){var r=i.constructor;switch(t){case a0:return Wo(i);case Qx:case e0:return new r(+i);case l0:return np(i,e);case c0:case h0:case p0:case u0:case d0:case m0:case f0:case y0:case g0:return ds(i,e);case t0:return new r;case r0:case n0:return new r(i);case o0:return sp(i);case i0:return new r;case s0:return cp(i)}}var hp=x0;function b0(i){return typeof i.constructor=="function"&&!Bo(i)?Rc(Uo(i)):{}}var ms=b0;var v0="[object Map]";function S0(i){return xt(i)&&qo(i)==v0}var pp=S0;var up=Pr&&Pr.isMap,w0=up?_o(up):pp,dp=w0;var L0="[object Set]";function C0(i){return xt(i)&&qo(i)==L0}var mp=C0;var fp=Pr&&Pr.isSet,T0=fp?_o(fp):mp,yp=T0;var N0=1,M0=2,P0=4,gp="[object Arguments]",O0="[object Array]",I0="[object Boolean]",A0="[object Date]",D0="[object Error]",xp="[object Function]",B0="[object GeneratorFunction]",E0="[object Map]",_0="[object Number]",bp="[object Object]",G0="[object RegExp]",z0="[object Set]",R0="[object String]",F0="[object Symbol]",V0="[object WeakMap]",j0="[object ArrayBuffer]",U0="[object DataView]",k0="[object Float32Array]",H0="[object Float64Array]",q0="[object Int8Array]",W0="[object Int16Array]",$0="[object Int32Array]",J0="[object Uint8Array]",Y0="[object Uint8ClampedArray]",K0="[object Uint16Array]",X0="[object Uint32Array]",Re={};Re[gp]=Re[O0]=Re[j0]=Re[U0]=Re[I0]=Re[A0]=Re[k0]=Re[H0]=Re[q0]=Re[W0]=Re[$0]=Re[E0]=Re[_0]=Re[bp]=Re[G0]=Re[z0]=Re[R0]=Re[F0]=Re[J0]=Re[Y0]=Re[K0]=Re[X0]=!0;Re[D0]=Re[xp]=Re[V0]=!1;function fs(i,t,e,r,o,n){var s,a=t&N0,l=t&M0,c=t&P0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!bt(i))return i;var h=et(i);if(h){if(s=ip(i),!a)return $n(i,s)}else{var p=qo(i),u=p==xp||p==B0;if(Eo(i))return ns(i,a);if(p==bp||p==gp||u&&!o){if(s=l||u?{}:ms(i),!a)return l?Xh(i,kh(s,i)):Kh(i,Uh(s,i))}else{if(!Re[p])return o?i:{};s=hp(i,p,a)}}n||(n=new is);var d=n.get(i);if(d)return d;n.set(i,s),yp(i)?i.forEach(function(S){s.add(fs(S,t,e,S,i,n))}):dp(i)&&i.forEach(function(S,y){s.set(y,fs(S,t,e,y,i,n))});var f=c?l?cs:Zh:l?lr:Go,g=h?void 0:f(i);return kc(g||i,function(S,y){g&&(y=S,S=i[y]),Kn(s,y,fs(S,t,e,y,i,n))}),s}var ys=fs;var Z0=1,Q0=4;function eb(i){return ys(i,Z0|Q0)}var ji=eb;function tb(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 vp=tb;var rb=vp(),Sp=rb;function ob(i,t,e){(e!==void 0&&!jr(i[t],e)||e===void 0&&!(t in i))&&Do(i,t,e)}var Ui=ob;function ib(i){return xt(i)&&Ur(i)}var wp=ib;function nb(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var ki=nb;function sb(i){return kt(i,lr(i))}var Lp=sb;function ab(i,t,e,r,o,n,s){var a=ki(i,e),l=ki(t,e),c=s.get(l);if(c){Ui(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=et(l),d=!u&&Eo(l),f=!u&&!d&&Qn(l);h=l,u||d||f?et(a)?h=a:wp(a)?h=$n(a):d?(p=!1,h=ns(l,!0)):f?(p=!1,h=ds(l,!0)):h=[]:os(l)||ho(l)?(h=a,ho(a)?h=Lp(a):(!bt(a)||Io(a))&&(h=ms(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Ui(i,e,h)}var Cp=ab;function Tp(i,t,e,r,o){i!==t&&Sp(t,function(n,s){if(o||(o=new is),bt(n))Cp(i,t,s,e,Tp,r,o);else{var a=r?r(ki(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Ui(i,s,a)}},lr)}var Np=Tp;function lb(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Mp=lb;function cb(i,t){return t.length<2?i:Ph(i,Gh(t,0,-1))}var Pp=cb;var hb=$c(function(i,t,e){Np(i,t,e)}),uo=hb;function pb(i,t){return t=Vo(t,i),i=Pp(i,t),i==null||delete i[rs(Mp(t))]}var Op=pb;function ub(i){return os(i)?void 0:i}var Ip=ub;var db=1,mb=2,fb=4,yb=Eh(function(i,t){var e={};if(i==null)return e;var r=!1;t=kn(t,function(n){return n=Vo(n,i),r||(r=n.length>1),n}),kt(i,cs(i),e),r&&(e=ys(e,db|mb|fb,Ip));for(var o=t.length;o--;)Op(e,t[o]);return e}),$o=yb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var mo;(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})(mo||(mo={}));var Ap;(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})(Ap||(Ap={}));var Yo;(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})(Yo||(Yo={}));var Dp;(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})(Dp||(Dp={}));var $r;(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!=null?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})($r||($r={}));var Rt;(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})(Rt||(Rt={}));var cr;(s=>{s.white=H(O({},Rt.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 H(O({},Rt.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 Rt.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})(cr||(cr={}));var gs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(gs||(gs={}));var Bp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Bp||(Bp={}));var Ep;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Ep||(Ep={}));var xs;(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})(xs||(xs={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n=H(O({},r),{[t]:e});return Object.setPrototypeOf(n,Ht.prototype),n}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o: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=H(O({},e),{[n]:s});return Object.setPrototypeOf(a,Ht.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=O({},e);return Object.setPrototypeOf(n,Ht.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Hi(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"&&Hi(r)}return Object.freeze(i)}function _p(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 bs=class extends Error{};function hr(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 Gp(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 zp(){return typeof process<"u"}function Rp(i,t){for(let e of i)t(e.id,e.data),Rp(e.children,t)}function Fp(i,t){t(i.id,i.data);for(let e of i.children)Fp(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(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){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Fp(o,r)}}traverse(e){Rp(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]=H(O({},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]=H(O({},n[c]),{children:a})}Object.setPrototypeOf(n,qt.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:H(O({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 bs("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(O({},h),{fi:o}),l=[...l,h],l.sort((d,f)=>d.fi-f.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(O({},o),n))}r.sort((o,n)=>_p(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 H(O({},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 hr(0,o,o);{let s=n[0].fi;return hr(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 hr(l,l+o,o)}else return hr(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=O({},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 Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(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){var r;return(r=this.get(e))==null?void 0:r.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]=H(O({},a),{data:r}),this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return zp()||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:O({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=H(O({},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 hr(0,r,r);{let n=o[0].fi;return hr(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 hr(a,a+r,r)}else return hr(n.fi,s.fi,r)}}};var Vp=Symbol(),ws=Symbol(),Ko=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Ss);){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[ws];r&&r(),delete this._children[t]}}}},Ha=class extends Ko{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=H(O({},this._current),{[t]:e})}runOp(t){this.reportOp(t,vs.runOp(this._current,t))}},qa=class extends Ko{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(O({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(i,t){if(t===ws)return()=>{i._parent=null};if(t===Vp)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=Ls(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]}}},gb=H(O({},jp),{set(i,t,e){var o;let r={type:0,props:{[t]:(o=Ja(e))!=null?o: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}}),xb=H(O({},jp),{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}}),Xo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{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){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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)}},Zo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{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 H(O({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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&&Cs.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push(H(O({},t),{path:e}))}var Ss=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 Ls(i,t,e){return e instanceof qt?new Xo(i,t,e):e instanceof Je?new Zo(i,t,e):e instanceof Ht?new Proxy(new qa(i,t,e),xb):e!==null&&typeof e=="object"?Gp(e)?e:new Proxy(new Ha(i,t,e),gb):e}function Wa(i){let t=new Ss(i);return[Ls(t,"",i),t]}function $a(i,t){let[e,r]=Wa(i);return t(e),r.result()}function Ja(i){return i instanceof Xo||i instanceof Zo?i._current:i!==null&&typeof i=="object"?i[Vp]:i}var Cs;(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=O({},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 qt||o instanceof Xo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Je||o instanceof Zo)&&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})(Cs||(Cs={}));var Ts=class{},qi=class extends Ts{constructor(e){super();this.id=e}},Wi=class extends Ts{constructor(e){super();this.data=e}};var Ka;try{Ka=new TextDecoder}catch{}var ee,Yr,v=0;var Yp=[],Xa=Yp,Za=0,At={},Oe,Jr,Wt=0,pr=0,Ft,Ir,Tt=[],Ae,Up={useRecords:!1,mapsAsObjects:!0},$i=class{},el=new $i;el.name="MessagePack 0xC1";var Qo=!1,ur=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(ee)return eu(()=>(Ms(),this?this.unpack(t,e):ur.prototype.unpack.call(Up,t,e)));Yr=e>-1?e:t.length,v=0,Za=0,pr=0,Jr=null,Xa=Yp,Ft=null,ee=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=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 ur){if(At=this,this.structures)return Oe=this.structures,Ns();(!Oe||Oe.length>0)&&(Oe=[])}else At=Up,(!Oe||Oe.length>0)&&(Oe=[]);return Ns()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let n=t.length,s=this?this.unpack(t,n):Is.unpack(t,n);if(e){for(e(s);v<n;)if(o=v,e(Ns())===!1)return}else{for(r=[s];v<n;)o=v,r.push(Ns());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{Qo=!1,Ms()}}_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 Ns(){try{if(!At.trusted&&!Qo){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let i=Ye();if(v==Yr)Oe.restoreStructures&&kp(),Oe=null,ee=null,Ir&&(Ir=null);else if(v>Yr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Oe.restoreStructures&&kp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function kp(){for(let i in Oe.restoreStructures)Oe[i]=Oe.restoreStructures[i];Oe.restoreStructures=null}function Ye(){let i=ee[v++];if(i<160)if(i<128){if(i<64)return i;{let t=Oe[i&63]||At.getStructures&&Kp()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Zp()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}else if(i<192){let t=i-160;if(pr>=v)return Jr.slice(v-Wt,(v+=t)-Wt);if(pr==0&&Yr<140){let e=t<16?rl(t):Xp(t);if(e!=null)return e}return Qa(t)}else{let t;switch(i){case 192:return null;case 193:return Ft?(t=Ye(),t>0?Ft[1].slice(Ft.position1,Ft.position1+=t):Ft[0].slice(Ft.position0,Ft.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ya(ee[v++]);case 197:return t=Ae.getUint16(v),v+=2,Ya(t);case 198:return t=Ae.getUint32(v),v+=4,Ya(t);case 199:return fo(ee[v++]);case 200:return t=Ae.getUint16(v),v+=2,fo(t);case 201:return t=Ae.getUint32(v),v+=4,fo(t);case 202:if(t=Ae.getFloat32(v),At.useFloat32>2){let e=Os[(ee[v]&127)<<1|ee[v+1]>>7];return v+=4,(e*t+(t>0?.5:-.5)>>0)/e}return v+=4,t;case 203:return t=Ae.getFloat64(v),v+=8,t;case 204:return ee[v++];case 205:return t=Ae.getUint16(v),v+=2,t;case 206:return t=Ae.getUint32(v),v+=4,t;case 207:return At.int64AsNumber?(t=Ae.getUint32(v)*4294967296,t+=Ae.getUint32(v+4)):t=Ae.getBigUint64(v),v+=8,t;case 208:return Ae.getInt8(v++);case 209:return t=Ae.getInt16(v),v+=2,t;case 210:return t=Ae.getInt32(v),v+=4,t;case 211:return At.int64AsNumber?(t=Ae.getInt32(v)*4294967296,t+=Ae.getUint32(v+4)):t=Ae.getBigInt64(v),v+=8,t;case 212:if(t=ee[v++],t==114)return Jp(ee[v++]&63);{let e=Tt[t];if(e)return e.read?(v++,e.read(Ye())):e.noBuffer?(v++,e()):e(ee.subarray(v,++v));throw new Error("Unknown extension "+t)}case 213:return t=ee[v],t==114?(v++,Jp(ee[v++]&63,ee[v++])):fo(2);case 214:return fo(4);case 215:return fo(8);case 216:return fo(16);case 217:return t=ee[v++],pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):vb(t);case 218:return t=Ae.getUint16(v),v+=2,pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):Sb(t);case 219:return t=Ae.getUint32(v),v+=4,pr>=v?Jr.slice(v-Wt,(v+=t)-Wt):wb(t);case 220:return t=Ae.getUint16(v),v+=2,qp(t);case 221:return t=Ae.getUint32(v),v+=4,qp(t);case 222:return t=Ae.getUint16(v),v+=2,Wp(t);case 223:return t=Ae.getUint32(v),v+=4,Wp(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 bb=/^[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=>bb.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ye);return i.highByte===0&&(i.read=Hp(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Ye()}return r}return e.count=0,i.highByte===0?Hp(t,e):e}var Hp=(i,t)=>function(){let e=ee[v++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Oe[r]||Kp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Kp(){let i=eu(()=>(ee=null,At.getStructures()));return Oe=At._mergeStructures(i,Oe)}var Qa=Ps,vb=Ps,Sb=Ps,wb=Ps;function Ps(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ka)return Ka.decode(ee.subarray(v,v+=i));let e=v+i,r=[];for(t="";v<e;){let o=ee[v++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=ee[v++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=ee[v++]&63,s=ee[v++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=ee[v++]&63,s=ee[v++]&63,a=ee[v++]&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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function qp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}function Wp(i){if(At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[Zp()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}}var at=String.fromCharCode;function Xp(i){let t=v,e=new Array(i);for(let r=0;r<i;r++){let o=ee[v++];if((o&128)>0){v=t;return}e[r]=o}return at.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=ee[v++];if((t&128)>1){v-=1;return}return at(t)}}else{let t=ee[v++],e=ee[v++];if((t&128)>0||(e&128)>0){v-=2;return}if(i<3)return at(t,e);let r=ee[v++];if((r&128)>0){v-=3;return}return at(t,e,r)}else{let t=ee[v++],e=ee[v++],r=ee[v++],o=ee[v++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){v-=4;return}if(i<6){if(i===4)return at(t,e,r,o);{let n=ee[v++];if((n&128)>0){v-=5;return}return at(t,e,r,o,n)}}else if(i<8){let n=ee[v++],s=ee[v++];if((n&128)>0||(s&128)>0){v-=6;return}if(i<7)return at(t,e,r,o,n,s);let a=ee[v++];if((a&128)>0){v-=7;return}return at(t,e,r,o,n,s,a)}else{let n=ee[v++],s=ee[v++],a=ee[v++],l=ee[v++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){v-=8;return}if(i<10){if(i===8)return at(t,e,r,o,n,s,a,l);{let c=ee[v++];if((c&128)>0){v-=9;return}return at(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=ee[v++],h=ee[v++];if((c&128)>0||(h&128)>0){v-=10;return}if(i<11)return at(t,e,r,o,n,s,a,l,c,h);let p=ee[v++];if((p&128)>0){v-=11;return}return at(t,e,r,o,n,s,a,l,c,h,p)}else{let c=ee[v++],h=ee[v++],p=ee[v++],u=ee[v++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){v-=12;return}if(i<14){if(i===12)return at(t,e,r,o,n,s,a,l,c,h,p,u);{let d=ee[v++];if((d&128)>0){v-=13;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,d)}}else{let d=ee[v++],f=ee[v++];if((d&128)>0||(f&128)>0){v-=14;return}if(i<15)return at(t,e,r,o,n,s,a,l,c,h,p,u,d,f);let g=ee[v++];if((g&128)>0){v-=15;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,d,f,g)}}}}}function Ya(i){return At.copyBuffers?Uint8Array.prototype.slice.call(ee,v,v+=i):ee.subarray(v,v+=i)}function fo(i){let t=ee[v++];if(Tt[t])return Tt[t](ee.subarray(v,v+=i));throw new Error("Unknown extension type "+t)}var $p=new Array(4096);function Zp(){let i=ee[v++];if(i>=160&&i<192){if(i=i-160,pr>=v)return Jr.slice(v-Wt,(v+=i)-Wt);if(!(pr==0&&Yr<180))return Qa(i)}else return v--,Ye();let t=(i<<5^(i>1?Ae.getUint16(v):i>0?ee[v]:0))&4095,e=$p[t],r=v,o=v+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ae.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=ee[r++],n!=e[s++]){r=1879048192;break}if(r===o)return v=r,e.string;o-=3,r=v}for(e=[],$p[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=ee[r++],e.push(n);let a=i<16?rl(i):Xp(i);return a!=null?e.string=a:e.string=Qa(i)}var Jp=(i,t)=>{var e=Ye();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Oe[i];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[i]=o),Oe[i]=e,e.read=tl(e,r),e.read()},Qp=typeof self=="object"?self:global;Tt[0]=()=>{};Tt[0].noBuffer=!0;Tt[101]=()=>{let i=Ye();return(Qp[i[0]]||Error)(i[1])};Tt[105]=i=>{let t=Ae.getUint32(v-4);Ir||(Ir=new Map);let e=ee[v],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ir.set(t,o);let n=Ye();return o.used?Object.assign(r,n):(o.target=n,n)};Tt[112]=i=>{let t=Ae.getUint32(v-4),e=Ir.get(t);return e.used=!0,e.target};Tt[115]=()=>new Set(Ye());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Tt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Qp[e](Uint8Array.prototype.slice.call(i,1).buffer)};Tt[120]=()=>{let i=Ye();return new RegExp(i[0],i[1])};Tt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=v;v+=t-4,Ft=[Ye(),Ye()],Ft.position0=0,Ft.position1=0;let r=v;v=e;try{return Ye()}finally{v=r}};Tt[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 eu(i){let t=Yr,e=v,r=Za,o=Wt,n=pr,s=Jr,a=Xa,l=Ir,c=Ft,h=new Uint8Array(ee.slice(0,Yr)),p=Oe,u=Oe.slice(0,Oe.length),d=At,f=Qo,g=i();return Yr=t,v=e,Za=r,Wt=o,pr=n,Jr=s,Xa=a,Ir=l,Ft=c,ee=h,Qo=f,Oe=p,Oe.splice(0,Oe.length,...u),At=d,Ae=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Ms(){ee=null,Ir=null,Oe=null}function tu(i){i.unpack?Tt[i.type]=i.unpack:Tt[i.type]=i}var Os=new Array(147);for(let i=0;i<256;i++)Os[i]=+("1e"+Math.floor(45.15-i*.30103));var Is=new ur({useRecords:!1}),Lb=Is.unpack,Cb=Is.unpackMultiple,Tb=Is.unpack,As={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Nb=new Float32Array(1),QI=new Uint8Array(Nb.buffer,0,4);var Ds;try{Ds=new TextEncoder}catch{}var Bs,nl,Es=typeof Buffer<"u",il=Es?Buffer.allocUnsafeSlow:Uint8Array,nu=Es?Buffer:Uint8Array,ru=Es?4294967296:2144337920,_,Ke,M=0,dr,mr=null,Mb=/[\u0080-\uFFFF]/,Ji=Symbol("record-id"),yo=class extends ur{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=nu.prototype.utf8Write?function(m,I,x){return _.utf8Write(m,I,x)}:Ds&&Ds.encodeInto?function(m,I){return Ds.encodeInto(m,_.subarray(I)).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 f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,S=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(m,I){if(_||(_=new il(8192),Ke=new DataView(_.buffer,0,8192),M=0),dr=_.length-10,dr-M<2048?(_=new il(_.length),Ke=new DataView(_.buffer,0,_.length),dr=_.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(mr=["",""],_[M++]=214,_[M++]=98,mr.position=M-r,M+=4):mr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>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 L=0;L<x;L++){let C=o[L];if(!C)continue;let P,$=o.transitions;for(let J=0,oe=C.length;J<oe;J++){let he=C[J];P=$[he],P||(P=$[he]=Object.create(null)),$=P}$[Ji]=L+64}l=x}p||(o.nextId=x+64)}n&&(n=!1),s=o||[];try{if(w(m),mr){Ke.setUint32(mr.position+r,M-mr.position-r);let x=mr;mr=null,w(x[0]),w(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>dr&&T(M),h.offset=M;let x=Ob(_.subarray(r,M),a.idsToInsert);return a=null,x}return I&au?(_.start=r,_.end=M,_):_.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,L=b.length;x<L;x++)b[x][Ji]=0;b=[]}if(n&&h.saveStructures){let x=o.sharedLength||d;o.length>x&&(o=o.slice(0,x));let L=_.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(m)):(l=x,L)}}I&Gb&&(M=r)}};let w=m=>{M>dr&&(_=T(M));var I=typeof m,x;if(I==="string"){let L=m.length;if(mr&&L>=8&&L<4096){let $=Mb.test(m);mr[$?0:1]+=m,_[M++]=193,w($?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let P=L*3;if(M+P>dr&&(_=T(M+P)),L<64||!c){let $,J,oe,he=M+C;for($=0;$<L;$++)J=m.charCodeAt($),J<128?_[he++]=J:J<2048?(_[he++]=J>>6|192,_[he++]=J&63|128):(J&64512)===55296&&((oe=m.charCodeAt($+1))&64512)===56320?(J=65536+((J&1023)<<10)+(oe&1023),$++,_[he++]=J>>18|240,_[he++]=J>>12&63|128,_[he++]=J>>6&63|128,_[he++]=J&63|128):(_[he++]=J>>12|224,_[he++]=J>>6&63|128,_[he++]=J&63|128);x=he-M-C}else x=c(m,M+C,P);x<32?_[M++]=160|x:x<256?(C<2&&_.copyWithin(M+2,M+1,M+1+x),_[M++]=217,_[M++]=x):x<65536?(C<3&&_.copyWithin(M+3,M+2,M+2+x),_[M++]=218,_[M++]=x>>8,_[M++]=x&255):(C<5&&_.copyWithin(M+5,M+3,M+3+x),_[M++]=219,Ke.setUint32(M,x),M+=4),M+=x}else if(I==="number")if(m>>>0===m)m<64?_[M++]=m:m<256?(_[M++]=204,_[M++]=m):m<65536?(_[M++]=205,_[M++]=m>>8,_[M++]=m&255):(_[M++]=206,Ke.setUint32(M,m),M+=4);else if(m>>0===m)m>=-32?_[M++]=256+m:m>=-128?(_[M++]=208,_[M++]=m+256):m>=-32768?(_[M++]=209,Ke.setInt16(M,m),M+=2):(_[M++]=210,Ke.setInt32(M,m),M+=4);else{let L;if((L=this.useFloat32)>0&&m<4294967296&&m>=-2147483648){_[M++]=202,Ke.setFloat32(M,m);let C;if(L<4||(C=m*Os[(_[M]&127)<<1|_[M+1]>>7])>>0===C){M+=4;return}else M--}_[M++]=203,Ke.setFloat64(M,m),M+=8}else if(I==="object")if(!m)_[M++]=192;else{if(a){let C=a.get(m);if(C){if(!C.id){let P=a.idsToInsert||(a.idsToInsert=[]);C.id=P.push(C)}_[M++]=214,_[M++]=112,Ke.setUint32(M,C.id),M+=4;return}else a.set(m,{offset:M-r})}let L=m.constructor;if(L===Object)k(m,!0);else if(L===Array){x=m.length,x<16?_[M++]=144|x:x<65536?(_[M++]=220,_[M++]=x>>8,_[M++]=x&255):(_[M++]=221,Ke.setUint32(M,x),M+=4);for(let C=0;C<x;C++)w(m[C])}else if(L===Map){x=m.size,x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ke.setUint32(M,x),M+=4);for(let[C,P]of m)w(C),w(P)}else{for(let C=0,P=Bs.length;C<P;C++){let $=nl[C];if(m instanceof $){let J=Bs[C];if(J.write){J.type&&(_[M++]=212,_[M++]=J.type,_[M++]=0),w(J.write.call(this,m));return}let oe=_,he=Ke,se=M;_=null;let ge;try{ge=J.pack.call(this,m,F=>(_=oe,oe=null,M+=F,M>dr&&T(M),{target:_,targetView:Ke,position:M-F}),w)}finally{oe&&(_=oe,Ke=he,M=se,dr=_.length-10)}ge&&(ge.length+M>dr&&T(ge.length+M),M=Pb(ge,_,M,J.type));return}}k(m,!m.hasOwnProperty)}}else if(I==="boolean")_[M++]=m?195:194;else if(I==="bigint"){if(m<BigInt(1)<<BigInt(63)&&m>=-(BigInt(1)<<BigInt(63)))_[M++]=211,Ke.setBigInt64(M,m);else if(m<BigInt(1)<<BigInt(64)&&m>0)_[M++]=207,Ke.setBigUint64(M,m);else if(this.largeBigIntToFloat)_[M++]=203,Ke.setFloat64(M,Number(m));else throw new RangeError(m+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?_[M++]=192:(_[M++]=212,_[M++]=0,_[M++]=0);else if(I==="function")w(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},k=this.useRecords===!1?this.variableMapSize?m=>{let I=Object.keys(m),x=I.length;x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ke.setUint32(M,x),M+=4);let L;for(let C=0;C<x;C++)w(L=I[C]),w(m[L])}:(m,I)=>{_[M++]=222;let x=M-r;M+=2;let L=0;for(let C in m)(I||m.hasOwnProperty(C))&&(w(C),w(m[C]),L++);_[x+++r]=L>>8,_[x+r]=L&255}:m=>{let I=Object.keys(m),x,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let $=0,J=I.length;$<J;$++){let oe=I[$];x=L[oe],x||(x=L[oe]=Object.create(null),C++),L=x}let P=L[Ji];if(P)P>=96&&g?(_[M++]=((P-=96)&31)+96,_[M++]=P>>5):_[M++]=P;else{P=s.nextId,P||(P=64),P<S&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(P=s.nextOwnId,P<y||(P=S),s.nextOwnId=P+1):(P>=y&&(P=S),s.nextId=P+1);let $=I.highByte=P>=96&&g?P-96>>5:-1;L[Ji]=P,s[P-64]=I,P<S?(I.isShared=!0,s.sharedLength=P-63,n=!0,$>=0?(_[M++]=(P&31)+96,_[M++]=$):_[M++]=P):($>=0?(_[M++]=213,_[M++]=114,_[M++]=(P&31)+96,_[M++]=$):(_[M++]=212,_[M++]=114,_[M++]=P),C&&(A+=N*C),b.length>=f&&(b.shift()[Ji]=0),b.push(L),w(I))}for(let $=0,J=I.length;$<J;$++)w(m[I[$]])},T=m=>{let I;if(m>16777216){if(m-r>ru)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(ru,Math.round(Math.max((m-r)*(m>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(m-r<<2,_.length-1)>>12)+1<<12;let x=new il(I);return Ke=new DataView(x.buffer,0,I),_.copy?_.copy(x,0,r,m):x.set(_.slice(r,m)),M-=r,r=0,dr=x.length-10,_=x}}useBuffer(t){_=t,Ke=new DataView(_.buffer,_.byteOffset,_.byteLength),M=0}};nl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,$i];Bs=[{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?ou(i,16,t):iu(Es?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==nu&&this.structuredClone?ou(i,ol.indexOf(e.name),t):iu(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function ou(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 iu(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 Pb(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 Ob(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 go(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)");nl.unshift(i.Class),Bs.unshift(i)}tu(i)}var su=new yo({useRecords:!1}),Ib=su.pack,Ab=su.pack;var{NEVER:Db,ALWAYS:Bb,DECIMAL_ROUND:Eb,DECIMAL_FIT:_b}=As,au=512,Gb=1024;var lu=new yo({structuredClone:!0});go({Class:Ht.prototype.constructor,type:1,write(i){return O({},i)},read(i){return Object.setPrototypeOf(i,Ht.prototype),i}});go({Class:Je.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});go({Class:qt.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,qt.prototype),i}});go({Class:qi.prototype.constructor,type:4,write(i){return i.id},read(i){return new qi(i)}});go({Class:Wi.prototype.constructor,type:5,write(i){return i.data},read(i){return new Wi(i)}});function zb(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}var _s;(r=>{function i(o){return lu.pack(o)}r.serialize=i;function t(o){return lu.unpack(o)}r.deserialize=t;function e(o){return zb(i(o)).toString()}r.checksum=e})(_s||(_s={}));var Gs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gs||(Gs={}));var zs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(zs||(zs={}));var sl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(sl||(sl={}));var al;(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})(al||(al={}));var Rs;(t=>t.defaultData=H(O(O({},al.defaultData),sl.defaultData),{cloner:null,booleanExclude:null}))(Rs||(Rs={}));var ll=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(ll||{}),cl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(cl||{}),hl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(hl||{}),Fs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Fs||(Fs={}));var ei;(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:Rt.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]],steps:[0,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:H(O({},Rt.fromHex(6710886)),{a:1}),colorB:H(O({},Rt.fromHex(6710886)),{a:1}),colorC:H(O({},Rt.fromHex(16777215)),{a:1}),colorD:H(O({},Rt.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:cr.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"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}}}})(ei||(ei={}));var xo;(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 Je}}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 Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=ei.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Je;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(xo||(xo={}));var ti;(t=>{function i(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ti||(ti={}));var Vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Vs||(Vs={}));var Yi;(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:ti.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})(Yi||(Yi={}));var Ki;(o=>{o.identity=H(O({},gs.identity),{hiddenMatrix:$r.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==null?void 0:s.position)||n.position,rotation:(s==null?void 0:s.rotation)||n.rotation,scale:(s==null?void 0:s.scale)||n.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Yo.isEqual(n.position,s.position)?null:s.position,rotation:Yo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Yo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:$r.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Ki||(Ki={}));var Ar;(t=>t.defaultData=O({states:new Je,events:new Je,visible:!0,raycastLock:!1},Ki.identity))(Ar||(Ar={}));var cu;(t=>t.defaultData=O({type:"Empty"},Ar.defaultData))(cu||(cu={}));var js;(t=>t.defaultData=O(O({type:"Mesh"},Ar.defaultData),Rs.defaultData))(js||(js={}));var hu;(t=>t.defaultData=O(O({type:"TextFrame"},Ar.defaultData),Fs.defaultData))(hu||(hu={}));var Us;(t=>t.defaultData=O(O(O({},Ar.defaultData),Ki.identity),mo.defaultData))(Us||(Us={}));var pu;(t=>{function i(e){return O(O({},Ar.defaultData),zs.defaultData(e))}t.defaultData=i})(pu||(pu={}));var uu;(r=>(r.defaultCamera=O({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:$r.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},mo.defaultData),r.defaultMeshObject=H(O(O({name:"Rectangle"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("RectangleGeometry"),material:xo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(O(O({name:"Boolean"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("BooleanGeometry"),material:xo.defaultTwoLayerData("phong","layer1","layer2")})))(uu||(uu={}));var du;(e=>{function i(r,o){if(o===void 0)return r;let n=O({},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&&uo(c,l)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{var a,l;for(let c=0;c<n.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let d=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);d&&uo(d,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){var s,a;if(o===void 0)return r;let n=O({},r);if(Object.assign(n,Ki.merge(n,o)),Jo.is(r.type)){n.orthographic=O({},n.orthographic),n.perspective=O({},n.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(n.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(n.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")n.geometry=O({},n.geometry),Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Gs.is(r.type)){let l=o;n.intensity!==void 0&&(n.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?n.color=l.color:n.color=Rt.clone(l.color))}return n}e.patch=t})(du||(du={}));import{ConeBufferGeometry as Vb}from"three";import{BufferGeometry as Rb,CylinderBufferGeometry as Fb,Float32BufferAttribute as pl,Vector2 as er,Vector3 as ks}from"three";var fu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{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=(a=e.radiusTop)!=null?a:r,n=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h: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,f;return p||d?f=new Xi(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,d):f=new Fb(c,h,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(O({},i),{type:"CylinderGeometry"})})}};function Kr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function mu(i){return new er(i.y,-i.x)}var Xi=class extends Rb{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 f=[],g=[],S=[],y=[],b=0,A=r/2,N=new ks,w=new ks;d&&t==0&&(t=c),d&&e==0&&(e=h);let k=new er(t,A),T=new er(e,-A),m=null,I=null,x=null,L=null,C=k.clone().sub(T),P=0,$=0,J=0;u>0&&(P=Math.min(t,e)*(1-u),$=t-P,J=e-P);let oe=k.clone();oe.x-=P;let he=Math.PI-C.angle(),se=C.angle(),ge=Math.tan(se/2),F=Math.tan(he/2),G=ge+F,B=u?G:F,z=u?G:ge;if(c=Math.min(c,(t-$)/B,C.length()/G),h=Math.min(h,(e-J)/z,C.length()/G),c>0){let V=c/ge;m=k.clone().sub(new er(V,c)),u&&(x=m.clone(),x.x-=P-G*c),k.sub(C.clone().setLength(V))}if(h>0){let V=h/F;I=T.clone().sub(new er(V,-h)),T.add(C.clone().setLength(V)),u&&(L=I.clone(),L.x-=P-G*h,oe.sub(C.clone().setLength(V)))}C=k.clone().sub(T);let D=C.length()<.5,R=[];for(let V=0;V<=o;V++){let E=[],U=V/o,ne=U*l+a,q=new er(Math.sin(ne),Math.cos(ne));L&&I?(Y(E,U,q,he,h,L,-1,!0),Y(E,U,q,se,h,I,-1,!1)):I?(Z(E,q,I.x,0,-1),Y(E,U,q,se,h,I,-1,!1)):s||Z(E,q,e,J,-1);let W=mu(C).normalize();if(Kr(W,q,N),!D)for(let K=0;K<=n;K++){let X=K/n,Q=C.clone().multiplyScalar(X).add(T);Kr(Q,q,w),g.push(w.x,w.y,w.z),S.push(N.x,N.y,N.z),y.push(U,.5+w.y/r),E.push(b++)}if(x&&m?(Y(E,U,q,he,c,m,1,!1),Y(E,U,q,se,c,x,1,!0)):m?(Y(E,U,q,he,c,m,1,!1),Z(E,q,m.x,0,1)):s||Z(E,q,t,$,1),u&&!D){let K=mu(C).multiplyScalar(-1).normalize();Kr(K,q,N);for(let X=0;X<=n;X++){let Q=X/n,ae=C.clone().multiplyScalar(-Q).add(oe);Kr(ae,q,w),g.push(w.x,w.y,w.z),S.push(N.x,N.y,N.z),y.push(U,.5+w.y/r),E.push(b++)}}u&&!s&&E.push(E[0]),R.push(E)}for(let V=0;V<R.length-1;V++)for(let E=0;E<R[0].length-1;E++){if(s&&u&&E==n)continue;let U=R[V][E],ne=R[V+1][E],q=R[V+1][E+1],W=R[V][E+1],K=g[q*3+0],X=g[q*3+2];f.push(U,ne,W),(K!=0||X!=0)&&f.push(ne,q,W)}l<Math.PI*2&&(j(-1,R[0],a),j(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new pl(g,3)),this.setAttribute("normal",new pl(S,3)),this.setAttribute("uv",new pl(y,2));function Y(V,E,U,ne,q,W,K,X){for(let Q=0;Q<p+1;Q++){let ae=Q/p,ie=K<0?ae:1-ae;X&&(ie-=1),ie*=ne;let pe=new er(Math.sin(ie),Math.cos(ie)*K),Ge=pe.clone().multiplyScalar(q).add(W);Kr(Ge,U,w),g.push(w.x,w.y,w.z),Kr(pe,U,N),S.push(N.x,N.y,N.z),y.push(E,.5+w.y/r),V.push(b++)}}function Z(V,E,U,ne,q){let W=new ks,K=new er,X=[U,ne];q<0&&X.reverse();for(let Q of X)K.set(Q,A*q),Kr(K,E,W),g.push(W.x,W.y,W.z),S.push(0,q,0),y.push(.5,.5),V.push(b++)}function j(V,E,U){let ne=new er(Math.sin(U),Math.cos(U)),q=new er(-Math.cos(U),Math.sin(U)),W=new ks,K=V<0?(ae,ie,pe)=>f.push(ae,ie,pe):(ae,ie,pe)=>f.push(ae,pe,ie),X=new er((t+e+$+J)/4,0);Kr(X,ne,W),g.push(W.x,W.y,W.z),S.push(q.x,0,q.y),y.push(.5,.5);let Q=b++;for(let ae of E){let ie=g.slice(ae*3,ae*3+3);g.push(...ie),S.push(q.x,0,q.y);let pe=y.slice(ae*2,ae*2+2);y.push(...pe),b++}for(let ae=Q+1;ae<b-1;ae++)K(Q,ae,ae+1);K(Q,b-1,Q+1)}}};var yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Xi(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new Vb(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:H(O({},i),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as jb,BufferGeometry as Ub,Float32BufferAttribute as ul,Vector3 as Zi}from"three";var gu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 jb(t,e,r,o,n,s):c=new ml(t,e,r,o,n,s,a,l),Object.assign(c,{userData:H(O({},i),{type:"CubeGeometry"})})}},dl=Math.PI/2,ml=class extends Ub{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=[],f=0,g=0;S("z","y","x",-1,-1,r,e,t,s,n,0),S("z","y","x",1,-1,r,e,-t,s,n,1),S("x","z","y",1,1,t,r,e,o,s,2),S("x","z","y",1,-1,t,r,-e,o,s,3),S("x","y","z",1,-1,t,e,r,o,n,4),S("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),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ul(p,3)),this.setAttribute("normal",new ul(u,3)),this.setAttribute("uv",new ul(d,2));function S(A,N,w,k,T,m,I,x,L,C,P){let $=(m-2*a)/L,J=(I-2*a)/C,oe=m/2-a,he=I/2-a,se=x/2,ge=L+1,F=C+1,G=0,B=0,z=new Zi;for(let D=0;D<F;D++){let R=D*J-he;for(let Y=0;Y<ge;Y++){let Z=Y*$-oe;z[A]=Z*k,z[N]=R*T,z[w]=se,p.push(z.x,z.y,z.z),z[A]=0,z[N]=0,z[w]=x>0?1:-1,u.push(z.x,z.y,z.z),d.push(Y/L),d.push(1-D/C),G+=1}}for(let D=0;D<C;D++)for(let R=0;R<L;R++){let Y=f+R+ge*D,Z=f+R+ge*(D+1),j=f+(R+1)+ge*(D+1),V=f+(R+1)+ge*D;h.push(Y,Z,V),h.push(Z,j,V),B+=6}c.addGroup(g,B,P),g+=B,f+=G}function y(A,N,w,k,T,m,I,x,L,C,P){let $=(I-2*a)/C,J=I/2-a,oe=x/2-a,he=L/2,se=C+1,ge=0,F=0,G=new Zi,B=new Zi;for(let z=0;z<l+1;z++){let D=z/l*dl,R=Math.sin(D)*a,Y=(1-Math.cos(D))*a,Z=Math.sin(D),j=Math.cos(D);G[N]=(oe+R)*T,G[w]=(he-Y)*m,B[A]=0,B[N]=Z*Math.sign(G[N]),B[w]=j*Math.sign(G[w]);for(let V=0;V<se;V++){let E=V*$-J;G[A]=E*k,p.push(G.x,G.y,G.z),u.push(B.x,B.y,B.z),d.push(V/C),d.push(0),ge+=1}}for(let z=0;z<l;z++)for(let D=0;D<C;D++){let R=f+D+se*z,Y=f+D+se*(z+1),Z=f+(D+1)+se*(z+1),j=f+(D+1)+se*z;h.push(R,Y,j),h.push(Y,Z,j),F+=6}c.addGroup(g,F,P),g+=F,f+=ge}function b(A,N,w){let k=new Zi,T=new Zi(t/2,e/2,r/2);T.subScalar(a);let m=[],I=A*N*w>0?(L,C,P)=>h.push(L,C,P):(L,C,P)=>h.push(L,P,C);for(let L=0;L<=l;L++){let C=[],P=dl*(1-L/l),$=Math.cos(P),J=Math.sin(P),oe=0;for(let he=0;he<=L;he++){let se=Math.cos(oe),ge=Math.sin(oe);k.x=$*se,k.y=J,k.z=$*ge;let F=T.clone().addScaledVector(k,a);p.push(A*F.x,N*F.y,w*F.z),u.push(A*k.x,N*k.y,w*k.z),d.push(0,0),C.push(f++),oe+=dl/L}m.push(C)}let x=m.length-1;for(let L=0;L<x;L++){let C=m[L],P=m[L+1],$=C.length-1;I(C[0],P[1],P[0]);for(let J=1;J<=$;J++)I(C[J-1],C[J],P[J]),I(C[J],P[J+1],P[J])}}}};import{BufferGeometry as kb,Float32BufferAttribute as fl,Triangle as Hb,Vector3 as Dr,Vector2 as yl}from"three";var Xr=class extends kb{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new fl(a,3)),this.setAttribute("normal",new fl(c,3)),this.setAttribute("uv",new fl(l,2));return;function h(){var ge;n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Dr,g=f.clone(),S=new Hb,y=n*o,b=o-y,A=s+1,N=new Dr,w=(F,G)=>N.subVectors(F,G).normalize(),k=(F,G)=>Array(F).fill(void 0).map(G),T=k(t.length/3,(F,G)=>new Dr().fromArray(t,G*3).setLength(o)),m=[],I=1e6;for(let F=0;F<T.length;F++){let G=T[F],B=[],z,D,R,Y=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let U=Z-Z%3;z=e[U+(Z+1)%3],D=e[U+(Z+2)%3],R=G.distanceToSquared(T[z]),Y=Math.min(Y,R),B.push([z,D,R])}Y+=1e-6;let j=[],V=0,E=B.length;for(let U=0;U<E;U++){[z,D,R]=B[V];let ne=((ge=m[z])==null?void 0:ge.includes(F))==!0;R<=Y&&j.push(z+ +ne*I),V=B.findIndex(q=>q[0]==D)}m.push(j)}let x=[];{let F=0,G=0,B,z,D=d==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let Y=0;Y<s-R;Y++)[F,G]=[B+Y+R+2,z+Y+R+3],x.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];x.push(B,z,B+s+2)}}let L=f.clone(),C=f.clone(),P=f.clone(),$=f.clone(),J=f.clone(),oe=[],he=k(T.length,()=>k(d,()=>f.clone()));for(let F=0;F<T.length;F++){f.copy(T[F]).normalize(),L.copy(f).multiplyScalar(b);let G=m[F];for(let j=0;j<G.length;j++){let V=G[j],E=G[(j+1)%d];S.setFromPointsAndIndices(T,F,V%I,E%I),S.b.sub(S.a).setLength(1e10).add(S.a),S.c.sub(S.a).setLength(1e10).add(S.a),S.closestPointToPoint(L,he[F][j])}let B=[],z=[],D=[],R=new Dr;s==0&&[...he[F]].reduce((j,V)=>j.add(V),R).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],E=(j-1+d)%d,U=he[F][E],ne=he[F][j];f.copy(U).sub(L),g.copy(ne).sub(L);let q=L.angleTo(f),W=f.angleTo(g),K=Math.cos(q)*y;s==0?C.copy(R):C.copy(L).setLength(b+K),z.push(K);let X=[C,U,ne];for(let Q=0;Q<2;Q++){let ae=X[Q],ie=X[Q+1];$.subVectors(ae,L),J.subVectors(ie,L),P.crossVectors($,J).normalize();for(let pe=0;pe<A;pe++){let Ge=[q,W][Q]*pe/A;f.copy($).applyAxisAngle(P,Ge).add(L),B.push(f.clone()),Q&&(w(f,L),V.push([pe==0?ae:f.clone(),N.clone()]))}Q&&(w(ie,L),V.push([ie,N.clone()]))}D.push(V)}oe.push(D);let Y=2*A,Z=2;for(let j=0;j<d;j++){let V=Y*j,E=Y*((j+1)%d),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],J=B[E+q],U.push($);for(let W=1,K=q-Z+1;W<=K;W++)f.lerpVectors($,J,W/(K+1)),f.sub(L).setLength(z[j]).add(L),U.push(f.clone());U.push(J)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[E+A]);let ne=x.map(q=>U[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(w(q,L),[N.x,N.y,N.z])).flat())}}let se=[];for(let F=0;F<m.length;F++)for(let G=0;G<d;G++){let B=m[F][G];if(B<I){let z=m[B].findIndex(Y=>Y%I==F),D=oe[F][G],R=oe[B][z];for(let Y=0;Y<A;Y++){let Z=D[Y],j=R[A-Y],V=D[Y+1],E=R[A-(Y+1)];[Z,j,V,V,j,E].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}se.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;se.length;){let F,G,B,z;[F,G]=se.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=se.indexOf(G),z=B%2,G=se.splice(B-z,2)[1-z];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=N.dot(D[0])<0;R&&N.negate();for(let Y=1;Y<=D.length-2;Y++)[D[Y+ +R],D[Y+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Dr;for(let T=0;T<a.length;T+=3){u.x=a[T+0],u.y=a[T+1],u.z=a[T+2];let m=w(u)/2/Math.PI+.5,I=k(u)/Math.PI+.5;l.push(m,1-I)}let d=new Dr,f=new Dr,g=new Dr,S=new Dr,y=new yl,b=new yl,A=new yl,N=(T,m,I,x)=>{x<0&&T.x===1&&(l[m]=T.x-1),I.x===0&&I.z===0&&(l[m]=x/2/Math.PI+.5)};for(let T=0,m=0;T<a.length;T+=9,m+=6){d.set(a[T+0],a[T+1],a[T+2]),f.set(a[T+3],a[T+4],a[T+5]),g.set(a[T+6],a[T+7],a[T+8]),y.set(l[m+0],l[m+1]),b.set(l[m+2],l[m+3]),A.set(l[m+4],l[m+5]),S.copy(d).add(f).add(g).divideScalar(3);let I=w(S);N(y,m+0,d,I),N(b,m+2,f,I),N(A,m+4,g,I)}for(let T=0;T<l.length;T+=6){let m=l[T+0],I=l[T+2],x=l[T+4],L=Math.max(m,I,x),C=Math.min(m,I,x);L>.9&&C<.1&&(m<.2&&(l[T+0]+=1),I<.2&&(l[T+2]+=1),x<.2&&(l[T+4]+=1))}function w(T){return Math.atan2(T.z,-T.x)}function k(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as qb}from"three";var xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Qi(t*.5,n,s):new qb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(O({},i),{type:"DodecahedronGeometry"})})}},Qi=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 Qi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as rv,Plane as ov,Shape as Du,Vector2 as Br,Vector3 as iv,MathUtils as Ll,LineCurve as Cl,QuadraticBezierCurve as Bu,CubicBezierCurve as $s}from"three";import{CubicBezierCurve as Hs,EllipseCurve as Wb,LineCurve as qs,LineCurve3 as $b,MathUtils as Jb,QuadraticBezierCurve as xl,SplineCurve as Yb,Vector2 as tr,Vector3 as vu}from"three";var en=1e-12,ri=class{constructor(t){this.position=new tr;this.startPosition=new tr;this.uuid=Jb.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 ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},rr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new rr(e,new tr(...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 rr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},bl=i=>i,ii=new tr,Ws=new tr,Kb=new tr,Xb=new tr,Zb=new tr,Qb=new tr,Su=new vu,wu=new vu;function Lu(i){let t=new tr;t.addVectors(i.v0,ii.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new tr;return e.addVectors(i.v2,Ws.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new Hs(i.v0,t,e,i.v2)}function tn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function ev(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function tv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function vl(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 Cu(i,t,e){return bu(i,t)&&bu(t,e)&&gl(i.position,t.position,e.position)}function gl(i,t,e){return ii.copy(t).sub(i).cross(Ws.copy(e).sub(i))===0}function Tu(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 Nu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Mu(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 vl(t,i,e)>Math.PI&&(h*=-1),tn(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 Sl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function bu(i,t){return gl(i.position,i.controls[1].position,t.position)&&gl(i.position,t.controls[0].position,t.position)}function Pu(i,t,e,r,o=.5){let n=ii.subVectors(t,i).multiplyScalar(o).add(i),s=Ws.subVectors(e,t).multiplyScalar(o).add(t),a=Kb.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=Xb.subVectors(s,n).multiplyScalar(o).add(n),h=Zb.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Qb.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 Ou(i,t,e=12,r=!0){let o=wu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=bl(t[l]),h=ii,p=Zr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Hs||c instanceof xl||c instanceof qs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&tv(n,o))continue;n===void 0&&(n=Su),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 Iu(i,t,e,r=12,o=!0){let n=wu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=bl(t[l]),p=ii,u=Zr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof Hs||h instanceof xl||h instanceof qs){if(h.getPoint(d/u,p),n.set(p.x,p.y,0),c!=null&&c.equals(n))continue;c===void 0?c=Su:(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 wl(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=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Zr(i[0].roundedCurveCorner,t)*.5),r}function Zr(i,t=12){return i&&i instanceof Wb?t*2:i&&(i instanceof qs||i instanceof $b)?1:i&&i instanceof Yb?t*i.points.length:t}function Au(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=bl(t[s]),l=Zr(a,e),c=ii;for(let h=0;h<=l;h++)if(a instanceof Hs||a instanceof xl||a instanceof qs){if(a.getPoint(h/l,c),o!==void 0&&ev(o,c,en))continue;o===void 0&&(o=Ws),o.copy(c),i.push(c.x,c.y),n++}}return tn(i[0],i[i.length-2],en)&&tn(i[1],i[i.length-1],en)&&(i.pop(),i.pop()),r&&n>1&&!(tn(i[n-1],i[1],en)&&tn(i[n-2],i[0],en))&&(i.push(i[0],i[1]),n++),i}var Tl=new Br,nv=new Br,sv=new Br,av=new Br,lv=new Br,cv=new Br,Pe=class extends Du{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new rv;this.plane=new ov(new iv(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=Ll.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Pe;return n.isClosed=e.isClosed,n.points=e.points.map(s=>rr.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Pe.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=Tl.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=Ll.generateUUID()){let n;e instanceof Br?n=e:n=new Br(e,r);let s=new rr(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 Ou(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=wl(this.points,e,!1),this.roundedCurveDivisions=wl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Iu(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),Au(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=Zr(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(Sl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(Tl.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){Sl(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){var o,n,s;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let a=0,l=this.points.length;a<l;a++){let c=this.points[a];if(a===0)this.moveTo(c.position.x,c.position.y);else{let h=this.points[a-1];this._applyCurveForPoint(c,h)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let a=this.points[0],l=this.points[this.points.length-1];this._applyCurveForPoint(a,l)}if(this.points.length>2){let a=0;for(let l=0,c=this.points.length;l<c;l++){let h=this.points[l],p=(o=this.points[l-1])!=null?o:this.points[this.points.length-1],u=(n=this.points[l+1])!=null?n:this.points[0],d=h.roundness,f=p&&u&&Cu(p,h,u);if(!h.controlsMoved()&&d>0&&!f){let g=h.curveBefore,S=h.curveAfter;if(g===void 0||S===void 0)continue;let y=h.roundedCurveBefore,b=h.roundedCurveAfter,A=g.getLength(),N=S.getLength(),w=Math.min(d,A*.499),k=Math.min(d,N*.499),T=Math.min(w,k),m=1-T/A,I=T/N,x=g.getPointAt(m,Tl),L=S.getPointAt(I,nv);this._subSplitCurve(g,y,m,x,void 0),this._subSplitCurve(S,b,I,void 0,L);let C;if(this.useCubicForRoundedCorners){let P=vl(x,h.position,L)/2,$=Math.tan(P)*x.distanceTo(h.position),[J,oe]=Tu(x,L,$,sv,av),he=Nu(J,oe,h.position),[se,ge]=Mu(he,x,L,$,lv,cv);C=new $s(x.clone(),se.clone(),ge.clone(),L.clone())}else C=new Bu(x.clone(),h.position.clone(),L.clone());h.roundedCurveCorner=C,this.roundedCurves.splice(l+a,0,C),a++}}}e&&((s=this.eventDispatcher)==null||s.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,n,s){if(e instanceof Cl)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=Pu(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 Pe(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){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let n=0;n<r;n++){let s=n*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],u=e.points[s+5],d=e.points[s+6],f=new rr(Ll.generateUUID(),new Br(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(n=>{let s=new Pe;return s.fromJSON(n),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof $s&&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 Bu&&(n[a]=Lu(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 $s?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof Cl&&(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 $s?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof Cl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Du&&(this.shapeHoles=e.holes.map(n=>{let s=new Pe;return s.fromShape(n),s})),this.update(),this}};var Ml=Math.PI*2;function Nl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function hv(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 Eu(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 pv(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),f=h*p-h*d-p*u;f<0&&(f=0),f/=h*d+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,S=f*-n/o*s,y=g+(i+e)/2,b=S+(t+r)/2,A=(s-g)/o,N=(a-S)/n,w=(-s-g)/o,k=(-a-S)/n,T=Eu(1,0,A,N),m=Eu(A,N,w,k);return!c&&m>0&&(m-=Ml),c&&m<0&&(m+=Ml),{centerx:y,centery:b,ang1:T,ang2:m}}function _u({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=pv(i,t,e,r,o,n,c,h,s,a),{ang1:d,ang2:f}=u,{centerx:g,centery:S}=u,y=Math.abs(f)/(Ml/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(hv(d,f)),d+=f;return l.map(A=>{let{x:N,y:w}=Nl(A[0],o,n,g,S),{x:k,y:T}=Nl(A[1],o,n,g,S),{x:m,y:I}=Nl(A[2],o,n,g,S);return{x1:N,y1:w,x2:k,y2:T,x:m,y:I}})}import{BufferAttribute as Ys,BufferGeometry as yv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function de(i,t){if(!i)throw t||"Assertion Failed!"}var le=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){de(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){de(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){de(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){de(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}(),rn=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}(),Js=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}(),ni=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}(),Gu=function(){function i(){var t=new ni,e=new rn,r=new Js(0),o=new Js(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 Js(0),r=new Js(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;de(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;de(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 ni,e=new ni,r=new rn,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 ni;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new rn;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 rn;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 ni;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 rn;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&&le.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&le.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){de(o.prev===n),l=o.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(de(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){de(s.prev===a),l=s.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(de(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)de(l.Sym.next===c.Sym),de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Org!==null),de(l.Dst!==null),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l);de(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}(),zu=function(){function i(){this.handle=null}return i}(),Ru=function(){function i(){this.key=null,this.node=0}return i}(),uv=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 zu,this.handles[r]=new Ru;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,de(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 zu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Ru}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;de(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}(),Pl=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}(),Fu=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),dv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Fu,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 Fu;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}(),mv=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?le.vertLeq(n.Org,s.Org)?le.edgeSign(s.Dst,n.Org,s.Org)<=0:le.edgeSign(n.Dst,s.Org,n.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(n.Dst,o,n.Org)>=0;var a=le.edgeEval(n.Dst,o,n.Org),l=le.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&de(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){de(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 Pl;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.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 de(le.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,de(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=le.vertL1dist(e,t),n=le.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(le.vertLeq(o.Org,n.Org)){if(le.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;le.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(le.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(de(!le.vertEq(o.Dst,n.Dst)),le.vertLeq(o.Dst,n.Dst)){if(le.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(le.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 ni,d,f;if(de(!le.vertEq(c,l)),de(le.edgeSign(l,t.event,s)<=0),de(le.edgeSign(c,t.event,a)>=0),de(s!==t.event&&a!==t.event),de(!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(le.vertLeq(s,a)){if(le.edgeSign(c,s,a)>0)return!1}else if(le.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),le.intersect(l,s,c,a,u),de(Math.min(s.t,l.t)<=u.t),de(u.t<=Math.max(a.t,c.t)),de(Math.min(c.s,l.s)<=u.s),de(u.s<=Math.max(a.s,s.s)),le.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=le.vertLeq(s,a)?s:a,le.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),le.vertEq(u,s)||le.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!le.vertEq(l,t.event)&&le.edgeSign(l,t.event,u)>=0||!le.vertEq(c,t.event)&&le.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),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(le.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),le.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),le.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),le.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}le.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,le.vertEq(o.Org,r)){de(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!le.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}de(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(de(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),le.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 Pl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=le.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);de(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 Pl,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 dv(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||(de(e.fixUpperEdge),de(++r===1)),de(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,le.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 uv(n,le.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,de(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||!le.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}(),fv=function(){function i(){this.mesh=new Gu,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=qe.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],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var S=0;S<3;++S)n=e.coords[S],c[S]=n,f[S]=e,l[S]=n,d[S]=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,f[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=d[b],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(;le.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;le.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(le.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(le.edgeGoesLeft(o.Lnext)||le.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&&(le.edgeGoesRight(r.Lprev)||le.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===ot.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===ot.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var f=l;f<r;++f)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 Gu),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=qe.ODD),e===void 0&&(e=ot.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_(),mv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function bo(i){var t=i.windingRule,e=t===void 0?qe.ODD:t,r=i.elementType,o=r===void 0?ot.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,f=d===void 0?!0:d,g=i.debug,S=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new fv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:S?y.mesh:void 0}}}var jD=qe.ODD,UD=qe.NONZERO,kD=qe.POSITIVE,HD=qe.NEGATIVE,qD=qe.ABS_GEQ_TWO,WD=ot.POLYGONS,$D=ot.CONNECTED_POLYGONS,JD=ot.BOUNDARY_CONTOURS;var si=class extends yv{constructor(e,r=12,o={}){var f,g,S;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=n.length/2;y<b;y++){let A=y*2,N=n[A+0],w=n[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&w!==p&&(c=!1),h=N,p=w,!l&&!c)break}!l&&!c&&(a=bo({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=(f=a==null?void 0:a.vertexCount)!=null?f:1,d=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new Ys(new Float32Array(u*3),3),this._normalAttribute=new Ys(new Float32Array(u*3),3),this._uvAttribute=new Ys(new Float32Array(u*2),2),this._indexAttribute=new Ys(new Uint32Array(d*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let T=0,m=u;T<m;T++){let I=T*2,x=a.vertices[I+0],L=a.vertices[I+1];x<y&&(y=x),x>b&&(b=x),L<A&&(A=L),L>N&&(N=L)}let w=b-y,k=N-A;for(let T=0,m=u;T<m;T++){let I=T*2,x=a.vertices[I+0],L=a.vertices[I+1],C=(x-y)/w,P=(L-A)/k;this._positionAttribute.setXYZ(T,x,L,0),this._normalAttribute.setXYZ(T,0,0,1),this._uvAttribute.setXY(T,C,P)}for(let T=0,m=d;T<m;T++){let I=T*3,x=a.elements[I+0],L=a.elements[I+1],C=a.elements[I+2];this._indexAttribute.setX(I+0,x),this._indexAttribute.setX(I+1,L),this._indexAttribute.setX(I+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((S=a==null?void 0:a.elementCount)!=null?S:1)*3)}clone(){let e=new si(this._shape,this._curveSegments);return e.userData=ji(this.userData),e}};import{BufferAttribute as Xs,BufferGeometry as gv}from"three";var Ks=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*Ks.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*Ks.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)}},on=Ks;on.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ol=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),ai=class extends gv{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(T=>{let m=T.extractShapePointsToFlatArray([],n),I=[];for(let x=m.length-1;x>=1;x-=2){let L=m[x-1],C=m[x-0];I.push(L,C)}return I}),c=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=bo({windingRule:qe.ODD,elementType:ot.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 T=0;T<h.elements.length;T++){let m=h.elements[T],I=T%2===0?c.vertexCount:0;c.elements.push(m+I)}for(let T=0;T<h.vertexIndices.length;T++){let m=h.vertexIndices[T],I=c.vertexCount;c.vertexIndices.push(m+I)}for(let T=0;T<h.vertices.length;T++){let m=h.vertices[T];c.vertices.push(m)}}let u=1/0,d=-1/0,f=1/0,g=-1/0;for(let T=0,m=c.vertexCount;T<m;T++){let I=T*2,x=c.vertices[I+0],L=c.vertices[I+1];x<u&&(u=x),x>d&&(d=x),L<f&&(f=L),L>g&&(g=L)}this._minX=u,this._minY=f,this._width=d-u,this._height=g-f;let S=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new on(S);let y=[],b=[];for(let T=c.elementCount-1;T>=0;T--){let m=T>=p,I=T*2,x=c.elements[I+0],L=c.elements[I+1],C=x+L,P={start:x,count:L,normals:[],continuous:[],concave:[]},$=x,J=C-1,oe=x+1,he=this._shape.roundedCurves.length;do{let G=$-x,B=c.vertices[J*2+0],z=c.vertices[J*2+1],D=c.vertices[$*2+0],R=c.vertices[$*2+1],Y=c.vertices[oe*2+0],Z=c.vertices[oe*2+1],j=D-B,V=R-z,E=Math.sqrt(j*j+V*V);j/=E,V/=E;let U=D-Y,ne=R-Z,q=Math.sqrt(U*U+ne*ne);U/=q,ne/=q,P.normals[G*2+0]=-ne,P.normals[G*2+1]=U,P.concave[G]=j*ne-V*U>0;let W=c.vertexIndices[$];if(Array.isArray(W))P.continuous[G]=!1;else{let[K,X]=this._shape.getCurveIndexFromVertexId(W-1,!0);if(X>0&&X<1)P.continuous[G]=!0;else{let Q=X===1?K+1:K-1;Q=(Q+he)%he;let ae=X===1?0:1,ie=this._shape.roundedCurves[K].getTangent(X),pe=this._shape.roundedCurves[Q].getTangent(ae);P.continuous[G]=ie.dot(pe)>.95}}m&&(P.normals[G*2+0]*=-1,P.normals[G*2+1]*=-1),[J,$,oe]=[$,oe,oe+1],oe>=C&&(oe-=L)}while(oe!==x+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((G,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,C*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],Y=[],Z=[],j=0;for(let E=0;E<L;E++){let U=E*2,ne=(E-1+L)%L*2,q=c.vertices[P.start*2+U+0],W=c.vertices[P.start*2+U+1],K=-P.normals[ne+0]*z,X=-P.normals[ne+1]*z,Q=-P.normals[U+0]*z,ae=-P.normals[U+1]*z;if(P.concave[E]||!P.concave[E]&&m){let ie=Math.atan2(X,K),pe=Math.atan2(ae,Q);pe>ie&&(pe-=Math.PI*2);let Ge=pe-ie;if(P.continuous[E]||m){let xe=ie+Ge/2,$e=Math.cos(xe)*z,Te=Math.sin(xe)*z;D[2*j+0]=q+$e*(m?-1:1),D[2*j+1]=W+Te*(m?-1:1),Z[j]=E,j++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=xe;$e++){let Te=ie+Ge*($e/xe),ht=Math.cos(Te)*z,Lt=Math.sin(Te)*z;D[2*j+0]=q+ht,D[2*j+1]=W+Lt,Z[j]=E,j++}}}else D[2*j+0]=q+K,D[2*j+1]=W+X,Z[j]=E,R[E]=j,j++,D[2*j+0]=q,D[2*j+1]=W,Z[j]=E,j++,D[2*j+0]=q+Q,D[2*j+1]=W+ae,Z[j]=E,Y[E]=j,j++}let V=bo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],W=Z[(ne+1)%Z.length];E.idx=[q,W],E.Sym.idx=[W,q]},vertexIdCallback:E=>{let U=E.Lprev.idx;return[U?U[1]:0,E.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!V.vertexCount)break;for(let E=0;E<V.vertexIndices.length;E++){let[U,ne]=V.vertexIndices[E];if(U===ne)continue;let q=ne;ne<U&&(q+=L);for(let W=U;W<q;W++){let K=W%L,X=(W+1)%L;if(!P.continuous[K]||!P.continuous[X]){V.vertexIndices[E]=[U,K],V.vertexIndices.splice(E+1,0,[X,ne]),V.vertices.splice((E+1)*2,0,V.vertices[E*2],V.vertices[E*2+1]);break}}}se.push({bevelI:G,angle:B,size:z,boundary:V,reverseMap:Z,insetPoints:D})}let ge=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<se.length;G++){let B=se[G-1],z=se[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let Y=P.concave.length,Z=0,j=Ol(Z,L);for(;!B.boundary.vertexIndices.filter(j).length||!z.boundary.vertexIndices.filter(j).length;)Z++,j=Ol(Z,L);let V=B.boundary.vertexIndices.findIndex(j),E=z.boundary.vertexIndices.findIndex(j);do V=(V+1)%D;while(j(B.boundary.vertexIndices[V]));do E=(E+1)%R;while(j(z.boundary.vertexIndices[E]));Z=(Z+1)%L;let U=Z,ne=this.buildBevelVert(P,B,(V-1+D)%D),q=this.buildBevelVert(P,z,(E-1+R)%R),W=ne,K=q,X,Q,ae=!1;do{j=Ol(Z,L);let ie=ge(B,V,j),pe=ge(z,E,j),Ge=ae;if(ae=!1,ie&&!pe){for(let xe=0;xe<ie;xe++)X=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X;ae=!0}else if(!ie&&pe)for(let xe=0;xe<pe;xe++)Q=this.buildBevelVert(P,z,(E+xe)%R,xe/(pe-1)),y.push(K.topN,W.topP,Q.topP),y.push(W.bottomP,K.bottomN,Q.bottomP),K=Q;else if(ie&&pe)if(X=this.buildBevelVert(P,B,V,0),Q=this.buildBevelVert(P,z,E,0),Ge?(y.push(W.topN,Q.topP,K.topN),y.push(W.topN,X.topP,Q.topP),y.push(Q.bottomP,W.bottomN,K.bottomN),y.push(Q.bottomP,X.bottomP,W.bottomN)):(y.push(K.topN,W.topN,X.topP),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,K.bottomN),y.push(X.bottomP,K.bottomN,Q.bottomP)),W=X,K=Q,ie===pe)for(let xe=1;xe<ie;xe++)X=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),Q=this.buildBevelVert(P,z,(E+xe)%R,xe/(pe-1)),y.push(W.topN,X.topP,K.topN),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,K.bottomN),y.push(X.bottomP,K.bottomN,Q.bottomP),W=X,K=Q;else if(ie>pe){let xe=ie/pe,$e=0;for(let Te=1;Te<ie;Te++)X=this.buildBevelVert(P,B,(V+Te)%D,Te/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X,Te>($e+1)*xe&&($e++,Q=this.buildBevelVert(P,z,(E+$e)%R,$e/(pe-1)),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,K.bottomN,Q.bottomP),K=Q)}else{let xe=pe/ie,$e=0;for(let Te=1;Te<pe;Te++)Q=this.buildBevelVert(P,z,(E+Te)%R,Te/(pe-1)),y.push(K.topN,X.topP,Q.topP),y.push(X.bottomP,K.bottomN,Q.bottomP),K=Q,Te>($e+1)*xe&&($e++,X=this.buildBevelVert(P,B,(V+$e)%D,$e/(ie-1)),y.push(W.topN,X.topP,K.topN),y.push(X.bottomP,W.bottomN,K.bottomN),W=X)}V=(V+ie)%D,E=(E+pe)%R,Z=(Z+1)%Y}while(Z!==U)}{let G=se[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(P,G,B),R=this.buildBevelVert(P,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(m){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(m){let G=[];for(let B=se[se.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=se[se.length-1].boundary.vertices[B-1],D=se[se.length-1].boundary.vertices[B-0];G.push(z,D)}b.push(G)}if(!m){let G=se[se.length-1],B=bo({windingRule:se.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),Y=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,Y.top),y.push(Y.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Xs(Uint32Array.from(y),1),N=new Xs(this._buffer.positions,3),w=new Xs(this._buffer.normals,3),k=new Xs(this._buffer.uvs,2);N.needsUpdate=!0,w.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",w),this.setAttribute("uv",k),this.setIndex(A)}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),f=Math.sin(r.angle),g=o*2,S=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,w=(b-this._minX)/this._width,k=(A-this._minY)/this._height,T=e.normals[S+0],m=e.normals[S+1],I=e.normals[y+0],x=e.normals[y+1];if(u){let J=I-T,oe=x-m;T=T+J*(1-n),m=m+oe*(1-n);let he=Math.sqrt(T*T+m*m);T/=he,m/=he}let L=this._buffer.get(p?2:4),C=L*3,P=L*2,$={i:o,fi:c,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=T*d,this._buffer.normals[C+1]=m*d,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=T*d,this._buffer.normals[C+4]=m*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=w,p||(L+=2,C+=6,P+=4,$.topP=L+0,$.bottomP=L+1,this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=I*d,this._buffer.normals[C+1]=x*d,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=I*d,this._buffer.normals[C+4]=x*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=w),this.vertexCache[s]=$,$}clone(){let e=new ai(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ji(this.userData),e}};var ut=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var c,h,p,u,d,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),n=Math.abs((p=e.depth)!=null?p:0),s=(u=i.shape)!=null?u:t==null?void 0:t.shape,a=(d=s==null?void 0:s.roundness)!=null?d:e.roundness;s!==void 0&&(s instanceof Pe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Pe(r,o).fromJSON(s),((f=i.parameters)==null?void 0:f.roundness)!==void 0&&((g=i.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Pe(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 si(i.shape,o):s=new ai(i.shape,t,e,o,r),Object.assign(s,{userData:H(O({},i),{type:"VectorGeometry"})})}};import{MathUtils as ju,Vector2 as Uu}from"three";var ku=Math.PI*2,Hu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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=xv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:H(O({},i),{type:"EllipseGeometry"})})}};function xv(i,t,e,r,o,n){if(r>=ku)return o>30||o%4===0?(vv(i,t,e,n),Math.round(o/4)):Vu(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=_u({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?bv(i,s.x,s.y,c,o,t,e,n):Vu(i,r,o,t,e,n)}function bv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(li(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],d=li(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?qu(i,n,s,a):i.addPoint(li(0,0)),l}function Vu(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(li(c,h))}return t<ku?n>0?qu(i,r,o,n):i.addPoint(li(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Wu(i,r,o,n)),1}function vv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Zs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Zs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Zs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Zs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Wu(i,t,e,r)}function li(i,t){return new rr(ju.generateUUID(),new Uu(i,t))}function Zs(i,t,e,r,o,n){let s=li(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function qu(i,t,e,r){$u(i,t,e,r).forEach(n=>i.addPoint(n))}function Wu(i,t,e,r){let o=$u(i,t,e,r),n=new Pe;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function $u(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new Uu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=ju.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}import{BufferGeometry as Sv,Float32BufferAttribute as Il,Vector3 as Ju}from"three";var Yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{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((l=e.height)!=null?l:r),n=Math.abs((c=e.depth)!=null?c: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 nn(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:H(O({},i),{type:"HelixGeometry"})})}},nn=class extends Sv{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 f=()=>new Ju,g=new Ju,S=f(),y=f(),b=f(),A,N,w,k,T,m,I,x,L=f(),C=f(),P=f(),$=f(),J=f(),oe=f(),he=f(),se=f(),ge=r-2*l+.001,F=ge/s,G=Math.ceil(a*s),B=G+1,z=ge/G,D=-ge/2,R=h+1,Y=2*Math.PI/h,Z=Math.PI/2/u,j=.01,V=Math.min((1-p/100)*l,l-j),E=l-V,U=0,ne=2,q=u*ne+ne,W=R*q/ne,K=W+R*B,X=R*(B+q),[Q,ae,ie]=[3,3,2].map(ke=>Array(X*ke).fill(0)),pe=[],Ge=n-l;function xe(ke,gt){let _t=Math.PI/2;m=gt*z,x=2*Math.PI*(m%F)/F+_t,m+=D,I=Math.sin(x)*Ge,T=Math.cos(x)*Ge,t?ke.set(T,I,m):ke.set(T,m,I)}xe(g,-1e-10),xe(S,0),L.copy(g),xe(g,1);let $e=g.distanceTo(S),Te=E+V,ht=$e*G+2*Te,Lt=V,Cr=ht-Te;for(let ke=0;ke<=G;ke++){xe(y,ke),se.subVectors(y,L).normalize(),L.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),he.crossVectors(se,oe).normalize();let gt=ke===0,_t=ke===G,En=gt?3*Math.PI/2:Z,_n=gt?Lt:Cr,Gn=gt?R:K,zn=gt?0:X-R,Rn=se.clone().multiplyScalar(gt?-E:E).add(y),Fn=se.clone().multiplyScalar(gt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let zi=Ut*Y;if(C.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(zi)),S.copy(he).multiplyScalar(l*Math.sin(zi))),P.copy(C).normalize(),gt||_t){d||(U=zn+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=Rn.getComponent(pt),ae[U*3+pt]=Fn.getComponent(pt)}),ie[U*2]=+_t,ie[U*2+1]=Ut/h),S.copy(P).multiplyScalar(V),b.addVectors(y,S);for(let pt=0;pt<u;pt++){let Po=pt*Z+En;$.addVectors(g.copy(se).multiplyScalar(E*Math.sin(Po)),S.copy(P).multiplyScalar(E*Math.cos(Po))),J.copy($).normalize(),S.addVectors(b,$),$.normalize(),U=Gn+pt*R+Ut,[0,1,2].forEach(co=>{Q[U*3+co]=S.getComponent(co),ae[U*3+co]=J.getComponent(co)});let Vn=+gt+Math.sin(Po);ie[U*2]=(_n+E*Vn)/ht,ie[U*2+1]=Ut/h}}S.addVectors(y,C),U=W+ke*R+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=S.getComponent(pt),ae[U*3+pt]=P.getComponent(pt)}),ie[U*2]=(Te+ke*$e)/ht,ie[U*2+1]=Ut/h}}let yt=B+2*u+ne,Tr=1,[ao,lo]=d?[Tr,Tr+B-1]:[0,yt-1];for(let ke=ao;ke<=lo-1;ke++){let gt=d&&ke===lo-1;for(let _t=0;_t<R-1;_t++)A=ke*R+_t,N=A+1,w=(gt?_t:A)+R,k=(gt?_t+1:N)+R,ke===0?pe.push(N,k,w):ke===yt-2?pe.push(A,N,w):pe.push(A,N,w,N,k,w)}this.setIndex(pe),this.setAttribute("position",new Il(Q,3)),this.setAttribute("normal",new Il(ae,3)),this.setAttribute("uv",new Il(ie,2))}};import{IcosahedronBufferGeometry as wv}from"three";var Ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 sn(t*.5,n,s):new wv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(O({},i),{type:"IcosahedronGeometry"})})}},sn=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 sn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Lv,Shape as Cv}from"three";var Xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s,a;((o=(r=i.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Cv;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 Lv(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:H(O({},i),{type:"LatheGeometry"})})}};import{BufferGeometry as Qu,BufferGeometryLoader as Av,Vector3 as Dv,BoxBufferGeometry as ed}from"three";import{BufferGeometry as Tv,Vector2 as Al,Vector3 as Zu}from"three";import{Geometry as Nv,Face3 as Mv}from"three/examples/jsm/deprecated/Geometry.js";var Pv=["a","b","c"];function Ov(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Dl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Bl(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 Iv(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],Bl(s.a,s.b,i,r,s,e),Bl(s.b,s.c,i,r,s,e),Bl(s.c,s.a,i,r,s,e)}function Qs(i,t,e,r,o){i.push(new Mv(t,e,r,void 0,void 0,o))}function ci(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function ea(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ta=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Tv?t=new Nv().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 Zu,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;Iv(l,c,u,d);let f=[],g,S,y,b,A,N,w;for(let j of Array.from(d.keys())){for(S=d.get(j),y=new Zu,A=3/8,N=1/8,w=S.faces.length,w!=2&&(A=.5,N=0,w!=1),y.addVectors(S.a,S.b).multiplyScalar(A),e.set(0,0,0),s=0;s<w;s++){for(b=S.faces[s],a=0;a<3&&(g=l[Ov(b,Pv[a])],!(g!==S.a&&g!==S.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),S.newEdge=f.length,f.push(y)}let k,T,m,I,x,L,C,P=[];for(o=0,n=l.length;o<n;o++){for(L=l[o],x=u[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),T=1-r*Number(k),m=k,r<=2&&(r==2?(T=3/4,m=1/8):r==1||r==0),C=L.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)I=x[s],g=I.a!==L?I.a:I.b,e.add(g);e.multiplyScalar(Number(m)),C.add(e),P.push(C)}let $=P.concat(f),J=P.length,oe,he,se,ge=[],F=[],G,B,z,D,R=new Al,Y=new Al,Z=new Al;for(o=0,n=c.length;o<n;o++)b=c[o],oe=Number(Dl(b.a,b.b,d).newEdge)+J,he=Number(Dl(b.b,b.c,d).newEdge)+J,se=Number(Dl(b.c,b.a,d).newEdge)+J,Qs(ge,oe,he,se,b.materialIndex),Qs(ge,b.a,oe,se,b.materialIndex),Qs(ge,b.b,he,oe,b.materialIndex),Qs(ge,b.c,se,he,b.materialIndex),p&&(G=h[o],B=G[0],z=G[1],D=G[2],R.set(ci(B.x,z.x),ci(B.y,z.y)),Y.set(ci(z.x,D.x),ci(z.y,D.y)),Z.set(ci(B.x,D.x),ci(B.y,D.y)),ea(F,R,Y,Z),ea(F,B,R,Z),ea(F,z,Y,R),ea(F,D,Z,Y));t.vertices=$,t.faces=ge,p&&(t.faceVertexUvs[0]=F)}};var it=new Dv,td=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s;let e=(s=(n=i.geometry)!=null?n:t==null?void 0:t.geometry)!=null?s:new Qu().copy(new ed(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=O(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){var l;let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=(l=i.geometry)!=null?l:new Qu().copy(new ed(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&n.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=n.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=n),n=new ta(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:H(O({},i),{type:"NonParametricGeometry"})})}static loadFromUrl(i,t,e){new Av(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(n.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(n))})}};var rd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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 S=d*g,y=p+Math.sin(S)*c,b=u+Math.cos(S)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,S=l.points.length;g<S;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(O({},i),{type:"PolygonGeometry"})})}};import{BufferGeometry as Bv,Float32BufferAttribute as El,Vector2 as fr,Vector3 as lt}from"three";var od=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Gl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(O({},i),{type:"PyramidGeometry"})})}};function an(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function _l(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 Ev(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Gl=class extends Bv{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,f=Math.PI/r,g=t*Math.cos(Math.PI/r),S=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-d,0),N=new lt(0,d,0),w=new fr(t,-d),k=new fr(g,-d),T=new fr(0,N.y).sub(k),m=new fr(0,N.y).sub(w),I=new fr(T.y,-T.x).normalize(),x=new fr(m.y,-m.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,C);let P;{let F=new lt(I.x,I.y,0),G=new lt(Math.cos(S)*F.x,F.y,Math.sin(S)*F.x);P=F.angleTo(G)}let $=s/Math.tan((Math.PI-T.angle())/2),J=s/Math.tan((Math.PI-P)/2),oe=new lt;if(!n){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let F=u++,G=[],B=w.clone(),z=$/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,Y=new fr(Math.sin(R),Math.cos(R));an(B,Y,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),G.push(u++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let he=[];{let F=new lt,G=new lt,B=new lt,z=new lt,D=new lt,R=new lt;for(let Y=0;Y<r;Y++){let Z=Y/r*Math.PI*2+f,j=(Y+.5)/r*Math.PI*2+f,V=(Y+1)/r*Math.PI*2+f,E=new fr(Math.sin(Z),Math.cos(Z)),U=new fr(Math.sin(j),Math.cos(j)),ne=new fr(Math.sin(V),Math.cos(V));an(w,E,G),an(w,ne,B),an(I,U,F),_l(N,G,B,J,J,z),c.push(z.x,z.y,z.z),_l(G,N,B,J,$,D),c.push(D.x,D.y,D.z),_l(B,G,N,$,J,R),c.push(R.x,R.y,R.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=u++,W=u++,K=u++;if(l.push(q,W,K),s>0){{let ae=G.clone().add(B).multiplyScalar(.5),ie=N.clone().sub(ae).normalize(),Ge=A.clone().sub(ae).normalize().add(ie).normalize().multiplyScalar(-1),xe=R.clone().sub(D);se(ae,xe,Ge,T.angle())}let X,Q;{let ae=new lt;an(x,ne,ae);let ie=R.clone().add(z).multiplyScalar(.5);ie=Ev(ie,B,N);let pe=R.clone().sub(z);[X,Q]=se(ie,pe,ae,P,z.y)}{let ae=X,ie=ae.clone().setY(0).normalize(),pe=new lt(0,-1,0),Ge=ie.clone().cross(pe);ge(ae,ie,pe,Ge)}he.concat(Q);{let ae=T.angle(),ie=Math.PI-ae,pe=N.clone();pe.y-=s/Math.sin(ae-Math.PI/2);let Ge=new lt,xe=[];for(let Te=0;Te<a;Te++){let ht=[],Lt=Math.PI/2-ie*Te/a,Cr=Math.cos(Lt),yt=Math.sin(Lt),Tr=j;for(let ao=0;ao<=Te;ao++){let lo=Math.cos(Tr),ke=Math.sin(Tr);F.x=Cr*ke,F.y=yt,F.z=Cr*lo,Ge.copy(pe).addScaledVector(F,s),c.push(Ge.x,Ge.y,Ge.z),h.push(F.x,F.y,F.z),p.push(0,0),ht.push(u++),Tr+=Math.PI*2/Te/r}xe.push(ht)}Q.reverse(),xe.push(Q);let $e=xe.length-1;for(let Te=0;Te<$e;Te++){let ht=xe[Te],Lt=xe[Te+1],Cr=ht.length-1;l.push(Lt[1],ht[0],Lt[0]);for(let yt=1;yt<=Cr;yt++)l.push(ht[yt],ht[yt-1],Lt[yt]),l.push(Lt[yt+1],ht[yt],Lt[yt])}}}}}this.setIndex(l),this.setAttribute("position",new El(c,3)),this.setAttribute("normal",new El(h,3)),this.setAttribute("uv",new El(p,2));function se(F,G,B,z,D){let R=-z/2,Y=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(Y));let j=new lt,V=new lt,E=1,U=u,ne=[];for(let q=0;q<=a;q++){let W=R+q/a*z;V.set(0,0,0),V.addScaledVector(Z,Math.sin(W)),V.addScaledVector(B,Math.cos(W));for(let K=0;K<=E;K++){let X=K/E-.5;if(j.copy(F),j.addScaledVector(G,X),j.addScaledVector(V,s),D!=null){let Q=Math.max(0,j.y-D);j.addScaledVector(G,-Q/G.y)}c.push(j.x,j.y,j.z),h.push(V.x,V.y,V.z),p.push(0,0),K===0&&ne.push(u),u++}}for(let q=0;q<a;q++)for(let W=0;W<E;W++){let K=U+W+(E+1)*q,X=K+(E+1),Q=X+1,ae=K+1;l.push(K,X,ae),l.push(X,Q,ae)}return[F.clone().addScaledVector(G,.5),ne]}function ge(F,G,B,z){let D=Math.PI/2,R=m.angle()-D,Y=[],Z=new lt,j=new lt;for(let E=0;E<=a;E++){let U=[],ne=E/a;for(let q=0;q<=E;q++){let K=((E?q/E:0)-.5)*b,X=Math.cos(K),Q=Math.sin(K),ae=Math.atan(Math.tan(R)*X),ie=(D+ae)*ne,pe=Math.cos(ie),Ge=Math.sin(ie);Z.set(0,0,0),Z.addScaledVector(G,Ge*X),Z.addScaledVector(B,pe),Z.addScaledVector(z,Ge*Q),j.copy(F).addScaledVector(Z,s),c.push(j.x,j.y,j.z),h.push(Z.x,Z.y,Z.z),p.push(0,0),U.push(u++)}Y.push(U)}let V=Y.length-1;for(let E=0;E<V;E++){let U=Y[E],ne=Y[E+1],q=U.length-1;l.push(U[0],ne[1],ne[0]);for(let W=1;W<=q;W++)l.push(U[W-1],U[W],ne[W]),l.push(U[W],ne[W+1],ne[W])}}}};var ra=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s,a,l;let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs((l=e.depth)!=null?l: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(N,w,k){return w>e&&k>r?Math.min(N*e/w,N*r/k):w>e?N*e/w:k>r?N*r/k:N}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 f=h.x,g=p.x,S=p.y,y=h.y;t.addPoint(t.createPoint(f,S)),t.addPoint(t.createPoint(g,S)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,w=t.points.length;N<w;N++)t.points[N].roundness=d[N],N>0&&d[N]!==d[N-1]&&(b=!1);b&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(O({},i),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as _v}from"three";var id=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 _v(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(O({},i),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Gv}from"three";var nd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Gv(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:H(O({},i),{type:"PlaneGeometry"})})}};var sd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{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 Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,f=0,g=s*Math.PI/360/o,S=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let w=g*N,k=d+Math.sin(w)*p,T=f+Math.cos(w)*u;h.addPoint(h.createPoint(k,T))}}else for(let N=0;N<o;N++){let w=d+Math.cos(S)*p,k=f+Math.sin(S)*u;h.addPoint(h.createPoint(w,k)),S+=g,w=d+Math.cos(S)*y,k=f+Math.sin(S)*b,N<=o,h.addPoint(h.createPoint(w,k)),S+=g}h.isClosed=!0;for(let N=0,w=h.points.length;N<w;N++)h.points[N].roundness=n;h.roundness=n,h.update();let A=ut.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(O({},i),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as zv}from"three";var oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new zv(t,e);return Object.assign(r,{userData:H(O({},i),{type:"TextFrameGeometry"})})}};var ad=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),n=Math.abs((l=e.depth)!=null?l: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=Rv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(O({},i),{type:"TorusGeometry"})})}};function Rv(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 nn(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as Fv}from"three";var ld=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width),tube:(s=e.tube)!=null?s: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 Fv(a,e,r,o,n,s);return Object.assign(l,{userData:H(O({},i),{type:"TorusKnotGeometry"})})}};var cd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs((s=e.depth)!=null?s: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=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(O({},i),{type:"TriangleGeometry"})})}};var ln={};Lc(ln,{addBarycentricAttribute:()=>Hv,fixUvs:()=>Wv,loadFromUrl:()=>qv,resizeGeometry:()=>kv,roundShapePolygon:()=>Uv});import{BufferGeometryLoader as Vv,Float32BufferAttribute as jv,Vector3 as zl}from"three";var hd=function(i,t){let e=t.x-i.x,r=t.y-i.y,o=Math.sqrt(e*e+r*r),n=e/o,s=r/o,a=Math.atan2(s,n);return{x:e,y:r,len:o,nx:n,ny:s,ang:a}},Uv=(i,t,e)=>{let r,o,n,s,a,l,c,h,p,u,d,f,g,S,y=t.length;for(s=t[y-2],i.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=hd(a,s),A=hd(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,d=Math.asin(c),p=1,u=!1,h<0?d<0?d=Math.PI+d:(d=Math.PI-d,p=-1,u=!0):d>0&&(p=-1,u=!0),f=d/2,S=Math.abs(Math.cos(f)*e/Math.sin(f)),S>Math.min(b.len/2,A.len/2)?(S=Math.min(b.len/2,A.len/2),g=Math.abs(S*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*S,n=a.y+A.ny*S,o+=-A.ny*g*p,n+=A.nx*g*p,i.absarc(o,n,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,u),s=a,a=l}i.closePath()},kv=(i,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=i.userData.parameters,n,s,a;t===0?(t=o.width,n=1):n=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,i.scale(n,s,a),o.width=t,o.height=e,o.depth=r},Hv=(i,t)=>{let e=[new zl(1,0,0),new zl(0,1,0),new zl(0,0,1)],r=i.attributes.position,o=new Float32Array(r.count*3);for(let n=0,s=r.count;n<s;n++)e[n%3].toArray(o,n*3);i.setAttribute(t,new jv(o,3))},qv=i=>new Promise(t=>{new Vv().load(i,r=>t(r))}),Wv=(i,t,e)=>{let r=i.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let n=r.getX(o),s=r.getY(o);r.setXY(o,(n+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as kd,BufferAttribute as Hd,Uint32BufferAttribute as oc,Float32BufferAttribute as ic,Matrix4 as tw,Vector3 as La}from"three";var $v,ia=new Promise(i=>{$v=i});import{BufferGeometryLoader as QS}from"three";import{DoubleSide as YS,EventDispatcher as KS,Matrix3 as XS,Vector3 as rc}from"three";import{NormalBlending as fS,ShaderMaterial as yS,FrontSide as gS}from"three";import{CubeReflectionMapping as sS,CubeRefractionMapping as aS,CubeUVReflectionMapping as lS,LinearEncoding as fd,sRGBEncoding as cS}from"three";var cn=class{constructor(t){t=t!=null?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}};import{MathUtils as Jv}from"three";var ue=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Jv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?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!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?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!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?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}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof ue&&(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)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),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}},nt=new Rl;import{Vector2 as pd}from"three";import{MathUtils as Yv}from"three";var me=class extends ue{constructor(e,r){super(e);this.scope="";r=r!=null?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!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Yv.generateUUID()),o=e.getUUID(o!=null?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!=null?o:this.uuid,e.getTempVar(o,n!=null?n:this.getType(e),s,this.getLabel()).name}};var Fe=class extends me{constructor(e,r){r=r!=null?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}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?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 vt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof pd?e:new pd(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}};import{Vector3 as ud}from"three";var St=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof ud?e:new ud(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}};import{Color as Kv}from"three";var Dt=class extends Kv{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}};var Er=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Dt?e:new Dt(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 Xv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,dd=/[a-z_0-9]+/gi,re=class extends me{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],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&nt.containsKeyword(d)){let S=this.keywords[d];if(!S){let y=nt.getKeywordData(d);y.cache&&(S=e.keywords[d]),S=S||nt.getKeyword(d,e),y.cache&&(e.keywords[d]=S)}g=S.build(e)}d!==g&&(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&&nt.contains(g)&&e.include(nt.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!=null?r:[],this.extensions=o!=null?o:{},this.keywords=n!=null?n:{},this.isMethod){let s=Xv.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}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let n={};for(let s in this.keywords)n[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=n,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var Zv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Fl=class extends me{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Fl.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=Zv.exec(e);this.useDefine=s!=null?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=Fl;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var Qv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
2
  )*?)}`,"gim"),eS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),hi=class extends me{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=Qv.exec(e);if(r){let o=r[2],n;for(;n=eS.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var pi=class extends me{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};nt.addKeyword("uv",function(){return new pi});nt.addKeyword("uv2",function(){return new pi(1)});import{LinearEncoding as tS,sRGBEncoding as rS}from"three";var vo=class extends me{constructor(e=new ue,r){super("v4");this.nodeType="ColorSpace";this.factor=new ue;this.input=e,this.method=r!=null?r:vo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case tS:return["Linear"];case rS:return["sRGB"];default:return[]}}generate(e,r){var l;let o=this.input.build(e,"v4"),n=this.getType(e),s=vo.Nodes[this.method],a=e.include(s);if(a===vo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=vo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=vo.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}},Nt=vo;Nt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
3
  `)),sRGBToLinear:new re(["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
4
  `)),LinearTosRGB:new re(["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(`
@@ -81,7 +81,7 @@ var Rm=Object.create;var jn=Object.defineProperty,Fm=Object.defineProperties,Vm=
81
81
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
82
  }
83
83
  return mip;
84
- }`,I);return{bilinearCubeUV:c,roughnessToMip:x,m0:u,cubeUV_maxMipLevel:r}}();var So=class extends me{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:So.VIEW}getShared(){return this.scope===So.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 So.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case So.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case So.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ct=So;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});nt.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});nt.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var gr=class extends me{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case gr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},dt=gr;dt.LOCAL="local",dt.WORLD="world",dt.VIEW="view",dt.PROJECTION="projection";nt.addKeyword("position",function(){return new dt});nt.addKeyword("worldPosition",function(){return new dt(dt.WORLD)});nt.addKeyword("viewPosition",function(){return new dt(dt.VIEW)});var rr=class extends me{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case rr.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new dt(dt.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 rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case rr.SPHERE:{let s=new rr(rr.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},xr=rr;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var na=class extends me{constructor(e=new Mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new mi(this.value,r!=null?r:new xr(xr.VECTOR),o),this.irradianceNode=new mi(this.value,new ct(ct.WORLD),new te(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}};import{CubeTexture as nS}from"three";var sa=class extends Fe{constructor(e=new nS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new xr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var h,p;if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=(h=this.uv)==null?void 0:h.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=(p=this.colorSpace)!=null?p:new Nt(new Ee("",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 yd=["x","y","z","w"],hS=["float","vec2","vec3","vec4"],pS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},uS={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[]"},aa=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+`
84
+ }`,I);return{bilinearCubeUV:c,roughnessToMip:x,m0:u,cubeUV_maxMipLevel:r}}();var So=class extends me{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:So.VIEW}getShared(){return this.scope===So.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 So.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case So.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case So.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ct=So;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});nt.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});nt.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var gr=class extends me{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case gr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},dt=gr;dt.LOCAL="local",dt.WORLD="world",dt.VIEW="view",dt.PROJECTION="projection";nt.addKeyword("position",function(){return new dt});nt.addKeyword("worldPosition",function(){return new dt(dt.WORLD)});nt.addKeyword("viewPosition",function(){return new dt(dt.VIEW)});var or=class extends me{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:or.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case or.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case or.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new dt(dt.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 or.CUBE:{let s=new or(or.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case or.SPHERE:{let s=new or(or.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},xr=or;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var na=class extends me{constructor(e=new Mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new mi(this.value,r!=null?r:new xr(xr.VECTOR),o),this.irradianceNode=new mi(this.value,new ct(ct.WORLD),new te(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}};import{CubeTexture as nS}from"three";var sa=class extends Fe{constructor(e=new nS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new xr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var h,p;if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=(h=this.uv)==null?void 0:h.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=(p=this.colorSpace)!=null?p:new Nt(new Ee("",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 yd=["x","y","z","w"],hS=["float","vec2","vec3","vec4"],pS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},uS={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[]"},aa=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+`
85
85
  `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},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
86
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
87
  #define SPE_BLENDING_NORMAL 0
@@ -690,7 +690,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
690
690
 
691
691
  return matcapColor.rgb;
692
692
  }
693
- `)}}();var wt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=_r.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 te(1));let r=new te(1),o=new ve(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 We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var n;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((n=t.userData.layers)==null?void 0:n.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){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let n=this.createLightLayer(t);return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++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==null?void 0:r.next)!==e;)r=r==null?void 0: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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){var n;e.id=(n=e.id)!=null?n:++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 s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0: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=_r.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if((o==null?void 0:o.id)==t){let s=this._createLayer(O({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(O({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=_r.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==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=_r.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 te(t.alpha),r=new ve(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 We(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 te(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ve(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 We(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new We(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){var o,n,s,a,l,c,h,p,u,d,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((n=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?n:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((u=t==null?void 0:t.getValue("roughness"))!=null?u:.3),e.metalness=new te((d=t==null?void 0:t.getValue("metalness"))!=null?d:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new wt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),n=t.head.next,s=o;for(;n!=null;)s.next=new We(n.id,void 0,{type:n.type}).fromJSON(n,e),n=n.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e: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){var r,o,n,s,a,l,c,h,p,u,d,f,g,S,y,b,A,N,w,k,T,m,I,x,L,C,P,$,J,oe,he,se,ge,F,G,B,z,D,R,Y,Z,j,V,E,U,ne,q,W,K,X,Q,ae,ie,pe,Ge,xe,$e,Te,ht,Lt,Cr,yt,Tr,ao,lo,ke,gt,_t,En,_n,Gn,zn,Rn,Fn,Ut,zi,pt,Po,Vn,co;let e=t.type;switch(e){case"color":{let be=new _e((r=t.color)!=null?r:5855577),Ce=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Ce;let we=new ve((n=t.mode)!=null?n:0);return be.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,color:be,alpha:Ce,calpha:Se,mode:we}),color:be,alpha:Se,mode:we}}case"texture":{let be=(s=t.texture)!=null?s:new yr,Ce=be.matrix;t.mat&&Ce.copy(t.mat),be.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new ve((l=t.projection)!=null?l:0),Me=new ve((c=t.axis)!=null?c:0),Be=new ve((h=t.side)!=null?h:0),ze=new vt(t.size?new Qr(t.size[0],t.size[1]):new Qr(100,100)),je=new te((p=t.alpha)!=null?p:1),Ie=new ve((u=t.mode)!=null?u:0),He=new Mt(be),st=new St((d=t.textureSize)!=null?d:new eo(be.image?be.image.width:0,be.image?be.image.height:0)),Gt=new dn(He,st,Se,we,Me,Be,ze,je,Ie),Zt=new Ee(Gt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Gt.mat,alpha:je,calpha:Zt,mode:Ie}),color:Gt,alpha:Zt,mode:Ie}}case"matcap":{let be=(f=t.texture)!=null?f:new yr;be.needsUpdate=!0;let Ce=new te((g=t.alpha)!=null?g:1),Se=new Mt(be),we=new ve((S=t.mode)!=null?S:0),Me=new Cn(Se,Ce,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Ce,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let be=new _e((y=t.color)!=null?y:16777215),Ce=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((w=t.factor)!=null?w:1),Be=new te((k=t.alpha)!=null?k:1),ze=new ve((T=t.mode)!=null?T:0),je=new fn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:be,bias:Ce,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:Ie,mode:ze}),color:je,alpha:Ie,mode:ze}}case"rainbow":{let be=new te((m=t.filmThickness)!=null?m:30),Ce=new te((I=t.movement)!=null?I:0),Se=new St((x=t.wavelengths)!=null?x:new eo(0,0,0)),we=new te((L=t.noiseStrength)!=null?L:0),Me=new te((C=t.noiseScale)!=null?C:1),Be=new St((P=t.offset)!=null?P:new eo(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new gn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f"),He=new ve((J=t.mode)!=null?J:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:be,movement:Ce,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:Ie,mode:He}),color:je,alpha:Ie,mode:He}}case"transmission":{let be=new te((oe=t.thickness)!=null?oe:10),Ce=new te((he=t.ior)!=null?he:1.5),Se=new te((se=t.roughness)!=null?se:.5),we=new vt((ge=t.transmissionSamplerSize)!=null?ge:new Qr(2048,2048)),Me=(F=t.transmissionSamplerMap)!=null?F:new yr,Be=(G=t.transmissionDepthMap)!=null?G:new yr,ze=new Mt(Me),je=new Mt(Be),Ie=window.innerWidth,He=window.innerHeight,st=Ie>=He?new vt(He/Ie,1):new vt(1,Ie/He),Gt=new te((B=t.alpha)!=null?B:1),Zt=new xn(be,Ce,Se,we,ze,je,st,Gt),Nr=new Ee(Zt.calpha,"f"),Vr=new ve((z=t.mode)!=null?z:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:be,ior:Ce,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Gt,calpha:Nr,mode:Vr}),color:Zt,alpha:Nr,mode:Vr}}case"depth":{let be=new ve((D=t.gradientType)!=null?D:0),Ce=new un((R=t.smooth)!=null?R:!1),Se=new te((Y=t.near)!=null?Y:50),we=new te((Z=t.far)!=null?Z:200),Me=new te((j=t.isVector)!=null?j:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new St((E=t.origin)!=null?E:new eo),je=new St((U=t.direction)!=null?U:new eo),Ie=new ve((ne=t.num)!=null?ne:0),He;t.colors?He=new wo(Ie.value+1,t.colors):(He=new wo(Ie.value+1,new la(0,0,0,1)),He.value[1]=new la(1,1,1,1));let st;t.steps?st=new Lo(Ie.value+1,t.steps):(st=new Lo(Ie.value+1,1),st.value[0]=0);let Gt=new te((q=t.alpha)!=null?q:1),Zt=new ve((W=t.mode)!=null?W:0),Nr=new Ln(be,Ce,Se,we,Me,Be,ze,je,He,st,Ie,Gt),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:Ie,alpha:Gt,calpha:Vr,mode:Zt}),color:Nr,alpha:Vr,mode:Zt}}case"noise":{let be=new te((K=t.scale)!=null?K:1),Ce=new St((X=t.size)!=null?X:new eo(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new vt((ae=t.fA)!=null?ae:new Qr(1.7,9.2)),Me=new vt((ie=t.fB)!=null?ie:new Qr(8.3,2.8)),Be=new vt((pe=t.distortion)!=null?pe:new Qr(1,1)),ze=new Er(t.colorA),je=new Er(t.colorB),Ie=new Er(t.colorC),He=new Er(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Gt=new ve((xe=t.mode)!=null?xe:0),Zt=new ve(($e=t.noiseType)!=null?$e:0),Nr=new Sn(be,Ce,Se,we,Me,Be,ze,je,Ie,He,st,Zt),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:be,size:Ce,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:Ie,colorD:He,alpha:st,calpha:Vr,mode:Gt,noiseType:Zt}),color:Nr,alpha:Vr,mode:Gt}}case"normal":{let be=new St((Te=t.cnormal)!=null?Te:new eo(1,1,1)),Ce=new te((ht=t.alpha)!=null?ht:1),Se=new ve((Lt=t.mode)!=null?Lt:0),we=new bn(be,Ce),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,cnormal:be,alpha:Ce,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let be=new ve((Cr=t.gradientType)!=null?Cr:0),Ce=new un((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new wo(t.colors.length,t.colors):(Se=new wo(10,new la(0,0,0,1)),Se.value[1]=new la(1,1,1,1));let we;t.steps?we=new Lo(t.steps.length,t.steps):(we=new Lo(10,1),we.value[0]=0);let Me=new vt((Tr=t.offset)!=null?Tr:new Qr(0,0)),Be=new vt((ao=t.morph)!=null?ao:new Qr(0,0)),ze=new te((lo=t.angle)!=null?lo:0),je=new te((ke=t.alpha)!=null?ke:1),Ie=new ve((gt=t.mode)!=null?gt:0),He=new vn(be,Ce,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:Ie}),color:He,alpha:st,mode:Ie}}case"displace":{let be=new ve((_t=t.displacementType)!=null?_t:0);if(be.value===0){let Ce=new St((En=t.offset)!=null?En:new eo(0,0,0)),Se=new te((_n=t.scale)!=null?_n:10),we=new te((Gn=t.intensity)!=null?Gn:8),Me=new te((zn=t.movement)!=null?zn:1),Be=new te((Rn=t.alpha)!=null?Rn:1),ze=new ve((Fn=t.mode)!=null?Fn:0),je=new ve((Ut=t.noiseType)!=null?Ut:0),Ie=new yi(be,we,Me,Ce,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,offset:Ce,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:Ie}}else if(be.value===1){let Ce=(zi=t.texture)!=null?zi:new yr,Se=Ce.matrix;t.mat&&Se.copy(t.mat),Ce.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Mt(Ce),Be=new te((Po=t.crop)!=null?Po:0),ze=new te((Vn=t.alpha)!=null?Vn:1),je=new ve((co=t.mode)!=null?co:0),Ie=new yi(be,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,intensity:we,texture:Me,crop:Be,mat:Ie.mat,alpha:ze,mode:je}),position:Ie}}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 wn(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("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 wn(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 Bt(e,t[r].position,Bt.ADD),e=new Bt(e,new te(.5).setReadonly(!0),Bt.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 Vt=class extends yS{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!=null?e:new pn(new dt(dt.PROJECTION)),this.fragment=r!=null?r:new pn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!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 wt(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){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new aa;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>fS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:gS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as xS,UniformsUtils as bS}from"three";var ca=class extends ue{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(bS.merge([xS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
693
+ `)}}();var wt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=_r.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 te(1));let r=new te(1),o=new ve(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 We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var n;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((n=t.userData.layers)==null?void 0:n.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){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let n=this.createLightLayer(t);return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++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==null?void 0:r.next)!==e;)r=r==null?void 0: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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){var n;e.id=(n=e.id)!=null?n:++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 s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0: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=_r.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if((o==null?void 0:o.id)==t){let s=this._createLayer(O({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(O({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=_r.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==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=_r.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 te(t.alpha),r=new ve(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 We(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 te(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ve(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 We(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new We(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){var o,n,s,a,l,c,h,p,u,d,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((n=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?n:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((u=t==null?void 0:t.getValue("roughness"))!=null?u:.3),e.metalness=new te((d=t==null?void 0:t.getValue("metalness"))!=null?d:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new wt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),n=t.head.next,s=o;for(;n!=null;)s.next=new We(n.id,void 0,{type:n.type}).fromJSON(n,e),n=n.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e: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){var r,o,n,s,a,l,c,h,p,u,d,f,g,S,y,b,A,N,w,k,T,m,I,x,L,C,P,$,J,oe,he,se,ge,F,G,B,z,D,R,Y,Z,j,V,E,U,ne,q,W,K,X,Q,ae,ie,pe,Ge,xe,$e,Te,ht,Lt,Cr,yt,Tr,ao,lo,ke,gt,_t,En,_n,Gn,zn,Rn,Fn,Ut,zi,pt,Po,Vn,co;let e=t.type;switch(e){case"color":{let be=new _e((r=t.color)!=null?r:5855577),Ce=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Ce;let we=new ve((n=t.mode)!=null?n:0);return be.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,color:be,alpha:Ce,calpha:Se,mode:we}),color:be,alpha:Se,mode:we}}case"texture":{let be=(s=t.texture)!=null?s:new yr,Ce=be.matrix;t.mat&&Ce.copy(t.mat),be.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new ve((l=t.projection)!=null?l:0),Me=new ve((c=t.axis)!=null?c:0),Be=new ve((h=t.side)!=null?h:0),ze=new vt(t.size?new Qr(t.size[0],t.size[1]):new Qr(100,100)),je=new te((p=t.alpha)!=null?p:1),Ie=new ve((u=t.mode)!=null?u:0),He=new Mt(be),st=new St((d=t.textureSize)!=null?d:new eo(be.image?be.image.width:0,be.image?be.image.height:0)),Gt=new dn(He,st,Se,we,Me,Be,ze,je,Ie),Qt=new Ee(Gt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Gt.mat,alpha:je,calpha:Qt,mode:Ie}),color:Gt,alpha:Qt,mode:Ie}}case"matcap":{let be=(f=t.texture)!=null?f:new yr;be.needsUpdate=!0;let Ce=new te((g=t.alpha)!=null?g:1),Se=new Mt(be),we=new ve((S=t.mode)!=null?S:0),Me=new Cn(Se,Ce,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Ce,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let be=new _e((y=t.color)!=null?y:16777215),Ce=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((w=t.factor)!=null?w:1),Be=new te((k=t.alpha)!=null?k:1),ze=new ve((T=t.mode)!=null?T:0),je=new fn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:be,bias:Ce,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:Ie,mode:ze}),color:je,alpha:Ie,mode:ze}}case"rainbow":{let be=new te((m=t.filmThickness)!=null?m:30),Ce=new te((I=t.movement)!=null?I:0),Se=new St((x=t.wavelengths)!=null?x:new eo(0,0,0)),we=new te((L=t.noiseStrength)!=null?L:0),Me=new te((C=t.noiseScale)!=null?C:1),Be=new St((P=t.offset)!=null?P:new eo(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new gn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f"),He=new ve((J=t.mode)!=null?J:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:be,movement:Ce,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:Ie,mode:He}),color:je,alpha:Ie,mode:He}}case"transmission":{let be=new te((oe=t.thickness)!=null?oe:10),Ce=new te((he=t.ior)!=null?he:1.5),Se=new te((se=t.roughness)!=null?se:.5),we=new vt((ge=t.transmissionSamplerSize)!=null?ge:new Qr(2048,2048)),Me=(F=t.transmissionSamplerMap)!=null?F:new yr,Be=(G=t.transmissionDepthMap)!=null?G:new yr,ze=new Mt(Me),je=new Mt(Be),Ie=window.innerWidth,He=window.innerHeight,st=Ie>=He?new vt(He/Ie,1):new vt(1,Ie/He),Gt=new te((B=t.alpha)!=null?B:1),Qt=new xn(be,Ce,Se,we,ze,je,st,Gt),Nr=new Ee(Qt.calpha,"f"),Vr=new ve((z=t.mode)!=null?z:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:be,ior:Ce,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Gt,calpha:Nr,mode:Vr}),color:Qt,alpha:Nr,mode:Vr}}case"depth":{let be=new ve((D=t.gradientType)!=null?D:0),Ce=new un((R=t.smooth)!=null?R:!1),Se=new te((Y=t.near)!=null?Y:50),we=new te((Z=t.far)!=null?Z:200),Me=new te((j=t.isVector)!=null?j:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new St((E=t.origin)!=null?E:new eo),je=new St((U=t.direction)!=null?U:new eo),Ie=new ve((ne=t.num)!=null?ne:0),He;t.colors?He=new wo(Ie.value+1,t.colors):(He=new wo(Ie.value+1,new la(0,0,0,1)),He.value[1]=new la(1,1,1,1));let st;t.steps?st=new Lo(Ie.value+1,t.steps):(st=new Lo(Ie.value+1,1),st.value[0]=0);let Gt=new te((q=t.alpha)!=null?q:1),Qt=new ve((W=t.mode)!=null?W:0),Nr=new Ln(be,Ce,Se,we,Me,Be,ze,je,He,st,Ie,Gt),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:Ie,alpha:Gt,calpha:Vr,mode:Qt}),color:Nr,alpha:Vr,mode:Qt}}case"noise":{let be=new te((K=t.scale)!=null?K:1),Ce=new St((X=t.size)!=null?X:new eo(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new vt((ae=t.fA)!=null?ae:new Qr(1.7,9.2)),Me=new vt((ie=t.fB)!=null?ie:new Qr(8.3,2.8)),Be=new vt((pe=t.distortion)!=null?pe:new Qr(1,1)),ze=new Er(t.colorA),je=new Er(t.colorB),Ie=new Er(t.colorC),He=new Er(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Gt=new ve((xe=t.mode)!=null?xe:0),Qt=new ve(($e=t.noiseType)!=null?$e:0),Nr=new Sn(be,Ce,Se,we,Me,Be,ze,je,Ie,He,st,Qt),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:be,size:Ce,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:Ie,colorD:He,alpha:st,calpha:Vr,mode:Gt,noiseType:Qt}),color:Nr,alpha:Vr,mode:Gt}}case"normal":{let be=new St((Te=t.cnormal)!=null?Te:new eo(1,1,1)),Ce=new te((ht=t.alpha)!=null?ht:1),Se=new ve((Lt=t.mode)!=null?Lt:0),we=new bn(be,Ce),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,cnormal:be,alpha:Ce,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let be=new ve((Cr=t.gradientType)!=null?Cr:0),Ce=new un((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new wo(t.colors.length,t.colors):(Se=new wo(10,new la(0,0,0,1)),Se.value[1]=new la(1,1,1,1));let we;t.steps?we=new Lo(t.steps.length,t.steps):(we=new Lo(10,1),we.value[0]=0);let Me=new vt((Tr=t.offset)!=null?Tr:new Qr(0,0)),Be=new vt((ao=t.morph)!=null?ao:new Qr(0,0)),ze=new te((lo=t.angle)!=null?lo:0),je=new te((ke=t.alpha)!=null?ke:1),Ie=new ve((gt=t.mode)!=null?gt:0),He=new vn(be,Ce,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:Ie}),color:He,alpha:st,mode:Ie}}case"displace":{let be=new ve((_t=t.displacementType)!=null?_t:0);if(be.value===0){let Ce=new St((En=t.offset)!=null?En:new eo(0,0,0)),Se=new te((_n=t.scale)!=null?_n:10),we=new te((Gn=t.intensity)!=null?Gn:8),Me=new te((zn=t.movement)!=null?zn:1),Be=new te((Rn=t.alpha)!=null?Rn:1),ze=new ve((Fn=t.mode)!=null?Fn:0),je=new ve((Ut=t.noiseType)!=null?Ut:0),Ie=new yi(be,we,Me,Ce,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,offset:Ce,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:Ie}}else if(be.value===1){let Ce=(zi=t.texture)!=null?zi:new yr,Se=Ce.matrix;t.mat&&Se.copy(t.mat),Ce.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Mt(Ce),Be=new te((Po=t.crop)!=null?Po:0),ze=new te((Vn=t.alpha)!=null?Vn:1),je=new ve((co=t.mode)!=null?co:0),Ie=new yi(be,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,intensity:we,texture:Me,crop:Be,mat:Ie.mat,alpha:ze,mode:je}),position:Ie}}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 wn(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("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 wn(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 Bt(e,t[r].position,Bt.ADD),e=new Bt(e,new te(.5).setReadonly(!0),Bt.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 Vt=class extends yS{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!=null?e:new pn(new dt(dt.PROJECTION)),this.fragment=r!=null?r:new pn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!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 wt(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){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new aa;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>fS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:gS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as xS,UniformsUtils as bS}from"three";var ca=class extends ue{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(bS.merge([xS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
694
694
  `));let n=["#include <beginnormal_vertex>",`
695
695
  #if !defined( USE_LAYER_DISPLACE )
696
696
  #include <defaultnormal_vertex>
@@ -938,5 +938,5 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
938
938
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
939
939
  }
940
940
  `),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(`
941
- `)}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 Vt{constructor(e=new ga,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 vi=class extends xa{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new vi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{Color as Xl}from"three";function Xe(i,t){let e;if(typeof i=="string"){let r=t==null?void 0: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 Dt(0,0,0,0))}else return"a"in i?new Dt(i.r,i.g,i.b,i.a):new Dt(i.r,i.g,i.b,1);return e}import{Matrix3 as Ld,Texture as Kl,Vector2 as Tn,Vector3 as to,Vector4 as Cd}from"three";function Td(i,t){switch(i.data.type){case"light":return ir(i);case"fresnel":return TS(i,t);case"gradient":return NS(i);case"depth":return MS(i);case"normal":return PS(i);case"noise":return OS(i,t);case"texture":return IS(i,t);case"rainbow":return AS(i);case"transmission":return DS(i,t);case"matcap":return BS(i,t);case"displace":return ES(i);case"color":default:return CS(i,t)}}function Nd(i){return{type:i.data.type}}function ir(i){let{alpha:t,mode:e}=i.data;return H(O({},Nd(i)),{alpha:t,mode:e})}function CS(i,t){return H(O({},ir(i)),{color:Xe(i.data.color,t)})}function TS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return H(O({},ir(i)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:n})}function NS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return H(O({},ir(i)),{gradientType:t,smooth:e,colors:r.map(l=>new Cd(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Tn(...s),morph:new Tn(...a),angle:n})}function MS(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 H(O({},ir(i)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new to(...s),direction:a?new to(...a):new to(1,0,0),num:p,colors:l.map(u=>new Cd(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function PS(i){let{cnormal:t}=i.data;return H(O({},ir(i)),{cnormal:new to(t[0],t[1],t[2])})}function OS(i,t){let{data:e}=i;return H(O({},ir(i)),{scale:e.scale,move:e.move,fA:new Tn(...e.fA),fB:new Tn(...e.fB),size:new to(...e.size),distortion:new Tn(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function IS(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 Kl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let d=new Image;d.src=Si(a.data),d.onload=()=>{t!=null&&t.onImageLoad&&(t==null||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,H(O({},ir(i)),{texture:p,mat:new Ld().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 AS(i){let{data:t}=i;return H(O({},ir(i)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new to(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new to(...t.offset)})}function DS(i,t){let{data:e}=i;return H(O({},ir(i)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function BS(i,t){let e=new Kl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=Si(r.data),s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},o=s}e.image=o;let n=16777215;return H(O({},ir(i)),{color:n,texture:e})}function ES(i){let{data:t}=i,e=H(O({},Nd(i)),{intensity:t.intensity});if(t.displacementType==="noise")return H(O({},e),{offset:new to(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Kl,o=new Ld().setUvTransform(0,0,1,1,0,0,0);return H(O({},e),{texture:r,mat:o,crop:t.crop})}}function Md(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`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Id,Vector4 as _S}from"three";var wi;(t=>{function i(e){return new Id(e.x,e.y,e.z).getHex()}t.getHex=i})(wi||(wi={}));var Pd;(t=>{function i(e){return new _S(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(Pd||(Pd={}));var Od;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Id(r.r,r.g,r.b).getHex()}e.getHex=t})(Od||(Od={}));function Nn(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):Zl(i,t)}function Ad(i,t){return i.map(e=>Nn(e,t))}function Zl(i,t){var s,a;let e=(s=i.layers)!=null?s:xo.defaultTwoLayerData("phong").layers,r=GS(e),o;switch(r.category){case"basic":o=new mt;break;case"lambert":{o=new xi;break}case"toon":{o=new bi;break}case"physical":o=new vi;break;case"phong":default:{o=new Pt;break}}o.name=(a=i.name)!=null?a:"Untitled Material";let n=o.userData.layers;zS(n);for(let l=e.length-1;l>=0;l--)RS(n,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof Xl?h.emissive.value=u:h.emissive.value.setHex(wi.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Xl?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Xl?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}}return n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function GS(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 zS(i){for(let t of i.getLayers())i.removeLayer(t.id)}function RS(i,t,e){let r=Td(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Md(n,o,t.data)}import{Mesh as $S,Matrix4 as JS}from"three";import{Matrix4 as ec}from"three";import{Box3 as zd,Line3 as $t,Matrix4 as Ql,Vector3 as Ve}from"three";import{HemisphereLight as Dd}from"three";var ba=i=>"isEntity"in i,br=i=>"isAbstractMesh"in i,vr=i=>i!==null&&i.isBooleanMesh,Bd=i=>i.objectType==="CombinedCamera";var Gr=i=>"objectHelper"in i;function FS(i,t){var r;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((r=t.hiddenMatrix)!=null?r:$r.identity)),e&&(i.updateMatrix(),vr(i.parent)&&br(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 VS(i,t){FS(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 Ed(i,t,e){VS(i,t),t.color!==void 0&&(i.color=Xe(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Dd)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Dd)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&Gr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function _d(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 Li=new zd,ft=new Ve,ce=new Ve,tt=new Ql;function jS(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 Gd=(i,t,e,r)=>{var o;if(br(i)){let n=i.geometry.userData.parameters,s=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?ft.copy(i.originalGeometry.boundingSphere.center):s!==void 0&&(jS(Li,s,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:s.count),Li.getCenter(ft)),i.forceComputeSize?Li.getSize(ce).multiplyScalar(.5):ce.set(n.width,n.height,(o=n.depth)!=null?o:0).multiplyScalar(.5)}else if(Gr(i)&&r===!0){let n=i.geometryHelper.getAttribute("position");Li.setFromArray(n.array),Li.getCenter(ft),Li.getSize(ce).multiplyScalar(.5)}else ft.setScalar(0),ce.setScalar(0);tt.copy(t).multiply(i.matrixWorld),ce.x===0&&ce.y===0&&ce.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-ce.x,ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,-ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,-ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,-ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,-ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,ce.y,-ce.z).add(ft).applyMatrix4(tt))},Mn=class extends zd{constructor(){super(...arguments);this.matrix=new Ql;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 Ql().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&&Gd(s,r,n,e.enableHelper===!0)}):Gd(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(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ce).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-ce.x,ce.y,ce.z).applyMatrix4(tt),new Ve(-ce.x,-ce.y,ce.z).applyMatrix4(tt),new Ve(ce.x,-ce.y,ce.z).applyMatrix4(tt),new Ve(ce.x,ce.y,ce.z).applyMatrix4(tt),new Ve(-ce.x,ce.y,-ce.z).applyMatrix4(tt),new Ve(-ce.x,-ce.y,-ce.z).applyMatrix4(tt),new Ve(ce.x,-ce.y,-ce.z).applyMatrix4(tt),new Ve(ce.x,ce.y,-ce.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new $t(this.vertices[0],this.vertices[3]),new $t(this.vertices[1],this.vertices[2]),new $t(this.vertices[5],this.vertices[6]),new $t(this.vertices[4],this.vertices[7]),new $t(this.vertices[0],this.vertices[1]),new $t(this.vertices[3],this.vertices[2]),new $t(this.vertices[7],this.vertices[6]),new $t(this.vertices[4],this.vertices[5]),new $t(this.vertices[0],this.vertices[4]),new $t(this.vertices[1],this.vertices[5]),new $t(this.vertices[2],this.vertices[6]),new $t(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as US,Matrix4 as kS,Light as HS}from"three";function Pn(i){let t=[];for(let e in i){let r=i[e];delete r.metadata,t.push(r)}return t}function qS(i){let t=[];for(let e in i)t.push(i[e]);return t}var va=i=>class extends i{hasEntityChild(){return this.children.some(e=>ba(e))}isDescendantOf(e){e instanceof US&&(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 kS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),ba(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}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let n={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(n.name=this.name),n.matrix=this.matrix.toArray(),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),n.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),this.children.length>0){n.children=[];for(let s of this.children)(ba(s)||s instanceof HS)&&n.children.push(s.toJSON(e).object)}if(r){let s=Pn(e.geometries),a=Pn(e.materials),l=Pn(e.textures),c=Pn(e.images),h=Pn(e.interactionStates),p=qS(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=n,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Jt=i=>"isEntity"in i,Rd=i=>"isAbstractMesh"in i,Yt=i=>class extends va(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new ec;this._singleBBox=new Mn;this._recursiveBBox=new Mn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Jt(o)&&o.traverseEntity(n=>{Gr(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=>{Jt(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)Jt(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)Jt(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)Jt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new ec,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Jt(n)&&n.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),n=o.object;return this.raycastLock===!0&&(n.raycastLock=!0),this.scaleLock===!0&&(n.scaleLock=!0),n.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new ec}),this.copy(r),r.children=o,this}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 $o(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=O({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(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}};import{Object3D as WS,Vector3 as On,Euler as Fd,MathUtils as ro}from"three";var Co=class extends WS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new On),n=.1;this.parameters=xs.defaultData(o.toArray(),n),uo(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}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.map(o=>o.clone());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.clone();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*ro.DEG2RAD,n=r.end*ro.DEG2RAD,s=o-n,a=new Fd(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.DEG2RAD),l;switch(r.axis){case"z":l=new On(0,0,1);break;case"y":l=new On(0,1,0);break;default:case"x":l=new On(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 Fd(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.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 On(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}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var rt=class extends Yt($S){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new JS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,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}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=tc[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(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){ln.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}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=In(r),n=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Co(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Co(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,n,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(n=e.receiveShadow)!=null?n:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Kt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),vr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),vr(e)&&e.invalidateUpstreamBooleanData())}};var ZS=new rc(0,0,1),Vd=new rc,jd=new rc,Ud=new XS,oo=class extends rt{constructor(e=ut.create({}),r=new mt({side:YS})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new KS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}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){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Ud.getNormalMatrix(this.matrixWorld),Vd.copy(ZS).applyMatrix3(Ud).normalize(),jd.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Vd,jd)}clone(e){let r=this.shape.clone(),o=this.material.clone(),n=this.geometry.userData,s=ut.create(Object.assign({},n,{shape:r})),a=new oo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function Sa(i,t){return ew(i)}function ew(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Pe.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new QS().parse(i));let e;try{e=In(t)}catch(r){console.error(r)}if(!e){let r=Pe.createFromState(ti.defaultData(),100,100);t.shape=r,e=In(t)}return e}var fe;ia.then(i=>{fe=i});var qd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Wd=new Uint32Array([0,1,2,3]),$d=new Uint8Array([4]),nr=class{static build(i,t,e,r){let o,n,s;if((i==null?void 0:i.positionWASM)!==void 0){t&&t!==0&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{o=nr.allocate(i,r)}catch(a){console.error(a,i),o=nr.allocate({positionWASM:qd,indexWASM:Wd,verticesPerFaceWASM:$d},r)}fe.set_destination_refinement_level(o,0),n=nr.buildLevel(o,!0,e)}else o=t;if(i!==void 0&&i.subdivisions!==void 0){let a=rw(i.subdivisions,i.positionWASM.length);fe.set_destination_refinement_level(o,a),a>0?s=nr.buildLevel(o,!1,e):s=null}return{subdivPointer:o,originalGeometry:n,subdividedGeometry:s}}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:Sa(i),r,o,n,s;return{positions:r,triIndices:s}=lc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=cc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){var N;let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=qd,r=Wd,o=$d);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,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),S=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+d,p);S.set(e,0),S.set(n,e.length),S.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let b;(N=i==null?void 0:i.scaleBaked)!=null&&N.some(w=>w!==1)&&(b=new tw().makeScale(...i.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(i,t,e,r,o){let n=o?fe.get_mesh_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t,o.elements):fe.get_mesh_data(i,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t),s=8,a=fe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=fe.HEAPU32[a[c]>>2],d=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let S=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(S>>2,(S>>2)+l[c]);if(c++,r===void 0){let b=new kd;if(b.setIndex(new oc(y,1)),b.setAttribute("position",new ic(p,3)),b.setAttribute("normal",new ic(d,3)),t){b.setAttribute("faceMap",new oc(g,1));let A=new Float32Array(d.length/3*4).fill(0);b.setAttribute("color",new Hd(A,4))}return fe.free_mesh_data(n),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=fe.get_wireframe_data_for_base_level(i),o=4,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=fe.HEAPU32[n[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[n[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new kd;u.setAttribute("position",new ic(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 u.setAttribute("color",new Hd(d,3)),u.setIndex(new oc(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||fe.set_destination_refinement_level(i,1);let r=e?fe.get_topological_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(i,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=fe.HEAPU32[n[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[n[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[n[a]>>2],d=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};function rw(i,t){let e=i;return e=Math.min(e,3-Math.ceil(Math.log(t/172e3)/Math.log(4))),Math.max(e,0)}var Jd=["getX","getY","getZ"];function lc(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[Jd[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Jd[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 wa=new La,nc=new La,sc=new La,ac=new La;function cc(i,t,e){var n;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)i.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)i.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(n=e.capStartIndex)!=null?n:t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){wa.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),nc.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),sc.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),ac.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),nc.sub(wa).normalize(),sc.sub(wa).normalize(),ac.sub(wa).normalize();let l=nc.cross(sc).dot(ac);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(s.push(h),l++),i[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Kt={};Lc(Kt,{calcBoolean:()=>aw,calcBooleanTopological:()=>sw,freeMeshSet:()=>hw,getMeshSet:()=>lw,transformMeshSet:()=>cw});var ow,Yd=new Promise(i=>{ow=i});import{Float32BufferAttribute as Kd,Sphere as iw}from"three";var Le,Ci;Yd.then(i=>Le=i);function nw(i,t){let e,{positions:r,triIndices:o}=lc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=cc(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 Xd(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=Le._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Le.HEAPU32.buffer,n,t):new Float32Array(Le.HEAPF32.buffer,n,t)).set(i,0),n}function Zd(i){switch(i){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function sw(i,t){Ci===void 0&&(Ci=Le.init_csg());let e=Xd(i),r=Le.csg_calc_topological(Ci,e,i.length,Zd(t));Le._free(e);let o=6,n=Le.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=Le.HEAPU32[n[a]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=Le.HEAPU32[n[a]>>2],p=new Uint32Array(Le.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=Le.HEAPU32[n[a]>>2],d=new Uint8Array(Le.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return Le.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function aw(i,t,e){Ci===void 0&&(Ci=Le.init_csg());let r=Xd(i),o=Le.csg_calc(Ci,r,i.length,Zd(t));Le._free(r);let n=5,s=Le.HEAPU32.subarray(o>>2,(o>>2)+n),a=s.subarray(2,2+3),l=0,c=Le.HEAPU32[s[l]>>2],h=Le.HEAPF32.subarray(c>>2,(c>>2)+a[l]);l++;let p=Le.HEAPU32[s[l]>>2],u=Le.HEAPF32.subarray(p>>2,(p>>2)+a[l]);l++;let d=a[l];e.setAttribute("position",new Kd(h,3)),e.setAttribute("normal",new Kd(u,3));let f=Le.HEAPF32.subarray((o>>2)+5,(o>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new iw),e.boundingSphere.center.set(f[0],f[1],f[2]),e.boundingSphere.radius=(f[3]**2+f[4]**2+f[5]**2)**.5,e.userData.parameters={width:f[3]*2,height:f[4]*2,depth:f[5]*2},Le.free_mesh_data(o),d}function lw(i,t){if(Le===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((S,y)=>S+y,0)+o);for(let S=0,y=0,b=0;S<g.verticesPerFace.length;S++){r[b++]=g.verticesPerFace[S];for(let A=0;A<g.verticesPerFace[S];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=nw(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=Le._malloc(c),d=new Float32Array(Le.HEAPF32.buffer,u,a),f=new Uint32Array(Le.HEAPU32.buffer,u+h,l);return d.set(e,0),f.set(r,0),Le.get_csg_mesh(u,n,u+h,s,o)}function cw(i,t){Le.transform_csg_mesh(i,t.elements)}function hw(i){Le.free_csg_mesh(i)}var tc={ConeGeometry:yu,CubeGeometry:gu,CylinderGeometry:fu,DodecahedronGeometry:xu,EllipseGeometry:Hu,HelixGeometry:Yu,IcosahedronGeometry:Ku,LatheGeometry:Xu,NonParametricGeometry:td,PolygonGeometry:rd,PyramidGeometry:od,RectangleGeometry:ra,SphereGeometry:id,PlaneGeometry:nd,StarGeometry:sd,TextFrameGeometry:oa,TorusGeometry:ad,TorusKnotGeometry:ld,TriangleGeometry:cd,VectorGeometry:ut},In=i=>tc[i.type].create(i);import{BufferGeometry as Qd,Matrix4 as pw}from"three";var em=new pw;var Ca=class extends rt{constructor(e=new Qd,r=new Pt){super(e,r);this.booleanOp=2;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){var o;if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];vr(s)&&s.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(Rd(s)&&s.booleanExclude===!1&&((o=s.geometry.attributes.position)==null?void 0:o.count)>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Kt.getMeshSet(s.geometry,e===!0),s.booleanMeshSetAddress===-1)return;Kt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else vr(s)&&s.needsTransformForDownstream===!0?(Kt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(em.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Kt.transformMeshSet(s.booleanMeshSetAddress,em),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Kt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Qd,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Kt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry)}catch(n){this.booleanMeshSetAddress=0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){this.booleanOp=e.parameters.operation,this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as Mw,OrthographicCamera as Pw,PerspectiveCamera as Ow,Vector3 as jt,Object3D as om,Quaternion as Iw}from"three";import{BoxBufferGeometry as uw}from"three";var Sr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new uw(30,30,30),t};import{Camera as gw,LineSegments as xw,BufferGeometry as bw,LineBasicMaterial as vw,Color as pc,Vector3 as Sw,Float32BufferAttribute as rm}from"three";import{Ray as dw,Sphere as mw,Matrix4 as fw,Vector3 as zr}from"three";var Ta=new dw,hc=new mw,tm=new fw,wr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),hc.copy(n.boundingSphere),hc.applyMatrix4(s),e.ray.intersectsSphere(hc)===!1||(tm.copy(s).invert(),Ta.copy(e.ray).applyMatrix4(tm),n.boundingBox!==null&&Ta.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,d=n.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),b=Math.min(p.count,d.start+d.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=S(i,e,Ta,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=n.attributes.position,A=new zr,N=new zr,w=new zr,k=new zr,T=2,I=1/((i.scale.x+i.scale.y+i.scale.z)/3),x=I*I,L=Math.max(0,d.start),C=Math.min(b.count,d.start+d.count);for(let P=L,$=C-1;P<$;P+=T){if(A.fromBufferAttribute(b,P),N.fromBufferAttribute(b,P+1),Ta.distanceSqToSegment(A,N,k,w)>x)continue;k.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(k);oe<e.near||oe>e.far||r.push({distance:oe,point:w.clone().applyMatrix4(i.matrixWorld),object:i})}}function S(y,b,A,N,w,k,T){let m=new zr,I=new zr,x=new zr,L=new zr,C=new zr;if(m.fromBufferAttribute(N,w),I.fromBufferAttribute(N,k),x.fromBufferAttribute(N,T),A.intersectTriangle(m,I,x,!1,L)===null)return null;C.copy(L),C.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(C);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:C.clone(),object:y}}};var Na=new Sw,Xt=new gw,uc=class extends xw{constructor(e){let r=new bw,o=new vw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new pc(15711266),c=new pc(15711266),h=new pc(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,f,g){u(d,g),u(f,g)}function u(d,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new rm(n,3)),r.setAttribute("color",new rm(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;Xt.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;sr("n1",r,e,Xt,-n,-s,a),sr("n2",r,e,Xt,n,-s,a),sr("n3",r,e,Xt,-n,s,a),sr("n4",r,e,Xt,n,s,a);let l=a;sr("f1",r,e,Xt,-n,-s,l),sr("f2",r,e,Xt,n,-s,l),sr("f3",r,e,Xt,-n,s,l),sr("f4",r,e,Xt,n,s,l);let c=l,h=.5;sr("u1",r,e,Xt,n*.7*h,s*1.1,c),sr("u2",r,e,Xt,-n*.7*h,s*1.1,c),sr("u3",r,e,Xt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(i,t,e,r,o,n,s){Na.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],Na.x,Na.y,Na.z)}}var Ma=class extends Sr(uc){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){wr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as ww}from"three";var Ti=class extends Sr(ww){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Ti.geometryHelper,e,r)}};import{AxesHelper as Lw}from"three";var Ni=class extends Sr(Lw){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){wr(this.object,Ni.geometryHelper,e,r)}update(){}};import{PointLightHelper as Cw}from"three";var Mi=class extends Sr(Cw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Mi.geometryHelper,e,r)}};import{SpotLightHelper as Tw,Vector3 as Nw}from"three";var Pa=class extends Sr(Tw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){wr(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)}}},An=Pa;An._vector=new Nw;var Lr=(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)Jt(n)&&n.traverseEntity(s=>{Gr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}copy(o,n=!0){return super.copy(o,n),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let n=super.toJSON(o),s=n.object;return s.enableHelper=this.enableHelper,n}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(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 Pi=new jt,dc=new jt,Rr=class extends Lr(Yt(Mw),Ma){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=mo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Pw(e*-.5,e*.5,r*.5,r*-.5,n!=null?n:-5e4,s),this.perspCamera=new Ow(o,e/r,n!=null?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 Rr().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(Pi),this.targetOffset=Pi.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(dc),this.getWorldPosition(Pi),dc.multiplyScalar(this.targetOffset),e.copy(Pi).add(dc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pi),Pi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Iw),r=new jt(0,0,1).applyQuaternion(e),o=new jt().copy(om.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new jt().copy(om.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),n=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),n=this.getWorldDirection(new jt).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}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new jt),n=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=n.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),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 $o(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 H(O(O({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Aw}from"three";var Fr=class extends Lr(Yt(Aw),Ni){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Fr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Dw,CameraHelper as Oa}from"three";var Oi=class extends Lr(Yt(Dw),Ti){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let n=new Oa(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Oi().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 Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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&&_d(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Bw,Vector3 as Ia,Box3 as Ew,Box3Helper as Aa,Color as _w}from"three";var Ii=class extends Lr(Yt(Bw),Mi){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Ew(n,s),l=new Aa(a,new _w(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Ii().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 Aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Aa&&(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 Aa){let o=this.shadow.camera,n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(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()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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}};import{SpotLight as Gw,CameraHelper as Da,MathUtils as zw,Vector3 as am,Quaternion as Rw}from"three";var im=new am,nm=new am,sm=new Rw,Ai=class extends Lr(Yt(Gw),An){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=zw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Da(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Ai().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 Da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),nm.setFromMatrixPosition(this.matrixWorld),sm.setFromRotationMatrix(this.matrixWorld),im.copy(this.up).applyQuaternion(sm).negate().multiplyScalar(this.distance),this.target.position.copy(nm).add(im),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{VideoTexture as Fw}from"three";var lm=i=>i.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;lm(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];gd(a)&&(To.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;lm(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 Di=class extends rt{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof Fw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let n=ra.create({parameters:{width:r,height:o}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Di(n,s)}};var Bi=class extends rt{constructor(e,r=new Pt){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Ei=class extends Bi{constructor(e,r=new Pt){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Vw,Mesh as jw,MeshBasicMaterial as Uw,ShapeBufferGeometry as kw,Vector2 as Hw,Vector3 as qw}from"three";import{FontLoader as Ww}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends jw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new Uw({color:0,opacity:1,visible:!0,transparent:!0,side:Vw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?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 Hw,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 Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new qw(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=Ze.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=Ze.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=Ze.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 Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new Ww().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let n=Ze.fontCache[r],s=n.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new kw(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Ze.charCache[e][o]}},Ot=Ze;Ot.charCache={},Ot.fontCache={},Ot._fontPath="/_assets/_fonts/";import{DoubleSide as Ea,MeshBasicMaterial as hm,Vector3 as pm,Object3D as $w}from"three";import{Vector2 as cm}from"three";var Ba=new cm,io=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new cm(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){Ba.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ba),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),Ba.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Ba),e)}clone(){let t=new io(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 mc=class extends rt{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Ea})){super(e,r);this.objectType="TextFrame";this.charContainer=new $w,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 pm(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=oa.create({parameters:{width:r.width,height:r.height}}),s=new mc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Ot.loadFont(o),r.text=e;let n=r.textOrigin,s=new hm({visible:r.visible,transparent:!0,side:Ea}),a=e.split(`
942
- `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new io(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},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new Ot(d,f);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 Ot&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){var h,p,u,d;let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:n,l=(d=(u=e.parameters)==null?void 0:u.height)!=null?d: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 io(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){var n;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(n=c.color)!=null&&n.isColor&&(c.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 Ot.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 Ot.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()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Ot.loadFont(r.fontFamily),r.textOrigin=new pm(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new hm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ea});r.textLinesData&&(r.textLines=r.textLinesData.map((n,s)=>{let a=new io(Number(n.yLinePos),Number(n.lineHeight),Number(n.maxCharSize)),l=n.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[s].message[h];if("geometries"in d){let f=d.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new Ot(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(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 Fr;o.name="Text Shape";let n=Ot.fontCache[e];for(let s of this.charContainer.children)s instanceof Ot&&n.generateShapes(s.char,1).forEach(a=>{let l=new Pe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new mt({side:Ea});h.color=r;let p=new oo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=mc;No.VerticalAlign=cl,No.HorizontalAlign=ll,No.TextTransform=hl;import{HemisphereLight as a1,Scene as l1,Vector3 as c1,Color as Cm,Fog as h1,Box3 as p1}from"three";import{Box3 as Jw,Matrix4 as Mo,Sphere as mm,Vector3 as Yw}from"three";var ym=$m(dm());var fc;ia.then(i=>{fc=i});var gm=new Mo,Kw=new Mo,Xw=new Mo,ar=new Jw,no=new Yw,Zw=new Mo,Qw=new Mo,_i=class extends rt{constructor(e,r,o,n=new Pt){super(o!=null?o:r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=nr.build(r.geometry,void 0,!r.flatShading),l=Nn(r.material,o),c=new _i(n,s,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Ei(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e){var s,a,l;let{originalGeometry:r,subdividedGeometry:o,subdivPointer:n}=nr.build(e,this.subdivPointer,this.smoothShading,this.shearScale);if(this.subdivPointer=n,r!==void 0&&((s=this.originalGeometry)==null||s.dispose(),this.originalGeometry=r),o!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=o!=null?o:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){nr.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&nr.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=nr.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nr.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o: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,ym.SVD)(r),a=gm.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=Kw.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=Xw.copy(l).transpose();this.shearScale=Zw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Qw.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 mm);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new mm);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(fc.free_bvh(this.subdivPointer),fc.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,fm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(fm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=O({},e.parameters)}};function fm(i,t,e,r){let o=i.position.array,n=i.normal.array,s=gm.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}import{BackSide as e1,BufferGeometry as t1,DoubleSide as r1,FrontSide as o1}from"three";function xm(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=o1:t.side===1?i.side=e1:i.side=r1)}function i1(i,t){if(Array.isArray(i.material))for(let e of i.material)xm(e,t);else{let e=i.material;xm(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function bm(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=_i.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new t1:Sa(t.geometry,e),n="materials"in t?Ad(t.materials,e):Nn(t.material,e);Vs.is2DParametricMesh(o.userData.type)?r=new Di(o,n):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new oo(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ei(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ca(void 0,n),r.booleanOp=t.geometry.operation):r=new Bi(o,n),r.uuid=i,r.fromState(t)}return i1(r,t),r}function vm(i,t,e){return t.type==="Mesh"?bm(i,t,e):t.type==="TextFrame"?No.createFromState(i,t,e):t.type==="Empty"?Fr.createFromState(i,t):t.type==="PointLight"?Ii.createFromState(i,t,e):t.type==="SpotLight"?Ai.createFromState(i,t,e):t.type==="DirectionalLight"?Oi.createFromState(i,t,e):Jo.is(t.type)?Rr.createFromState(i,t):(console.error(t),new Fr)}function n1(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Sm(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,i!==void 0&&o.forEach(n=>n1(i,n))):t.layers.set(0),r}function wm(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Sm(i,r,r.material[o])&&(e=!0);else Sm(i,r,r.material)&&(e=!0)}),e}function Lm(i,t){"material"in i&&s1(i.material,t),"geometry"in i&&i.geometry.dispose()}function s1(i,t){Cc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Tm=new c1,yc=class extends va(l1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new h1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Cm(1,0,0);this.bgColor=new Cm(1,1,1);this.entityByUuid={};this.ambientLight=new a1(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=wm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}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(Xe(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 Rr&&this.switchActiveCamera(o)}this.traverse(o=>{vr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Lm(r,e)});for(let r of this.children)Jt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(yc.PERSONAL_CAMERA_ID,H(O({},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)Jt(s)&&!s.raycastLock&&s.visible&&((br(s)||Gr(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)Jt(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=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Ed(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(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=vm(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),vr(n)&&br(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 p1;return o.setFromPoints(r),o.getCenter(Tm),Tm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var n;if(e===null){r.identity();return}let o=(n=this.find(e))==null?void 0:n.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)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})})}},Dn=yc;Dn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as u1}from"three/examples/jsm/loaders/DRACOLoader.js";var so;function d1(){return so||(so=new u1,so.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),so.decoderPending}async function m1(i){if(so){let t={attributeIDs:so.defaultAttributeIDs,attributeTypes:so.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await so.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 Nm(i){let[t,e]=Wa(_s.deserialize(new Uint8Array(i))),r=[];t.scene.objects.traverse((o,n)=>{n.type==="Mesh"&&n.geometry.type==="NonParametricGeometry"&&n.geometry.data.draco!==void 0&&r.push(n)}),r.length&&await d1();for(let o of r){let n=await m1(Ja(o.geometry.data.draco));if(n){n.index&&(o.geometry.data.index={array:n.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};n.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}var gc=new Map,Bn={url:"head",time:0,data:null,next:null,prev:null},Gi={url:"tail",time:1/0,data:null,next:null,prev:null};Bn.next=Gi;Gi.prev=Bn;var Mm=0;function Si(i){if(typeof i=="string")return i;let t=Date.now(),e=gc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},gc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Gi.prev,e.next=Gi,Gi.prev.next=e,Gi.prev=e,t-Mm>1e3*10&&(Mm=t+1e3,setTimeout(()=>{let r=Date.now(),o=Bn.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),gc.delete(o.data),o=o.next,o.prev=Bn,Bn.next=o},900)),e.url}import{WebGLRenderTarget as f1,LinearMipmapLinearFilter as y1,LinearFilter as g1,ClampToEdgeWrapping as Pm,DepthTexture as x1}from"three";var Om=new mt,Ga=class extends Dt{},za=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new f1(2048,2048,{generateMipmaps:!0,minFilter:y1,magFilter:g1,wrapS:Pm,wrapT:Pm}),this.transmissionRenderTarget.depthTexture=new x1(2048,2048),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,Zl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}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===Om}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:Om}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=Si(e),!0;{let r=new Image;return r.src=Si(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 Ga(e.r,e.g,e.b,e.a):this.colors[t]=new Ga(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,n,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(n=e.b)!=null?n:a.b,this.colors[t].a=(s=e.a)!=null?s:a.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}};import{Mesh as eH}from"three";import{mergeBufferGeometries as oH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Im(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}import{Color as Am,ShaderLib as b1}from"three";function Dm(i){let t=new Set;return i.traverse(e=>{if(br(e))if(et(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);v1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Am,specularColor:new Am}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(b1.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)})}):S1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function v1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function S1(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 Bm(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Em(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}import{mergeBufferGeometries as w1}from"three/examples/jsm/utils/BufferGeometryUtils";function _m(i){let t=[];return i.traverse(e=>{e instanceof Co&&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&&Im(l),l}),s=w1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function Gm(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}var zm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends C1{load(t,e,r,o=console.error){let n=new L1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(zm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(zm),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 Nm(t),r=new za(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Dn(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&&Bd(s)&&Object.assign(s,{makeDefault:!0})}return o=_m(o),o=Dm(o),o=Bm(o),o=Em(o),o=Gm(o),o}};export{xc as default};
941
+ `)}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 Vt{constructor(e=new ga,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 vi=class extends xa{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new vi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{Color as Xl}from"three";function Xe(i,t){let e;if(typeof i=="string"){let r=t==null?void 0: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 Dt(0,0,0,0))}else return"a"in i?new Dt(i.r,i.g,i.b,i.a):new Dt(i.r,i.g,i.b,1);return e}import{Matrix3 as Ld,Texture as Kl,Vector2 as Tn,Vector3 as to,Vector4 as Cd}from"three";function Td(i,t){switch(i.data.type){case"light":return nr(i);case"fresnel":return TS(i,t);case"gradient":return NS(i);case"depth":return MS(i);case"normal":return PS(i);case"noise":return OS(i,t);case"texture":return IS(i,t);case"rainbow":return AS(i);case"transmission":return DS(i,t);case"matcap":return BS(i,t);case"displace":return ES(i);case"color":default:return CS(i,t)}}function Nd(i){return{type:i.data.type}}function nr(i){let{alpha:t,mode:e}=i.data;return H(O({},Nd(i)),{alpha:t,mode:e})}function CS(i,t){return H(O({},nr(i)),{color:Xe(i.data.color,t)})}function TS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return H(O({},nr(i)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:n})}function NS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return H(O({},nr(i)),{gradientType:t,smooth:e,colors:r.map(l=>new Cd(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Tn(...s),morph:new Tn(...a),angle:n})}function MS(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 H(O({},nr(i)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new to(...s),direction:a?new to(...a):new to(1,0,0),num:p,colors:l.map(u=>new Cd(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function PS(i){let{cnormal:t}=i.data;return H(O({},nr(i)),{cnormal:new to(t[0],t[1],t[2])})}function OS(i,t){let{data:e}=i;return H(O({},nr(i)),{scale:e.scale,move:e.move,fA:new Tn(...e.fA),fB:new Tn(...e.fB),size:new to(...e.size),distortion:new Tn(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function IS(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 Kl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let d=new Image;d.src=Si(a.data),d.onload=()=>{t!=null&&t.onImageLoad&&(t==null||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,H(O({},nr(i)),{texture:p,mat:new Ld().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 AS(i){let{data:t}=i;return H(O({},nr(i)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new to(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new to(...t.offset)})}function DS(i,t){let{data:e}=i;return H(O({},nr(i)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function BS(i,t){let e=new Kl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=Si(r.data),s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},o=s}e.image=o;let n=16777215;return H(O({},nr(i)),{color:n,texture:e})}function ES(i){let{data:t}=i,e=H(O({},Nd(i)),{intensity:t.intensity});if(t.displacementType==="noise")return H(O({},e),{offset:new to(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Kl,o=new Ld().setUvTransform(0,0,1,1,0,0,0);return H(O({},e),{texture:r,mat:o,crop:t.crop})}}function Md(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`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Id,Vector4 as _S}from"three";var wi;(t=>{function i(e){return new Id(e.x,e.y,e.z).getHex()}t.getHex=i})(wi||(wi={}));var Pd;(t=>{function i(e){return new _S(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(Pd||(Pd={}));var Od;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Id(r.r,r.g,r.b).getHex()}e.getHex=t})(Od||(Od={}));function Nn(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):Zl(i,t)}function Ad(i,t){return i.map(e=>Nn(e,t))}function Zl(i,t){var s,a;let e=(s=i.layers)!=null?s:xo.defaultTwoLayerData("phong").layers,r=GS(e),o;switch(r.category){case"basic":o=new mt;break;case"lambert":{o=new xi;break}case"toon":{o=new bi;break}case"physical":o=new vi;break;case"phong":default:{o=new Pt;break}}o.name=(a=i.name)!=null?a:"Untitled Material";let n=o.userData.layers;zS(n);for(let l=e.length-1;l>=0;l--)RS(n,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof Xl?h.emissive.value=u:h.emissive.value.setHex(wi.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Xl?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Xl?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}}return n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function GS(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 zS(i){for(let t of i.getLayers())i.removeLayer(t.id)}function RS(i,t,e){let r=Td(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Md(n,o,t.data)}import{Mesh as $S,Matrix4 as JS}from"three";import{Matrix4 as ec}from"three";import{Box3 as zd,Line3 as $t,Matrix4 as Ql,Vector3 as Ve}from"three";import{HemisphereLight as Dd}from"three";var ba=i=>"isEntity"in i,br=i=>"isAbstractMesh"in i,vr=i=>i!==null&&i.isBooleanMesh,Bd=i=>i.objectType==="CombinedCamera";var Gr=i=>"objectHelper"in i;function FS(i,t){var r;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((r=t.hiddenMatrix)!=null?r:$r.identity)),e&&(i.updateMatrix(),vr(i.parent)&&br(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 VS(i,t){FS(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 Ed(i,t,e){VS(i,t),t.color!==void 0&&(i.color=Xe(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Dd)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Dd)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&Gr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function _d(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 Li=new zd,ft=new Ve,ce=new Ve,tt=new Ql;function jS(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 Gd=(i,t,e,r)=>{var o;if(br(i)){let n=i.geometry.userData.parameters,s=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?ft.copy(i.originalGeometry.boundingSphere.center):s!==void 0&&(jS(Li,s,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:s.count),Li.getCenter(ft)),i.forceComputeSize?Li.getSize(ce).multiplyScalar(.5):ce.set(n.width,n.height,(o=n.depth)!=null?o:0).multiplyScalar(.5)}else if(Gr(i)&&r===!0){let n=i.geometryHelper.getAttribute("position");Li.setFromArray(n.array),Li.getCenter(ft),Li.getSize(ce).multiplyScalar(.5)}else ft.setScalar(0),ce.setScalar(0);tt.copy(t).multiply(i.matrixWorld),ce.x===0&&ce.y===0&&ce.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-ce.x,ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,-ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,-ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,ce.y,ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(-ce.x,-ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,-ce.y,-ce.z).add(ft).applyMatrix4(tt),new Ve(ce.x,ce.y,-ce.z).add(ft).applyMatrix4(tt))},Mn=class extends zd{constructor(){super(...arguments);this.matrix=new Ql;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 Ql().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&&Gd(s,r,n,e.enableHelper===!0)}):Gd(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(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ce).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-ce.x,ce.y,ce.z).applyMatrix4(tt),new Ve(-ce.x,-ce.y,ce.z).applyMatrix4(tt),new Ve(ce.x,-ce.y,ce.z).applyMatrix4(tt),new Ve(ce.x,ce.y,ce.z).applyMatrix4(tt),new Ve(-ce.x,ce.y,-ce.z).applyMatrix4(tt),new Ve(-ce.x,-ce.y,-ce.z).applyMatrix4(tt),new Ve(ce.x,-ce.y,-ce.z).applyMatrix4(tt),new Ve(ce.x,ce.y,-ce.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new $t(this.vertices[0],this.vertices[3]),new $t(this.vertices[1],this.vertices[2]),new $t(this.vertices[5],this.vertices[6]),new $t(this.vertices[4],this.vertices[7]),new $t(this.vertices[0],this.vertices[1]),new $t(this.vertices[3],this.vertices[2]),new $t(this.vertices[7],this.vertices[6]),new $t(this.vertices[4],this.vertices[5]),new $t(this.vertices[0],this.vertices[4]),new $t(this.vertices[1],this.vertices[5]),new $t(this.vertices[2],this.vertices[6]),new $t(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as US,Matrix4 as kS,Light as HS}from"three";function Pn(i){let t=[];for(let e in i){let r=i[e];delete r.metadata,t.push(r)}return t}function qS(i){let t=[];for(let e in i)t.push(i[e]);return t}var va=i=>class extends i{hasEntityChild(){return this.children.some(e=>ba(e))}isDescendantOf(e){e instanceof US&&(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 kS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),ba(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}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let n={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(n.name=this.name),n.matrix=this.matrix.toArray(),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),n.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),this.children.length>0){n.children=[];for(let s of this.children)(ba(s)||s instanceof HS)&&n.children.push(s.toJSON(e).object)}if(r){let s=Pn(e.geometries),a=Pn(e.materials),l=Pn(e.textures),c=Pn(e.images),h=Pn(e.interactionStates),p=qS(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=n,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Jt=i=>"isEntity"in i,Rd=i=>"isAbstractMesh"in i,Yt=i=>class extends va(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new ec;this._singleBBox=new Mn;this._recursiveBBox=new Mn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Jt(o)&&o.traverseEntity(n=>{Gr(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=>{Jt(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)Jt(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)Jt(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)Jt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new ec,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Jt(n)&&n.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),n=o.object;return this.raycastLock===!0&&(n.raycastLock=!0),this.scaleLock===!0&&(n.scaleLock=!0),n.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new ec}),this.copy(r),r.children=o,this}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 $o(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=O({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(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}};import{Object3D as WS,Vector3 as On,Euler as Fd,MathUtils as ro}from"three";var Co=class extends WS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new On),n=.1;this.parameters=xs.defaultData(o.toArray(),n),uo(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}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.map(o=>o.clone());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.clone();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*ro.DEG2RAD,n=r.end*ro.DEG2RAD,s=o-n,a=new Fd(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.DEG2RAD),l;switch(r.axis){case"z":l=new On(0,0,1);break;case"y":l=new On(0,1,0);break;default:case"x":l=new On(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 Fd(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.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 On(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}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var rt=class extends Yt($S){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new JS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,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}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=tc[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(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){ln.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}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=In(r),n=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Co(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Co(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,n,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(n=e.receiveShadow)!=null?n:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Kt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),vr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),vr(e)&&e.invalidateUpstreamBooleanData())}};var ZS=new rc(0,0,1),Vd=new rc,jd=new rc,Ud=new XS,oo=class extends rt{constructor(e=ut.create({}),r=new mt({side:YS})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new KS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}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){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Ud.getNormalMatrix(this.matrixWorld),Vd.copy(ZS).applyMatrix3(Ud).normalize(),jd.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Vd,jd)}clone(e){let r=this.shape.clone(),o=this.material.clone(),n=this.geometry.userData,s=ut.create(Object.assign({},n,{shape:r})),a=new oo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function Sa(i,t){return ew(i)}function ew(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Pe.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new QS().parse(i));let e;try{e=In(t)}catch(r){console.error(r)}if(!e){let r=Pe.createFromState(ti.defaultData(),100,100);t.shape=r,e=In(t)}return e}var fe;ia.then(i=>{fe=i});var qd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Wd=new Uint32Array([0,1,2,3]),$d=new Uint8Array([4]),Xt=class{static build(i,t,e,r,o){var c;let n,s,a,l=(c=i.phongAngle)!=null?c:t.phongAngle;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(fe.free_bvh(e),fe.free_subdivision_surface(e));try{n=Xt.allocate(i,o)}catch(h){console.error(h,i),n=Xt.allocate({positionWASM:qd,indexWASM:Wd,verticesPerFaceWASM:$d},o)}fe.set_destination_refinement_level(n,0),s=Xt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Xt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(fe.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Xt.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:Sa(i),r,o,n,s;return{positions:r,triIndices:s}=lc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=cc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){var N;let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=qd,r=Wd,o=$d);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,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),S=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+d,p);S.set(e,0),S.set(n,e.length),S.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let b;(N=i==null?void 0:i.scaleBaked)!=null&&N.some(w=>w!==1)&&(b=new tw().makeScale(...i.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(i,t,e,r,o){let n=o?fe.get_mesh_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e,o.elements):fe.get_mesh_data(i,t?fe.Level.CONTROL:fe.Level.REFINED,e),s=8,a=fe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=fe.HEAPU32[a[c]>>2],d=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let S=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(S>>2,(S>>2)+l[c]);if(c++,r===void 0){let b=new kd;if(b.setIndex(new oc(y,1)),b.setAttribute("position",new ic(p,3)),b.setAttribute("normal",new ic(d,3)),t){b.setAttribute("faceMap",new oc(g,1));let A=new Float32Array(d.length/3*4).fill(0);b.setAttribute("color",new Hd(A,4))}return fe.free_mesh_data(n),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=fe.get_wireframe_data_for_base_level(i),o=4,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=fe.HEAPU32[n[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[n[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new kd;u.setAttribute("position",new ic(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 u.setAttribute("color",new Hd(d,3)),u.setIndex(new oc(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||fe.set_destination_refinement_level(i,1);let r=e?fe.get_topological_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(i,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=fe.HEAPU32[n[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[n[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[n[a]>>2],d=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Jd=["getX","getY","getZ"];function lc(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[Jd[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Jd[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 wa=new La,nc=new La,sc=new La,ac=new La;function cc(i,t,e){var n;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)i.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)i.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(n=e.capStartIndex)!=null?n:t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){wa.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),nc.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),sc.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),ac.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),nc.sub(wa).normalize(),sc.sub(wa).normalize(),ac.sub(wa).normalize();let l=nc.cross(sc).dot(ac);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(s.push(h),l++),i[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Kt={};Lc(Kt,{calcBoolean:()=>sw,calcBooleanTopological:()=>nw,freeMeshSet:()=>cw,getMeshSet:()=>aw,transformMeshSet:()=>lw});var rw,Yd=new Promise(i=>{rw=i});import{Float32BufferAttribute as Kd,Sphere as ow}from"three";var Le,Ci;Yd.then(i=>Le=i);function iw(i,t){let e,{positions:r,triIndices:o}=lc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=cc(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 Xd(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=Le._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Le.HEAPU32.buffer,n,t):new Float32Array(Le.HEAPF32.buffer,n,t)).set(i,0),n}function Zd(i){switch(i){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function nw(i,t){Ci===void 0&&(Ci=Le.init_csg());let e=Xd(i),r=Le.csg_calc_topological(Ci,e,i.length,Zd(t));Le._free(e);let o=6,n=Le.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=Le.HEAPU32[n[a]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=Le.HEAPU32[n[a]>>2],p=new Uint32Array(Le.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=Le.HEAPU32[n[a]>>2],d=new Uint8Array(Le.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return Le.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function sw(i,t,e,r){Ci===void 0&&(Ci=Le.init_csg());let o=Xd(i),n=Le.csg_calc(Ci,o,i.length,r,Zd(t));Le._free(o);let s=5,a=Le.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=Le.HEAPU32[a[c]>>2],p=Le.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=Le.HEAPU32[a[c]>>2],d=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new Kd(p,3)),e.setAttribute("normal",new Kd(d,3));let g=Le.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ow),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},Le.free_mesh_data(n),f}function aw(i,t){if(Le===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((S,y)=>S+y,0)+o);for(let S=0,y=0,b=0;S<g.verticesPerFace.length;S++){r[b++]=g.verticesPerFace[S];for(let A=0;A<g.verticesPerFace[S];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=iw(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=Le._malloc(c),d=new Float32Array(Le.HEAPF32.buffer,u,a),f=new Uint32Array(Le.HEAPU32.buffer,u+h,l);return d.set(e,0),f.set(r,0),Le.get_csg_mesh(u,n,u+h,s,o)}function lw(i,t){Le.transform_csg_mesh(i,t.elements)}function cw(i){Le.free_csg_mesh(i)}var tc={ConeGeometry:yu,CubeGeometry:gu,CylinderGeometry:fu,DodecahedronGeometry:xu,EllipseGeometry:Hu,HelixGeometry:Yu,IcosahedronGeometry:Ku,LatheGeometry:Xu,NonParametricGeometry:td,PolygonGeometry:rd,PyramidGeometry:od,RectangleGeometry:ra,SphereGeometry:id,PlaneGeometry:nd,StarGeometry:sd,TextFrameGeometry:oa,TorusGeometry:ad,TorusKnotGeometry:ld,TriangleGeometry:cd,VectorGeometry:ut},In=i=>tc[i.type].create(i);import{BufferGeometry as Qd,Matrix4 as hw}from"three";var em=new hw;var Ca=class extends rt{constructor(e=new Qd,r=new Pt){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){var o;if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];vr(s)&&s.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(Rd(s)&&s.booleanExclude===!1&&((o=s.geometry.attributes.position)==null?void 0:o.count)>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Kt.getMeshSet(s.geometry,e===!0),s.booleanMeshSetAddress===-1)return;Kt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else vr(s)&&s.needsTransformForDownstream===!0?(Kt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(em.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Kt.transformMeshSet(s.booleanMeshSetAddress,em),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Kt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Qd,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Kt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}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()}};import{Camera as Nw,OrthographicCamera as Mw,PerspectiveCamera as Pw,Vector3 as jt,Object3D as om,Quaternion as Ow}from"three";import{BoxBufferGeometry as pw}from"three";var Sr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new pw(30,30,30),t};import{Camera as yw,LineSegments as gw,BufferGeometry as xw,LineBasicMaterial as bw,Color as pc,Vector3 as vw,Float32BufferAttribute as rm}from"three";import{Ray as uw,Sphere as dw,Matrix4 as mw,Vector3 as zr}from"three";var Ta=new uw,hc=new dw,tm=new mw,wr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),hc.copy(n.boundingSphere),hc.applyMatrix4(s),e.ray.intersectsSphere(hc)===!1||(tm.copy(s).invert(),Ta.copy(e.ray).applyMatrix4(tm),n.boundingBox!==null&&Ta.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,d=n.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),b=Math.min(p.count,d.start+d.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=S(i,e,Ta,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=n.attributes.position,A=new zr,N=new zr,w=new zr,k=new zr,T=2,I=1/((i.scale.x+i.scale.y+i.scale.z)/3),x=I*I,L=Math.max(0,d.start),C=Math.min(b.count,d.start+d.count);for(let P=L,$=C-1;P<$;P+=T){if(A.fromBufferAttribute(b,P),N.fromBufferAttribute(b,P+1),Ta.distanceSqToSegment(A,N,k,w)>x)continue;k.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(k);oe<e.near||oe>e.far||r.push({distance:oe,point:w.clone().applyMatrix4(i.matrixWorld),object:i})}}function S(y,b,A,N,w,k,T){let m=new zr,I=new zr,x=new zr,L=new zr,C=new zr;if(m.fromBufferAttribute(N,w),I.fromBufferAttribute(N,k),x.fromBufferAttribute(N,T),A.intersectTriangle(m,I,x,!1,L)===null)return null;C.copy(L),C.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(C);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:C.clone(),object:y}}};var Na=new vw,Zt=new yw,uc=class extends gw{constructor(e){let r=new xw,o=new bw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new pc(15711266),c=new pc(15711266),h=new pc(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,f,g){u(d,g),u(f,g)}function u(d,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new rm(n,3)),r.setAttribute("color",new rm(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;Zt.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;sr("n1",r,e,Zt,-n,-s,a),sr("n2",r,e,Zt,n,-s,a),sr("n3",r,e,Zt,-n,s,a),sr("n4",r,e,Zt,n,s,a);let l=a;sr("f1",r,e,Zt,-n,-s,l),sr("f2",r,e,Zt,n,-s,l),sr("f3",r,e,Zt,-n,s,l),sr("f4",r,e,Zt,n,s,l);let c=l,h=.5;sr("u1",r,e,Zt,n*.7*h,s*1.1,c),sr("u2",r,e,Zt,-n*.7*h,s*1.1,c),sr("u3",r,e,Zt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(i,t,e,r,o,n,s){Na.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],Na.x,Na.y,Na.z)}}var Ma=class extends Sr(uc){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){wr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Sw}from"three";var Ti=class extends Sr(Sw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Ti.geometryHelper,e,r)}};import{AxesHelper as ww}from"three";var Ni=class extends Sr(ww){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){wr(this.object,Ni.geometryHelper,e,r)}update(){}};import{PointLightHelper as Lw}from"three";var Mi=class extends Sr(Lw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Mi.geometryHelper,e,r)}};import{SpotLightHelper as Cw,Vector3 as Tw}from"three";var Pa=class extends Sr(Cw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){wr(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)}}},An=Pa;An._vector=new Tw;var Lr=(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)Jt(n)&&n.traverseEntity(s=>{Gr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}copy(o,n=!0){return super.copy(o,n),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let n=super.toJSON(o),s=n.object;return s.enableHelper=this.enableHelper,n}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(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 Pi=new jt,dc=new jt,Rr=class extends Lr(Yt(Nw),Ma){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=mo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Mw(e*-.5,e*.5,r*.5,r*-.5,n!=null?n:-5e4,s),this.perspCamera=new Pw(o,e/r,n!=null?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 Rr().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(Pi),this.targetOffset=Pi.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(dc),this.getWorldPosition(Pi),dc.multiplyScalar(this.targetOffset),e.copy(Pi).add(dc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pi),Pi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ow),r=new jt(0,0,1).applyQuaternion(e),o=new jt().copy(om.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new jt().copy(om.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),n=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),n=this.getWorldDirection(new jt).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}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new jt),n=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=n.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),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 $o(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 H(O(O({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Iw}from"three";var Fr=class extends Lr(Yt(Iw),Ni){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Fr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Aw,CameraHelper as Oa}from"three";var Oi=class extends Lr(Yt(Aw),Ti){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let n=new Oa(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Oi().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 Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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&&_d(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Dw,Vector3 as Ia,Box3 as Bw,Box3Helper as Aa,Color as Ew}from"three";var Ii=class extends Lr(Yt(Dw),Mi){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Bw(n,s),l=new Aa(a,new Ew(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Ii().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 Aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Aa&&(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 Aa){let o=this.shadow.camera,n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(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()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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}};import{SpotLight as _w,CameraHelper as Da,MathUtils as Gw,Vector3 as am,Quaternion as zw}from"three";var im=new am,nm=new am,sm=new zw,Ai=class extends Lr(Yt(_w),An){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=Gw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Da(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Ai().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 Da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),nm.setFromMatrixPosition(this.matrixWorld),sm.setFromRotationMatrix(this.matrixWorld),im.copy(this.up).applyQuaternion(sm).negate().multiplyScalar(this.distance),this.target.position.copy(nm).add(im),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}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),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{VideoTexture as Rw}from"three";var lm=i=>i.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;lm(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];gd(a)&&(To.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;lm(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 Di=class extends rt{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof Rw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let n=ra.create({parameters:{width:r,height:o}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Di(n,s)}};var Bi=class extends rt{constructor(e,r=new Pt){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Ei=class extends Bi{constructor(e,r=new Pt){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Fw,Mesh as Vw,MeshBasicMaterial as jw,ShapeBufferGeometry as Uw,Vector2 as kw,Vector3 as Hw}from"three";import{FontLoader as qw}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends Vw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new jw({color:0,opacity:1,visible:!0,transparent:!0,side:Fw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?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 kw,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 Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Hw(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=Ze.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=Ze.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=Ze.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 Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new qw().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let n=Ze.fontCache[r],s=n.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new Uw(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Ze.charCache[e][o]}},Ot=Ze;Ot.charCache={},Ot.fontCache={},Ot._fontPath="/_assets/_fonts/";import{DoubleSide as Ea,MeshBasicMaterial as hm,Vector3 as pm,Object3D as Ww}from"three";import{Vector2 as cm}from"three";var Ba=new cm,io=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new cm(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){Ba.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ba),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),Ba.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Ba),e)}clone(){let t=new io(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 mc=class extends rt{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Ea})){super(e,r);this.objectType="TextFrame";this.charContainer=new Ww,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 pm(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=oa.create({parameters:{width:r.width,height:r.height}}),s=new mc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Ot.loadFont(o),r.text=e;let n=r.textOrigin,s=new hm({visible:r.visible,transparent:!0,side:Ea}),a=e.split(`
942
+ `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new io(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},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new Ot(d,f);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 Ot&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){var h,p,u,d;let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:n,l=(d=(u=e.parameters)==null?void 0:u.height)!=null?d: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 io(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){var n;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(n=c.color)!=null&&n.isColor&&(c.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 Ot.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 Ot.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()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Ot.loadFont(r.fontFamily),r.textOrigin=new pm(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new hm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ea});r.textLinesData&&(r.textLines=r.textLinesData.map((n,s)=>{let a=new io(Number(n.yLinePos),Number(n.lineHeight),Number(n.maxCharSize)),l=n.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[s].message[h];if("geometries"in d){let f=d.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new Ot(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(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 Fr;o.name="Text Shape";let n=Ot.fontCache[e];for(let s of this.charContainer.children)s instanceof Ot&&n.generateShapes(s.char,1).forEach(a=>{let l=new Pe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new mt({side:Ea});h.color=r;let p=new oo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=mc;No.VerticalAlign=cl,No.HorizontalAlign=ll,No.TextTransform=hl;import{HemisphereLight as s1,Scene as a1,Vector3 as l1,Color as Cm,Fog as c1,Box3 as h1}from"three";import{Box3 as $w,Matrix4 as Mo,Sphere as mm,Vector3 as Jw}from"three";var ym=$m(dm());var fc;ia.then(i=>{fc=i});var gm=new Mo,Yw=new Mo,Kw=new Mo,ar=new $w,no=new Jw,Xw=new Mo,Zw=new Mo,_i=class extends rt{constructor(e,r,o,n=new Pt){super(o!=null?o:r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Xt.build(r.geometry,void 0,void 0,!r.flatShading),l=Nn(r.material,o),c=new _i(n,s,a||void 0,l);return c.phongAngle=r.geometry.phongAngle,c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Ei(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){var a,l,c;let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Xt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&((a=this.originalGeometry)==null||a.dispose(),this.originalGeometry=o),n!==void 0&&((l=this.subdividedGeometry)==null||l.dispose(),this.subdividedGeometry=n!=null?n:void 0),this.geometry=(c=this.subdividedGeometry)!=null?c:this.originalGeometry,this.cloner)for(let h of this.cloner.children)h.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=Xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o: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,ym.SVD)(r),a=gm.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=Yw.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=Kw.copy(l).transpose();this.shearScale=Xw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Zw.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 mm);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new mm);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(fc.free_bvh(this.subdivPointer),fc.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,fm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(fm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=O({},e.parameters)}};function fm(i,t,e,r){let o=i.position.array,n=i.normal.array,s=gm.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}import{BackSide as Qw,BufferGeometry as e1,DoubleSide as t1,FrontSide as r1}from"three";function xm(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=r1:t.side===1?i.side=Qw:i.side=t1)}function o1(i,t){if(Array.isArray(i.material))for(let e of i.material)xm(e,t);else{let e=i.material;xm(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function bm(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=_i.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new e1:Sa(t.geometry,e),n="materials"in t?Ad(t.materials,e):Nn(t.material,e);Vs.is2DParametricMesh(o.userData.type)?r=new Di(o,n):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new oo(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ei(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ca(void 0,n),r.booleanOp=t.geometry.operation,r.phongAngle=t.geometry.phongAngle):r=new Bi(o,n),r.uuid=i,r.fromState(t)}return o1(r,t),r}function vm(i,t,e){return t.type==="Mesh"?bm(i,t,e):t.type==="TextFrame"?No.createFromState(i,t,e):t.type==="Empty"?Fr.createFromState(i,t):t.type==="PointLight"?Ii.createFromState(i,t,e):t.type==="SpotLight"?Ai.createFromState(i,t,e):t.type==="DirectionalLight"?Oi.createFromState(i,t,e):Jo.is(t.type)?Rr.createFromState(i,t):(console.error(t),new Fr)}function i1(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Sm(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,i!==void 0&&o.forEach(n=>i1(i,n))):t.layers.set(0),r}function wm(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Sm(i,r,r.material[o])&&(e=!0);else Sm(i,r,r.material)&&(e=!0)}),e}function Lm(i,t){"material"in i&&n1(i.material,t),"geometry"in i&&i.geometry.dispose()}function n1(i,t){Cc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Tm=new l1,yc=class extends va(a1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new c1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Cm(1,0,0);this.bgColor=new Cm(1,1,1);this.entityByUuid={};this.ambientLight=new s1(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=wm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}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(Xe(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 Rr&&this.switchActiveCamera(o)}this.traverse(o=>{vr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Lm(r,e)});for(let r of this.children)Jt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(yc.PERSONAL_CAMERA_ID,H(O({},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)Jt(s)&&!s.raycastLock&&s.visible&&((br(s)||Gr(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)Jt(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=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Ed(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(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=vm(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),vr(n)&&br(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 h1;return o.setFromPoints(r),o.getCenter(Tm),Tm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var n;if(e===null){r.identity();return}let o=(n=this.find(e))==null?void 0:n.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)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})})}},Dn=yc;Dn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as p1}from"three/examples/jsm/loaders/DRACOLoader.js";var so;function u1(){return so||(so=new p1,so.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),so.decoderPending}async function d1(i){if(so){let t={attributeIDs:so.defaultAttributeIDs,attributeTypes:so.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await so.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 Nm(i){let[t,e]=Wa(_s.deserialize(new Uint8Array(i))),r=[];t.scene.objects.traverse((o,n)=>{n.type==="Mesh"&&n.geometry.type==="NonParametricGeometry"&&n.geometry.data.draco!==void 0&&r.push(n)}),r.length&&await u1();for(let o of r){let n=await d1(Ja(o.geometry.data.draco));if(n){n.index&&(o.geometry.data.index={array:n.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};n.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}var gc=new Map,Bn={url:"head",time:0,data:null,next:null,prev:null},Gi={url:"tail",time:1/0,data:null,next:null,prev:null};Bn.next=Gi;Gi.prev=Bn;var Mm=0;function Si(i){if(typeof i=="string")return i;let t=Date.now(),e=gc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},gc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Gi.prev,e.next=Gi,Gi.prev.next=e,Gi.prev=e,t-Mm>1e3*10&&(Mm=t+1e3,setTimeout(()=>{let r=Date.now(),o=Bn.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),gc.delete(o.data),o=o.next,o.prev=Bn,Bn.next=o},900)),e.url}import{WebGLRenderTarget as m1,LinearMipmapLinearFilter as f1,LinearFilter as y1,ClampToEdgeWrapping as Pm,DepthTexture as g1}from"three";var Om=new mt,Ga=class extends Dt{},za=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new m1(2048,2048,{generateMipmaps:!0,minFilter:f1,magFilter:y1,wrapS:Pm,wrapT:Pm}),this.transmissionRenderTarget.depthTexture=new g1(2048,2048),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,Zl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}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===Om}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:Om}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=Si(e),!0;{let r=new Image;return r.src=Si(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 Ga(e.r,e.g,e.b,e.a):this.colors[t]=new Ga(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,n,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(n=e.b)!=null?n:a.b,this.colors[t].a=(s=e.a)!=null?s:a.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}};import{Mesh as Q4}from"three";import{mergeBufferGeometries as rH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Im(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}import{Color as Am,ShaderLib as x1}from"three";function Dm(i){let t=new Set;return i.traverse(e=>{if(br(e))if(et(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);b1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Am,specularColor:new Am}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(x1.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)})}):v1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function b1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function v1(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 Bm(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Em(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}import{mergeBufferGeometries as S1}from"three/examples/jsm/utils/BufferGeometryUtils";function _m(i){let t=[];return i.traverse(e=>{e instanceof Co&&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&&Im(l),l}),s=S1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function Gm(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}var zm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends L1{load(t,e,r,o=console.error){let n=new w1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(zm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(zm),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 Nm(t),r=new za(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Dn(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&&Bd(s)&&Object.assign(s,{makeDefault:!0})}return o=_m(o),o=Dm(o),o=Bm(o),o=Em(o),o=Gm(o),o}};export{xc as default};