@splinetool/loader 0.9.384 → 0.9.386

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,16 +1,16 @@
1
- "use strict";var o0=Object.create;var ma=Object.defineProperty;var n0=Object.getOwnPropertyDescriptor;var i0=Object.getOwnPropertyNames;var s0=Object.getPrototypeOf,a0=Object.prototype.hasOwnProperty;var ha=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),xu=(n,r)=>{for(var e in r)ma(n,e,{get:r[e],enumerable:!0})},vu=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of i0(r))!a0.call(n,o)&&o!==e&&ma(n,o,{get:()=>r[o],enumerable:!(t=n0(r,o))||t.enumerable});return n};var Go=(n,r,e)=>(e=n!=null?o0(s0(n)):{},vu(r||!n||!n.__esModule?ma(e,"default",{value:n,enumerable:!0}):e,n)),l0=n=>vu(ma({},"__esModule",{value:!0}),n);var Xm=ha((Xc,Ym)=>{(function(n,r){typeof Xc=="object"?Ym.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Xc,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var th=ha((vl,eh)=>{(function(n,r){typeof vl=="object"&&typeof eh<"u"?r(vl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(vl,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,b=r.length;if(b<v)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],P=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)P[x]=new Array(v).fill(0);var C,T=new Array(v).fill(0);for(x=0;x<b;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(w[x]=p,m=0,c=x+1,s=x;s<b;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(T[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)w[s]=S[x][s]/f;for(s=c;s<b;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*w[l]}}h<(y=Math.abs(T[x])+Math.abs(w[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)P[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*P[l][s];for(l=c;l<v;l++)P[l][s]=P[l][s]+m*P[l][x]}}for(s=c;s<v;s++)P[x][s]=0,P[s][x]=0;P[x][x]=1,p=w[x],c=x}if(e){if(e==="f")for(x=v;x<b;x++){for(s=v;s<b;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=T[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<b;s++)S[s][x]=S[s][x]/p}else for(s=x;s<b;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var N=0;N<50;N++){for(C=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(T[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*w[x],w[x]=a*w[x],!(Math.abs(d)<=o));x++)if(p=T[x],T[x]=Math.sqrt(d*d+p*p),a=p/(f=T[x]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=T[l],c===l){if(g<0&&(T[l]=-g,t))for(s=0;s<v;s++)P[s][l]=-P[s][l];break}for(h=T[c],d=(((y=T[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=T[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(w[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=P[s][x-1],g=P[s][x],P[s][x-1]=h*a+g*m,P[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(T[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<b;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}w[c]=0,w[l]=d,T[l]=h}for(x=0;x<v;x++)T[x]<o&&(T[x]=0);return{u:S,q:T,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var ky=ha(Zl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),b=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),w=b*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,P=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=P){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,b):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?C():(p._playLock=!0,p.once("resume",C),p._clearTimer(y._id))}else{var T=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var A=x.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(G){p._emit("playerror",y._id,G)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var N=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||N)T();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",T(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,b=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,b=Math.abs(v/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=v*P,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},w)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),b=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,w=b*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),w)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var b=function(){a._playLock?setTimeout(b,0):v()};setTimeout(b,0)}else v()}else if(a._webAudio){var w=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Zl<"u"&&(Zl.Howler=r,Zl.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return l},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var Wg=ha((w7,qg)=>{qg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});var yT={};xu(yT,{default:()=>yc});module.exports=l0(yT);var gc=require("three");function bu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Kr(n,r){return Object.setPrototypeOf(n,r),n}function ya(n){return Array.isArray(n)?n:[n]}function Su(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var c0=typeof global=="object"&&global&&global.Object===Object&&global,ga=c0;var d0=typeof self=="object"&&self&&self.Object===Object&&self,u0=ga||d0||Function("return this")(),it=u0;var p0=it.Symbol,ut=p0;var wu=Object.prototype,f0=wu.hasOwnProperty,m0=wu.toString,is=ut?ut.toStringTag:void 0;function h0(n){var r=f0.call(n,is),e=n[is];try{n[is]=void 0;var t=!0}catch{}var o=m0.call(n);return t&&(r?n[is]=e:delete n[is]),o}var _u=h0;var y0=Object.prototype,g0=y0.toString;function x0(n){return g0.call(n)}var Pu=x0;var v0="[object Null]",b0="[object Undefined]",Tu=ut?ut.toStringTag:void 0;function S0(n){return n==null?n===void 0?b0:v0:Tu&&Tu in Object(n)?_u(n):Pu(n)}var Yt=S0;function w0(n){return n!=null&&typeof n=="object"}var bt=w0;var _0="[object Symbol]";function P0(n){return typeof n=="symbol"||bt(n)&&Yt(n)==_0}var pn=P0;function T0(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var xa=T0;var O0=Array.isArray,Xe=O0;var A0=1/0,Ou=ut?ut.prototype:void 0,Au=Ou?Ou.toString:void 0;function Nu(n){if(typeof n=="string")return n;if(Xe(n))return xa(n,Nu)+"";if(pn(n))return Au?Au.call(n):"";var r=n+"";return r=="0"&&1/n==-A0?"-0":r}var Cu=Nu;function N0(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Xt=N0;function C0(n){return n}var Iu=C0;var I0="[object AsyncFunction]",M0="[object Function]",E0="[object GeneratorFunction]",L0="[object Proxy]";function B0(n){if(!Xt(n))return!1;var r=Yt(n);return r==M0||r==E0||r==I0||r==L0}var va=B0;var D0=it["__core-js_shared__"],ba=D0;var Mu=function(){var n=/[^.]+$/.exec(ba&&ba.keys&&ba.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function G0(n){return!!Mu&&Mu in n}var Eu=G0;var R0=Function.prototype,V0=R0.toString;function z0(n){if(n!=null){try{return V0.call(n)}catch{}try{return n+""}catch{}}return""}var Zr=z0;var j0=/[\\^$.*+?()[\]{}|]/g,F0=/^\[object .+?Constructor\]$/,k0=Function.prototype,U0=Object.prototype,H0=k0.toString,q0=U0.hasOwnProperty,W0=RegExp("^"+H0.call(q0).replace(j0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $0(n){if(!Xt(n)||Eu(n))return!1;var r=va(n)?W0:F0;return r.test(Zr(n))}var Lu=$0;function Y0(n,r){return n?.[r]}var Bu=Y0;function X0(n,r){var e=Bu(n,r);return Lu(e)?e:void 0}var Rt=X0;var K0=Rt(it,"WeakMap"),Sa=K0;var Du=Object.create,Z0=function(){function n(){}return function(r){if(!Xt(r))return{};if(Du)return Du(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Gu=Z0;function Q0(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Ru=Q0;function J0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Vu=J0;var ex=800,tx=16,rx=Date.now;function ox(n){var r=0,e=0;return function(){var t=rx(),o=tx-(t-e);if(e=t,o>0){if(++r>=ex)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var zu=ox;function nx(n){return function(){return n}}var ju=nx;var ix=function(){try{var n=Rt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),fn=ix;var sx=fn?function(n,r){return fn(n,"toString",{configurable:!0,enumerable:!1,value:ju(r),writable:!0})}:Iu,Fu=sx;var ax=zu(Fu),ku=ax;function lx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Uu=lx;var cx=9007199254740991,dx=/^(?:0|[1-9]\d*)$/;function ux(n,r){var e=typeof n;return r=r??cx,!!r&&(e=="number"||e!="symbol"&&dx.test(n))&&n>-1&&n%1==0&&n<r}var mn=ux;function px(n,r,e){r=="__proto__"&&fn?fn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var wa=px;function fx(n,r){return n===r||n!==n&&r!==r}var hn=fx;var mx=Object.prototype,hx=mx.hasOwnProperty;function yx(n,r,e){var t=n[r];(!(hx.call(n,r)&&hn(t,e))||e===void 0&&!(r in n))&&wa(n,r,e)}var yn=yx;function gx(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?wa(e,l,c):yn(e,l,c)}return e}var Cr=gx;var Hu=Math.max;function xx(n,r,e){return r=Hu(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Hu(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),Ru(n,this,l)}}var qu=xx;var vx=9007199254740991;function bx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=vx}var gn=bx;function Sx(n){return n!=null&&gn(n.length)&&!va(n)}var _a=Sx;var wx=Object.prototype;function _x(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||wx;return n===e}var xn=_x;function Px(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Wu=Px;var Tx="[object Arguments]";function Ox(n){return bt(n)&&Yt(n)==Tx}var vc=Ox;var $u=Object.prototype,Ax=$u.hasOwnProperty,Nx=$u.propertyIsEnumerable,Cx=vc(function(){return arguments}())?vc:function(n){return bt(n)&&Ax.call(n,"callee")&&!Nx.call(n,"callee")},vn=Cx;function Ix(){return!1}var Yu=Ix;var Zu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xu=Zu&&typeof module=="object"&&module&&!module.nodeType&&module,Mx=Xu&&Xu.exports===Zu,Ku=Mx?it.Buffer:void 0,Ex=Ku?Ku.isBuffer:void 0,Lx=Ex||Yu,Ro=Lx;var Bx="[object Arguments]",Dx="[object Array]",Gx="[object Boolean]",Rx="[object Date]",Vx="[object Error]",zx="[object Function]",jx="[object Map]",Fx="[object Number]",kx="[object Object]",Ux="[object RegExp]",Hx="[object Set]",qx="[object String]",Wx="[object WeakMap]",$x="[object ArrayBuffer]",Yx="[object DataView]",Xx="[object Float32Array]",Kx="[object Float64Array]",Zx="[object Int8Array]",Qx="[object Int16Array]",Jx="[object Int32Array]",ev="[object Uint8Array]",tv="[object Uint8ClampedArray]",rv="[object Uint16Array]",ov="[object Uint32Array]",Ue={};Ue[Xx]=Ue[Kx]=Ue[Zx]=Ue[Qx]=Ue[Jx]=Ue[ev]=Ue[tv]=Ue[rv]=Ue[ov]=!0;Ue[Bx]=Ue[Dx]=Ue[$x]=Ue[Gx]=Ue[Yx]=Ue[Rx]=Ue[Vx]=Ue[zx]=Ue[jx]=Ue[Fx]=Ue[kx]=Ue[Ux]=Ue[Hx]=Ue[qx]=Ue[Wx]=!1;function nv(n){return bt(n)&&gn(n.length)&&!!Ue[Yt(n)]}var Qu=nv;function iv(n){return function(r){return n(r)}}var bn=iv;var Ju=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ss=Ju&&typeof module=="object"&&module&&!module.nodeType&&module,sv=ss&&ss.exports===Ju,bc=sv&&ga.process,av=function(){try{var n=ss&&ss.require&&ss.require("util").types;return n||bc&&bc.binding&&bc.binding("util")}catch{}}(),Qr=av;var ep=Qr&&Qr.isTypedArray,lv=ep?bn(ep):Qu,Pa=lv;var cv=Object.prototype,dv=cv.hasOwnProperty;function uv(n,r){var e=Xe(n),t=!e&&vn(n),o=!e&&!t&&Ro(n),i=!e&&!t&&!o&&Pa(n),s=e||t||o||i,l=s?Wu(n.length,String):[],c=l.length;for(var u in n)(r||dv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||mn(u,c)))&&l.push(u);return l}var Ta=uv;function pv(n,r){return function(e){return n(r(e))}}var Oa=pv;var fv=Oa(Object.keys,Object),tp=fv;var mv=Object.prototype,hv=mv.hasOwnProperty;function yv(n){if(!xn(n))return tp(n);var r=[];for(var e in Object(n))hv.call(n,e)&&e!="constructor"&&r.push(e);return r}var rp=yv;function gv(n){return _a(n)?Ta(n):rp(n)}var Sn=gv;function xv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var op=xv;var vv=Object.prototype,bv=vv.hasOwnProperty;function Sv(n){if(!Xt(n))return op(n);var r=xn(n),e=[];for(var t in n)t=="constructor"&&(r||!bv.call(n,t))||e.push(t);return e}var np=Sv;function wv(n){return _a(n)?Ta(n,!0):np(n)}var wn=wv;var _v=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Pv=/^\w*$/;function Tv(n,r){if(Xe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||pn(n)?!0:Pv.test(n)||!_v.test(n)||r!=null&&n in Object(r)}var ip=Tv;var Ov=Rt(Object,"create"),Jr=Ov;function Av(){this.__data__=Jr?Jr(null):{},this.size=0}var sp=Av;function Nv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var ap=Nv;var Cv="__lodash_hash_undefined__",Iv=Object.prototype,Mv=Iv.hasOwnProperty;function Ev(n){var r=this.__data__;if(Jr){var e=r[n];return e===Cv?void 0:e}return Mv.call(r,n)?r[n]:void 0}var lp=Ev;var Lv=Object.prototype,Bv=Lv.hasOwnProperty;function Dv(n){var r=this.__data__;return Jr?r[n]!==void 0:Bv.call(r,n)}var cp=Dv;var Gv="__lodash_hash_undefined__";function Rv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Jr&&r===void 0?Gv:r,this}var dp=Rv;function _n(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}_n.prototype.clear=sp;_n.prototype.delete=ap;_n.prototype.get=lp;_n.prototype.has=cp;_n.prototype.set=dp;var Sc=_n;function Vv(){this.__data__=[],this.size=0}var up=Vv;function zv(n,r){for(var e=n.length;e--;)if(hn(n[e][0],r))return e;return-1}var po=zv;var jv=Array.prototype,Fv=jv.splice;function kv(n){var r=this.__data__,e=po(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Fv.call(r,e,1),--this.size,!0}var pp=kv;function Uv(n){var r=this.__data__,e=po(r,n);return e<0?void 0:r[e][1]}var fp=Uv;function Hv(n){return po(this.__data__,n)>-1}var mp=Hv;function qv(n,r){var e=this.__data__,t=po(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var hp=qv;function Pn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Pn.prototype.clear=up;Pn.prototype.delete=pp;Pn.prototype.get=fp;Pn.prototype.has=mp;Pn.prototype.set=hp;var fo=Pn;var Wv=Rt(it,"Map"),mo=Wv;function $v(){this.size=0,this.__data__={hash:new Sc,map:new(mo||fo),string:new Sc}}var yp=$v;function Yv(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var gp=Yv;function Xv(n,r){var e=n.__data__;return gp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ho=Xv;function Kv(n){var r=ho(this,n).delete(n);return this.size-=r?1:0,r}var xp=Kv;function Zv(n){return ho(this,n).get(n)}var vp=Zv;function Qv(n){return ho(this,n).has(n)}var bp=Qv;function Jv(n,r){var e=ho(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Sp=Jv;function Tn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Tn.prototype.clear=yp;Tn.prototype.delete=xp;Tn.prototype.get=vp;Tn.prototype.has=bp;Tn.prototype.set=Sp;var Vo=Tn;var eb="Expected a function";function wc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(eb);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(wc.Cache||Vo),e}wc.Cache=Vo;var wp=wc;var tb=500;function rb(n){var r=wp(n,function(t){return e.size===tb&&e.clear(),t}),e=r.cache;return r}var _p=rb;var ob=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nb=/\\(\\)?/g,ib=_p(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(ob,function(e,t,o,i){r.push(o?i.replace(nb,"$1"):t||e)}),r}),Pp=ib;function sb(n){return n==null?"":Cu(n)}var Tp=sb;function ab(n,r){return Xe(n)?n:ip(n,r)?[n]:Pp(Tp(n))}var rr=ab;var lb=1/0;function cb(n){if(typeof n=="string"||pn(n))return n;var r=n+"";return r=="0"&&1/n==-lb?"-0":r}var yo=cb;function db(n,r){r=rr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[yo(r[e++])];return e&&e==t?n:void 0}var Aa=db;function ub(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var On=ub;var Op=ut?ut.isConcatSpreadable:void 0;function pb(n){return Xe(n)||vn(n)||!!(Op&&n&&n[Op])}var Ap=pb;function Np(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Ap),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?Np(l,r-1,e,t,o):On(o,l):t||(o[o.length]=l)}return o}var Cp=Np;function fb(n){var r=n==null?0:n.length;return r?Cp(n,1):[]}var Ip=fb;function mb(n){return ku(qu(n,void 0,Ip),n+"")}var Na=mb;var hb=Oa(Object.getPrototypeOf,Object),An=hb;var yb="[object Object]",gb=Function.prototype,xb=Object.prototype,Mp=gb.toString,vb=xb.hasOwnProperty,bb=Mp.call(Object);function Sb(n){if(!bt(n)||Yt(n)!=yb)return!1;var r=An(n);if(r===null)return!0;var e=vb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Mp.call(e)==bb}var Ep=Sb;function wb(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Lp=wb;function _b(){this.__data__=new fo,this.size=0}var Bp=_b;function Pb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Dp=Pb;function Tb(n){return this.__data__.get(n)}var Gp=Tb;function Ob(n){return this.__data__.has(n)}var Rp=Ob;var Ab=200;function Nb(n,r){var e=this.__data__;if(e instanceof fo){var t=e.__data__;if(!mo||t.length<Ab-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Vo(t)}return e.set(n,r),this.size=e.size,this}var Vp=Nb;function Nn(n){var r=this.__data__=new fo(n);this.size=r.size}Nn.prototype.clear=Bp;Nn.prototype.delete=Dp;Nn.prototype.get=Gp;Nn.prototype.has=Rp;Nn.prototype.set=Vp;var Cn=Nn;function Cb(n,r){return n&&Cr(r,Sn(r),n)}var zp=Cb;function Ib(n,r){return n&&Cr(r,wn(r),n)}var jp=Ib;var Hp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fp=Hp&&typeof module=="object"&&module&&!module.nodeType&&module,Mb=Fp&&Fp.exports===Hp,kp=Mb?it.Buffer:void 0,Up=kp?kp.allocUnsafe:void 0;function Eb(n,r){if(r)return n.slice();var e=n.length,t=Up?Up(e):new n.constructor(e);return n.copy(t),t}var qp=Eb;function Lb(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var Wp=Lb;function Bb(){return[]}var Ca=Bb;var Db=Object.prototype,Gb=Db.propertyIsEnumerable,$p=Object.getOwnPropertySymbols,Rb=$p?function(n){return n==null?[]:(n=Object(n),Wp($p(n),function(r){return Gb.call(n,r)}))}:Ca,In=Rb;function Vb(n,r){return Cr(n,In(n),r)}var Yp=Vb;var zb=Object.getOwnPropertySymbols,jb=zb?function(n){for(var r=[];n;)On(r,In(n)),n=An(n);return r}:Ca,Ia=jb;function Fb(n,r){return Cr(n,Ia(n),r)}var Xp=Fb;function kb(n,r,e){var t=r(n);return Xe(n)?t:On(t,e(n))}var Ma=kb;function Ub(n){return Ma(n,Sn,In)}var as=Ub;function Hb(n){return Ma(n,wn,Ia)}var Ea=Hb;var qb=Rt(it,"DataView"),La=qb;var Wb=Rt(it,"Promise"),Ba=Wb;var $b=Rt(it,"Set"),Da=$b;var Kp="[object Map]",Yb="[object Object]",Zp="[object Promise]",Qp="[object Set]",Jp="[object WeakMap]",ef="[object DataView]",Xb=Zr(La),Kb=Zr(mo),Zb=Zr(Ba),Qb=Zr(Da),Jb=Zr(Sa),zo=Yt;(La&&zo(new La(new ArrayBuffer(1)))!=ef||mo&&zo(new mo)!=Kp||Ba&&zo(Ba.resolve())!=Zp||Da&&zo(new Da)!=Qp||Sa&&zo(new Sa)!=Jp)&&(zo=function(n){var r=Yt(n),e=r==Yb?n.constructor:void 0,t=e?Zr(e):"";if(t)switch(t){case Xb:return ef;case Kb:return Kp;case Zb:return Zp;case Qb:return Qp;case Jb:return Jp}return r});var eo=zo;var e1=Object.prototype,t1=e1.hasOwnProperty;function r1(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&t1.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var tf=r1;var o1=it.Uint8Array,Mn=o1;function n1(n){var r=new n.constructor(n.byteLength);return new Mn(r).set(new Mn(n)),r}var En=n1;function i1(n,r){var e=r?En(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var rf=i1;var s1=/\w*$/;function a1(n){var r=new n.constructor(n.source,s1.exec(n));return r.lastIndex=n.lastIndex,r}var of=a1;var nf=ut?ut.prototype:void 0,sf=nf?nf.valueOf:void 0;function l1(n){return sf?Object(sf.call(n)):{}}var af=l1;function c1(n,r){var e=r?En(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var lf=c1;var d1="[object Boolean]",u1="[object Date]",p1="[object Map]",f1="[object Number]",m1="[object RegExp]",h1="[object Set]",y1="[object String]",g1="[object Symbol]",x1="[object ArrayBuffer]",v1="[object DataView]",b1="[object Float32Array]",S1="[object Float64Array]",w1="[object Int8Array]",_1="[object Int16Array]",P1="[object Int32Array]",T1="[object Uint8Array]",O1="[object Uint8ClampedArray]",A1="[object Uint16Array]",N1="[object Uint32Array]";function C1(n,r,e){var t=n.constructor;switch(r){case x1:return En(n);case d1:case u1:return new t(+n);case v1:return rf(n,e);case b1:case S1:case w1:case _1:case P1:case T1:case O1:case A1:case N1:return lf(n,e);case p1:return new t;case f1:case y1:return new t(n);case m1:return of(n);case h1:return new t;case g1:return af(n)}}var cf=C1;function I1(n){return typeof n.constructor=="function"&&!xn(n)?Gu(An(n)):{}}var df=I1;var M1="[object Map]";function E1(n){return bt(n)&&eo(n)==M1}var uf=E1;var pf=Qr&&Qr.isMap,L1=pf?bn(pf):uf,ff=L1;var B1="[object Set]";function D1(n){return bt(n)&&eo(n)==B1}var mf=D1;var hf=Qr&&Qr.isSet,G1=hf?bn(hf):mf,yf=G1;var R1=1,V1=2,z1=4,gf="[object Arguments]",j1="[object Array]",F1="[object Boolean]",k1="[object Date]",U1="[object Error]",xf="[object Function]",H1="[object GeneratorFunction]",q1="[object Map]",W1="[object Number]",vf="[object Object]",$1="[object RegExp]",Y1="[object Set]",X1="[object String]",K1="[object Symbol]",Z1="[object WeakMap]",Q1="[object ArrayBuffer]",J1="[object DataView]",eS="[object Float32Array]",tS="[object Float64Array]",rS="[object Int8Array]",oS="[object Int16Array]",nS="[object Int32Array]",iS="[object Uint8Array]",sS="[object Uint8ClampedArray]",aS="[object Uint16Array]",lS="[object Uint32Array]",je={};je[gf]=je[j1]=je[Q1]=je[J1]=je[F1]=je[k1]=je[eS]=je[tS]=je[rS]=je[oS]=je[nS]=je[q1]=je[W1]=je[vf]=je[$1]=je[Y1]=je[X1]=je[K1]=je[iS]=je[sS]=je[aS]=je[lS]=!0;je[U1]=je[xf]=je[Z1]=!1;function Ga(n,r,e,t,o,i){var s,l=r&R1,c=r&V1,u=r&z1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Xt(n))return n;var a=Xe(n);if(a){if(s=tf(n),!l)return Vu(n,s)}else{var d=eo(n),p=d==xf||d==H1;if(Ro(n))return qp(n,l);if(d==vf||d==gf||p&&!o){if(s=c||p?{}:df(n),!l)return c?Xp(n,jp(s,n)):Yp(n,zp(s,n))}else{if(!je[d])return o?n:{};s=cf(n,d,l)}}i||(i=new Cn);var f=i.get(n);if(f)return f;i.set(n,s),yf(n)?n.forEach(function(y){s.add(Ga(y,r,e,y,n,i))}):ff(n)&&n.forEach(function(y,g){s.set(g,Ga(y,r,e,g,n,i))});var m=u?c?Ea:as:c?wn:Sn,h=a?void 0:m(n);return Uu(h||n,function(y,g){h&&(g=y,y=n[g]),yn(s,g,Ga(y,r,e,g,n,i))}),s}var Ra=Ga;var cS=1,dS=4;function uS(n){return Ra(n,cS|dS)}var to=uS;var pS="__lodash_hash_undefined__";function fS(n){return this.__data__.set(n,pS),this}var bf=fS;function mS(n){return this.__data__.has(n)}var Sf=mS;function Va(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Vo;++r<e;)this.add(n[r])}Va.prototype.add=Va.prototype.push=bf;Va.prototype.has=Sf;var wf=Va;function hS(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var _f=hS;function yS(n,r){return n.has(r)}var Pf=yS;var gS=1,xS=2;function vS(n,r,e,t,o,i){var s=e&gS,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&xS?new wf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!_f(r,function(g,v){if(!Pf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var za=vS;function bS(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Tf=bS;function SS(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Of=SS;var wS=1,_S=2,PS="[object Boolean]",TS="[object Date]",OS="[object Error]",AS="[object Map]",NS="[object Number]",CS="[object RegExp]",IS="[object Set]",MS="[object String]",ES="[object Symbol]",LS="[object ArrayBuffer]",BS="[object DataView]",Af=ut?ut.prototype:void 0,_c=Af?Af.valueOf:void 0;function DS(n,r,e,t,o,i,s){switch(e){case BS:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case LS:return!(n.byteLength!=r.byteLength||!i(new Mn(n),new Mn(r)));case PS:case TS:case NS:return hn(+n,+r);case OS:return n.name==r.name&&n.message==r.message;case CS:case MS:return n==r+"";case AS:var l=Tf;case IS:var c=t&wS;if(l||(l=Of),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=_S,s.set(n,r);var a=za(l(n),l(r),t,o,i,s);return s.delete(n),a;case ES:if(_c)return _c.call(n)==_c.call(r)}return!1}var Nf=DS;var GS=1,RS=Object.prototype,VS=RS.hasOwnProperty;function zS(n,r,e,t,o,i){var s=e&GS,l=as(n),c=l.length,u=as(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:VS.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var b=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(b===void 0?g===v||o(g,v,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Cf=zS;var jS=1,If="[object Arguments]",Mf="[object Array]",ja="[object Object]",FS=Object.prototype,Ef=FS.hasOwnProperty;function kS(n,r,e,t,o,i){var s=Xe(n),l=Xe(r),c=s?Mf:eo(n),u=l?Mf:eo(r);c=c==If?ja:c,u=u==If?ja:u;var a=c==ja,d=u==ja,p=c==u;if(p&&Ro(n)){if(!Ro(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Cn),s||Pa(n)?za(n,r,e,t,o,i):Nf(n,r,c,e,t,o,i);if(!(e&jS)){var f=a&&Ef.call(n,"__wrapped__"),m=d&&Ef.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Cn),o(h,y,e,t,i)}}return p?(i||(i=new Cn),Cf(n,r,e,t,o,i)):!1}var Lf=kS;function Bf(n,r,e,t,o){return n===r?!0:n==null||r==null||!bt(n)&&!bt(r)?n!==n&&r!==r:Lf(n,r,e,t,Bf,o)}var Df=Bf;function US(n,r){return n!=null&&r in Object(n)}var Gf=US;function HS(n,r,e){r=rr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=yo(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&gn(o)&&mn(s,o)&&(Xe(n)||vn(n)))}var Rf=HS;function qS(n,r){return n!=null&&Rf(n,r,Gf)}var Vf=qS;function WS(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var zf=WS;function $S(n,r){return r.length<2?n:Aa(n,Lp(r,0,-1))}var jf=$S;function YS(n,r){return Df(n,r)}var ls=YS;function XS(n,r){return r=rr(r,n),n=jf(n,r),n==null||delete n[yo(zf(r))]}var Ff=XS;function KS(n){return Ep(n)?void 0:n}var kf=KS;var ZS=1,QS=2,JS=4,ew=Na(function(n,r){var e={};if(n==null)return e;var t=!1;r=xa(r,function(i){return i=rr(i,n),t||(t=i.length>1),i}),Cr(n,Ea(n),e),t&&(e=Ra(e,ZS|QS|JS,kf));for(var o=r.length;o--;)Ff(e,r[o]);return e}),Ln=ew;function tw(n,r,e,t){if(!Xt(n))return n;r=rr(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=yo(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Xt(a)?a:mn(r[o+1])?[]:{})}yn(l,c,u),l=l[c]}return n}var Uf=tw;function rw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Aa(n,s);e(l,s)&&Uf(i,rr(s,n),l)}return i}var Hf=rw;function ow(n,r){return Hf(n,r,function(e,t){return Vf(n,t)})}var qf=ow;var nw=Na(function(n,r){return n==null?{}:qf(n,r)}),Bn=nw;function Dn(n){let r;return()=>r||(r=n(),r)}var ze=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,ze.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,ze.prototype),{data:l,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,ze.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function cs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&cs(t)}return Object.freeze(n)}function Wf(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Gn=class extends Error{};function Fa(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Ir(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Rn(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function $f(){return typeof process<"u"}function Yf(n,r){for(let e of n)r(e.id,e.data)!==!0&&Yf(e.children,r)}function Xf(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Xf(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)cs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Xf(o,t)}}traverse(e){Yf(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,st.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Gn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Wf(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Ir(0,o,o);{let s=i[0].fi;return Ir(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return Ir(c,c+o,o)}else return Ir(s.fi,l.fi,o)}}};var Vn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Vn||(Vn={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)cs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let t=e;return $f()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((u,a)=>u.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((a,d)=>a.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Ir(0,t,t);{let i=o[0].fi;return Ir(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return Ir(l,l+t,t)}else return Ir(i.fi,s.fi,t)}}};function zn(n){return n&&typeof n=="object"&&n instanceof qe}var qe=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!zn(t))return null;o+=1}t=t?Fa(t):new qe;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=Fa(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Fa(c);u[r.path[o-1]]=t,t=u}else{let u=new qe;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,qe.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},ro;(t=>{function n(o,i){return ds(o,i)??o}t.apply=n;function r(o,i){return Tc(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=Ct.zoomOnce(c,l[s]),c===void 0)return i;if(!zn(c))return;s+=1}if(c===void 0)return i;if(!!zn(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Pc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(ro||(ro={}));function Pc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ds(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Pc(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function iw(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ds(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function ds(n,r){if(!zn(r))return r;if(n instanceof st){let e=Pc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return iw(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=ds(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof qe)return Tc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=ds(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Tc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!zn(r))return r;if(!zn(n))return ro.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new qe;for(let o of e){let i=Tc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Kf(n,r){let e={cur:[],result:[],len:0};return n=us(n,r,e)??n,[n,e.result]}function ka(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Ua(n){n&&(n.len-=1)}function sw(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Zf(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=us(i.data,r,ka(e,s));Ua(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Zf(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function aw(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=us(i.data,r,ka(e,s));return Ua(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function us(n,r,e){if(n instanceof st){let t=Zf(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return aw(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=us(i,r,ka(e,s));return Ua(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Rn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=us(s,r,ka(e,i));Ua(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");sw(e)}return t}else return}}var Ha;(r=>{function n(e,t){let o=Ct.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Ha||(Ha={}));var St;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof qe&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===a.length&&(c instanceof st||c instanceof ye||c instanceof ze?p=c.runOp(u):p=Vn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof st){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof qe){let b={...v,[g]:h};h=Object.setPrototypeOf(b,qe.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...v],h[g]=b}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof st){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(St||(St={}));var Oc;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>St.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>St.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=Ct.zoom(d,[...m.path,m.id]),y=St.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=Kf(d,{[m.id]:h});d=g;for(let b of v){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=St.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Gn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(Oc||(Oc={}));var Qf=Symbol(),lw=Symbol(),Wa=Symbol(),jo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof qa);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Wa];t&&t(),delete this._children[r]}}}},Nc=class extends jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Vn.runOp(this._current,r),r.path)}},Cc=class extends jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,ze.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Jf={get(n,r){if(r===Wa)return()=>{n._parent=null};if(r===Qf)return n._current;if(r===lw)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=$a(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},cw={...Jf,set(n,r,e){let t={type:0,props:{[r]:pt(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},dw={...Jf,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},jn=class extends jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wa]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=$a(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},Fn=class extends jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wa]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=$a(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Ac(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Ct.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var qa=class extends jo{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Ac(this.ts,e,r),Ac(this.actual,t,r),Ac(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function $a(n,r,e){return e instanceof st?new jn(n,r,e):e instanceof ye?new Fn(n,r,e):e instanceof ze?new Proxy(new Cc(n,r,e),dw):e!==null&&typeof e=="object"?Rn(e)?e:new Proxy(new Nc(n,r,e),cw):e}function Ic(n){let r=new qa(n);return[$a(r,"",n),r]}function kn(n,r){let[e,t]=Ic(n);return r(e),t.result()}function pt(n){return n instanceof jn||n instanceof Fn?n._current:n!==null&&typeof n=="object"?n[Qf]:n}var Ct;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof st||i instanceof jn)&&typeof s=="string")return i.data(s);if((i instanceof ye||i instanceof Fn)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(Ct||(Ct={}));function em(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function fr(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Ya=class{},ps=class extends Ya{constructor(e){super();this.id=e}},fs=class extends Ya{constructor(e){super();this.data=e}};var Ec;try{Ec=new TextDecoder}catch{}var ne,xo,I=0;var lm=[],Lc=lm,Bc=0,Vt={},Ce,go,or=0,Mr=0,Kt,oo,It=[],Le,tm={useRecords:!1,mapsAsObjects:!0},ms=class{},Gc=new ms;Gc.name="MessagePack 0xC1";var Un=!1,Er=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return fm(()=>(Ka(),this?this.unpack(r,e):Er.prototype.unpack.call(tm,r,e)));xo=e>-1?e:r.length,I=0,Bc=0,Mr=0,go=null,Lc=lm,Kt=null,ne=r;try{Le=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Er){if(Vt=this,this.structures)return Ce=this.structures,Xa();(!Ce||Ce.length>0)&&(Ce=[])}else Vt=tm,(!Ce||Ce.length>0)&&(Ce=[]);return Xa()}unpackMultiple(r,e){let t,o=0;try{Un=!0;let i=r.length,s=this?this.unpack(r,i):Ja.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(Xa())===!1)return}else{for(t=[s];I<i;)o=I,t.push(Xa());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Un=!1,Ka()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Xa(){try{if(!Vt.trusted&&!Un){let r=Ce.sharedLength||0;r<Ce.length&&(Ce.length=r)}let n=Ke();if(I==xo)Ce.restoreStructures&&rm(),Ce=null,ne=null,oo&&(oo=null);else if(I>xo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Un)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ce.restoreStructures&&rm(),Ka(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function rm(){for(let n in Ce.restoreStructures)Ce[n]=Ce.restoreStructures[n];Ce.restoreStructures=null}function Ke(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Ce[n&63]||Vt.getStructures&&cm()[n&63];return r?(r.read||(r.read=Rc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[um()]=Ke();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ke(),Ke());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ke();return r}else if(n<192){let r=n-160;if(Mr>=I)return go.slice(I-or,(I+=r)-or);if(Mr==0&&xo<140){let e=r<16?Vc(r):dm(r);if(e!=null)return e}return Dc(r)}else{let r;switch(n){case 192:return null;case 193:return Kt?(r=Ke(),r>0?Kt[1].slice(Kt.position1,Kt.position1+=r):Kt[0].slice(Kt.position0,Kt.position0-=r)):Gc;case 194:return!1;case 195:return!0;case 196:return Mc(ne[I++]);case 197:return r=Le.getUint16(I),I+=2,Mc(r);case 198:return r=Le.getUint32(I),I+=4,Mc(r);case 199:return Fo(ne[I++]);case 200:return r=Le.getUint16(I),I+=2,Fo(r);case 201:return r=Le.getUint32(I),I+=4,Fo(r);case 202:if(r=Le.getFloat32(I),Vt.useFloat32>2){let e=Qa[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Le.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Le.getUint16(I),I+=2,r;case 206:return r=Le.getUint32(I),I+=4,r;case 207:return Vt.int64AsNumber?(r=Le.getUint32(I)*4294967296,r+=Le.getUint32(I+4)):r=Le.getBigUint64(I),I+=8,r;case 208:return Le.getInt8(I++);case 209:return r=Le.getInt16(I),I+=2,r;case 210:return r=Le.getInt32(I),I+=4,r;case 211:return Vt.int64AsNumber?(r=Le.getInt32(I)*4294967296,r+=Le.getUint32(I+4)):r=Le.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return am(ne[I++]&63);{let e=It[r];if(e)return e.read?(I++,e.read(Ke())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,am(ne[I++]&63,ne[I++])):Fo(2);case 214:return Fo(4);case 215:return Fo(8);case 216:return Fo(16);case 217:return r=ne[I++],Mr>=I?go.slice(I-or,(I+=r)-or):pw(r);case 218:return r=Le.getUint16(I),I+=2,Mr>=I?go.slice(I-or,(I+=r)-or):fw(r);case 219:return r=Le.getUint32(I),I+=4,Mr>=I?go.slice(I-or,(I+=r)-or):mw(r);case 220:return r=Le.getUint16(I),I+=2,nm(r);case 221:return r=Le.getUint32(I),I+=4,nm(r);case 222:return r=Le.getUint16(I),I+=2,im(r);case 223:return r=Le.getUint32(I),I+=4,im(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var uw=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Rc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>uw.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ke);return n.highByte===0&&(n.read=om(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ke()}return t}return e.count=0,n.highByte===0?om(r,e):e}var om=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ce[t]||cm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Rc(o,n)),o.read()};function cm(){let n=fm(()=>(ne=null,Vt.getStructures()));return Ce=Vt._mergeStructures(n,Ce)}var Dc=Za,pw=Za,fw=Za,mw=Za;function Za(n){let r;if(n<16&&(r=Vc(n)))return r;if(n>64&&Ec)return Ec.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,l=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=ft.apply(String,t),t.length=0)}return t.length>0&&(r+=ft.apply(String,t)),r}function nm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ke();return r}function im(n){if(Vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[um()]=Ke();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ke(),Ke());return r}}var ft=String.fromCharCode;function dm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return ft.apply(String,e)}function Vc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return ft(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return ft(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return ft(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return ft(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return ft(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return ft(r,e,t,o,i,s);let l=ne[I++];if((l&128)>0){I-=7;return}return ft(r,e,t,o,i,s,l)}else{let i=ne[I++],s=ne[I++],l=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return ft(r,e,t,o,i,s,l,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return ft(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[I++],a=ne[I++];if((u&128)>0||(a&128)>0){I-=10;return}if(n<11)return ft(r,e,t,o,i,s,l,c,u,a);let d=ne[I++];if((d&128)>0){I-=11;return}return ft(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[I++],a=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return ft(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return ft(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return ft(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return ft(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Mc(n){return Vt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function Fo(n){let r=ne[I++];if(It[r])return It[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var sm=new Array(4096);function um(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,Mr>=I)return go.slice(I-or,(I+=n)-or);if(!(Mr==0&&xo<180))return Dc(n)}else return I--,Ke();let r=(n<<5^(n>1?Le.getUint16(I):n>0?ne[I]:0))&4095,e=sm[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Le.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],sm[r]=e,e.bytes=n;t<o;)i=Le.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?Vc(n):dm(n);return l!=null?e.string=l:e.string=Dc(n)}var am=(n,r)=>{var e=Ke();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ce[n];return o&&o.isShared&&((Ce.restoreStructures||(Ce.restoreStructures=[]))[n]=o),Ce[n]=e,e.read=Rc(e,t),e.read()},pm=typeof self=="object"?self:global;It[0]=()=>{};It[0].noBuffer=!0;It[101]=()=>{let n=Ke();return(pm[n[0]]||Error)(n[1])};It[105]=n=>{let r=Le.getUint32(I-4);oo||(oo=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};oo.set(r,o);let i=Ke();return o.used?Object.assign(t,i):(o.target=i,i)};It[112]=n=>{let r=Le.getUint32(I-4),e=oo.get(r);return e.used=!0,e.target};It[115]=()=>new Set(Ke());var zc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");It[116]=n=>{let r=n[0],e=zc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new pm[e](Uint8Array.prototype.slice.call(n,1).buffer)};It[120]=()=>{let n=Ke();return new RegExp(n[0],n[1])};It[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,Kt=[Ke(),Ke()],Kt.position0=0,Kt.position1=0;let t=I;I=e;try{return Ke()}finally{I=t}};It[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function fm(n){let r=xo,e=I,t=Bc,o=or,i=Mr,s=go,l=Lc,c=oo,u=Kt,a=new Uint8Array(ne.slice(0,xo)),d=Ce,p=Ce.slice(0,Ce.length),f=Vt,m=Un,h=n();return xo=r,I=e,Bc=t,or=o,Mr=i,go=s,Lc=l,oo=c,Kt=u,ne=a,Un=m,Ce=d,Ce.splice(0,Ce.length,...p),Vt=f,Le=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function Ka(){ne=null,oo=null,Ce=null}function mm(n){n.unpack?It[n.type]=n.unpack:It[n.type]=n}var Qa=new Array(147);for(let n=0;n<256;n++)Qa[n]=+("1e"+Math.floor(45.15-n*.30103));var Ja=new Er({useRecords:!1}),hw=Ja.unpack,yw=Ja.unpackMultiple,gw=Ja.unpack,el={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},xw=new Float32Array(1),GE=new Uint8Array(xw.buffer,0,4);var tl;try{tl=new TextEncoder}catch{}var rl,Fc,ol=typeof Buffer<"u",jc=ol?Buffer.allocUnsafeSlow:Uint8Array,xm=ol?Buffer:Uint8Array,hm=ol?4294967296:2144337920,z,rt,E=0,Lr,Br=null,vw=/[\u0080-\uFFFF]/,hs=Symbol("record-id"),ko=class extends Er{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=xm.prototype.utf8Write?function(x,C,T){return z.utf8Write(x,C,T)}:tl&&tl.encodeInto?function(x,C){return tl.encodeInto(x,z.subarray(C)).written}:!1,a=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],b=0,w=0;this.pack=this.encode=function(x,C){if(z||(z=new jc(8192),rt=new DataView(z.buffer,0,8192),E=0),Lr=z.length-10,Lr-E<2048?(z=new jc(z.length),rt=new DataView(z.buffer,0,z.length),Lr=z.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(Br=["",""],z[E++]=214,z[E++]=98,Br.position=E-t,E+=4):Br=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>f)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 N=0;N<T;N++){let O=o[N];if(!O)continue;let A,G=o.transitions;for(let k=0,$=O.length;k<$;k++){let ee=O[k];A=G[ee],A||(A=G[ee]=Object.create(null)),G=A}G[hs]=N+64}c=T}d||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(S(x),Br){rt.setUint32(Br.position+t,E-Br.position-t);let T=Br;Br=null,S(T[0]),S(T[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>Lr&&_(E),a.offset=E;let T=Sw(z.subarray(t,E),l.idsToInsert);return l=null,T}return C&bm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let T=0,N=v.length;T<N;T++)v[T][hs]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let N=z.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=T,N)}}C&Nw&&(E=t)}};let S=x=>{E>Lr&&(z=_(E));var C=typeof x,T;if(C==="string"){let N=x.length;if(Br&&N>=8&&N<4096){let G=vw.test(x);Br[G?0:1]+=x,z[E++]=193,S(G?-N:N);return}let O;N<32?O=1:N<256?O=2:N<65536?O=3:O=5;let A=N*3;if(E+A>Lr&&(z=_(E+A)),N<64||!u){let G,k,$,ee=E+O;for(G=0;G<N;G++)k=x.charCodeAt(G),k<128?z[ee++]=k:k<2048?(z[ee++]=k>>6|192,z[ee++]=k&63|128):(k&64512)===55296&&(($=x.charCodeAt(G+1))&64512)===56320?(k=65536+((k&1023)<<10)+($&1023),G++,z[ee++]=k>>18|240,z[ee++]=k>>12&63|128,z[ee++]=k>>6&63|128,z[ee++]=k&63|128):(z[ee++]=k>>12|224,z[ee++]=k>>6&63|128,z[ee++]=k&63|128);T=ee-E-O}else T=u(x,E+O,A);T<32?z[E++]=160|T:T<256?(O<2&&z.copyWithin(E+2,E+1,E+1+T),z[E++]=217,z[E++]=T):T<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+T),z[E++]=218,z[E++]=T>>8,z[E++]=T&255):(O<5&&z.copyWithin(E+5,E+3,E+3+T),z[E++]=219,rt.setUint32(E,T),E+=4),E+=T}else if(C==="number")if(x>>>0===x)x<64?z[E++]=x:x<256?(z[E++]=204,z[E++]=x):x<65536?(z[E++]=205,z[E++]=x>>8,z[E++]=x&255):(z[E++]=206,rt.setUint32(E,x),E+=4);else if(x>>0===x)x>=-32?z[E++]=256+x:x>=-128?(z[E++]=208,z[E++]=x+256):x>=-32768?(z[E++]=209,rt.setInt16(E,x),E+=2):(z[E++]=210,rt.setInt32(E,x),E+=4);else{let N;if((N=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){z[E++]=202,rt.setFloat32(E,x);let O;if(N<4||(O=x*Qa[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,rt.setFloat64(E,x),E+=8}else if(C==="object")if(!x)z[E++]=192;else{if(l){let O=l.get(x);if(O){if(!O.id){let A=l.idsToInsert||(l.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,rt.setUint32(E,O.id),E+=4;return}else l.set(x,{offset:E-t})}let N=x.constructor;if(N===Object)P(x,!0);else if(N===Array){T=x.length,T<16?z[E++]=144|T:T<65536?(z[E++]=220,z[E++]=T>>8,z[E++]=T&255):(z[E++]=221,rt.setUint32(E,T),E+=4);for(let O=0;O<T;O++)S(x[O])}else if(N===Map){T=x.size,T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,rt.setUint32(E,T),E+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=rl.length;O<A;O++){let G=Fc[O];if(x instanceof G){let k=rl[O];if(k.write){k.type&&(z[E++]=212,z[E++]=k.type,z[E++]=0),S(k.write.call(this,x));return}let $=z,ee=rt,Y=E;z=null;let W;try{W=k.pack.call(this,x,H=>(z=$,$=null,E+=H,E>Lr&&_(E),{target:z,targetView:rt,position:E-H}),S)}finally{$&&(z=$,rt=ee,E=Y,Lr=z.length-10)}W&&(W.length+E>Lr&&_(W.length+E),E=bw(W,z,E,k.type));return}}P(x,!x.hasOwnProperty)}}else if(C==="boolean")z[E++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))z[E++]=211,rt.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)z[E++]=207,rt.setBigUint64(E,x);else if(this.largeBigIntToFloat)z[E++]=203,rt.setFloat64(E,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(C==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(C==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},P=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),T=C.length;T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,rt.setUint32(E,T),E+=4);let N;for(let O=0;O<T;O++)S(N=C[O]),S(x[N])}:(x,C)=>{z[E++]=222;let T=E-t;E+=2;let N=0;for(let O in x)(C||x.hasOwnProperty(O))&&(S(O),S(x[O]),N++);z[T+++t]=N>>8,z[T+t]=N&255}:x=>{let C=Object.keys(x),T,N=s.transitions||(s.transitions=Object.create(null)),O=0;for(let G=0,k=C.length;G<k;G++){let $=C[G];T=N[$],T||(T=N[$]=Object.create(null),O++),N=T}let A=N[hs];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let G=C.highByte=A>=96&&h?A-96>>5:-1;N[hs]=A,s[A-64]=C,A<y?(C.isShared=!0,s.sharedLength=A-63,i=!0,G>=0?(z[E++]=(A&31)+96,z[E++]=G):z[E++]=A):(G>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=G):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[hs]=0),v.push(N),S(C))}for(let G=0,k=C.length;G<k;G++)S(x[C[G]])},_=x=>{let C;if(x>16777216){if(x-t>hm)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(hm,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,z.length-1)>>12)+1<<12;let T=new jc(C);return rt=new DataView(T.buffer,0,C),z.copy?z.copy(T,0,t,x):T.set(z.slice(t,x)),E-=t,t=0,Lr=T.length-10,z=T}}useBuffer(r){z=r,rt=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};Fc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ms];rl=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?ym(n,16,r):gm(ol?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==xm&&this.structuredClone?ym(n,zc.indexOf(e.name),r):gm(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function ym(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function gm(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function bw(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function Sw(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function vo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Fc.unshift(n.Class),rl.unshift(n)}mm(n)}var vm=new ko({useRecords:!1}),ww=vm.pack,_w=vm.pack;var{NEVER:Pw,ALWAYS:Tw,DECIMAL_ROUND:Ow,DECIMAL_FIT:Aw}=el,bm=512,Nw=1024;var Sm=new ko({structuredClone:!0});vo({Class:ze.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});vo({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});vo({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});vo({Class:ps.prototype.constructor,type:4,write(n){return n.id},read(n){return new ps(n)}});vo({Class:fs.prototype.constructor,type:5,write(n){return n.data},read(n){return new fs(n)}});vo({Class:qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});function Cw(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function kc(n){if(Rn(n))return n;if(Array.isArray(n))return n.map(kc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=kc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var nl;(t=>{function n(o){return Sm.pack(o)}t.serialize=n;function r(o){return Sm.unpack(o)}t.deserialize=r;function e(o){return Cw(n(kc(o))).toString()}t.checksum=e})(nl||(nl={}));var wm;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(wm||(wm={}));var bo;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(bo||(bo={}));var _m;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(_m||(_m={}));var So;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(So||(So={}));var At;(a=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}a.isRGB=n,a.white={r:1,g:1,b:1},a.red={r:1,g:0,b:0},a.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}a.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}a.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}a.fromHex=s;function l(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}a.toHex=l;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}a.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}a.lerp=u})(At||(At={}));var Zt;(l=>{l.white={...At.white,a:1},l.transparent={...At.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...At.fromHex(c),a:u}}l.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,u){return At.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(Zt||(Zt={}));var il;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(il||(il={}));var Pm;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Pm||(Pm={}));var Tm;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Tm||(Tm={}));var Om;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Om||(Om={}));var mr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(mr||(mr={}));var Uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Uo||(Uo={}));var Dr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(Iw.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;Mw.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;Ew.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;Lw.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;Bw.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;Dw.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(Dr||(Dr={}));var sl;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(sl||(sl={}));var Iw=["count"],Mw=["radius","start","end","position","scale","rotation"],Ew=["position","scale","rotation"],Lw=["count","size"],Bw=["count","position","scale","rotation"],Dw=["strength","scale","rotation","position","movement","seed","freqScale"];var al;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(al||(al={}));var ll;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Zt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:Zt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Zt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ll||(ll={}));var Uc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Uc||(Uc={}));var Hc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Hc||(Hc={}));var cl;(r=>r.defaultData={...Hc.defaultData,...Uc.defaultData})(cl||(cl={}));var Hn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Hn||(Hn={}));var Am;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Am||(Am={}));function Cm(n){return n.type!=="displace"}var Nm;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Nm||(Nm={}));var Im=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Mm=["wrapping","image","video"],Mt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Hn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:At.fromHex(5526619)};case"depth":return{...s,type:"depth",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]],steps:[0,1],near:50,far:200};case"normal":return{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...At.fromHex(6710886),a:1},colorB:{...At.fromHex(6710886),a:1},colorC:{...At.fromHex(16777215),a:1},colorD:{...At.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:Zt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Zt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Zt.fromHexAndA(0,1),contourColor:Zt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...At.fromHex(0),a:1},colorB:{...At.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(Mt||(Mt={}));var zt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new ye}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new ye;return p.push({fi:0,data:Mt.defaultData("light",u),id:a}),p.push({fi:1,data:Mt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=Mt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Mt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=Mt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Mt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(zt||(zt={}));var qn;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(qn||(qn={}));var Wn;(r=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Wn||(Wn={}));var qc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var dl;(r=>{function n(e,t){let o={...e};return Gw.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(dl||(dl={}));var ul={shape:qc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},Gw=["depth","offset","angle","twist","startScale","endScale"];var ys;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(ys||(ys={}));var pl;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,dl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(pl||(pl={}));var wo;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Wn.defaultData(),extrusion:ul};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:qn.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(wo||(wo={}));var Em;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Em||(Em={}));var $n;(o=>{o.identity={...il.identity,hiddenMatrix:So.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return bu({position:bo.isEqual(i.position,s.position)?void 0:s.position,rotation:bo.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:bo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:So.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})($n||($n={}));var Lm;(r=>r.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Lm||(Lm={}));var Qt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...$n.identity,cloner:null})(Qt||(Qt={}));var Bm;(r=>r.defaultData={type:"Empty",...Qt.defaultData})(Bm||(Bm={}));var Dm;(r=>r.defaultData={type:"Component",...Qt.defaultData})(Dm||(Dm={}));var Ho;(r=>r.defaultData={type:"Mesh",...Qt.defaultData,...cl.defaultData})(Ho||(Ho={}));var Yn;(r=>r.defaultData={...Qt.defaultData,...$n.identity,...Uo.defaultData})(Yn||(Yn={}));var Gm;(r=>{function n(e){return{...Qt.defaultData,...ll.defaultData(e)}}r.defaultData=n})(Gm||(Gm={}));var Xn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(Xn||(Xn={}));var _o;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Qt.defaultData,...l,component:s,overrides:new qe,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=$n.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(_o||(_o={}));var Rm;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:So.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Uo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Qt.defaultData,...Ho.defaultData,geometry:wo.defaultData("RectangleGeometry"),material:zt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Qt.defaultData,...Ho.defaultData,geometry:wo.defaultData("BooleanGeometry"),material:zt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Qt.defaultData,...Ho.defaultData,geometry:wo.defaultData("TextGeometry"),material:zt.defaultTwoLayerData("phong","layer1","layer2")}))(Rm||(Rm={}));var qo;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new qe}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new qe})))):mr.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=kn(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&Mt.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=kn(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&Mt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...sl.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,$n.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),mr.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:pl.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Dr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Dr.merge(l.cloner,s.cloner)});else if(al.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=At.clone(c.color))}return l}o.patch=t})(qo||(qo={}));var Kn;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(Kn||(Kn={}));var fl;(r=>r.defaultData={orbitControls:Kn.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null,hdTransmission:!1})(fl||(fl={}));var Wc;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Wc||(Wc={}));var $c;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})($c||($c={}));var ml;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Wc.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:$c.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(ml||(ml={}));var Zn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Zn||(Zn={}));var hl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Kr(o,ze.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Zn.emptyImage,name:"AI generated image"}),Kr(i,ze.prototype)}t.defaultImages=r;function e(){return{materials:new ze,images:new ze,videos:new ze,colors:new ze,audios:new ze,fonts:new ze,penumbraSize:[2,2,2]}}t.emptyData=e})(hl||(hl={}));var xs=require("three");var yl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",speedTranslate:1e3,speedRotate:100,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ye,move:new ye,jump:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Zt.fromHexAndA(3728051,1)}}))(yl||(yl={}));function Vm(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Bn(pt(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...pt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Qn(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Jn(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function Rw(n){Object.assign(n.scene.publish,{orbitControls:{...Kn.defaultData,...pt(n.scene.publish.orbitControls)}})}function Vw(n){Object.assign(n.scene.publish.settings,{video:{...fl.defaultData.settings.video,...pt(n.scene.publish.settings.video)}})}function zw(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Im.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Mm.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function jw(n){n.scene.publish.withBackground=!0}function Fw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function kw(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function Uw(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function Hw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=pt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=pt(e).booleanExclude!==!0)}})}function qw(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function Ww(n){function r(t){Object.setPrototypeOf(t,qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,qe.prototype)}function e(t){Object.setPrototypeOf(t,qe.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=pt(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=pt(c).layers;e(u),c.layers=u}})})}function zm(n){n.layers===void 0&&Object.assign(n,zt.defaultTwoLayerData("lambert"))}function Yc(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...pt(r),colors:e,steps:t};Object.assign(r,o)}})}function $w(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function jm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Yc(t)}):"material"in e&&typeof e.material!="string"&&Yc(e.material)}),Object.values(n.shared.materials).forEach(r=>Yc(r))}function Yw(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function Xw(n){n.shared.audios=Kr({},ze.prototype)}function Kw(n){n.shared.videos=Kr({},ze.prototype)}function Zw(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function Qw(n){Object.entries(pt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(pt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Jw(n){n.scene.publish.settings.web.preload=!1}function Fm(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function km(n){n.layers&&n.layers.forEach(r=>{Cm(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function e_(n){n.shared.fonts=Kr({},ze.prototype)}function t_(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function r_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=zt.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=t_(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Qt.defaultData,...Ho.defaultData,flatShading:!1,wireframe:!1,geometry:{...wo.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:pt(o.states),events:pt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=pt(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function o_(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ye,move:new ye,jump:new ye}});else{let i=new ye;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:xs.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,Bn(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:xs.MathUtils.generateUUID(),data:u},{fi:1,id:xs.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function n_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ye,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...Bn(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...Bn(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:xs.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Um(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Mt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Hm(n){Qn(n,Um),Jn(n,Um)}function i_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function s_(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function a_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=zt.defaultTwoLayerData("phong"))})}function l_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function c_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function d_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function u_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function p_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function f_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function m_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=yl.defaultDataThirdPerson.navmesh)})})}function h_(n){n.scene.styles||(n.scene.styles=ml.defaultData())}function qm(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function y_(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Jn(n,qm),Qn(n,qm)}var Wm=41;function $m(n){let r=n.schema??0;r!==Wm&&(console.warn("updating from ",r,"to ",Wm),r<1&&(Jn(n,Vm),Qn(n,Vm),n.schema=1),r<2&&(Rw(n),n.schema=2),r<3&&(zw(n),n.schema=3),r<4&&(jw(n),n.schema=4),r<5&&(Fw(n),n.schema=5),r<6&&(kw(n),n.schema=6),r<7&&(Uw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(jm(n),n.schema=9),r<10&&($w(n),n.schema=10),r<11&&(Yw(n),n.schema=11),r<12&&(jm(n),n.schema=12),r<13&&(Xw(n),n.schema=13),r<14&&(Zw(n),n.schema=14),r<15&&(Qw(n),n.schema=15),r<16&&(Jw(n),n.schema=16),r<17&&(Jn(n,Fm),Qn(n,Fm),n.schema=17),r<18&&(Jn(n,zm),Qn(n,zm),n.schema=18),r<19&&(Vw(n),n.schema=19),r<20&&(e_(n),r_(n),n.schema=20),r<21&&(o_(n),n_(n),n.schema=21),r<22&&(Hm(n),n.schema=22),r<23&&(i_(n),n.schema=23),r<24&&(s_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Kw(n),r<25&&(n.schema=25)),r<26&&(Hw(n),n.schema=26),r<27&&(qw(n),n.schema=27),r<28&&(Hm(n),n.schema=28),r<29&&(Ww(n),n.schema=29),r<30&&(a_(n),n.schema=30),r<31&&(l_(n),n.schema=31),r<33&&(c_(n),n.schema=33),r<34&&(d_(n),n.schema=34),r<35&&(u_(n),n.schema=35),r<36&&(p_(n),n.schema=36),r<37&&(f_(n),n.schema=37),r<38&&(Jn(n,km),Qn(n,km),n.schema=38),r<39&&(m_(n),n.schema=39),r<40&&(h_(n),n.schema=40),r<41&&(y_(n),n.schema=41))}var Ee=require("three"),Yi=Go(Xm());var g_=.5*(Math.sqrt(3)-1),bs=(3-Math.sqrt(3))/6,x_=1/3,Gr=1/6,nD=(Math.sqrt(5)-1)/4,iD=(5-Math.sqrt(5))/20,Ss=n=>Math.floor(n)|0,Km=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Kc=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function gl(n=Math.random){let r=Qm(n),e=new Float64Array(r).map(o=>Km[o%12*2]),t=new Float64Array(r).map(o=>Km[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*g_,d=Ss(i+a),p=Ss(s+a),f=(d+p)*bs,m=d-f,h=p-f,y=i-m,g=s-h,v,b;y>g?(v=1,b=0):(v=0,b=1);let w=y-v+bs,S=g-b+bs,P=y-1+2*bs,_=g-1+2*bs,x=d&255,C=p&255,T=.5-y*y-g*g;if(T>=0){let A=x+r[C],G=e[A],k=t[A];T*=T,l=T*T*(G*y+k*g)}let N=.5-w*w-S*S;if(N>=0){let A=x+v+r[C+b],G=e[A],k=t[A];N*=N,c=N*N*(G*w+k*S)}let O=.5-P*P-_*_;if(O>=0){let A=x+1+r[C+1],G=e[A],k=t[A];O*=O,u=O*O*(G*P+k*_)}return 70*(l+c+u)}}function Zm(n=Math.random){let r=Qm(n),e=new Float64Array(r).map(i=>Kc[i%12*3]),t=new Float64Array(r).map(i=>Kc[i%12*3+1]),o=new Float64Array(r).map(i=>Kc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*x_,m=Ss(s+f),h=Ss(l+f),y=Ss(c+f),g=(m+h+y)*Gr,v=m-g,b=h-g,w=y-g,S=s-v,P=l-b,_=c-w,x,C,T,N,O,A;S>=P?P>=_?(x=1,C=0,T=0,N=1,O=1,A=0):S>=_?(x=1,C=0,T=0,N=1,O=0,A=1):(x=0,C=0,T=1,N=1,O=0,A=1):P<_?(x=0,C=0,T=1,N=0,O=1,A=1):S<_?(x=0,C=1,T=0,N=0,O=1,A=1):(x=0,C=1,T=0,N=1,O=1,A=0);let G=S-x+Gr,k=P-C+Gr,$=_-T+Gr,ee=S-N+2*Gr,Y=P-O+2*Gr,W=_-A+2*Gr,H=S-1+3*Gr,V=P-1+3*Gr,R=_-1+3*Gr,B=m&255,L=h&255,D=y&255,X=.6-S*S-P*P-_*_;if(X<0)u=0;else{let M=B+r[L+r[D]];X*=X,u=X*X*(e[M]*S+t[M]*P+o[M]*_)}let q=.6-G*G-k*k-$*$;if(q<0)a=0;else{let M=B+x+r[L+C+r[D+T]];q*=q,a=q*q*(e[M]*G+t[M]*k+o[M]*$)}let j=.6-ee*ee-Y*Y-W*W;if(j<0)d=0;else{let M=B+N+r[L+O+r[D+A]];j*=j,d=j*j*(e[M]*ee+t[M]*Y+o[M]*W)}let F=.6-H*H-V*V-R*R;if(F<0)p=0;else{let M=B+1+r[L+1+r[D+1]];F*=F,p=F*F*(e[M]*H+t[M]*V+o[M]*R)}return 32*(u+a+d+p)}}function Qm(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Jm=require("three"),yr=new Jm.Triangle,xl=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;yr.a.fromBufferAttribute(r,o),yr.b.fromBufferAttribute(r,o+1),yr.c.fromBufferAttribute(r,o+2),i*=yr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),yr.a.fromBufferAttribute(this.positionAttribute,r*3),yr.b.fromBufferAttribute(this.positionAttribute,r*3+1),yr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(yr.a,o).addScaledVector(yr.b,i).addScaledVector(yr.c,1-(o+i)),yr.getNormal(t),this}};var oh=require("three");var Jt=require("three"),rh=Go(th()),v_=new Jt.Matrix4,b_=new Jt.Matrix4,S_=new Jt.Matrix4,ws;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(ws||(ws={}));var ei=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Jt.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Jt.Matrix4;this.matrixWorldRigid=new Jt.Matrix4;this.shearScale=new Jt.Matrix4;this.shearScaleInv=new Jt.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Jt.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ws.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,rh.SVD)(o),c=v_.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=b_.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=S_.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Jt.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Jt.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,s,l,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Zc=class extends ei(oh.Object3D){},w_=n=>n.type==="Mesh",no=class extends Zc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new no(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return w_(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var vi=require("three");var Rl=require("three");var io=require("three");var Ze=require("three"),Wo=new Ze.Vector3,$o=new Ze.Vector3,ti=new Ze.Matrix4,ih=[new Ze.Vector3(-1,1,1),new Ze.Vector3(-1,-1,1),new Ze.Vector3(1,-1,1),new Ze.Vector3(1,1,1),new Ze.Vector3(-1,1,-1),new Ze.Vector3(-1,-1,-1),new Ze.Vector3(1,-1,-1),new Ze.Vector3(1,1,-1)],__=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],P_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],nh=(n,r,e)=>{n.updateEntityBoxSize(Wo,$o),ti.copy(r).multiply(n.matrixWorld),$o.x===0&&$o.y===0&&$o.z===0?e.push(new Ze.Vector3(Wo.x,Wo.y,Wo.z).applyMatrix4(ti)):ih.forEach(t=>{e.push(t.clone().multiply($o).add(Wo).applyMatrix4(ti))})},_s=class extends Ze.Box3{constructor(){super(...arguments);this.matrix=new Ze.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ze.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Ze.Vector3);return}nh(s,t,i)}}):nh(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(ti.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize($o).multiplyScalar(.5),this.getCenter(Wo),ti.copy(this.matrix).setPosition(Wo),this.vertices=ih.map(e=>e.clone().multiply($o).applyMatrix4(ti))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=__.map(([e,t])=>new Ze.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ze.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=P_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var gr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var mt=require("three"),Jc=class extends mt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var ed=.001;function td(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=ed}function Qc(n,r){let e=new mt.Vector3(...n.position),t=new mt.Vector3(...n.controlNext.position),o=new mt.Vector3(...r.controlPrevious.position),i=new mt.Vector3(...r.position);return td(e,t,i)&&td(e,o,i)}function bl(n){let r=n.points.map(a=>new mt.Vector3(...a.data.position)),e=[n.points[0]],t=new mt.Vector3(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)td(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new mt.Vector3(...d.position),f=new mt.Vector3(...d.controlPrevious.position),m=new mt.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,b=e[g].data,w=new mt.Vector3(...v.position),S=new mt.Vector3(...b.position),P=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let x=Qc(v,d),C=Qc(d,b);if(!x||!C)l[a]={...h,removedLength:0};else{let T=P.clone().add(_).normalize(),N=T.clone().cross(P).length()/P.dot(T);l[a]={...h,tan:N,removedLength:d.roundness/N}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!Qc(e[d].data,e[p].data))f.position.distanceTo(m.position)>ed&&(h=new mt.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>ed&&(h=new mt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),x=f.clone().lerp(P,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new mt.CubicBezierCurve3(f,x,C,m)}let u=new Jc;return c.forEach(a=>{a&&u.add(a)}),u}var Re;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Re||(Re={}));var Ps=n=>Re.is(n),T_={type:"completeState",isfromEntity:!0},Sl=n=>class extends ei(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new _s;this._recursiveBBox=new _s;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Re.is(o))return o}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Re.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)qo.toOps(this.data,s.data).forEach(c=>{let u=Ha.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=qo.patch(this.data,s),qo.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Ps(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Re.is(o[i]))return o[i];if(Re.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Re.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Ps(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Re.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ps(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ps(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ps(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ln(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??So.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Re.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Re.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ln(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=fr(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ct.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=Ct.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,qo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),fr(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(ro.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=Ct.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=Xn.resolve(o.overrides,a),p.updateByOp(t,St.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of _o.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of _o.rootOverrideProps)if(fr(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=ro.filterOp(d.overrideData,a);p&&d.updateByOp(p,St.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=ro.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=St.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!mr.is(t.props.type)&&gr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){gr.changeEntityProptotype(this,o,i);for(let s of this.children)Re.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),fr(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),fr(t.path,["cloner"])!==null){let s=St.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,l=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,a=bl(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=a.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new io.Matrix4;c.updateMatrixWorld();let m=new io.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new io.Matrix4().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new io.Matrix4().lookAt(p,g,new io.Vector3(0,1,0)),b=new io.Euler().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(T_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof gr.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new gr.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};var lh=require("three");var He=require("three"),ah=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new Ts(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new He.CylinderGeometry(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Po(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function sh(n){return new He.Vector2(n.y,-n.x)}var Ts=class extends He.BufferGeometry{constructor(r,e,t,o,i,s,l,c,u,a,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,b=t/2,w=new He.Vector3,S=new He.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=a);let P=new He.Vector2(r,b),_=new He.Vector2(e,-b),x=null,C=null,T=null,N=null,O=P.clone().sub(_),A=0,G=0,k=0;p>0&&(A=Math.min(r,e)*(1-p),G=r-A,k=e-A);let $=P.clone();$.x-=A;let ee=Math.PI-O.angle(),Y=O.angle(),W=Math.tan(Y/2),H=Math.tan(ee/2),V=W+H,R=p?V:H,B=p?V:W;if(u=Math.min(u,(r-G)/R,O.length()/V),a=Math.min(a,(e-k)/B,O.length()/V),u>0){let F=u/W;x=P.clone().sub(new He.Vector2(F,u)),p&&(T=x.clone(),T.x-=A-V*u),P.sub(O.clone().setLength(F))}if(a>0){let F=a/H;C=_.clone().sub(new He.Vector2(F,-a)),_.add(O.clone().setLength(F)),p&&(N=C.clone(),N.x-=A-V*a,$.sub(O.clone().setLength(F)))}O=P.clone().sub(_);let L=O.length()<.5,D=[];for(let F=0;F<=o;F++){let M=[],Q=F/o,re=Q*c+l,oe=new He.Vector2(Math.sin(re),Math.cos(re));N&&C?(X(M,Q,oe,ee,a,N,-1,!0),X(M,Q,oe,Y,a,C,-1,!1)):C?(q(M,oe,C.x,0,-1),X(M,Q,oe,Y,a,C,-1,!1)):s||q(M,oe,e,k,-1);let K=sh(O).normalize();if(Po(K,oe,w),!L)for(let te=0;te<=i;te++){let J=te/i,se=O.clone().multiplyScalar(J).add(_);Po(se,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}if(T&&x?(X(M,Q,oe,ee,u,x,1,!1),X(M,Q,oe,Y,u,T,1,!0)):x?(X(M,Q,oe,ee,u,x,1,!1),q(M,oe,x.x,0,1)):s||q(M,oe,r,G,1),p&&!L){let te=sh(O).multiplyScalar(-1).normalize();Po(te,oe,w);for(let J=0;J<=i;J++){let se=J/i,de=O.clone().multiplyScalar(-se).add($);Po(de,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}}p&&!s&&M.push(M[0]),D.push(M)}for(let F=0;F<D.length-1;F++)for(let M=0;M<D[0].length-1;M++){if(s&&p&&M==i)continue;let Q=D[F][M],re=D[F+1][M],oe=D[F+1][M+1],K=D[F][M+1],te=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(te!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(j(-1,D[0],l),j(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new He.Float32BufferAttribute(h,3)),this.setAttribute("normal",new He.Float32BufferAttribute(y,3)),this.setAttribute("uv",new He.Float32BufferAttribute(g,2));function X(F,M,Q,re,oe,K,te,J){for(let se=0;se<d+1;se++){let de=se/d,ae=te<0?de:1-de;J&&(ae-=1),ae*=re;let me=new He.Vector2(Math.sin(ae),Math.cos(ae)*te),Ye=me.clone().multiplyScalar(oe).add(K);Po(Ye,Q,S),h.push(S.x,S.y,S.z),Po(me,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),F.push(v++)}}function q(F,M,Q,re,oe){let K=new He.Vector3,te=new He.Vector2,J=[Q,re];oe<0&&J.reverse();for(let se of J)te.set(se,b*oe),Po(te,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),F.push(v++)}function j(F,M,Q){let re=new He.Vector2(Math.sin(Q),Math.cos(Q)),oe=new He.Vector2(-Math.cos(Q),Math.sin(Q)),K=new He.Vector3,te=F<0?(de,ae,me)=>m.push(de,ae,me):(de,ae,me)=>m.push(de,me,ae),J=new He.Vector2((r+e+G+k)/4,0);Po(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let se=v++;for(let de of M){let ae=h.slice(de*3,de*3+3);h.push(...ae),y.push(oe.x,0,oe.y);let me=g.slice(de*2,de*2+2);g.push(...me),v++}for(let de=se+1;de<v-1;de++)te(se,de,de+1);te(se,v-1,se+1)}}};var ch=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new Ts(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new lh.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var jt=require("three"),dh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new jt.BoxGeometry(r,e,t,o,i,s):u=new od(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},rd=Math.PI/2,od=class extends jt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new jt.Float32BufferAttribute(d,3)),this.setAttribute("normal",new jt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new jt.Float32BufferAttribute(f,2));function y(b,w,S,P,_,x,C,T,N,O,A){let G=(x-2*l)/N,k=(C-2*l)/O,$=x/2-l,ee=C/2-l,Y=T/2,W=N+1,H=O+1,V=0,R=0,B=new jt.Vector3;for(let L=0;L<H;L++){let D=L*k-ee;for(let X=0;X<W;X++){let q=X*G-$;B[b]=q*P,B[w]=D*_,B[S]=Y,d.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=T>0?1:-1,p.push(B.x,B.y,B.z),f.push(X/N),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<N;D++){let X=m+D+W*L,q=m+D+W*(L+1),j=m+(D+1)+W*(L+1),F=m+(D+1)+W*L;a.push(X,q,F),a.push(q,j,F),R+=6}u.addGroup(h,R,A),h+=R,m+=V}function g(b,w,S,P,_,x,C,T,N,O,A){let G=(C-2*l)/O,k=C/2-l,$=T/2-l,ee=N/2,Y=O+1,W=0,H=0,V=new jt.Vector3,R=new jt.Vector3;for(let B=0;B<c+1;B++){let L=B/c*rd,D=Math.sin(L)*l,X=(1-Math.cos(L))*l,q=Math.sin(L),j=Math.cos(L);V[w]=($+D)*_,V[S]=(ee-X)*x,R[b]=0,R[w]=q*Math.sign(V[w]),R[S]=j*Math.sign(V[S]);for(let F=0;F<Y;F++){let M=F*G-k;V[b]=M*P,d.push(V.x,V.y,V.z),p.push(R.x,R.y,R.z),f.push(F/O),f.push(0),W+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+Y*B,X=m+L+Y*(B+1),q=m+(L+1)+Y*(B+1),j=m+(L+1)+Y*B;a.push(D,X,j),a.push(X,q,j),H+=6}u.addGroup(h,H,A),h+=H,m+=W}function v(b,w,S){let P=new jt.Vector3,_=new jt.Vector3(r/2,e/2,t/2);_.subScalar(l);let x=[],C=b*w*S>0?(N,O,A)=>a.push(N,O,A):(N,O,A)=>a.push(N,A,O);for(let N=0;N<=c;N++){let O=[],A=rd*(1-N/c),G=Math.cos(A),k=Math.sin(A),$=0;for(let ee=0;ee<=N;ee++){let Y=Math.cos($),W=Math.sin($);P.x=G*Y,P.y=k,P.z=G*W;let H=_.clone().addScaledVector(P,l);d.push(b*H.x,w*H.y,S*H.z),p.push(b*P.x,w*P.y,S*P.z),f.push(0,0),O.push(m++),$+=rd/N}x.push(O)}let T=x.length-1;for(let N=0;N<T;N++){let O=x[N],A=x[N+1],G=O.length-1;C(O[0],A[1],A[0]);for(let k=1;k<=G;k++)C(O[k-1],O[k],A[k]),C(O[k],A[k+1],A[k])}}}};var Qe=require("three"),To=class extends Qe.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Qe.Float32BufferAttribute(l,3)),this.setAttribute("normal",new Qe.Float32BufferAttribute(u,3)),this.setAttribute("uv",new Qe.Float32BufferAttribute(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new Qe.Vector3,h=m.clone(),y=new Qe.Triangle,g=i*o,v=o-g,b=s+1,w=new Qe.Vector3,S=(W,H)=>w.subVectors(W,H).normalize(),P=(W,H)=>Array(W).fill(void 0).map(H),_=P(r.length/3,(W,H)=>new Qe.Vector3().fromArray(r,H*3).setLength(o)),x=[],C=1e6;for(let W=0;W<_.length;W++){let H=_[W],V=[],R,B,L,D=1e10,X=-1;for(;(X=e.indexOf(W,X+1))!=-1;){let M=X-X%3;R=e[M+(X+1)%3],B=e[M+(X+2)%3],L=H.distanceToSquared(_[R]),D=Math.min(D,L),V.push([R,B,L])}D+=1e-6;let q=[],j=0,F=V.length;for(let M=0;M<F;M++){[R,B,L]=V[j];let Q=x[R]?.includes(W)==!0;L<=D&&q.push(R+ +Q*C),j=V.findIndex(re=>re[0]==B)}x.push(q)}let T=[];{let W=0,H=0,V,R,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,R=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[W,H]=[V+D+L+2,R+D+L+3],T.push(V,R,...B?[H,V]:[W,R],H,W),[V,R]=[W,H];T.push(V,R,V+s+2)}}let N=m.clone(),O=m.clone(),A=m.clone(),G=m.clone(),k=m.clone(),$=[],ee=P(_.length,()=>P(f,()=>m.clone()));for(let W=0;W<_.length;W++){m.copy(_[W]).normalize(),N.copy(m).multiplyScalar(v);let H=x[W];for(let q=0;q<H.length;q++){let j=H[q],F=H[(q+1)%f];y.setFromPointsAndIndices(_,W,j%C,F%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(N,ee[W][q])}let V=[],R=[],B=[],L=new Qe.Vector3;s==0&&[...ee[W]].reduce((q,j)=>q.add(j),L).multiplyScalar(1/f);for(let q=0;q<f;q++){let j=[],F=(q-1+f)%f,M=ee[W][F],Q=ee[W][q];m.copy(M).sub(N),h.copy(Q).sub(N);let re=N.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(N).setLength(v+K),R.push(K);let te=[O,M,Q];for(let J=0;J<2;J++){let se=te[J],de=te[J+1];G.subVectors(se,N),k.subVectors(de,N),A.crossVectors(G,k).normalize();for(let ae=0;ae<b;ae++){let me=[re,oe][J]*ae/b;m.copy(G).applyAxisAngle(A,me).add(N),V.push(m.clone()),J&&(S(m,N),j.push([ae==0?se:m.clone(),w.clone()]))}J&&(S(de,N),j.push([de,w.clone()]))}B.push(j)}$.push(B);let D=2*b,X=2;for(let q=0;q<f;q++){let j=D*q,F=D*((q+1)%f),M=[V[j]];for(let re=1;re<b;re++){G=V[j+re],k=V[F+re],M.push(G);for(let oe=1,K=re-X+1;oe<=K;oe++)m.lerpVectors(G,k,oe/(K+1)),m.sub(N).setLength(R[q]).add(N),M.push(m.clone());M.push(k)}for(let re=0;re<b;re++)M.push(V[re+b+j]);M.push(V[F+b]);let Q=T.map(re=>M[re]);l.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,N),[w.x,w.y,w.z])).flat())}}let Y=[];for(let W=0;W<x.length;W++)for(let H=0;H<f;H++){let V=x[W][H];if(V<C){let R=x[V].findIndex(D=>D%C==W),B=$[W][H],L=$[V][R];for(let D=0;D<b;D++){let X=B[D],q=L[b-D],j=B[D+1],F=L[b-(D+1)];[X,q,j,j,q,F].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}Y.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;Y.length;){let W,H,V,R;[W,H]=Y.splice(0,2);let B=[W];for(;W!=H;)B.push(H),V=Y.indexOf(H),R=V%2,H=Y.splice(V-R,2)[1-R];w.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=w.dot(B[0])<0;L&&w.negate();for(let D=1;D<=B.length-2;D++)[B[D+ +L],B[D+1-+L],B[0]].forEach(X=>{l.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Qe.Vector3;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,C=P(p)/Math.PI+.5;c.push(x,1-C)}let f=new Qe.Vector3,m=new Qe.Vector3,h=new Qe.Vector3,y=new Qe.Vector3,g=new Qe.Vector2,v=new Qe.Vector2,b=new Qe.Vector2,w=(_,x,C,T)=>{T<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=T/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),b.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=S(y);w(g,x+0,f,C),w(v,x+2,m,C),w(b,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],T=c[_+4],N=Math.max(x,C,T),O=Math.min(x,C,T);N>.9&&O<.1&&(x<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),T<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new To(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var uh=require("three"),ph=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Os(r*.5,i,s):new uh.DodecahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Os=class extends To{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],l=[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],c="DodecahedronGeometry";super(s,l,c,r,e,t),this.type=c}static fromJSON(r){return new Os(r.radius,r.corner,r.cornerSides)}};var Ae=require("three");var ge=require("three"),As=1e-12,ri=class{constructor(r){this.position=new ge.Vector2;this.startPosition=new ge.Vector2;this.uuid=ge.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new 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)}},xr=class extends ri{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,t){let o=new xr(e,new ge.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new xr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ge.Vector2,t=new ge.Vector2){let[o,i]=this.computeTangents();return o&&i&&(fh(o,e),fh(i,t)),[e,t]}computeTangent(e=new ge.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ge.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function fh(n,r=new ge.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var id=n=>n,ni=new ge.Vector2,wl=new ge.Vector2,O_=new ge.Vector2,A_=new ge.Vector2,N_=new ge.Vector2,C_=new ge.Vector2,hh=new ge.Vector3,yh=new ge.Vector3;function gh(n){let r=new ge.Vector2;r.addVectors(n.v0,ni.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ge.Vector2;return e.addVectors(n.v2,wl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ge.CubicBezierCurve(n.v0,r,e,n.v2)}function Ns(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function I_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function M_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function sd(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function xh(n,r,e){return mh(n,r)&&mh(r,e)&&nd(n.position,r.position,e.position)}function nd(n,r,e){return ni.copy(r).sub(n).cross(wl.copy(e).sub(n))===0}function vh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+u),o.set(l-c,s-u),[t,o]}function bh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Sh(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return sd(r,n,e)>Math.PI&&(a*=-1),Ns(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function ad(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function mh(n,r){return nd(n.position,n.controls[1].position,r.position)&&nd(n.position,r.controls[0].position,r.position)}function wh(n,r,e,t,o=.5){let i=ni.subVectors(r,n).multiplyScalar(o).add(n),s=wl.subVectors(e,r).multiplyScalar(o).add(r),l=O_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=A_.subVectors(s,i).multiplyScalar(o).add(i),a=N_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=C_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function _h(n,r,e=12,t=!0){let o=yh.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=id(r[c]),a=ni,d=Oo(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof ge.CubicBezierCurve||u instanceof ge.QuadraticBezierCurve||u instanceof ge.LineCurve){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&M_(i,o))continue;i===void 0&&(i=hh),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ph(n,r,e,t=12,o=!0){let i=yh.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=id(r[c]),d=ni,p=Oo(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof ge.CubicBezierCurve||a instanceof ge.QuadraticBezierCurve||a instanceof ge.LineCurve){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=hh:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function ld(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=Oo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=Oo(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Oo(n[0].roundedCurveCorner,r)*.5),t}function Oo(n,r=12){return n&&n instanceof ge.EllipseCurve?r*2:n&&(n instanceof ge.LineCurve||n instanceof ge.LineCurve3)?1:n&&n instanceof ge.SplineCurve?r*n.points.length:r}function Th(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=id(r[s]),c=Oo(l,e),u=ni;for(let a=0;a<=c;a++)if(l instanceof ge.CubicBezierCurve||l instanceof ge.QuadraticBezierCurve||l instanceof ge.LineCurve){if(l.getPoint(a/c,u),o!==void 0&&I_(o,u,As))continue;o===void 0&&(o=wl),o.copy(u),n.push(u.x,u.y),i++}}return Ns(n[0],n[n.length-2],As)&&Ns(n[1],n[n.length-1],As)&&(n.pop(),n.pop()),t&&i>1&&!(Ns(n[i-1],n[1],As)&&Ns(n[i-2],n[0],As))&&(n.push(n[0],n[1]),i++),n}var cd=new Ae.Vector2,E_=new Ae.Vector2,L_=new Ae.Vector2,B_=new Ae.Vector2,D_=new Ae.Vector2,G_=new Ae.Vector2,Oe=class extends Ae.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ae.Plane(new Ae.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ae.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Oe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>xr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Oe.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;else return a+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=cd.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ae.MathUtils.generateUUID()){let i;e instanceof Ae.Vector2?i=e:i=new Ae.Vector2(e,t);let s=new xr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return _h(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ld(this.points,e,!1),this.roundedCurveDivisions=ld(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Ph(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Th(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=Oo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(ad(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(cd.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){ad(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&xh(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,P=d.getPointAt(w,cd),_=p.getPointAt(S,E_);this._subSplitCurve(d,f,w,P,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=sd(P,s.position,_)/2,T=Math.tan(C)*P.distanceTo(s.position),[N,O]=vh(P,_,T,L_,B_),A=bh(N,O,s.position),[G,k]=Sh(A,P,_,T,D_,G_);x=new Ae.CubicBezierCurve(P.clone(),G.clone(),k.clone(),_.clone())}else x=new Ae.QuadraticBezierCurve(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Ae.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=wh(l.v0,l.v1,l.v2,l.v3,u);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return t}clone(){let e=new Oe(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],u=e.points[i+3],a=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new xr(Ae.MathUtils.generateUUID(),new Ae.Vector2(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Oe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ae.CubicBezierCurve&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof Ae.QuadraticBezierCurve&&(i[l]=gh(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof Ae.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Ae.LineCurve&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof Ae.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof Ae.LineCurve&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Ae.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Oe;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var ud=Math.PI*2;function dd({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function R_(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Oh(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function V_(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,b=(s-h)/o,w=(l-y)/i,S=(-s-h)/o,P=(-l-y)/i,_=Oh(1,0,b,w),x=Oh(b,w,S,P);return!u&&x>0&&(x-=ud),u&&x<0&&(x+=ud),{centerx:g,centery:v,ang1:_,ang2:x}}function Ah({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=V_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ud/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let b=0;b<v;b++)c.push(R_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=dd(b[0],o,i,h,y),{x:P,y:_}=dd(b[1],o,i,h,y),{x,y:C}=dd(b[2],o,i,h,y);return{x1:w,y1:S,x2:P,y2:_,x,y:C}})}var Xo=require("three");var Pe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Pe||(Pe={}));var $e;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})($e||($e={}));function pe(n,r){if(!n)throw r||"Assertion Failed!"}var ce=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),Cs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),_l=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),ii=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),Nh=function(){function n(){var r=new ii,e=new Cs,t=new _l(0),o=new _l(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new _l(0),t=new _l(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new ii,e=new ii,t=new Cs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new ii;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Cs;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new Cs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new ii;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new Cs;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,l=r.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&ce.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ce.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){pe(o.prev===i),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){pe(s.prev===l),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)pe(c.Sym.next===u.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Ch=function(){function n(){this.handle=null}return n}(),Ih=function(){function n(){this.key=null,this.node=0}return n}(),z_=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Ch,this.handles[t]=new Ih;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,pe(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Ch;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ih}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),pd=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Mh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),j_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Mh,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Mh;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),F_=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?ce.vertLeq(i.Org,s.Org)?ce.edgeSign(s.Dst,i.Org,s.Org)<=0:ce.edgeSign(i.Dst,s.Org,i.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(i.Dst,o,i.Org)>=0;var l=ce.edgeEval(i.Dst,o,i.Org),c=ce.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new pd;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do pe(ce.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,pe(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ce.vertL1dist(e,r),i=ce.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ce.vertLeq(o.Org,i.Org)){if(ce.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ce.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ce.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(pe(!ce.vertEq(o.Dst,i.Dst)),ce.vertLeq(o.Dst,i.Dst)){if(ce.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ce.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new ii,f,m;if(pe(!ce.vertEq(u,c)),pe(ce.edgeSign(c,r.event,s)<=0),pe(ce.edgeSign(u,r.event,l)>=0),pe(s!==r.event&&l!==r.event),pe(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ce.vertLeq(s,l)){if(ce.edgeSign(u,s,l)>0)return!1}else if(ce.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ce.intersect(c,s,u,l,p),pe(Math.min(s.t,c.t)<=p.t),pe(p.t<=Math.max(l.t,u.t)),pe(Math.min(u.s,c.s)<=p.s),pe(p.s<=Math.max(l.s,s.s)),ce.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ce.vertLeq(s,l)?s:l,ce.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ce.vertEq(p,s)||ce.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ce.vertEq(c,r.event)&&ce.edgeSign(c,r.event,p)>=0||!ce.vertEq(u,r.event)&&ce.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ce.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ce.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ce.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ce.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ce.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,ce.vertEq(o.Org,t)){pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ce.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}pe(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(pe(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ce.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new pd;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ce.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);pe(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new pd,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new j_(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++t===1)),pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ce.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new z_(i,ce.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ce.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),k_=function(){function n(){this.mesh=new Nh,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=Pe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],u=[0,0,0],a=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ce.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ce.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ce.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ce.edgeGoesLeft(o.Lnext)||ce.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ce.edgeGoesRight(t.Lprev)||ce.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===$e.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===$e.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Nh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=Pe.ODD),e===void 0&&(e=$e.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),F_.computeInterior(this,s);var l=this.mesh;return e===$e.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===$e.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function vr(n){var r=n.windingRule,e=r===void 0?Pe.ODD:r,t=n.elementType,o=t===void 0?$e.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new k_;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var vG=Pe.ODD,bG=Pe.NONZERO,SG=Pe.POSITIVE,wG=Pe.NEGATIVE,_G=Pe.ABS_GEQ_TWO,PG=$e.POLYGONS,TG=$e.CONNECTED_POLYGONS,OG=$e.BOUNDARY_CONTOURS;var Yo=require("three");var Pl=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Pl.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Pl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Is=Pl;Is.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ms={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},md={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},hd={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},fd=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),si=class extends Yo.BufferGeometry{constructor(e,t,o=0,i=12,s=3,l=Pe.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let T=x.length-1;T>=1;T-=2){let N=x[T-1],O=x[T-0];C.push(N,O)}return C}),a;try{a=vr({windingRule:l,elementType:$e.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=Ms}let d;try{d=vr({windingRule:Pe.ODD,elementType:$e.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=md}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,T=a.vertices[C+0],N=a.vertices[C+1];T<f&&(f=T),T>m&&(m=T),N<h&&(h=N),N>y&&(y=N)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Is(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,T=a.elements[C+0],N=a.elements[C+1],O=T+N,A={start:T,count:N,normals:[],continuous:[],concave:[]},G=T,k=O-1,$=T+1,ee=this._shape.roundedCurves.length;do{let V=G-T,R=a.vertices[k*2+0],B=a.vertices[k*2+1],L=a.vertices[G*2+0],D=a.vertices[G*2+1],X=a.vertices[$*2+0],q=a.vertices[$*2+1],j=L-R,F=D-B,M=Math.sqrt(j*j+F*F);j/=M,F/=M;let Q=L-X,re=D-q,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=j*re-F*Q>0;let K=a.vertexIndices[G];if(Array.isArray(K))A.continuous[V]=!1;else{let[te,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let se=J===1?te+1:te-1;se=(se+ee)%ee;let de=J===1?0:1,ae=this._shape.roundedCurves[te].getTangent(J),me=this._shape.roundedCurves[se].getTangent(de);A.continuous[V]=ae.dot(me)>.95}}x&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[k,G,$]=[G,$,$+1],$>=O&&($-=N)}while($!==T+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(T*2,O*2),vertexCount:N,vertexIndices:new Array(N).fill(!0).map((V,R)=>[R,R]),elements:[0,N],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(T*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let R=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(R))*this._bevelSize,L=[],D=[],X=[],q=[],j=0;for(let M=0;M<N;M++){let Q=M*2,re=(M-1+N)%N*2,oe=a.vertices[A.start*2+Q+0],K=a.vertices[A.start*2+Q+1],te=-A.normals[re+0]*B,J=-A.normals[re+1]*B,se=-A.normals[Q+0]*B,de=-A.normals[Q+1]*B;if(A.concave[M]||!A.concave[M]&&x){let ae=Math.atan2(J,te),me=Math.atan2(de,se);me>ae&&(me-=Math.PI*2);let Ye=me-ae;if(A.continuous[M]||x){let ve=ae+Ye/2,nt=Math.cos(ve)*B,Ie=Math.sin(ve)*B;L[2*j+0]=oe+nt*(x?-1:1),L[2*j+1]=K+Ie*(x?-1:1),q[j]=M,j++}else{let ve=Math.max(1,Math.floor(i/4*Math.abs(Ye)/Math.PI));for(let nt=0;nt<=ve;nt++){let Ie=ae+Ye*(nt/ve),Dt=Math.cos(Ie)*B,tr=Math.sin(Ie)*B;L[2*j+0]=oe+Dt,L[2*j+1]=K+tr,q[j]=M,j++}}}else L[2*j+0]=oe+te,L[2*j+1]=K+J,q[j]=M,D[M]=j,j++,L[2*j+0]=oe,L[2*j+1]=K,q[j]=M,j++,L[2*j+0]=oe+se,L[2*j+1]=K+de,q[j]=M,X[M]=j,j++}let F=vr({windingRule:Pe.POSITIVE,elementType:$e.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=q[re],K=q[(re+1)%q.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let M=0;M<F.vertexIndices.length;M++){let[Q,re]=F.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=N);for(let K=Q;K<oe;K++){let te=K%N,J=(K+1)%N;if(!A.continuous[te]||!A.continuous[J]){F.vertexIndices[M]=[Q,te],F.vertexIndices.splice(M+1,0,[J,re]),F.vertices.splice((M+1)*2,0,F.vertices[M*2],F.vertices[M*2+1]);break}}}Y.push({bevelI:V,angle:R,size:B,boundary:F,reverseMap:q,insetPoints:L})}let W=(V,R,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[R]);)R=(R+1)%D,L++;return L},H=g.length;for(let V=1;V<Y.length;V++){let R=Y[V-1],B=Y[V],L=R.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let X=A.concave.length,q=0,j=fd(q,N);for(;!R.boundary.vertexIndices.filter(j).length||!B.boundary.vertexIndices.filter(j).length;)q++,j=fd(q,N);let F=R.boundary.vertexIndices.findIndex(j),M=B.boundary.vertexIndices.findIndex(j);do F=(F+1)%L;while(j(R.boundary.vertexIndices[F]));do M=(M+1)%D;while(j(B.boundary.vertexIndices[M]));q=(q+1)%N;let Q=q,re=this._buildBevelVert(A,R,(F-1+L)%L),oe=this._buildBevelVert(A,B,(M-1+D)%D),K=re,te=oe,J,se,de=!1;do{j=fd(q,N);let ae=W(R,F,j),me=W(B,M,j),Ye=de;if(de=!1,ae&&!me){for(let ve=0;ve<ae;ve++)J=this._buildBevelVert(A,R,(F+ve)%L,ve/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J;de=!0}else if(!ae&&me)for(let ve=0;ve<me;ve++)se=this._buildBevelVert(A,B,(M+ve)%D,ve/(me-1)),g.push(te.topN,K.topP,se.topP),g.push(K.bottomP,te.bottomN,se.bottomP),te=se;else if(ae&&me)if(J=this._buildBevelVert(A,R,F,0),se=this._buildBevelVert(A,B,M,0),Ye?(g.push(K.topN,se.topP,te.topN),g.push(K.topN,J.topP,se.topP),g.push(se.bottomP,K.bottomN,te.bottomN),g.push(se.bottomP,J.bottomP,K.bottomN)):(g.push(te.topN,K.topN,J.topP),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP)),K=J,te=se,ae===me)for(let ve=1;ve<ae;ve++)J=this._buildBevelVert(A,R,(F+ve)%L,ve/(ae-1)),se=this._buildBevelVert(A,B,(M+ve)%D,ve/(me-1)),g.push(K.topN,J.topP,te.topN),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP),K=J,te=se;else if(ae>me){let ve=ae/me,nt=0;for(let Ie=1;Ie<ae;Ie++)J=this._buildBevelVert(A,R,(F+Ie)%L,Ie/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J,Ie>(nt+1)*ve&&(nt++,se=this._buildBevelVert(A,B,(M+nt)%D,nt/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se)}else{let ve=me/ae,nt=0;for(let Ie=1;Ie<me;Ie++)se=this._buildBevelVert(A,B,(M+Ie)%D,Ie/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se,Ie>(nt+1)*ve&&(nt++,J=this._buildBevelVert(A,R,(F+nt)%L,nt/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J)}F=(F+ae)%L,M=(M+me)%D,q=(q+1)%X}while(q!==Q)}if(this._depth>this._bevel*2&&this._buildWall(Y,A,g),x){let V=[];for(let R=g.length-1;R>=H+2;R-=3){let B=g[R-2],L=g[R-1],D=g[R-0];V.push(D,L,B)}g.splice(H,g.length-H,...V)}if(x){let V=[];for(let R=Y[Y.length-1].boundary.vertices.length-1;R>=1;R-=2){let B=Y[Y.length-1].boundary.vertices[R-1],L=Y[Y.length-1].boundary.vertices[R-0];V.push(B,L)}v.push(V)}if(!x){let V=Y[Y.length-1],R;try{R=vr({windingRule:Y.length>1?Pe.POSITIVE:Pe.ODD,elementType:$e.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{R=hd}if(!R)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<R.elementCount*3;B+=3){let L=this._buildSurfaceVert(R,R.elements[B+0]),D=this._buildSurfaceVert(R,R.elements[B+1]),X=this._buildSurfaceVert(R,R.elements[B+2]);g.push(L.top,D.top,X.top),g.push(X.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Yo.BufferAttribute(Uint32Array.from(g),1),w=new Yo.BufferAttribute(this._buffer.positions,3),S=new Yo.BufferAttribute(this._buffer.normals,3),P=new Yo.BufferAttribute(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,P.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",P),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,P=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],T=e.normals[g+1];if(p){let k=C-_,$=T-x;_=_+k*(1-i),x=x+$*(1-i);let ee=Math.sqrt(_*_+x*x);_/=ee,x/=ee}let N=this._buffer.get(d?2:4),O=N*3,A=N*2,G={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1};return this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=x*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=x*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S,d||(N+=2,O+=6,A+=4,G.topP=N+0,G.bottomP=N+1,this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=C*f,this._buffer.normals[O+1]=T*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=C*f,this._buffer.normals[O+4]=T*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S),this.vertexCache[s]=G,G}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=to(this.userData),e}};var ai=class extends Xo.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=$e.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:$e.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}if(!c&&!u)try{l=vr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{l=Ms}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Xo.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new Xo.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new Xo.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new Xo.BufferAttribute(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let P=w*2,_=l.vertices[P+0],x=l.vertices[P+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let P=w*2,_=l.vertices[P+0],x=l.vertices[P+1],C=(_-m)/v,T=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,T)}for(let w=0,S=f;w<S;w++){let P=w*3,_=l.elements[P+0],x=l.elements[P+1],C=l.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,x),this._indexAttribute.setX(P+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new ai(this._shape,this._curveSegments);return e.userData=to(this.userData),e}};var li=class extends si{constructor(e,t,o=0,i=12,s=3,l=Pe.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new li(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=to(this.userData),e}};var Ft=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Pe.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Oe?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Oe(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Oe(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new ai(n.shape,o,{windingRule:s}):l=new li(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};var di=require("three"),Lh=Math.PI*2,ui=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=U_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Ft.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function U_(n,r,e,t,o,i){if(t>=Lh)return o>30||o%4===0?(q_(n,r,e,i),Math.round(o/4)):Eh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=Ah({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?H_(n,s.x,s.y,u,o,r,e,i):Eh(n,t,o,r,e,i)}function H_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(ci(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=ci(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return l>0?Bh(n,i,s,l):n.addPoint(ci(0,0)),c}function Eh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(ci(u,a))}return r<Lh?i>0?Bh(n,t,o,i):n.addPoint(ci(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Dh(n,t,o,i)),1}function q_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Tl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Tl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Tl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Tl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Dh(n,r,e,t)}function ci(n,r){return new xr(di.MathUtils.generateUUID(),new di.Vector2(n,r))}function Tl(n,r,e,t,o,i){let s=ci(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Bh(n,r,e,t){Gh(n,r,e,t).forEach(i=>n.addPoint(i))}function Dh(n,r,e,t){let o=Gh(n,r,e,t),i=new Oe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Gh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new di.Vector2(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=di.MathUtils.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(u)}),l}var br=require("three"),Rh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new Es(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},yd=new br.Uint32BufferAttribute([0,0,0],1),Es=class extends br.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new br.Vector3,h=new br.Vector3,y=m(),g=m(),v=m(),b,w,S,P,_,x,C,T,N=m(),O=m(),A=m(),G=m(),k=m(),$=m(),ee=m(),Y=m(),W=t-2*c+.001,H=W/s,V=Math.ceil(l*s),R=V+1,B=W/V,L=-W/2,D=a+1,X=2*Math.PI/a,q=Math.PI/2/p,j=.01,F=Math.min((1-d/100)*c,c-j),M=c-F,Q=0,re=2,oe=p*re+re,K=D*oe/re,te=K+D*R,J=D*(R+oe),[se,de,ae]=[3,3,2].map(tt=>Array(J*tt).fill(0)),me=[],Ye=i-c;function ve(tt,$t){let Nr=Math.PI/2;x=$t*B,T=2*Math.PI*(x%H)/H+Nr,x+=L,C=Math.sin(T)*Ye,_=Math.cos(T)*Ye,r?tt.set(_,C,x):tt.set(_,x,C)}ve(h,-1e-10),ve(y,0),N.copy(h),ve(h,1);let nt=h.distanceTo(y),Ie=f?0:M+F,Dt=nt*V+2*Ie,tr=F,un=Dt-Ie;for(let tt=0;tt<=V;tt++){ve(g,tt),Y.subVectors(g,N).normalize(),N.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),ee.crossVectors(Y,$).normalize();let $t=tt===0,Nr=tt===V,Kg=$t?3*Math.PI/2:q,Zg=$t?tr:un,Qg=$t?D:te,Jg=$t?0:J-D,e0=Y.clone().multiplyScalar($t?-M:M).add(g),t0=Y.clone().multiplyScalar($t?-1:1).normalize();for(let Xr=0;Xr<D;Xr++){let gu=Xr*X;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(gu)),y.copy(ee).multiplyScalar(c*Math.sin(gu))),A.copy(O).normalize(),$t||Nr){f||(Q=Jg+Xr,[0,1,2].forEach(Gt=>{se[Q*3+Gt]=e0.getComponent(Gt),de[Q*3+Gt]=t0.getComponent(Gt)}),ae[Q*2]=+Nr,ae[Q*2+1]=Xr/a),y.copy(A).multiplyScalar(F),v.addVectors(g,y);for(let Gt=0;Gt<p;Gt++){let xc=Gt*q+Kg;G.addVectors(h.copy(Y).multiplyScalar(M*Math.sin(xc)),y.copy(A).multiplyScalar(M*Math.cos(xc))),k.copy(G).normalize(),y.addVectors(v,G),G.normalize(),Q=Qg+Gt*D+Xr,[0,1,2].forEach(fa=>{se[Q*3+fa]=y.getComponent(fa),de[Q*3+fa]=k.getComponent(fa)});let r0=+$t+Math.sin(xc);ae[Q*2]=(Zg+M*r0)/Dt,ae[Q*2+1]=Xr/a}}y.addVectors(g,O),Q=K+tt*D+Xr,[0,1,2].forEach(Gt=>{se[Q*3+Gt]=y.getComponent(Gt),de[Q*3+Gt]=A.getComponent(Gt)}),ae[Q*2]=(Ie+tt*nt)/Dt,ae[Q*2+1]=Xr/a}}let Wt=R+2*p+re,da=1,[ua,pa]=[+f,Wt-1];for(let tt=ua;tt<=pa-1;tt++){let $t=f&&tt===pa-1;for(let Nr=0;Nr<D-1;Nr++)b=tt*D+Nr,w=b+1,S=($t?Nr:b)+D,P=($t?Nr+1:w)+D,tt===0?me.push(w,P,S):tt===Wt-2?me.push(b,w,S):me.push(b,w,S,w,P,S)}this.setIndex(me),this.setAttribute("position",new br.Float32BufferAttribute(se,3)),this.setAttribute("normal",new br.Float32BufferAttribute(de,3)),this.setAttribute("uv",new br.Float32BufferAttribute(ae,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,l,c,u=6*(e-1)*r.radialSegments,a=e,d=a===e;for(let p=0;p<r.radialSegments;p++)i=a*t+p,s=i+1,l=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=l,o[u++]=s,o[u++]=c,o[u++]=l;return o.length=u,yd.array=o,yd.count=o.length,yd}};var Vh=require("three");var zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Ls(r*.5,i,s):new Vh.IcosahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Ls=class extends To{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],l="IcosahedronGeometry";super(i,s,l,r,e,t),this.type=l}static fromJSON(r){return new Ls(r.radius,r.corner,r.cornerSides)}};var Ol=require("three"),jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Ol.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Ol.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Vr=require("three");var so=require("three");var ie=require("three"),Rr=new ie.Matrix4,gd=new ie.Object3D,Al=new ie.Vector3,Ao=class extends ie.EventDispatcher{constructor(){super(),this.uuid=ie.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new ie.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Rr.makeRotationX(r),this.applyMatrix4(Rr),this}rotateY(r){return Rr.makeRotationY(r),this.applyMatrix4(Rr),this}rotateZ(r){return Rr.makeRotationZ(r),this.applyMatrix4(Rr),this}translate(r,e,t){return Rr.makeTranslation(r,e,t),this.applyMatrix4(Rr),this}scale(r,e,t){return Rr.makeScale(r,e,t),this.applyMatrix4(Rr),this}lookAt(r){return gd.lookAt(r),gd.updateMatrix(),this.applyMatrix4(gd.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new ie.Vector3().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new ie.Color().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ie.Vector3().fromBufferAttribute(s,p),new ie.Vector3().fromBufferAttribute(s,f),new ie.Vector3().fromBufferAttribute(s,m)],v=new pi(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new ie.Vector2().fromBufferAttribute(c,p),new ie.Vector2().fromBufferAttribute(c,f),new ie.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new ie.Vector2().fromBufferAttribute(u,p),new ie.Vector2().fromBufferAttribute(u,f),new ie.Vector2().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Al).negate(),this.translate(Al.x,Al.y,Al.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new ie.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new ie.Vector3,e=new ie.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new ie.Vector3;if(r){let t=new ie.Vector3,o=new ie.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new Ao;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let u=new ie.Vector3,a={a:new ie.Vector3,b:new ie.Vector3,c:new ie.Vector3};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.c.copy(l.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ie.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ie.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new ie.Matrix3().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new pi(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=v.length;w<S;w++)y=v[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++)v.push(g[b].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ie.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,b),_=a(_,5,w),_=a(_,6,S),_=a(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(b&&t.push(d(h.normal)),w){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),P){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new Ao().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new xd().fromGeometry(this),e=new ie.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Nl.call(new ie.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Nl.call(new ie.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Fh.call(new ie.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",kh.call(new ie.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",kh.call(new ie.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new ie.Float32BufferAttribute(u.data.length*3,3);a.name=u.name,i.push(Nl.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ie.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Uh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ie.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Uh.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new ie.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new ie.Float32BufferAttribute(t.vertices.length*3,3),i=new ie.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Nl.call(o,t.vertices)),e.setAttribute("color",Fh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ie.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",W_.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Ao.prototype.isGeometry=!0;var xd=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let b=v.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=v.normal;this.normals.push(S,S,S)}let w=v.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ie.Vector2,new ie.Vector2,new ie.Vector2))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ie.Vector2,new ie.Vector2,new ie.Vector2))}for(let S=0;S<c;S++){let P=l[S].vertices;u[S].data.push(P[v.a],P[v.b],P[v.c])}for(let S=0;S<d;S++){let P=a[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},pi=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ie.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ie.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function W_(n){return this.array.set(n),this}function Fh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new ie.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function kh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ie.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Nl(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new ie.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Uh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new ie.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var $_=["a","b","c"];function Y_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function vd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function bd(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function X_(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],bd(s.a,s.b,n,t,s,e),bd(s.b,s.c,n,t,s,e),bd(s.c,s.a,n,t,s,e)}function Cl(n,r,e,t,o){n.push(new pi(r,e,t,void 0,void 0,o))}function fi(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Il(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ml=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof so.BufferGeometry?r=new Ao().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new so.Vector3,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;X_(c,u,p,f);let m=[],h,y,g,v,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new so.Vector3,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[Y_(v,$_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,x,C,T,N,O,A=[];for(o=0,i=c.length;o<i;o++){for(N=c[o],T=p[o].edges,t=T.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),x=P,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=N.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=T[s],h=C.a!==N?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let G=A.concat(m),k=A.length,$,ee,Y,W=[],H=[],V,R,B,L,D=new so.Vector2,X=new so.Vector2,q=new so.Vector2;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(vd(v.a,v.b,f).newEdge)+k,ee=Number(vd(v.b,v.c,f).newEdge)+k,Y=Number(vd(v.c,v.a,f).newEdge)+k,Cl(W,$,ee,Y,v.materialIndex),Cl(W,v.a,$,Y,v.materialIndex),Cl(W,v.b,ee,$,v.materialIndex),Cl(W,v.c,Y,ee,v.materialIndex),d&&(V=a[o],R=V[0],B=V[1],L=V[2],D.set(fi(R.x,B.x),fi(R.y,B.y)),X.set(fi(B.x,L.x),fi(B.y,L.y)),q.set(fi(R.x,L.x),fi(R.y,L.y)),Il(H,D,X,q),Il(H,R,D,q),Il(H,B,X,D),Il(H,L,q,X));r.vertices=G,r.faces=W,d&&(r.faceVertexUvs[0]=H)}};var at=new Vr.Vector3,Hh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Vr.BufferGeometry().copy(new Vr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(at),t={width:at.x,height:at.y,depth:at.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Vr.BufferGeometry().copy(new Vr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(at)):at.set(s.width,s.height,s.depth),(r!==at.x||e!==at.y||t!==at.z)&&i.scale(at.x===0?1:r/at.x,at.y===0?1:e/at.y,at.z===0?1:t/at.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Ml(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Vr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(at);let s=100/at.x;Object.assign(i.parameters,{width:100,height:at.y*s,depth:at.z*s}),r(this.build(i))})}};var El=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Ft.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var _e=require("three"),qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new wd(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Bs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Sd(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function K_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var wd=class extends _e.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,b=new _e.Vector3(0,-f,0),w=new _e.Vector3(0,f,0),S=new _e.Vector2(r,-f),P=new _e.Vector2(h,-f),_=new _e.Vector2(0,w.y).sub(P),x=new _e.Vector2(0,w.y).sub(S),C=new _e.Vector2(_.y,-_.x).normalize(),T=new _e.Vector2(x.y,-x.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new _e.Vector3(C.x,C.y,0),V=new _e.Vector3(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let G=s/Math.tan((Math.PI-_.angle())/2),k=s/Math.tan((Math.PI-A)/2),$=new _e.Vector3;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let H=p++,V=[],R=S.clone(),B=G/Math.cos(Math.PI/t);R.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,X=new _e.Vector2(Math.sin(D),Math.cos(D));Bs(R,X,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let ee=[];{let H=new _e.Vector3,V=new _e.Vector3,R=new _e.Vector3,B=new _e.Vector3,L=new _e.Vector3,D=new _e.Vector3;for(let X=0;X<t;X++){let q=X/t*Math.PI*2+m,j=(X+.5)/t*Math.PI*2+m,F=(X+1)/t*Math.PI*2+m,M=new _e.Vector2(Math.sin(q),Math.cos(q)),Q=new _e.Vector2(Math.sin(j),Math.cos(j)),re=new _e.Vector2(Math.sin(F),Math.cos(F));Bs(S,M,V),Bs(S,re,R),Bs(C,Q,H),Sd(w,V,R,k,k,B),u.push(B.x,B.y,B.z),Sd(V,w,R,k,G,L),u.push(L.x,L.y,L.z),Sd(R,V,w,G,k,D),u.push(D.x,D.y,D.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,K=p++,te=p++;if(c.push(oe,K,te),s>0){{let de=V.clone().add(R).multiplyScalar(.5),ae=w.clone().sub(de).normalize(),Ye=b.clone().sub(de).normalize().add(ae).normalize().multiplyScalar(-1),ve=D.clone().sub(L);Y(de,ve,Ye,_.angle())}let J,se;{let de=new _e.Vector3;Bs(T,re,de);let ae=D.clone().add(B).multiplyScalar(.5);ae=K_(ae,R,w);let me=D.clone().sub(B);[J,se]=Y(ae,me,de,A,B.y)}{let de=J,ae=de.clone().setY(0).normalize(),me=new _e.Vector3(0,-1,0),Ye=ae.clone().cross(me);W(de,ae,me,Ye)}ee.concat(se);{let de=_.angle(),ae=Math.PI-de,me=w.clone();me.y-=s/Math.sin(de-Math.PI/2);let Ye=new _e.Vector3,ve=[];for(let Ie=0;Ie<l;Ie++){let Dt=[],tr=Math.PI/2-ae*Ie/l,un=Math.cos(tr),Wt=Math.sin(tr),da=j;for(let ua=0;ua<=Ie;ua++){let pa=Math.cos(da),tt=Math.sin(da);H.x=un*tt,H.y=Wt,H.z=un*pa,Ye.copy(me).addScaledVector(H,s),u.push(Ye.x,Ye.y,Ye.z),a.push(H.x,H.y,H.z),d.push(0,0),Dt.push(p++),da+=Math.PI*2/Ie/t}ve.push(Dt)}se.reverse(),ve.push(se);let nt=ve.length-1;for(let Ie=0;Ie<nt;Ie++){let Dt=ve[Ie],tr=ve[Ie+1],un=Dt.length-1;c.push(tr[1],Dt[0],tr[0]);for(let Wt=1;Wt<=un;Wt++)c.push(Dt[Wt],Dt[Wt-1],tr[Wt]),c.push(tr[Wt+1],Dt[Wt],tr[Wt])}}}}}this.setIndex(c),this.setAttribute("position",new _e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new _e.Float32BufferAttribute(a,3)),this.setAttribute("uv",new _e.Float32BufferAttribute(d,2));function Y(H,V,R,B,L){let D=-B/2,X=(Math.PI-B)/2,q=V.clone().normalize().cross(R);H.addScaledVector(R,-s/Math.sin(X));let j=new _e.Vector3,F=new _e.Vector3,M=1,Q=p,re=[];for(let oe=0;oe<=l;oe++){let K=D+oe/l*B;F.set(0,0,0),F.addScaledVector(q,Math.sin(K)),F.addScaledVector(R,Math.cos(K));for(let te=0;te<=M;te++){let J=te/M-.5;if(j.copy(H),j.addScaledVector(V,J),j.addScaledVector(F,s),L!=null){let se=Math.max(0,j.y-L);j.addScaledVector(V,-se/V.y)}u.push(j.x,j.y,j.z),a.push(F.x,F.y,F.z),d.push(0,0),te===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let K=0;K<M;K++){let te=Q+K+(M+1)*oe,J=te+(M+1),se=J+1,de=te+1;c.push(te,J,de),c.push(J,se,de)}return[H.clone().addScaledVector(V,.5),re]}function W(H,V,R,B){let L=Math.PI/2,D=x.angle()-L,X=[],q=new _e.Vector3,j=new _e.Vector3;for(let M=0;M<=l;M++){let Q=[],re=M/l;for(let oe=0;oe<=M;oe++){let te=((M?oe/M:0)-.5)*v,J=Math.cos(te),se=Math.sin(te),de=Math.atan(Math.tan(D)*J),ae=(L+de)*re,me=Math.cos(ae),Ye=Math.sin(ae);q.set(0,0,0),q.addScaledVector(V,Ye*J),q.addScaledVector(R,me),q.addScaledVector(B,Ye*se),j.copy(H).addScaledVector(q,s),u.push(j.x,j.y,j.z),a.push(q.x,q.y,q.z),d.push(0,0),Q.push(p++)}X.push(Q)}let F=X.length-1;for(let M=0;M<F;M++){let Q=X[M],re=X[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};var Ll=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,P){return S>e&&P>t?Math.min(w*e/S,w*t/P):S>e?w*e/S:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=d.x,y=d.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Ft.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};var Wh=require("three"),$h=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new Wh.SphereGeometry(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};var Yh=require("three"),Xh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new Yh.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var No=require("three"),Kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new _d(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},_d=class extends No.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,F=0,M=0)=>new No.Vector3(j,F,M),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,P,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(j,F=!1)=>Math.sin(j-Math.PI/(1+ +F)),C=(j,F=!1)=>Math.cos(j-Math.PI/(1+ +F));_.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-v,N=S.z-a;o<=p?(_.z=Math.min(T,N),_.z==N&&(_.y-=(T-N)/Math.tan(p-o))):P.z=Math.min(P.z-T-v,S.z-a),m.subVectors(S,P),h.subVectors(_,P);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),G=O/Math.cos(o/2),k=m.clone().normalize().add(h.normalize()).setLength(G).add(P);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let F=p+o+j*$;m.set(0,Math.sin(F)*A,Math.cos(F)*A),m.add(k),h.set(0,x(F),C(F)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let ee=Math.sin($/2)*A*2,Y=d.length-1,W=d[0][0].distanceTo(d[1][0]),H=d[Y-1][0].distanceTo(d[Y][0]),V=W+ee*s+H;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(W+j*ee)/V);d[Y].push(0);let[R,B,L]=d[0],D,X,q;for(let j=1;j<d.length;j++)[D,X,q]=d[j],l.push(b,R.y,R.z,b,D.y,D.z,w,R.y,R.z,w,R.y,R.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,X.y,X.z,0,B.y,B.z,0,B.y,B.z,0,X.y,X.z,0,X.y,X.z),u.push(0,L,0,q,1,L,1,L,0,q,1,q),[R,B,L]=[D,X,q];this.setAttribute("position",new No.Float32BufferAttribute(l,3)),this.setAttribute("normal",new No.Float32BufferAttribute(c,3)),this.setAttribute("uv",new No.Float32BufferAttribute(u,2))}};var Bl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,P=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(P,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,P=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,P)),y+=h,S=f+Math.cos(y)*g,P=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,P)),y+=h}a.isClosed=!0;for(let w=0,S=a.points.length;w<S;w++)a.points[w].roundness=i;a.roundness=i,a.update();let b=Ft.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};var Zh=require("three"),Qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new Zh.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=Z_(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function Z_(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Es(!0,n,r,e,t,o,i,s,l,c,u,a)}var ey=require("three"),ty=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new ey.TorusKnotGeometry(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var ry=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Ft.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var be=require("three");function oy(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function Q_(n,r,e){let t=[new be.Vector3,new be.Vector3,new be.Vector3],o=[new be.Vector3,new be.Vector3,new be.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let l=o[s],c=be.MathUtils.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new be.Matrix4().makeBasis(t[0],t[1],t[2])}var ny=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??ui.create({parameters:qc}).userData.shape;return{path:n.path??Wn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ul,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new Pd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new be.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Pd=class extends be.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!oy(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,l=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-l+1),s+2),a=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,G)=>{a[O]=a[O].clone().lerp(a[A],G),d[O]=Q_(d[O],d[A],G)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:v,vertices:b}=this._computeShapePoints(5),w=0,S=0;v.sort((O,A)=>O.start-A.start),v.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,G,k)=>A+(k===0||!G?2:1),0),S+=O.verticesCount,w=S});let P=S*u,_,x=0;if(this._isOpenEnded()){try{_=vr({windingRule:Pe.ODD,elementType:$e.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=hd}x=_.vertexCount}let C=P+2*x,T={positions:new Float32Array(C*3),normals:new Float32Array(C*3),uvs:new Float32Array(C*2)},N=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,T,N,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,P,N,T,d[0],a[0],!1),this._closeEnd(_,P+x,N,T,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new be.BufferAttribute(T.positions,3)),this.setAttribute("normal",new be.BufferAttribute(T.normals,3)),this.setAttribute("uv",new be.BufferAttribute(T.uvs,2)),this.setIndex(N)}_extractPathPoints(){let t=bl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new be.Vector3,l=new be.Vector3,c=new be.Vector3,u=new be.Vector3,a=new be.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(v).normalize(),S=b.clone().sub(g).normalize(),P=w.clone().add(S).normalize();c.copy(P),y===0&&(P.equals(a)||P.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(P).normalize(),x=P.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(P));let C=new be.Matrix4().makeBasis(_,x,P);t.push(C)}let d=i?l:c,p=i?s:new be.Vector3(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new be.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:l,startScale:c,endScale:u}=this.inputs.parameters.extrusion,a=new be.Matrix4,d=new be.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));a.makeRotationZ(be.MathUtils.lerp(s,s+l,m));let h=be.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(a).multiply(d)}),e}_computeShapePoints(e=12,t=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let b=y[v-1],w=y[v-0];g.push(b,w)}return g}),l;try{l=vr({windingRule:t,elementType:$e.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=Ms}let c;try{c=vr({windingRule:Pe.ODD,elementType:$e.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=md}if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],b=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],b=l.elements[g+1],w=v+b,S={start:v,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let P=v,_=w-1,x=v+1,C=o.roundedCurves.length;do{let T=P-v,N=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[P*2+0],G=l.vertices[P*2+1],k=l.vertices[x*2+0],$=l.vertices[x*2+1],ee=A-N,Y=G-O,W=Math.sqrt(ee*ee+Y*Y);ee/=W,Y/=W;let H=A-k,V=G-$,R=Math.sqrt(H*H+V*V);H/=R,V/=R,S.normals[T*2+0]=-V,S.normals[T*2+1]=H;let B=l.vertexIndices[P];if(Array.isArray(B))S.continuous[T]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[T]=!0;else{let X=D===1?L+1:L-1;X=(X+C)%C;let q=D===1?0:1,j=o.roundedCurves[L].getTangent(D),F=o.roundedCurves[X].getTangent(q);S.continuous[T]=j.dot(F)>.95}}y&&(S.normals[T*2+0]*=-1,S.normals[T*2+1]*=-1),[_,P,x]=[P,x,x+1],x>=w&&(x-=b)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new be.Vector3,a=new be.Vector3,d=new be.Vector3,p=new be.Vector3,f=new be.Vector2;o.forEach((h,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;a.set(t[S+0],t[S+1],0),p.copy(u).sub(a),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,v,d,p,f),v++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;a.set(t[S+0],t[S+1],0),p.copy(a).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,d,p,f),v++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),v=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&v++;let w=b===e.count-1?0:v+1,S=y+v,P=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,P,S,x,_):l.push(S,P,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new be.Vector3(0,0,c?-1:1).applyMatrix4(s),d=new be.Vector3,p=new be.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};var Ko=require("three"),iy=require("three/examples/jsm/utils/BufferGeometryUtils.js");function sy(){let n=new Ko.BufferGeometry;return n.setAttribute("position",new Ko.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Ko.BufferAttribute(new Uint16Array([]),1)),n}var J_=sy().attributes,eP=12,tP=1,mi=class extends Ko.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,J_),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=rP(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Oe().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Ft.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&s>0?tP:eP}})),w=b.length?(0,iy.mergeBufferGeometries)(b):sy();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,P])=>{this.setAttribute(S,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Kr(new Ko.BufferGeometry,mi.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function rP(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ "use strict";var B0=Object.create;var Ma=Object.defineProperty;var R0=Object.getOwnPropertyDescriptor;var G0=Object.getOwnPropertyNames;var V0=Object.getPrototypeOf,z0=Object.prototype.hasOwnProperty;var Ea=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),ku=(n,r)=>{for(var e in r)Ma(n,e,{get:r[e],enumerable:!0})},Uu=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of G0(r))!z0.call(n,o)&&o!==e&&Ma(n,o,{get:()=>r[o],enumerable:!(t=R0(r,o))||t.enumerable});return n};var Xo=(n,r,e)=>(e=n!=null?B0(V0(n)):{},Uu(r||!n||!n.__esModule?Ma(e,"default",{value:n,enumerable:!0}):e,n)),j0=n=>Uu(Ma({},"__esModule",{value:!0}),n);var bh=Ea((Sd,vh)=>{(function(n,r){typeof Sd=="object"?vh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Sd,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var a=r();t=a(" "),o=a(" "),i=a(" ");for(var c=0;c<e.length;c++)t-=a(e[c]),t<0&&(t+=1),o-=a(e[c]),o<0&&(o+=1),i-=a(e[c]),i<0&&(i+=1);a=null;var u=function(){var l=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=l-(s=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,s=+l[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Oh=Ea((Fl,Th)=>{(function(n,r){typeof Fl=="object"&&typeof Th<"u"?r(Fl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Fl,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,a,c,u,l,d,p,f,m,h,y,g,x=r[0].length,b=r.length;if(b<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],P=[],_=e==="f"?b:x,v=h=p=0;v<b;v++)S[v]=new Array(_).fill(0);for(v=0;v<x;v++)P[v]=new Array(x).fill(0);var N,T=new Array(x).fill(0);for(v=0;v<b;v++)for(s=0;s<x;s++)S[v][s]=r[v][s];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,s=v;s<b;s++)m+=Math.pow(S[s][v],2);if(m<i)p=0;else for(f=(d=S[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v]=d-p,s=c;s<x;s++){for(m=0,a=v;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(T[v]=p,m=0,s=c;s<x;s++)m+=Math.pow(S[v][s],2);if(m<i)p=0;else{for(f=(d=S[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v+1]=d-p,s=c;s<x;s++)w[s]=S[v][s]/f;for(s=c;s<b;s++){for(m=0,a=c;a<x;a++)m+=S[s][a]*S[v][a];for(a=c;a<x;a++)S[s][a]=S[s][a]+m*w[a]}}h<(y=Math.abs(T[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=S[v][v+1]*p,s=c;s<x;s++)P[s][v]=S[v][s]/f;for(s=c;s<x;s++){for(m=0,a=c;a<x;a++)m+=S[v][a]*P[a][s];for(a=c;a<x;a++)P[a][s]=P[a][s]+m*P[a][v]}}for(s=c;s<x;s++)P[v][s]=0,P[s][v]=0;P[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<b;v++){for(s=x;s<b;s++)S[v][s]=0;S[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=T[v],s=c;s<_;s++)S[v][s]=0;if(p!==0){for(f=S[v][v]*p,s=c;s<_;s++){for(m=0,a=c;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(s=v;s<b;s++)S[s][v]=S[s][v]/p}else for(s=v;s<b;s++)S[s][v]=0;S[v][v]=S[v][v]+1}}for(o*=h,a=x-1;0<=a;a--)for(var C=0;C<50;C++){for(N=!1,c=a;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(T[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<a+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=T[v],T[v]=Math.sqrt(d*d+p*p),l=p/(f=T[v]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][v],S[s][u]=y*l+g*m,S[s][v]=-y*m+g*l}if(g=T[a],c===a){if(g<0&&(T[a]=-g,t))for(s=0;s<x;s++)P[s][a]=-P[s][a];break}for(h=T[c],d=(((y=T[a-1])-g)*(y+g)+((p=w[a-1])-(f=w[a]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<a+1;v++){if(p=w[v],y=T[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(s=0;s<x;s++)h=P[s][v-1],g=P[s][v],P[s][v-1]=h*l+g*m,P[s][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(T[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(s=0;s<b;s++)y=S[s][v-1],g=S[s][v],S[s][v-1]=y*l+g*m,S[s][v]=-y*m+g*l}w[c]=0,w[a]=d,T[a]=h}for(v=0;v<x;v++)T[v]<o&&(T[v]=0);return{u:S,q:T,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var mg=Ea(xc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<l._howls.length;b++)l._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),b=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=b*1e3/Math.abs(y._rate),S=p._sprite[l][0]/1e3,P=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=P){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,b):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var T=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)T();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",T(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,b=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,b=Math.abs(x/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=x*P,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),b=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=b*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var b=function(){l._playLock?setTimeout(b,0):x()};setTimeout(b,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof xc<"u"&&(xc.Howler=r,xc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")a._orientation=[r,e,t,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return a},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var a=t._soundById(i[s]);if(a)if(typeof r=="number")a._stereo=r,a._pos=[r,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(r,0,0):a._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",a._id);else return a._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),a=0;a<s.length;a++)if(i=r._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var P0=Ea((lX,_0)=>{_0.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),a=Number(o[i]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0}});var tO={};ku(tO,{default:()=>Vc});module.exports=j0(tO);var zc=require("three");function Hu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function yr(n,r){return Object.setPrototypeOf(n,r),n}function La(n){return Array.isArray(n)?n:[n]}function Wu(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var F0=typeof global=="object"&&global&&global.Object===Object&&global,Da=F0;var k0=typeof self=="object"&&self&&self.Object===Object&&self,U0=Da||k0||Function("return this")(),st=U0;var H0=st.Symbol,mt=H0;var qu=Object.prototype,W0=qu.hasOwnProperty,q0=qu.toString,ws=mt?mt.toStringTag:void 0;function $0(n){var r=W0.call(n,ws),e=n[ws];try{n[ws]=void 0;var t=!0}catch{}var o=q0.call(n);return t&&(r?n[ws]=e:delete n[ws]),o}var $u=$0;var Y0=Object.prototype,X0=Y0.toString;function K0(n){return X0.call(n)}var Yu=K0;var Z0="[object Null]",Q0="[object Undefined]",Xu=mt?mt.toStringTag:void 0;function J0(n){return n==null?n===void 0?Q0:Z0:Xu&&Xu in Object(n)?$u(n):Yu(n)}var Jt=J0;function ex(n){return n!=null&&typeof n=="object"}var wt=ex;var tx="[object Symbol]";function rx(n){return typeof n=="symbol"||wt(n)&&Jt(n)==tx}var Cn=rx;function ox(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Ba=ox;var nx=Array.isArray,Ze=nx;var ix=1/0,Ku=mt?mt.prototype:void 0,Zu=Ku?Ku.toString:void 0;function Qu(n){if(typeof n=="string")return n;if(Ze(n))return Ba(n,Qu)+"";if(Cn(n))return Zu?Zu.call(n):"";var r=n+"";return r=="0"&&1/n==-ix?"-0":r}var Ju=Qu;function sx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var er=sx;function ax(n){return n}var ep=ax;var lx="[object AsyncFunction]",cx="[object Function]",dx="[object GeneratorFunction]",ux="[object Proxy]";function px(n){if(!er(n))return!1;var r=Jt(n);return r==cx||r==dx||r==lx||r==ux}var Ra=px;var fx=st["__core-js_shared__"],Ga=fx;var tp=function(){var n=/[^.]+$/.exec(Ga&&Ga.keys&&Ga.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function mx(n){return!!tp&&tp in n}var rp=mx;var hx=Function.prototype,yx=hx.toString;function gx(n){if(n!=null){try{return yx.call(n)}catch{}try{return n+""}catch{}}return""}var ro=gx;var xx=/[\\^$.*+?()[\]{}|]/g,vx=/^\[object .+?Constructor\]$/,bx=Function.prototype,Sx=Object.prototype,wx=bx.toString,_x=Sx.hasOwnProperty,Px=RegExp("^"+wx.call(_x).replace(xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Tx(n){if(!er(n)||rp(n))return!1;var r=Ra(n)?Px:vx;return r.test(ro(n))}var op=Tx;function Ox(n,r){return n?.[r]}var np=Ox;function Ax(n,r){var e=np(n,r);return op(e)?e:void 0}var Ft=Ax;var Cx=Ft(st,"WeakMap"),Va=Cx;var ip=Object.create,Nx=function(){function n(){}return function(r){if(!er(r))return{};if(ip)return ip(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),sp=Nx;function Ix(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var ap=Ix;function Mx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var lp=Mx;var Ex=800,Lx=16,Dx=Date.now;function Bx(n){var r=0,e=0;return function(){var t=Dx(),o=Lx-(t-e);if(e=t,o>0){if(++r>=Ex)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var cp=Bx;function Rx(n){return function(){return n}}var dp=Rx;var Gx=function(){try{var n=Ft(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Nn=Gx;var Vx=Nn?function(n,r){return Nn(n,"toString",{configurable:!0,enumerable:!1,value:dp(r),writable:!0})}:ep,up=Vx;var zx=cp(up),pp=zx;function jx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var fp=jx;var Fx=9007199254740991,kx=/^(?:0|[1-9]\d*)$/;function Ux(n,r){var e=typeof n;return r=r??Fx,!!r&&(e=="number"||e!="symbol"&&kx.test(n))&&n>-1&&n%1==0&&n<r}var In=Ux;function Hx(n,r,e){r=="__proto__"&&Nn?Nn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var za=Hx;function Wx(n,r){return n===r||n!==n&&r!==r}var Mn=Wx;var qx=Object.prototype,$x=qx.hasOwnProperty;function Yx(n,r,e){var t=n[r];(!($x.call(n,r)&&Mn(t,e))||e===void 0&&!(r in n))&&za(n,r,e)}var En=Yx;function Xx(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],c=t?t(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?za(e,a,c):En(e,a,c)}return e}var Mr=Xx;var mp=Math.max;function Kx(n,r,e){return r=mp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=mp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),ap(n,this,a)}}var hp=Kx;var Zx=9007199254740991;function Qx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Zx}var Ln=Qx;function Jx(n){return n!=null&&Ln(n.length)&&!Ra(n)}var ja=Jx;var ev=Object.prototype;function tv(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||ev;return n===e}var Dn=tv;function rv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var yp=rv;var ov="[object Arguments]";function nv(n){return wt(n)&&Jt(n)==ov}var Fc=nv;var gp=Object.prototype,iv=gp.hasOwnProperty,sv=gp.propertyIsEnumerable,av=Fc(function(){return arguments}())?Fc:function(n){return wt(n)&&iv.call(n,"callee")&&!sv.call(n,"callee")},Bn=av;function lv(){return!1}var xp=lv;var Sp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vp=Sp&&typeof module=="object"&&module&&!module.nodeType&&module,cv=vp&&vp.exports===Sp,bp=cv?st.Buffer:void 0,dv=bp?bp.isBuffer:void 0,uv=dv||xp,Ko=uv;var pv="[object Arguments]",fv="[object Array]",mv="[object Boolean]",hv="[object Date]",yv="[object Error]",gv="[object Function]",xv="[object Map]",vv="[object Number]",bv="[object Object]",Sv="[object RegExp]",wv="[object Set]",_v="[object String]",Pv="[object WeakMap]",Tv="[object ArrayBuffer]",Ov="[object DataView]",Av="[object Float32Array]",Cv="[object Float64Array]",Nv="[object Int8Array]",Iv="[object Int16Array]",Mv="[object Int32Array]",Ev="[object Uint8Array]",Lv="[object Uint8ClampedArray]",Dv="[object Uint16Array]",Bv="[object Uint32Array]",ke={};ke[Av]=ke[Cv]=ke[Nv]=ke[Iv]=ke[Mv]=ke[Ev]=ke[Lv]=ke[Dv]=ke[Bv]=!0;ke[pv]=ke[fv]=ke[Tv]=ke[mv]=ke[Ov]=ke[hv]=ke[yv]=ke[gv]=ke[xv]=ke[vv]=ke[bv]=ke[Sv]=ke[wv]=ke[_v]=ke[Pv]=!1;function Rv(n){return wt(n)&&Ln(n.length)&&!!ke[Jt(n)]}var wp=Rv;function Gv(n){return function(r){return n(r)}}var Rn=Gv;var _p=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_s=_p&&typeof module=="object"&&module&&!module.nodeType&&module,Vv=_s&&_s.exports===_p,kc=Vv&&Da.process,zv=function(){try{var n=_s&&_s.require&&_s.require("util").types;return n||kc&&kc.binding&&kc.binding("util")}catch{}}(),oo=zv;var Pp=oo&&oo.isTypedArray,jv=Pp?Rn(Pp):wp,Fa=jv;var Fv=Object.prototype,kv=Fv.hasOwnProperty;function Uv(n,r){var e=Ze(n),t=!e&&Bn(n),o=!e&&!t&&Ko(n),i=!e&&!t&&!o&&Fa(n),s=e||t||o||i,a=s?yp(n.length,String):[],c=a.length;for(var u in n)(r||kv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||In(u,c)))&&a.push(u);return a}var ka=Uv;function Hv(n,r){return function(e){return n(r(e))}}var Ua=Hv;var Wv=Ua(Object.keys,Object),Tp=Wv;var qv=Object.prototype,$v=qv.hasOwnProperty;function Yv(n){if(!Dn(n))return Tp(n);var r=[];for(var e in Object(n))$v.call(n,e)&&e!="constructor"&&r.push(e);return r}var Op=Yv;function Xv(n){return ja(n)?ka(n):Op(n)}var Gn=Xv;function Kv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Ap=Kv;var Zv=Object.prototype,Qv=Zv.hasOwnProperty;function Jv(n){if(!er(n))return Ap(n);var r=Dn(n),e=[];for(var t in n)t=="constructor"&&(r||!Qv.call(n,t))||e.push(t);return e}var Cp=Jv;function eb(n){return ja(n)?ka(n,!0):Cp(n)}var Vn=eb;var tb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rb=/^\w*$/;function ob(n,r){if(Ze(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Cn(n)?!0:rb.test(n)||!tb.test(n)||r!=null&&n in Object(r)}var Np=ob;var nb=Ft(Object,"create"),no=nb;function ib(){this.__data__=no?no(null):{},this.size=0}var Ip=ib;function sb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Mp=sb;var ab="__lodash_hash_undefined__",lb=Object.prototype,cb=lb.hasOwnProperty;function db(n){var r=this.__data__;if(no){var e=r[n];return e===ab?void 0:e}return cb.call(r,n)?r[n]:void 0}var Ep=db;var ub=Object.prototype,pb=ub.hasOwnProperty;function fb(n){var r=this.__data__;return no?r[n]!==void 0:pb.call(r,n)}var Lp=fb;var mb="__lodash_hash_undefined__";function hb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=no&&r===void 0?mb:r,this}var Dp=hb;function zn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}zn.prototype.clear=Ip;zn.prototype.delete=Mp;zn.prototype.get=Ep;zn.prototype.has=Lp;zn.prototype.set=Dp;var Uc=zn;function yb(){this.__data__=[],this.size=0}var Bp=yb;function gb(n,r){for(var e=n.length;e--;)if(Mn(n[e][0],r))return e;return-1}var bo=gb;var xb=Array.prototype,vb=xb.splice;function bb(n){var r=this.__data__,e=bo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():vb.call(r,e,1),--this.size,!0}var Rp=bb;function Sb(n){var r=this.__data__,e=bo(r,n);return e<0?void 0:r[e][1]}var Gp=Sb;function wb(n){return bo(this.__data__,n)>-1}var Vp=wb;function _b(n,r){var e=this.__data__,t=bo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var zp=_b;function jn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}jn.prototype.clear=Bp;jn.prototype.delete=Rp;jn.prototype.get=Gp;jn.prototype.has=Vp;jn.prototype.set=zp;var So=jn;var Pb=Ft(st,"Map"),wo=Pb;function Tb(){this.size=0,this.__data__={hash:new Uc,map:new(wo||So),string:new Uc}}var jp=Tb;function Ob(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Fp=Ob;function Ab(n,r){var e=n.__data__;return Fp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var _o=Ab;function Cb(n){var r=_o(this,n).delete(n);return this.size-=r?1:0,r}var kp=Cb;function Nb(n){return _o(this,n).get(n)}var Up=Nb;function Ib(n){return _o(this,n).has(n)}var Hp=Ib;function Mb(n,r){var e=_o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Wp=Mb;function Fn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Fn.prototype.clear=jp;Fn.prototype.delete=kp;Fn.prototype.get=Up;Fn.prototype.has=Hp;Fn.prototype.set=Wp;var Zo=Fn;var Eb="Expected a function";function Hc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Eb);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(Hc.Cache||Zo),e}Hc.Cache=Zo;var qp=Hc;var Lb=500;function Db(n){var r=qp(n,function(t){return e.size===Lb&&e.clear(),t}),e=r.cache;return r}var $p=Db;var Bb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Rb=/\\(\\)?/g,Gb=$p(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Bb,function(e,t,o,i){r.push(o?i.replace(Rb,"$1"):t||e)}),r}),Yp=Gb;function Vb(n){return n==null?"":Ju(n)}var Xp=Vb;function zb(n,r){return Ze(n)?n:Np(n,r)?[n]:Yp(Xp(n))}var ar=zb;var jb=1/0;function Fb(n){if(typeof n=="string"||Cn(n))return n;var r=n+"";return r=="0"&&1/n==-jb?"-0":r}var Po=Fb;function kb(n,r){r=ar(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Po(r[e++])];return e&&e==t?n:void 0}var Ha=kb;function Ub(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var kn=Ub;var Kp=mt?mt.isConcatSpreadable:void 0;function Hb(n){return Ze(n)||Bn(n)||!!(Kp&&n&&n[Kp])}var Zp=Hb;function Qp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Zp),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?Qp(a,r-1,e,t,o):kn(o,a):t||(o[o.length]=a)}return o}var Jp=Qp;function Wb(n){var r=n==null?0:n.length;return r?Jp(n,1):[]}var ef=Wb;function qb(n){return pp(hp(n,void 0,ef),n+"")}var Wa=qb;var $b=Ua(Object.getPrototypeOf,Object),Un=$b;var Yb="[object Object]",Xb=Function.prototype,Kb=Object.prototype,tf=Xb.toString,Zb=Kb.hasOwnProperty,Qb=tf.call(Object);function Jb(n){if(!wt(n)||Jt(n)!=Yb)return!1;var r=Un(n);if(r===null)return!0;var e=Zb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&tf.call(e)==Qb}var rf=Jb;function eS(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var of=eS;function tS(){this.__data__=new So,this.size=0}var nf=tS;function rS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var sf=rS;function oS(n){return this.__data__.get(n)}var af=oS;function nS(n){return this.__data__.has(n)}var lf=nS;var iS=200;function sS(n,r){var e=this.__data__;if(e instanceof So){var t=e.__data__;if(!wo||t.length<iS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Zo(t)}return e.set(n,r),this.size=e.size,this}var cf=sS;function Hn(n){var r=this.__data__=new So(n);this.size=r.size}Hn.prototype.clear=nf;Hn.prototype.delete=sf;Hn.prototype.get=af;Hn.prototype.has=lf;Hn.prototype.set=cf;var Wn=Hn;function aS(n,r){return n&&Mr(r,Gn(r),n)}var df=aS;function lS(n,r){return n&&Mr(r,Vn(r),n)}var uf=lS;var hf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pf=hf&&typeof module=="object"&&module&&!module.nodeType&&module,cS=pf&&pf.exports===hf,ff=cS?st.Buffer:void 0,mf=ff?ff.allocUnsafe:void 0;function dS(n,r){if(r)return n.slice();var e=n.length,t=mf?mf(e):new n.constructor(e);return n.copy(t),t}var yf=dS;function uS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var gf=uS;function pS(){return[]}var qa=pS;var fS=Object.prototype,mS=fS.propertyIsEnumerable,xf=Object.getOwnPropertySymbols,hS=xf?function(n){return n==null?[]:(n=Object(n),gf(xf(n),function(r){return mS.call(n,r)}))}:qa,qn=hS;function yS(n,r){return Mr(n,qn(n),r)}var vf=yS;var gS=Object.getOwnPropertySymbols,xS=gS?function(n){for(var r=[];n;)kn(r,qn(n)),n=Un(n);return r}:qa,$a=xS;function vS(n,r){return Mr(n,$a(n),r)}var bf=vS;function bS(n,r,e){var t=r(n);return Ze(n)?t:kn(t,e(n))}var Ya=bS;function SS(n){return Ya(n,Gn,qn)}var Ps=SS;function wS(n){return Ya(n,Vn,$a)}var Xa=wS;var _S=Ft(st,"DataView"),Ka=_S;var PS=Ft(st,"Promise"),Za=PS;var TS=Ft(st,"Set"),Qa=TS;var Sf="[object Map]",OS="[object Object]",wf="[object Promise]",_f="[object Set]",Pf="[object WeakMap]",Tf="[object DataView]",AS=ro(Ka),CS=ro(wo),NS=ro(Za),IS=ro(Qa),MS=ro(Va),Qo=Jt;(Ka&&Qo(new Ka(new ArrayBuffer(1)))!=Tf||wo&&Qo(new wo)!=Sf||Za&&Qo(Za.resolve())!=wf||Qa&&Qo(new Qa)!=_f||Va&&Qo(new Va)!=Pf)&&(Qo=function(n){var r=Jt(n),e=r==OS?n.constructor:void 0,t=e?ro(e):"";if(t)switch(t){case AS:return Tf;case CS:return Sf;case NS:return wf;case IS:return _f;case MS:return Pf}return r});var io=Qo;var ES=Object.prototype,LS=ES.hasOwnProperty;function DS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&LS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Of=DS;var BS=st.Uint8Array,$n=BS;function RS(n){var r=new n.constructor(n.byteLength);return new $n(r).set(new $n(n)),r}var Yn=RS;function GS(n,r){var e=r?Yn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Af=GS;var VS=/\w*$/;function zS(n){var r=new n.constructor(n.source,VS.exec(n));return r.lastIndex=n.lastIndex,r}var Cf=zS;var Nf=mt?mt.prototype:void 0,If=Nf?Nf.valueOf:void 0;function jS(n){return If?Object(If.call(n)):{}}var Mf=jS;function FS(n,r){var e=r?Yn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ef=FS;var kS="[object Boolean]",US="[object Date]",HS="[object Map]",WS="[object Number]",qS="[object RegExp]",$S="[object Set]",YS="[object String]",XS="[object Symbol]",KS="[object ArrayBuffer]",ZS="[object DataView]",QS="[object Float32Array]",JS="[object Float64Array]",ew="[object Int8Array]",tw="[object Int16Array]",rw="[object Int32Array]",ow="[object Uint8Array]",nw="[object Uint8ClampedArray]",iw="[object Uint16Array]",sw="[object Uint32Array]";function aw(n,r,e){var t=n.constructor;switch(r){case KS:return Yn(n);case kS:case US:return new t(+n);case ZS:return Af(n,e);case QS:case JS:case ew:case tw:case rw:case ow:case nw:case iw:case sw:return Ef(n,e);case HS:return new t;case WS:case YS:return new t(n);case qS:return Cf(n);case $S:return new t;case XS:return Mf(n)}}var Lf=aw;function lw(n){return typeof n.constructor=="function"&&!Dn(n)?sp(Un(n)):{}}var Df=lw;var cw="[object Map]";function dw(n){return wt(n)&&io(n)==cw}var Bf=dw;var Rf=oo&&oo.isMap,uw=Rf?Rn(Rf):Bf,Gf=uw;var pw="[object Set]";function fw(n){return wt(n)&&io(n)==pw}var Vf=fw;var zf=oo&&oo.isSet,mw=zf?Rn(zf):Vf,jf=mw;var hw=1,yw=2,gw=4,Ff="[object Arguments]",xw="[object Array]",vw="[object Boolean]",bw="[object Date]",Sw="[object Error]",kf="[object Function]",ww="[object GeneratorFunction]",_w="[object Map]",Pw="[object Number]",Uf="[object Object]",Tw="[object RegExp]",Ow="[object Set]",Aw="[object String]",Cw="[object Symbol]",Nw="[object WeakMap]",Iw="[object ArrayBuffer]",Mw="[object DataView]",Ew="[object Float32Array]",Lw="[object Float64Array]",Dw="[object Int8Array]",Bw="[object Int16Array]",Rw="[object Int32Array]",Gw="[object Uint8Array]",Vw="[object Uint8ClampedArray]",zw="[object Uint16Array]",jw="[object Uint32Array]",je={};je[Ff]=je[xw]=je[Iw]=je[Mw]=je[vw]=je[bw]=je[Ew]=je[Lw]=je[Dw]=je[Bw]=je[Rw]=je[_w]=je[Pw]=je[Uf]=je[Tw]=je[Ow]=je[Aw]=je[Cw]=je[Gw]=je[Vw]=je[zw]=je[jw]=!0;je[Sw]=je[kf]=je[Nw]=!1;function Ja(n,r,e,t,o,i){var s,a=r&hw,c=r&yw,u=r&gw;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!er(n))return n;var l=Ze(n);if(l){if(s=Of(n),!a)return lp(n,s)}else{var d=io(n),p=d==kf||d==ww;if(Ko(n))return yf(n,a);if(d==Uf||d==Ff||p&&!o){if(s=c||p?{}:Df(n),!a)return c?bf(n,uf(s,n)):vf(n,df(s,n))}else{if(!je[d])return o?n:{};s=Lf(n,d,a)}}i||(i=new Wn);var f=i.get(n);if(f)return f;i.set(n,s),jf(n)?n.forEach(function(y){s.add(Ja(y,r,e,y,n,i))}):Gf(n)&&n.forEach(function(y,g){s.set(g,Ja(y,r,e,g,n,i))});var m=u?c?Xa:Ps:c?Vn:Gn,h=l?void 0:m(n);return fp(h||n,function(y,g){h&&(g=y,y=n[g]),En(s,g,Ja(y,r,e,g,n,i))}),s}var el=Ja;var Fw=1,kw=4;function Uw(n){return el(n,Fw|kw)}var so=Uw;var Hw="__lodash_hash_undefined__";function Ww(n){return this.__data__.set(n,Hw),this}var Hf=Ww;function qw(n){return this.__data__.has(n)}var Wf=qw;function tl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Zo;++r<e;)this.add(n[r])}tl.prototype.add=tl.prototype.push=Hf;tl.prototype.has=Wf;var qf=tl;function $w(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var $f=$w;function Yw(n,r){return n.has(r)}var Yf=Yw;var Xw=1,Kw=2;function Zw(n,r,e,t,o,i){var s=e&Xw,a=n.length,c=r.length;if(a!=c&&!(s&&c>a))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&Kw?new qf:void 0;for(i.set(n,r),i.set(r,n);++d<a;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!$f(r,function(g,x){if(!Yf(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var rl=Zw;function Qw(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Xf=Qw;function Jw(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Kf=Jw;var e1=1,t1=2,r1="[object Boolean]",o1="[object Date]",n1="[object Error]",i1="[object Map]",s1="[object Number]",a1="[object RegExp]",l1="[object Set]",c1="[object String]",d1="[object Symbol]",u1="[object ArrayBuffer]",p1="[object DataView]",Zf=mt?mt.prototype:void 0,Wc=Zf?Zf.valueOf:void 0;function f1(n,r,e,t,o,i,s){switch(e){case p1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case u1:return!(n.byteLength!=r.byteLength||!i(new $n(n),new $n(r)));case r1:case o1:case s1:return Mn(+n,+r);case n1:return n.name==r.name&&n.message==r.message;case a1:case c1:return n==r+"";case i1:var a=Xf;case l1:var c=t&e1;if(a||(a=Kf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=t1,s.set(n,r);var l=rl(a(n),a(r),t,o,i,s);return s.delete(n),l;case d1:if(Wc)return Wc.call(n)==Wc.call(r)}return!1}var Qf=f1;var m1=1,h1=Object.prototype,y1=h1.hasOwnProperty;function g1(n,r,e,t,o,i){var s=e&m1,a=Ps(n),c=a.length,u=Ps(r),l=u.length;if(c!=l&&!s)return!1;for(var d=c;d--;){var p=a[d];if(!(s?p in r:y1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=a[d];var g=n[p],x=r[p];if(t)var b=s?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(b===void 0?g===x||o(g,x,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Jf=g1;var x1=1,em="[object Arguments]",tm="[object Array]",ol="[object Object]",v1=Object.prototype,rm=v1.hasOwnProperty;function b1(n,r,e,t,o,i){var s=Ze(n),a=Ze(r),c=s?tm:io(n),u=a?tm:io(r);c=c==em?ol:c,u=u==em?ol:u;var l=c==ol,d=u==ol,p=c==u;if(p&&Ko(n)){if(!Ko(r))return!1;s=!0,l=!1}if(p&&!l)return i||(i=new Wn),s||Fa(n)?rl(n,r,e,t,o,i):Qf(n,r,c,e,t,o,i);if(!(e&x1)){var f=l&&rm.call(n,"__wrapped__"),m=d&&rm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Wn),o(h,y,e,t,i)}}return p?(i||(i=new Wn),Jf(n,r,e,t,o,i)):!1}var om=b1;function nm(n,r,e,t,o){return n===r?!0:n==null||r==null||!wt(n)&&!wt(r)?n!==n&&r!==r:om(n,r,e,t,nm,o)}var im=nm;function S1(n,r){return n!=null&&r in Object(n)}var sm=S1;function w1(n,r,e){r=ar(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=Po(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Ln(o)&&In(s,o)&&(Ze(n)||Bn(n)))}var am=w1;function _1(n,r){return n!=null&&am(n,r,sm)}var lm=_1;function P1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var cm=P1;function T1(n,r){return r.length<2?n:Ha(n,of(r,0,-1))}var dm=T1;function O1(n,r){return im(n,r)}var Ts=O1;function A1(n,r){return r=ar(r,n),n=dm(n,r),n==null||delete n[Po(cm(r))]}var um=A1;function C1(n){return rf(n)?void 0:n}var pm=C1;var N1=1,I1=2,M1=4,E1=Wa(function(n,r){var e={};if(n==null)return e;var t=!1;r=Ba(r,function(i){return i=ar(i,n),t||(t=i.length>1),i}),Mr(n,Xa(n),e),t&&(e=el(e,N1|I1|M1,pm));for(var o=r.length;o--;)um(e,r[o]);return e}),Xn=E1;function L1(n,r,e,t){if(!er(n))return n;r=ar(r,n);for(var o=-1,i=r.length,s=i-1,a=n;a!=null&&++o<i;){var c=Po(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];u=t?t(l,c,a):void 0,u===void 0&&(u=er(l)?l:In(r[o+1])?[]:{})}En(a,c,u),a=a[c]}return n}var fm=L1;function D1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],a=Ha(n,s);e(a,s)&&fm(i,ar(s,n),a)}return i}var mm=D1;function B1(n,r){return mm(n,r,function(e,t){return lm(n,t)})}var hm=B1;var R1=Wa(function(n,r){return n==null?{}:hm(n,r)}),ao=R1;function Kn(n){let r;return()=>r||(r=n(),r)}var ze=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,ze.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,ze.prototype),{data:a,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,ze.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Os(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Os(t)}return Object.freeze(n)}function ym(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Zn=class extends Error{};function nl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Er(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Qn(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function gm(){return typeof process<"u"}function xm(n,r){for(let e of n)r(e.id,e.data)!==!0&&xm(e.children,r)}function vm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)vm(e,r)}var qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Os(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&vm(o,t)}}traverse(e){xm(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:a}}Object.setPrototypeOf(i,qe.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Zn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:a,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>ym(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Er(0,o,o);{let s=i[0].fi;return Er(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return Er(c,c+o,o)}else return Er(s.fi,a.fi,o)}}};var Jn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Jn||(Jn={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Os(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return gm()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,s=this,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((u,l)=>u.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Er(0,t,t);{let i=o[0].fi;return Er(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return Er(a,a+t,t)}else return Er(i.fi,s.fi,t)}}};function ei(n){return n&&typeof n=="object"&&n instanceof $e}var $e=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ei(t))return null;o+=1}t=t?nl(t):new $e;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=nl(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=nl(c);u[r.path[o-1]]=t,t=u}else{let u=new $e;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,$e.prototype),a={...r,props:i};return{data:s,actual:r,reverse:a}}},Lr;(t=>{function n(o,i){return As(o,i)??o}t.apply=n;function r(o,i){return $c(o,i)}t.merge=r;function e(o,i){let s=0,a=i.path,c=o;for(;s<a.length&&c!==void 0;){if(c=Et.zoomOnce(c,a[s]),c===void 0)return i;if(!ei(c))return;s+=1}if(c===void 0)return i;if(!!ei(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=qc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Lr||(Lr={}));function qc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=As(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let a=qc(o.children,r);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}}else return{...o,id:i,data:s}});if(e)return t}function G1(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=As(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function As(n,r){if(!ei(r))return r;if(n instanceof qe){let e=qc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return G1(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=As(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof $e)return $c(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=As(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function $c(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ei(r))return r;if(!ei(n))return Lr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new $e;for(let o of e){let i=$c(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function bm(n,r){let e={cur:[],result:[],len:0};return n=Cs(n,r,e)??n,[n,e.result]}function il(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function sl(n){n&&(n.len-=1)}function V1(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Sm(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=Cs(i.data,r,il(e,s));sl(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Sm(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function z1(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=Cs(i.data,r,il(e,s));return sl(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Cs(n,r,e){if(n instanceof qe){let t=Sm(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return z1(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let a=Cs(i,r,il(e,s));return sl(e),t=t||a!==void 0,a===void 0&&(a=i),a});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Qn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let a=r[i];if(typeof a=="string"){if(e!==null)throw new Error("not supported");o=!0,i=a}let c=Cs(s,r,il(e,i));sl(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");V1(e)}return t}else return}}var al;(r=>{function n(e,t){let o=Et.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(al||(al={}));var _t;(a=>{function n(c,u){return{...c,path:c.path.slice(u)}}a.drop=n;function r(c,u){return e(c,u)?.data??c}a.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof $e&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof qe||c instanceof he||c instanceof ze?p=c.runOp(u):p=Jn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof qe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof $e){let b={...x,[g]:h};h=Object.setPrototypeOf(b,$e.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...x],h[g]=b}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof qe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}a.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}a.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}a.pathEq=o;function i(c,u){return t(c.path,u.path)}a.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}a.subsumed=s})(_t||(_t={}));var Yc;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>_t.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>_t.commutative(d,p)))}c.commutative=i;function s(u,l){for(let d of l){let p=a(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function a(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3){let h=Et.zoom(d,[...m.path,m.id]),y=_t.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,x]=bm(d,{[m.id]:h});d=g;for(let b of x){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=_t.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Zn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=a})(Yc||(Yc={}));var wm=Symbol(),j1=Symbol(),cl=Symbol(),Jo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof ll);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[cl];t&&t(),delete this._children[r]}}}},Kc=class extends Jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Jn.runOp(this._current,r),r.path)}},Zc=class extends Jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,ze.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},_m={get(n,r){if(r===cl)return()=>{n._parent=null};if(r===wm)return n._current;if(r===j1)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=dl(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},F1={..._m,set(n,r,e){let t={type:0,props:{[r]:at(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},k1={..._m,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},ti=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[cl]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=dl(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ri=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[cl]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=dl(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Xc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Et.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var ll=class extends Jo{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Xc(this.ts,e,r),Xc(this.actual,t,r),Xc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function dl(n,r,e){return e instanceof qe?new ti(n,r,e):e instanceof he?new ri(n,r,e):e instanceof ze?new Proxy(new Zc(n,r,e),k1):e!==null&&typeof e=="object"?Qn(e)?e:new Proxy(new Kc(n,r,e),F1):e}function Qc(n){let r=new ll(n);return[dl(r,"",n),r]}function oi(n,r){let[e,t]=Qc(n);return r(e),t.result()}function at(n){return n instanceof ti||n instanceof ri?n._current:n!==null&&typeof n=="object"?n[wm]:n}var Et;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function r(i,s,a){let c=t(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof qe||i instanceof ti)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof ri)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=t})(Et||(Et={}));function Pm(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Nt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var ul=class{},Ns=class extends ul{constructor(e){super();this.id=e}},Is=class extends ul{constructor(e){super();this.data=e}};var ed;try{ed=new TextDecoder}catch{}var ne,Oo,I=0;var Em=[],td=Em,rd=0,kt={},Ie,To,lr=0,Dr=0,tr,lo,Lt=[],De,Tm={useRecords:!1,mapsAsObjects:!0},Ms=class{},nd=new Ms;nd.name="MessagePack 0xC1";var ni=!1,Br=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return Gm(()=>(fl(),this?this.unpack(r,e):Br.prototype.unpack.call(Tm,r,e)));Oo=e>-1?e:r.length,I=0,rd=0,Dr=0,To=null,td=Em,tr=null,ne=r;try{De=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Br){if(kt=this,this.structures)return Ie=this.structures,pl();(!Ie||Ie.length>0)&&(Ie=[])}else kt=Tm,(!Ie||Ie.length>0)&&(Ie=[]);return pl()}unpackMultiple(r,e){let t,o=0;try{ni=!0;let i=r.length,s=this?this.unpack(r,i):yl.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(pl())===!1)return}else{for(t=[s];I<i;)o=I,t.push(pl());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ni=!1,fl()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function pl(){try{if(!kt.trusted&&!ni){let r=Ie.sharedLength||0;r<Ie.length&&(Ie.length=r)}let n=Qe();if(I==Oo)Ie.restoreStructures&&Om(),Ie=null,ne=null,lo&&(lo=null);else if(I>Oo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ni)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ie.restoreStructures&&Om(),fl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Om(){for(let n in Ie.restoreStructures)Ie[n]=Ie.restoreStructures[n];Ie.restoreStructures=null}function Qe(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Ie[n&63]||kt.getStructures&&Lm()[n&63];return r?(r.read||(r.read=id(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Bm()]=Qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Qe(),Qe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Qe();return r}else if(n<192){let r=n-160;if(Dr>=I)return To.slice(I-lr,(I+=r)-lr);if(Dr==0&&Oo<140){let e=r<16?sd(r):Dm(r);if(e!=null)return e}return od(r)}else{let r;switch(n){case 192:return null;case 193:return tr?(r=Qe(),r>0?tr[1].slice(tr.position1,tr.position1+=r):tr[0].slice(tr.position0,tr.position0-=r)):nd;case 194:return!1;case 195:return!0;case 196:return Jc(ne[I++]);case 197:return r=De.getUint16(I),I+=2,Jc(r);case 198:return r=De.getUint32(I),I+=4,Jc(r);case 199:return en(ne[I++]);case 200:return r=De.getUint16(I),I+=2,en(r);case 201:return r=De.getUint32(I),I+=4,en(r);case 202:if(r=De.getFloat32(I),kt.useFloat32>2){let e=hl[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=De.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=De.getUint16(I),I+=2,r;case 206:return r=De.getUint32(I),I+=4,r;case 207:return kt.int64AsNumber?(r=De.getUint32(I)*4294967296,r+=De.getUint32(I+4)):r=De.getBigUint64(I),I+=8,r;case 208:return De.getInt8(I++);case 209:return r=De.getInt16(I),I+=2,r;case 210:return r=De.getInt32(I),I+=4,r;case 211:return kt.int64AsNumber?(r=De.getInt32(I)*4294967296,r+=De.getUint32(I+4)):r=De.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Mm(ne[I++]&63);{let e=Lt[r];if(e)return e.read?(I++,e.read(Qe())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Mm(ne[I++]&63,ne[I++])):en(2);case 214:return en(4);case 215:return en(8);case 216:return en(16);case 217:return r=ne[I++],Dr>=I?To.slice(I-lr,(I+=r)-lr):H1(r);case 218:return r=De.getUint16(I),I+=2,Dr>=I?To.slice(I-lr,(I+=r)-lr):W1(r);case 219:return r=De.getUint32(I),I+=4,Dr>=I?To.slice(I-lr,(I+=r)-lr):q1(r);case 220:return r=De.getUint16(I),I+=2,Cm(r);case 221:return r=De.getUint32(I),I+=4,Cm(r);case 222:return r=De.getUint16(I),I+=2,Nm(r);case 223:return r=De.getUint32(I),I+=4,Nm(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var U1=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function id(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>U1.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Qe);return n.highByte===0&&(n.read=Am(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Qe()}return t}return e.count=0,n.highByte===0?Am(r,e):e}var Am=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ie[t]||Lm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=id(o,n)),o.read()};function Lm(){let n=Gm(()=>(ne=null,kt.getStructures()));return Ie=kt._mergeStructures(n,Ie)}var od=ml,H1=ml,W1=ml,q1=ml;function ml(n){let r;if(n<16&&(r=sd(n)))return r;if(n>64&&ed)return ed.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,a=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=ht.apply(String,t),t.length=0)}return t.length>0&&(r+=ht.apply(String,t)),r}function Cm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Qe();return r}function Nm(n){if(kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Bm()]=Qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Qe(),Qe());return r}}var ht=String.fromCharCode;function Dm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return ht.apply(String,e)}function sd(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return ht(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return ht(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return ht(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return ht(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return ht(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return ht(r,e,t,o,i,s);let a=ne[I++];if((a&128)>0){I-=7;return}return ht(r,e,t,o,i,s,a)}else{let i=ne[I++],s=ne[I++],a=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return ht(r,e,t,o,i,s,a,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return ht(r,e,t,o,i,s,a,c,u)}}else if(n<12){let u=ne[I++],l=ne[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return ht(r,e,t,o,i,s,a,c,u,l);let d=ne[I++];if((d&128)>0){I-=11;return}return ht(r,e,t,o,i,s,a,c,u,l,d)}else{let u=ne[I++],l=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return ht(r,e,t,o,i,s,a,c,u,l,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return ht(r,e,t,o,i,s,a,c,u,l,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return ht(r,e,t,o,i,s,a,c,u,l,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return ht(r,e,t,o,i,s,a,c,u,l,d,p,f,m,h)}}}}}function Jc(n){return kt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function en(n){let r=ne[I++];if(Lt[r])return Lt[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Im=new Array(4096);function Bm(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,Dr>=I)return To.slice(I-lr,(I+=n)-lr);if(!(Dr==0&&Oo<180))return od(n)}else return I--,Qe();let r=(n<<5^(n>1?De.getUint16(I):n>0?ne[I]:0))&4095,e=Im[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=De.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Im[r]=e,e.bytes=n;t<o;)i=De.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let a=n<16?sd(n):Dm(n);return a!=null?e.string=a:e.string=od(n)}var Mm=(n,r)=>{var e=Qe();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ie[n];return o&&o.isShared&&((Ie.restoreStructures||(Ie.restoreStructures=[]))[n]=o),Ie[n]=e,e.read=id(e,t),e.read()},Rm=typeof self=="object"?self:global;Lt[0]=()=>{};Lt[0].noBuffer=!0;Lt[101]=()=>{let n=Qe();return(Rm[n[0]]||Error)(n[1])};Lt[105]=n=>{let r=De.getUint32(I-4);lo||(lo=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};lo.set(r,o);let i=Qe();return o.used?Object.assign(t,i):(o.target=i,i)};Lt[112]=n=>{let r=De.getUint32(I-4),e=lo.get(r);return e.used=!0,e.target};Lt[115]=()=>new Set(Qe());var ad=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Lt[116]=n=>{let r=n[0],e=ad[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Rm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Lt[120]=()=>{let n=Qe();return new RegExp(n[0],n[1])};Lt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,tr=[Qe(),Qe()],tr.position0=0,tr.position1=0;let t=I;I=e;try{return Qe()}finally{I=t}};Lt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Gm(n){let r=Oo,e=I,t=rd,o=lr,i=Dr,s=To,a=td,c=lo,u=tr,l=new Uint8Array(ne.slice(0,Oo)),d=Ie,p=Ie.slice(0,Ie.length),f=kt,m=ni,h=n();return Oo=r,I=e,rd=t,lr=o,Dr=i,To=s,td=a,lo=c,tr=u,ne=l,ni=m,Ie=d,Ie.splice(0,Ie.length,...p),kt=f,De=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function fl(){ne=null,lo=null,Ie=null}function Vm(n){n.unpack?Lt[n.type]=n.unpack:Lt[n.type]=n}var hl=new Array(147);for(let n=0;n<256;n++)hl[n]=+("1e"+Math.floor(45.15-n*.30103));var yl=new Br({useRecords:!1}),$1=yl.unpack,Y1=yl.unpackMultiple,X1=yl.unpack,gl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},K1=new Float32Array(1),SL=new Uint8Array(K1.buffer,0,4);var xl;try{xl=new TextEncoder}catch{}var vl,cd,bl=typeof Buffer<"u",ld=bl?Buffer.allocUnsafeSlow:Uint8Array,km=bl?Buffer:Uint8Array,zm=bl?4294967296:2144337920,z,ot,E=0,Rr,Gr=null,Z1=/[\u0080-\uFFFF]/,Es=Symbol("record-id"),tn=class extends Br{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,c=0,u=km.prototype.utf8Write?function(v,N,T){return z.utf8Write(v,N,T)}:xl&&xl.encodeInto?function(v,N){return xl.encodeInto(v,z.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],b=0,w=0;this.pack=this.encode=function(v,N){if(z||(z=new ld(8192),ot=new DataView(z.buffer,0,8192),E=0),Rr=z.length-10,Rr-E<2048?(z=new ld(z.length),ot=new DataView(z.buffer,0,z.length),Rr=z.length-10,E=0):E=E+7&2147483640,t=E,a=l.structuredClone?new Map:null,l.bundleStrings?(Gr=["",""],z[E++]=214,z[E++]=98,Gr.position=E-t,E+=4):Gr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>f)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 C=0;C<T;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let U=0,$=O.length;U<$;U++){let ee=O[U];A=R[ee],A||(A=R[ee]=Object.create(null)),R=A}R[Es]=C+64}c=T}d||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(S(v),Gr){ot.setUint32(Gr.position+t,E-Gr.position-t);let T=Gr;Gr=null,S(T[0]),S(T[1])}if(l.offset=E,a&&a.idsToInsert){E+=a.idsToInsert.length*6,E>Rr&&_(E),l.offset=E;let T=J1(z.subarray(t,E),a.idsToInsert);return a=null,T}return N&Hm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let T=0,C=x.length;T<C;T++)x[T][Es]=0;x=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let C=z.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=T,C)}}N&s_&&(E=t)}};let S=v=>{E>Rr&&(z=_(E));var N=typeof v,T;if(N==="string"){let C=v.length;if(Gr&&C>=8&&C<4096){let R=Z1.test(v);Gr[R?0:1]+=v,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Rr&&(z=_(E+A)),C<64||!u){let R,U,$,ee=E+O;for(R=0;R<C;R++)U=v.charCodeAt(R),U<128?z[ee++]=U:U<2048?(z[ee++]=U>>6|192,z[ee++]=U&63|128):(U&64512)===55296&&(($=v.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+($&1023),R++,z[ee++]=U>>18|240,z[ee++]=U>>12&63|128,z[ee++]=U>>6&63|128,z[ee++]=U&63|128):(z[ee++]=U>>12|224,z[ee++]=U>>6&63|128,z[ee++]=U&63|128);T=ee-E-O}else T=u(v,E+O,A);T<32?z[E++]=160|T:T<256?(O<2&&z.copyWithin(E+2,E+1,E+1+T),z[E++]=217,z[E++]=T):T<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+T),z[E++]=218,z[E++]=T>>8,z[E++]=T&255):(O<5&&z.copyWithin(E+5,E+3,E+3+T),z[E++]=219,ot.setUint32(E,T),E+=4),E+=T}else if(N==="number")if(v>>>0===v)v<64?z[E++]=v:v<256?(z[E++]=204,z[E++]=v):v<65536?(z[E++]=205,z[E++]=v>>8,z[E++]=v&255):(z[E++]=206,ot.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?z[E++]=256+v:v>=-128?(z[E++]=208,z[E++]=v+256):v>=-32768?(z[E++]=209,ot.setInt16(E,v),E+=2):(z[E++]=210,ot.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){z[E++]=202,ot.setFloat32(E,v);let O;if(C<4||(O=v*hl[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,ot.setFloat64(E,v),E+=8}else if(N==="object")if(!v)z[E++]=192;else{if(a){let O=a.get(v);if(O){if(!O.id){let A=a.idsToInsert||(a.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,ot.setUint32(E,O.id),E+=4;return}else a.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)P(v,!0);else if(C===Array){T=v.length,T<16?z[E++]=144|T:T<65536?(z[E++]=220,z[E++]=T>>8,z[E++]=T&255):(z[E++]=221,ot.setUint32(E,T),E+=4);for(let O=0;O<T;O++)S(v[O])}else if(C===Map){T=v.size,T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,ot.setUint32(E,T),E+=4);for(let[O,A]of v)S(O),S(A)}else{for(let O=0,A=vl.length;O<A;O++){let R=cd[O];if(v instanceof R){let U=vl[O];if(U.write){U.type&&(z[E++]=212,z[E++]=U.type,z[E++]=0),S(U.write.call(this,v));return}let $=z,ee=ot,Y=E;z=null;let q;try{q=U.pack.call(this,v,H=>(z=$,$=null,E+=H,E>Rr&&_(E),{target:z,targetView:ot,position:E-H}),S)}finally{$&&(z=$,ot=ee,E=Y,Rr=z.length-10)}q&&(q.length+E>Rr&&_(q.length+E),E=Q1(q,z,E,U.type));return}}P(v,!v.hasOwnProperty)}}else if(N==="boolean")z[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))z[E++]=211,ot.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)z[E++]=207,ot.setBigUint64(E,v);else if(this.largeBigIntToFloat)z[E++]=203,ot.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},P=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),T=N.length;T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,ot.setUint32(E,T),E+=4);let C;for(let O=0;O<T;O++)S(C=N[O]),S(v[C])}:(v,N)=>{z[E++]=222;let T=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(S(O),S(v[O]),C++);z[T+++t]=C>>8,z[T+t]=C&255}:v=>{let N=Object.keys(v),T,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=N.length;R<U;R++){let $=N[R];T=C[$],T||(T=C[$]=Object.create(null),O++),C=T}let A=C[Es];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[Es]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),x.length>=m&&(x.shift()[Es]=0),x.push(C),S(N))}for(let R=0,U=N.length;R<U;R++)S(v[N[R]])},_=v=>{let N;if(v>16777216){if(v-t>zm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(zm,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,z.length-1)>>12)+1<<12;let T=new ld(N);return ot=new DataView(T.buffer,0,N),z.copy?z.copy(T,0,t,v):T.set(z.slice(t,v)),E-=t,t=0,Rr=T.length-10,z=T}}useBuffer(r){z=r,ot=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};cd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ms];vl=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?jm(n,16,r):Fm(bl?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==km&&this.structuredClone?jm(n,ad.indexOf(e.name),r):Fm(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function jm(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Fm(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function Q1(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function J1(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function Ao(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");cd.unshift(n.Class),vl.unshift(n)}Vm(n)}var Um=new tn({useRecords:!1}),e_=Um.pack,t_=Um.pack;var{NEVER:r_,ALWAYS:o_,DECIMAL_ROUND:n_,DECIMAL_FIT:i_}=gl,Hm=512,s_=1024;var Wm=new tn({structuredClone:!0});Ao({Class:ze.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Ao({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Ao({Class:qe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});Ao({Class:Ns.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ns(n)}});Ao({Class:Is.prototype.constructor,type:5,write(n){return n.data},read(n){return new Is(n)}});Ao({Class:$e.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,$e.prototype),n}});function a_(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function dd(n){if(Qn(n))return n;if(Array.isArray(n))return n.map(dd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=dd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Sl;(t=>{function n(o){return Wm.pack(o)}t.serialize=n;function r(o){return Wm.unpack(o)}t.deserialize=r;function e(o){return a_(n(dd(o))).toString()}t.checksum=e})(Sl||(Sl={}));var Io="personal camera",Mo="a218fcc3-276b-49b9-b485-49037fd14f5f",Zm=2960946,ct=5526619;var qm;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(qm||(qm={}));var Co;(a=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}a.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}a.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}a.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}a.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}a.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}a.dist=i;function s(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}a.lerp=s})(Co||(Co={}));var $m;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})($m||($m={}));var No;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=t})(No||(No={}));var yt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,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 o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=s;function a(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=a;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(yt||(yt={}));var Dt;(a=>{a.white={...yt.white,a:1},a.transparent={...yt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function t(c,u){return{...yt.fromHex(c),a:u}}a.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}a.toRgb255a1=o;function i(c,u){return yt.equals(c,u)&&c.a===u.a}a.equals=i;function s(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}a.lerp=s})(Dt||(Dt={}));var wl;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(wl||(wl={}));var Ym;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ym||(Ym={}));var Xm;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Xm||(Xm={}));var Km;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Km||(Km={}));var gr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(gr||(gr={}));var Eo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Eo||(Eo={}));var Vr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(l_.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,a=o.radial;c_.forEach(c=>{Object.assign(i.radial,{[c]:a[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,a=o.linear;d_.forEach(c=>{Object.assign(i.linear,{[c]:a[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,a=o.grid;u_.forEach(c=>{Object.assign(i.grid,{[c]:a[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,a=o.toObject;p_.forEach(c=>{Object.assign(i.toObject,{[c]:a[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,a=o.randomnessObject;f_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:a[c]??s[c]})})}return i}e.merge=r})(Vr||(Vr={}));var _l;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let a of r){let c=o[a];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,a],props:c})}return s}t.toOps=e})(_l||(_l={}));var l_=["count"],c_=["radius","start","end","position","scale","rotation"],d_=["position","scale","rotation"],u_=["count","size"],p_=["count","position","scale","rotation"],f_=["strength","scale","rotation","position","movement","seed","freqScale"];var Pl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Pl||(Pl={}));var Tl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Dt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Dt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Dt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Tl||(Tl={}));var Lo;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Lo||(Lo={}));var ud;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(ud||(ud={}));var pd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(pd||(pd={}));var Ol;(r=>r.defaultData={...pd.defaultData,...ud.defaultData})(Ol||(Ol={}));var ii;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(ii||(ii={}));var Qm;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Qm||(Qm={}));function eh(n){return n.type!=="displace"}var Jm;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Jm||(Jm={}));var th=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],rh=["wrapping","image","video","name"],Bt;(o=>{function n(i,s){let{texture:a,...c}=s;if(Object.assign(i,c),a){let u=i.texture;u&&Object.assign(u,a)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:ii.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:yt.fromHex(ct)};case"depth":return{...s,type:"depth",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]],steps:[0,1],near:50,far:200};case"normal":return{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...yt.fromHex(6710886),a:1},colorB:{...yt.fromHex(6710886),a:1},colorC:{...yt.fromHex(16777215),a:1},colorD:{...yt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:Dt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Dt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Dt.fromHexAndA(0,1),contourColor:Dt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...yt.fromHex(0),a:1},colorB:{...yt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(Bt||(Bt={}));var Ut;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:Bt.defaultData("light",u),id:l}),p.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,l="phong",d="layer1",p="layer2"){let f=Bt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function a(u,l="phong",d="layer1",p="layer2"){let f=Bt.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=a})(Ut||(Ut={}));var si;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(si||(si={}));var ai;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(ai||(ai={}));var fd={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var Al;(r=>{function n(e,t){let o={...e};return m_.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Al||(Al={}));var Cl={shape:fd,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},m_=["depth","offset","angle","twist","startScale","endScale"];var Ls;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Ls||(Ls={}));var Nl;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Al.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Nl||(Nl={}));var Do;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:ai.defaultData(),extrusion:Cl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:si.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(Do||(Do={}));var Il;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:yt.white,near:.1,far:2e3})(Il||(Il={}));var Ml;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Ml||(Ml={}));var md;(r=>r.defaultData={softShadowQuality:"low"})(md||(md={}));var hd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(hd||(hd={}));var yd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(yd||(yd={}));var Ds;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ds||(Ds={}));var gd;(r=>r.defaultData={playCamera:Io,gameControlObject:null})(gd||(gd={}));var El;(r=>r.defaultData={backgroundColor:Dt.fromHexAndA(Zm,1),postprocessing:Ml.defaultData,fog:Il.defaultData,globalPhysics:Ds.defaultData,ambient:hd.defaultData,ao:yd.defaultData,shadow:md.defaultData,publish:gd.defaultData})(El||(El={}));var oh;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(oh||(oh={}));var li;(o=>{o.identity={...wl.identity,hiddenMatrix:No.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return Hu({position:Co.isEqual(i.position,s.position)?void 0:s.position,rotation:Co.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Co.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:No.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(li||(li={}));var It;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:Lo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...li.identity,cloner:null})(It||(It={}));var nh;(r=>r.defaultData={type:"Empty",...It.defaultData})(nh||(nh={}));var ih;(r=>r.defaultData={type:"Component",...It.defaultData})(ih||(ih={}));var rn;(r=>r.defaultData={type:"Mesh",...It.defaultData,...Ol.defaultData})(rn||(rn={}));var on;(r=>r.defaultData={...It.defaultData,...li.identity,position:[0,0,Eo.DefaultTargetOffset],...Eo.defaultData})(on||(on={}));var Ll;(e=>{function n(t){return{...It.defaultData,...Tl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ll||(Ll={}));var ci;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let a=Object.keys(s);if(a.length===1&&a[0]==="descendants")return}return s}e.resolve=r})(ci||(ci={}));var co;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,a){return{...It.defaultData,...a,component:s,overrides:new $e,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let a=li.fromObject(s.data);return t(s.id,a)}i.fromComponentData=o})(co||(co={}));var uo;(r=>r.defaultData={type:"Page",...It.defaultData,physics:{...Lo.defaultData,fusedBody:!1},...El.defaultData,camera:on.defaultData})(uo||(uo={}));var Dl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:No.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Lo.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Eo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("RectangleGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("BooleanGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("TextGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")}))(Dl||(Dl={}));var nn;(o=>{function n(i,s){let a={name:s};return i.type==="Mesh"?(a.geometry={},"material"in i&&(a.material={layers:new $e}),"materials"in i&&(a.materials=i.materials.map(c=>({layers:new $e})))):gr.is(i.type)&&(a.perspective={},a.orthographic={}),a}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let a={...i};return"material"in a&&"material"in s&&s.material&&(a.material=oi(a.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&Bt.patch(d,l)}}).data),a.materials&&s.materials&&(a.materials=oi(a.materials,c=>{for(let u=0;u<a.materials.length;u++){let l=s.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&Bt.patch(f,p)}}}).data),a}function e(i,s){let a,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(..._l.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else a===void 0&&(a={path:[],props:{},type:0},c.push(a)),a.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let a={...i};if(Object.assign(a,li.merge(a,s)),Object.assign(a,{pathSnapping:Object.assign({},a.pathSnapping,{slide:s.pathSnapping?.slide??a.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??a.pathSnapping?.offset??0})}),gr.is(i.type)){a.orthographic={...a.orthographic},a.perspective={...a.perspective};let c=s;c.orthographic?.zoom!==void 0&&(a.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(a.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(a.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(a.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(a,{geometry:Nl.merge(a.geometry,s.geometry)}),(s.material||s.materials)&&(a=r(a,s)),a.cloner&&"cloner"in s&&Object.assign(a,{cloner:Vr.merge(a.cloner,s.cloner)});else if(i.type==="Empty")a.cloner&&"cloner"in s&&Object.assign(a,{cloner:Vr.merge(a.cloner,s.cloner)});else if(Pl.is(i.type)){let c=s;c.intensity!==void 0&&(a.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?a.color=c.color:a.color=yt.clone(c.color))}return a}o.patch=t})(nn||(nn={}));var di;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(di||(di={}));var zr;(r=>r.defaultData={orbitControls:di.defaultData,playPage:Mo,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(zr||(zr={}));var xd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(xd||(xd={}));var vd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(vd||(vd={}));var Bo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...xd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:vd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Bo||(Bo={}));var sh;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.traverseFrom(o,(s,a)=>{if(a.type==="Instance"){let c=t.data(a.component);c&&i(a,c.events)}else i(a,a.events)})}e.traverseModuleInstances=r})(sh||(sh={}));var Bl;(a=>{a.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=Dl.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:Ll.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new qe;return d.push({fi:1,id:Mo,data:{...uo.defaultData,name:"Scene 1"},children:u}),d}a.defaultData={objects:r(),publish:zr.defaultData,styles:Bo.defaultData()},a.emptyDataWithoutPage=function(){return{objects:new qe,publish:zr.defaultData,styles:Bo.defaultData()}},a.emptyDataWithPage=function(c){return{objects:r(c),publish:zr.defaultData,styles:Bo.defaultData()}};function i(c){return{...a.defaultData,objects:yr(c,qe.prototype)}}a.withObjs=i;function s(c,u){return i([{id:c,data:u,children:[],fi:0}])}a.withObj=s})(Bl||(Bl={}));var ui;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ui||(ui={}));var Rl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},yr(o,ze.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ui.emptyImage,name:"AI generated image"}),yr(i,ze.prototype)}t.defaultImages=r;function e(){return{materials:new ze,images:new ze,videos:new ze,colors:new ze,audios:new ze,fonts:new ze}}t.emptyData=e})(Rl||(Rl={}));var Rs=require("three");var Gl;(r=>r.list=["idle","move","jump","run"])(Gl||(Gl={}));var Vl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Dt.fromHexAndA(3728051,1)}}))(Vl||(Vl={}));function ah(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...ao(at(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...at(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function sn(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function an(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function h_(n){Object.assign(n.scene.publish,{orbitControls:{...di.defaultData,...at(n.scene.publish.orbitControls)}})}function y_(n){Object.assign(n.scene.publish.settings,{video:{...zr.defaultData.settings.video,...at(n.scene.publish.settings.video)}})}function g_(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((th.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,a]of Object.entries(i))(rh.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function x_(n){n.scene.publish.withBackground=!0}function v_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function b_(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function S_(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function w_(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=at(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function __(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function P_(n){function r(t){Object.setPrototypeOf(t,$e.prototype),t.texture&&Object.setPrototypeOf(t.texture,$e.prototype)}function e(t){Object.setPrototypeOf(t,$e.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let a=at(s.material).layers;e(a),s.material.layers=a}if(s.materials)for(let a=0;a<s.materials.length;a++){let c=s.materials[a],u=at(c).layers;e(u),c.layers=u}})})}function lh(n){n.layers===void 0&&Object.assign(n,Ut.defaultTwoLayerData("lambert"))}function bd(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...at(r),colors:e,steps:t};Object.assign(r,o)}})}function T_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function ch(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&bd(t)}):"material"in e&&typeof e.material!="string"&&bd(e.material)}),Object.values(n.shared.materials).forEach(r=>bd(r))}function O_(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function A_(n){n.shared.audios=yr({},ze.prototype)}function C_(n){n.shared.videos=yr({},ze.prototype)}function N_(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function I_(n){Object.entries(at(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(at(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function M_(n){n.scene.publish.settings.web.preload=!1}function dh(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function uh(n){n.layers&&n.layers.forEach(r=>{eh(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function E_(n){n.shared.fonts=yr({},ze.prototype)}function L_(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function D_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Ut.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let a=L_(o.font);n.shared.fonts[a]===void 0&&(n.shared.fonts[a]={name:a});let c={name:o.name,...It.defaultData,...rn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Do.defaultData("TextGeometry"),width:o.width,height:o.height,font:a,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=at(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function B_(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Rs.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,a,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(l,ao(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(l,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...l},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Rs.MathUtils.generateUUID(),data:u},{fi:1,id:Rs.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:a,data:f})}),delete o.targets)}})})}function R_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,a=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;a.push(u),c.interaction==="play"?d={...ao(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...ao(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:l,id:u,data:d})}}),a.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Rs.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function ph(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function fh(n){sn(n,ph),an(n,ph)}function G_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function V_(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function z_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ut.defaultTwoLayerData("phong"))})}function j_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function F_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function k_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function U_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function H_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function W_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function q_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Vl.defaultDataThirdPerson.navmesh)})})}function $_(n){n.scene.styles||(n.scene.styles=Bo.defaultData())}function mh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function Y_(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),an(n,mh),sn(n,mh)}function X_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new he})})})}function K_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function hh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function yh(n,r){if(r<1&&(an(n,ah),sn(n,ah),n.schema=1),r<2&&(h_(n),n.schema=2),r<3&&(g_(n),n.schema=3),r<4&&(x_(n),n.schema=4),r<5&&(v_(n),n.schema=5),r<6&&(b_(n),n.schema=6),r<7&&(S_(n),n.schema=7),r<8&&(n.schema=8),r<9&&(ch(n),n.schema=9),r<10&&(T_(n),n.schema=10),r<11&&(O_(n),n.schema=11),r<12&&(ch(n),n.schema=12),r<13&&(A_(n),n.schema=13),r<14&&(N_(n),n.schema=14),r<15&&(I_(n),n.schema=15),r<16&&(M_(n),n.schema=16),r<17&&(an(n,dh),sn(n,dh),n.schema=17),r<18&&(an(n,lh),sn(n,lh),n.schema=18),r<19&&(y_(n),n.schema=19),r<20&&(E_(n),D_(n),n.schema=20),r<21&&(B_(n),R_(n),n.schema=21),r<22&&(fh(n),n.schema=22),r<23&&(G_(n),n.schema=23),r<24&&(V_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(C_(n),r<25&&(n.schema=25)),r<26&&(w_(n),n.schema=26),r<27&&(__(n),n.schema=27),r<28&&(fh(n),n.schema=28),r<29&&(P_(n),n.schema=29),r<30&&(z_(n),n.schema=30),r<31&&(j_(n),n.schema=31),r<33&&(F_(n),n.schema=33),r<34&&(k_(n),n.schema=34),r<35&&(U_(n),n.schema=35),r<36&&(H_(n),n.schema=36),r<37&&(W_(n),n.schema=37),r<38&&(an(n,uh),sn(n,uh),n.schema=38),r<39&&(q_(n),n.schema=39),r<40&&($_(n),n.schema=40),r<41&&(Y_(n),n.schema=41),r<42&&(X_(n),n.schema=42),r<43&&(K_(n),n.schema=43),r<99){an(n,hh),sn(n,hh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Io);let e=at(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=Mo,t.insertBefore(null,null,[{id:Mo,data:{...uo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:ao(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:ao(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ds.defaultData,...ao(n.scene.environment,"usePhysics","gravity")},camera:at(n.scene.ownerCamera)??uo.defaultData.camera,name:"Scene"},children:[]}]);for(let s of e)s.id!==Bl.TRASH_CAN_ID&&t.move(Mo,s.fi,s.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((s,a)=>{a.type==="DirectionalLight"?(a.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):a.type==="SpotLight"&&(a.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(a.physics===void 0||a.physics===null)&&a.type!=="Instance"&&(a.physics={},Object.assign(a.physics,Lo.defaultData)),a.physics!==void 0&&(a.physics.enabled=a.collision??"visibility",delete a.collision)}),n.schema=99}}var gh=100;function xh(n){let r=n.schema??0;r!==gh&&(console.warn("updating from ",r,"to ",gh),yh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=zr.defaultData.joystickSizeAndXYOffset),n.schema=100))}var Le=require("three"),ls=Xo(bh());var Z_=.5*(Math.sqrt(3)-1),Gs=(3-Math.sqrt(3))/6,Q_=1/3,jr=1/6,BR=(Math.sqrt(5)-1)/4,RR=(5-Math.sqrt(5))/20,Vs=n=>Math.floor(n)|0,Sh=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),wd=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function zl(n=Math.random){let r=_h(n),e=new Float64Array(r).map(o=>Sh[o%12*2]),t=new Float64Array(r).map(o=>Sh[o%12*2+1]);return function(i,s){let a=0,c=0,u=0,l=(i+s)*Z_,d=Vs(i+l),p=Vs(s+l),f=(d+p)*Gs,m=d-f,h=p-f,y=i-m,g=s-h,x,b;y>g?(x=1,b=0):(x=0,b=1);let w=y-x+Gs,S=g-b+Gs,P=y-1+2*Gs,_=g-1+2*Gs,v=d&255,N=p&255,T=.5-y*y-g*g;if(T>=0){let A=v+r[N],R=e[A],U=t[A];T*=T,a=T*T*(R*y+U*g)}let C=.5-w*w-S*S;if(C>=0){let A=v+x+r[N+b],R=e[A],U=t[A];C*=C,c=C*C*(R*w+U*S)}let O=.5-P*P-_*_;if(O>=0){let A=v+1+r[N+1],R=e[A],U=t[A];O*=O,u=O*O*(R*P+U*_)}return 70*(a+c+u)}}function wh(n=Math.random){let r=_h(n),e=new Float64Array(r).map(i=>wd[i%12*3]),t=new Float64Array(r).map(i=>wd[i%12*3+1]),o=new Float64Array(r).map(i=>wd[i%12*3+2]);return function(s,a,c){let u,l,d,p,f=(s+a+c)*Q_,m=Vs(s+f),h=Vs(a+f),y=Vs(c+f),g=(m+h+y)*jr,x=m-g,b=h-g,w=y-g,S=s-x,P=a-b,_=c-w,v,N,T,C,O,A;S>=P?P>=_?(v=1,N=0,T=0,C=1,O=1,A=0):S>=_?(v=1,N=0,T=0,C=1,O=0,A=1):(v=0,N=0,T=1,C=1,O=0,A=1):P<_?(v=0,N=0,T=1,C=0,O=1,A=1):S<_?(v=0,N=1,T=0,C=0,O=1,A=1):(v=0,N=1,T=0,C=1,O=1,A=0);let R=S-v+jr,U=P-N+jr,$=_-T+jr,ee=S-C+2*jr,Y=P-O+2*jr,q=_-A+2*jr,H=S-1+3*jr,V=P-1+3*jr,G=_-1+3*jr,D=m&255,L=h&255,B=y&255,X=.6-S*S-P*P-_*_;if(X<0)u=0;else{let M=D+r[L+r[B]];X*=X,u=X*X*(e[M]*S+t[M]*P+o[M]*_)}let W=.6-R*R-U*U-$*$;if(W<0)l=0;else{let M=D+v+r[L+N+r[B+T]];W*=W,l=W*W*(e[M]*R+t[M]*U+o[M]*$)}let j=.6-ee*ee-Y*Y-q*q;if(j<0)d=0;else{let M=D+C+r[L+O+r[B+A]];j*=j,d=j*j*(e[M]*ee+t[M]*Y+o[M]*q)}let F=.6-H*H-V*V-G*G;if(F<0)p=0;else{let M=D+1+r[L+1+r[B+1]];F*=F,p=F*F*(e[M]*H+t[M]*V+o[M]*G)}return 32*(u+l+d+p)}}function _h(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Ph=require("three"),xr=new Ph.Triangle,jl=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;xr.a.fromBufferAttribute(r,o),xr.b.fromBufferAttribute(r,o+1),xr.c.fromBufferAttribute(r,o+2),i*=xr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),xr.a.fromBufferAttribute(this.positionAttribute,r*3),xr.b.fromBufferAttribute(this.positionAttribute,r*3+1),xr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(xr.a,o).addScaledVector(xr.b,i).addScaledVector(xr.c,1-(o+i)),xr.getNormal(t),this}};var Ch=require("three");var rr=require("three"),Ah=Xo(Oh()),J_=new rr.Matrix4,eP=new rr.Matrix4,tP=new rr.Matrix4,pi;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(pi||(pi={}));var fi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new rr.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new rr.Matrix4;this.matrixWorldRigid=new rr.Matrix4;this.shearScale=new rr.Matrix4;this.shearScaleInv=new rr.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof rr.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)pi.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)pi.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:a}=(0,Ah.SVD)(o),c=J_.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=eP.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),l=tP.copy(u).transpose();this.shearScale.makeScale(a[0],a[1],a[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),a.every(d=>Math.abs(a[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new rr.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof rr.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,s,a,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var _d=class extends fi(Ch.Object3D){},rP=n=>n.type==="Mesh",po=class extends _d{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new po(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return rP(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var Di=require("three");var nc=require("three");var fo=require("three");var Je=require("three"),ln=new Je.Vector3,cn=new Je.Vector3,mi=new Je.Matrix4,Ih=[new Je.Vector3(-1,1,1),new Je.Vector3(-1,-1,1),new Je.Vector3(1,-1,1),new Je.Vector3(1,1,1),new Je.Vector3(-1,1,-1),new Je.Vector3(-1,-1,-1),new Je.Vector3(1,-1,-1),new Je.Vector3(1,1,-1)],oP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],nP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Nh=(n,r,e)=>{n.updateEntityBoxSize(ln,cn),mi.copy(r).multiply(n.matrixWorld),cn.x===0&&cn.y===0&&cn.z===0?e.push(new Je.Vector3(ln.x,ln.y,ln.z).applyMatrix4(mi)):Ih.forEach(t=>{e.push(t.clone().multiply(cn).add(ln).applyMatrix4(mi))})},zs=class extends Je.Box3{constructor(){super(...arguments);this.matrix=new Je.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Je.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Je.Vector3);return}Nh(s,t,i)}}):Nh(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(mi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(cn).multiplyScalar(.5),this.getCenter(ln),mi.copy(this.matrix).setPosition(ln),this.vertices=Ih.map(e=>e.clone().multiply(cn).applyMatrix4(mi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=oP.map(([e,t])=>new Je.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Je.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=nP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var vr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var gt=require("three"),Td=class extends gt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let a=0,c=this.curves;a<c.length;a++){let u=c[a],l=a===0?o[a]:o[a]-o[a-1],d=Math.ceil(r*l/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Od=.001;function Ad(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Od}function Pd(n,r){let e=new gt.Vector3(...n.position),t=new gt.Vector3(...n.controlNext.position),o=new gt.Vector3(...r.controlPrevious.position),i=new gt.Vector3(...r.position);return Ad(e,t,i)&&Ad(e,o,i)}function kl(n){let r=n.points.map(l=>new gt.Vector3(...l.data.position)),e=[n.points[0]],t=new gt.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Ad(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,a=[];for(let l=0;l<s;l++){let d=e[l].data,p=new gt.Vector3(...d.position),f=new gt.Vector3(...d.controlPrevious.position),m=new gt.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===s-1)){a[l]={...h,removedLength:0};continue}let y=o&&l==0?s-1:l-1,g=o&&l==s-1?0:l+1,x=e[y].data,b=e[g].data,w=new gt.Vector3(...x.position),S=new gt.Vector3(...b.position),P=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let v=Pd(x,d),N=Pd(d,b);if(!v||!N)a[l]={...h,removedLength:0};else{let T=P.clone().add(_).normalize(),C=T.clone().cross(P).length()/P.dot(T);a[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p],h=null;if(!Pd(e[d].data,e[p].data))f.position.distanceTo(m.position)>Od&&(h=new gt.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Od&&(h=new gt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<s;l++){let d=a[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),v=f.clone().lerp(P,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new gt.CubicBezierCurve3(f,v,N,m)}let u=new Td;return c.forEach(l=>{l&&u.add(l)}),u}var Te;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Te||(Te={}));var hi=n=>Te.is(n),iP={type:"completeState",isfromEntity:!0},yi=n=>class extends fi(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new zs;this._recursiveBBox=new zs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Te.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Te.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Te.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)nn.toOps(this.data,s.data).forEach(c=>{let u=al.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=nn.patch(this.data,s),nn.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{hi(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Te.is(o[i]))return o[i];if(Te.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Te.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)hi(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Te.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)hi(s)&&s.isConcreteEntity&&s.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)hi(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)hi(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>hi(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Xn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??No.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Te.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Te.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Xn(o,t)}updateByObjUpdateOp(t,o){this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,s){let a=this.data;this.data=o;let c=t,u=Nt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Et.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=Et.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,nn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Nt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(Lr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=Et.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=ci.resolve(o.overrides,l),p.updateByOp(t,_t.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of co.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of co.rootOverrideProps)if(Nt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Lr.filterOp(d.overrideData,l);p&&d.updateByOp(p,_t.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Lr.filterOp(d.overrideData,t);if(p){let f;a===d.data&&t===p?f=o:f=_t.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!gr.is(t.props.type)&&vr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){vr.changeEntityProptotype(this,o,i);for(let s of this.children)Te.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Nt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Nt(t.path,["cloner"])!==null){let s=_t.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,l=kl(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new fo.Matrix4;c.updateMatrixWorld();let m=new fo.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(a==="tangential"){let y=new fo.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new fo.Matrix4().lookAt(p,g,new fo.Vector3(0,1,0)),b=new fo.Euler().setFromRotationMatrix(x);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(iP)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof vr.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new vr.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};var Lh=require("three");var Ue=require("three"),Eh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new js(u,l,t,o,i,s,a,c*Math.PI/180,d,d,p,f):m=new Ue.CylinderGeometry(u,l,t,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Ro(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Mh(n){return new Ue.Vector2(n.y,-n.x)}var js=class extends Ue.BufferGeometry{constructor(r,e,t,o,i,s,a,c,u,l,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,b=t/2,w=new Ue.Vector3,S=new Ue.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=l);let P=new Ue.Vector2(r,b),_=new Ue.Vector2(e,-b),v=null,N=null,T=null,C=null,O=P.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let $=P.clone();$.x-=A;let ee=Math.PI-O.angle(),Y=O.angle(),q=Math.tan(Y/2),H=Math.tan(ee/2),V=q+H,G=p?V:H,D=p?V:q;if(u=Math.min(u,(r-R)/G,O.length()/V),l=Math.min(l,(e-U)/D,O.length()/V),u>0){let F=u/q;v=P.clone().sub(new Ue.Vector2(F,u)),p&&(T=v.clone(),T.x-=A-V*u),P.sub(O.clone().setLength(F))}if(l>0){let F=l/H;N=_.clone().sub(new Ue.Vector2(F,-l)),_.add(O.clone().setLength(F)),p&&(C=N.clone(),C.x-=A-V*l,$.sub(O.clone().setLength(F)))}O=P.clone().sub(_);let L=O.length()<.5,B=[];for(let F=0;F<=o;F++){let M=[],Q=F/o,re=Q*c+a,oe=new Ue.Vector2(Math.sin(re),Math.cos(re));C&&N?(X(M,Q,oe,ee,l,C,-1,!0),X(M,Q,oe,Y,l,N,-1,!1)):N?(W(M,oe,N.x,0,-1),X(M,Q,oe,Y,l,N,-1,!1)):s||W(M,oe,e,U,-1);let K=Mh(O).normalize();if(Ro(K,oe,w),!L)for(let te=0;te<=i;te++){let J=te/i,se=O.clone().multiplyScalar(J).add(_);Ro(se,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}if(T&&v?(X(M,Q,oe,ee,u,v,1,!1),X(M,Q,oe,Y,u,T,1,!0)):v?(X(M,Q,oe,ee,u,v,1,!1),W(M,oe,v.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let te=Mh(O).multiplyScalar(-1).normalize();Ro(te,oe,w);for(let J=0;J<=i;J++){let se=J/i,de=O.clone().multiplyScalar(-se).add($);Ro(de,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}}p&&!s&&M.push(M[0]),B.push(M)}for(let F=0;F<B.length-1;F++)for(let M=0;M<B[0].length-1;M++){if(s&&p&&M==i)continue;let Q=B[F][M],re=B[F+1][M],oe=B[F+1][M+1],K=B[F][M+1],te=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(te!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(j(-1,B[0],a),j(1,B[B.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new Ue.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(y,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(g,2));function X(F,M,Q,re,oe,K,te,J){for(let se=0;se<d+1;se++){let de=se/d,ae=te<0?de:1-de;J&&(ae-=1),ae*=re;let me=new Ue.Vector2(Math.sin(ae),Math.cos(ae)*te),Ke=me.clone().multiplyScalar(oe).add(K);Ro(Ke,Q,S),h.push(S.x,S.y,S.z),Ro(me,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),F.push(x++)}}function W(F,M,Q,re,oe){let K=new Ue.Vector3,te=new Ue.Vector2,J=[Q,re];oe<0&&J.reverse();for(let se of J)te.set(se,b*oe),Ro(te,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),F.push(x++)}function j(F,M,Q){let re=new Ue.Vector2(Math.sin(Q),Math.cos(Q)),oe=new Ue.Vector2(-Math.cos(Q),Math.sin(Q)),K=new Ue.Vector3,te=F<0?(de,ae,me)=>m.push(de,ae,me):(de,ae,me)=>m.push(de,me,ae),J=new Ue.Vector2((r+e+R+U)/4,0);Ro(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let se=x++;for(let de of M){let ae=h.slice(de*3,de*3+3);h.push(...ae),y.push(oe.x,0,oe.y);let me=g.slice(de*2,de*2+2);g.push(...me),x++}for(let de=se+1;de<x-1;de++)te(se,de,de+1);te(se,x-1,se+1)}}};var Dh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return u>0||l>0||c<360?p=new js(0,r/2,t,o,i,s,a,c*Math.PI/180,u,l,d,0,!0):p=new Lh.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Ht=require("three"),Bh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:c}=n.parameters,u;return a==0?u=new Ht.BoxGeometry(r,e,t,o,i,s):u=new Nd(r,e,t,o,i,s,a,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Cd=Math.PI/2,Nd=class extends Ht.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,r/2,e/2,t/2);let l=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),a>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Ht.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Ht.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Ht.Float32BufferAttribute(f,2));function y(b,w,S,P,_,v,N,T,C,O,A){let R=(v-2*a)/C,U=(N-2*a)/O,$=v/2-a,ee=N/2-a,Y=T/2,q=C+1,H=O+1,V=0,G=0,D=new Ht.Vector3;for(let L=0;L<H;L++){let B=L*U-ee;for(let X=0;X<q;X++){let W=X*R-$;D[b]=W*P,D[w]=B*_,D[S]=Y,d.push(D.x,D.y,D.z),D[b]=0,D[w]=0,D[S]=T>0?1:-1,p.push(D.x,D.y,D.z),f.push(X/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let B=0;B<C;B++){let X=m+B+q*L,W=m+B+q*(L+1),j=m+(B+1)+q*(L+1),F=m+(B+1)+q*L;l.push(X,W,F),l.push(W,j,F),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,P,_,v,N,T,C,O,A){let R=(N-2*a)/O,U=N/2-a,$=T/2-a,ee=C/2,Y=O+1,q=0,H=0,V=new Ht.Vector3,G=new Ht.Vector3;for(let D=0;D<c+1;D++){let L=D/c*Cd,B=Math.sin(L)*a,X=(1-Math.cos(L))*a,W=Math.sin(L),j=Math.cos(L);V[w]=($+B)*_,V[S]=(ee-X)*v,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=j*Math.sign(V[S]);for(let F=0;F<Y;F++){let M=F*R-U;V[b]=M*P,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(F/O),f.push(0),q+=1}}for(let D=0;D<c;D++)for(let L=0;L<O;L++){let B=m+L+Y*D,X=m+L+Y*(D+1),W=m+(L+1)+Y*(D+1),j=m+(L+1)+Y*D;l.push(B,X,j),l.push(X,W,j),H+=6}u.addGroup(h,H,A),h+=H,m+=q}function x(b,w,S){let P=new Ht.Vector3,_=new Ht.Vector3(r/2,e/2,t/2);_.subScalar(a);let v=[],N=b*w*S>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=Cd*(1-C/c),R=Math.cos(A),U=Math.sin(A),$=0;for(let ee=0;ee<=C;ee++){let Y=Math.cos($),q=Math.sin($);P.x=R*Y,P.y=U,P.z=R*q;let H=_.clone().addScaledVector(P,a);d.push(b*H.x,w*H.y,S*H.z),p.push(b*P.x,w*P.y,S*P.z),f.push(0,0),O.push(m++),$+=Cd/C}v.push(O)}let T=v.length-1;for(let C=0;C<T;C++){let O=v[C],A=v[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let U=1;U<=R;U++)N(O[U-1],O[U],A[U]),N(O[U],A[U+1],A[U])}}}};var et=require("three"),Go=class extends et.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],u=[];l(),d(),this.setAttribute("position",new et.Float32BufferAttribute(a,3)),this.setAttribute("normal",new et.Float32BufferAttribute(u,3)),this.setAttribute("uv",new et.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new et.Vector3,h=m.clone(),y=new et.Triangle,g=i*o,x=o-g,b=s+1,w=new et.Vector3,S=(q,H)=>w.subVectors(q,H).normalize(),P=(q,H)=>Array(q).fill(void 0).map(H),_=P(r.length/3,(q,H)=>new et.Vector3().fromArray(r,H*3).setLength(o)),v=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,D,L,B=1e10,X=-1;for(;(X=e.indexOf(q,X+1))!=-1;){let M=X-X%3;G=e[M+(X+1)%3],D=e[M+(X+2)%3],L=H.distanceToSquared(_[G]),B=Math.min(B,L),V.push([G,D,L])}B+=1e-6;let W=[],j=0,F=V.length;for(let M=0;M<F;M++){[G,D,L]=V[j];let Q=v[G]?.includes(q)==!0;L<=B&&W.push(G+ +Q*N),j=V.findIndex(re=>re[0]==D)}v.push(W)}let T=[];{let q=0,H=0,V,G,D=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let B=0;B<s-L;B++)[q,H]=[V+B+L+2,G+B+L+3],T.push(V,G,...D?[H,V]:[q,G],H,q),[V,G]=[q,H];T.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),$=[],ee=P(_.length,()=>P(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(x);let H=v[q];for(let W=0;W<H.length;W++){let j=H[W],F=H[(W+1)%f];y.setFromPointsAndIndices(_,q,j%N,F%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,ee[q][W])}let V=[],G=[],D=[],L=new et.Vector3;s==0&&[...ee[q]].reduce((W,j)=>W.add(j),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let j=[],F=(W-1+f)%f,M=ee[q][F],Q=ee[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(x+K),G.push(K);let te=[O,M,Q];for(let J=0;J<2;J++){let se=te[J],de=te[J+1];R.subVectors(se,C),U.subVectors(de,C),A.crossVectors(R,U).normalize();for(let ae=0;ae<b;ae++){let me=[re,oe][J]*ae/b;m.copy(R).applyAxisAngle(A,me).add(C),V.push(m.clone()),J&&(S(m,C),j.push([ae==0?se:m.clone(),w.clone()]))}J&&(S(de,C),j.push([de,w.clone()]))}D.push(j)}$.push(D);let B=2*b,X=2;for(let W=0;W<f;W++){let j=B*W,F=B*((W+1)%f),M=[V[j]];for(let re=1;re<b;re++){R=V[j+re],U=V[F+re],M.push(R);for(let oe=1,K=re-X+1;oe<=K;oe++)m.lerpVectors(R,U,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(U)}for(let re=0;re<b;re++)M.push(V[re+b+j]);M.push(V[F+b]);let Q=T.map(re=>M[re]);a.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let Y=[];for(let q=0;q<v.length;q++)for(let H=0;H<f;H++){let V=v[q][H];if(V<N){let G=v[V].findIndex(B=>B%N==q),D=$[q][H],L=$[V][G];for(let B=0;B<b;B++){let X=D[B],W=L[b-B],j=D[B+1],F=L[b-(B+1)];[X,W,j,j,W,F].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}Y.push(D[0][0],L[b][0],D[b][0],L[0][0])}}for(;Y.length;){let q,H,V,G;[q,H]=Y.splice(0,2);let D=[q];for(;q!=H;)D.push(H),V=Y.indexOf(H),G=V%2,H=Y.splice(V-G,2)[1-G];w.subVectors(D[0],D[1]).cross(m.subVectors(D[0],D[2])).normalize();let L=w.dot(D[0])<0;L&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +L],D[B+1-+L],D[0]].forEach(X=>{a.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new et.Vector3;for(let _=0;_<a.length;_+=3){p.x=a[_+0],p.y=a[_+1],p.z=a[_+2];let v=S(p)/2/Math.PI+.5,N=P(p)/Math.PI+.5;c.push(v,1-N)}let f=new et.Vector3,m=new et.Vector3,h=new et.Vector3,y=new et.Vector3,g=new et.Vector2,x=new et.Vector2,b=new et.Vector2,w=(_,v,N,T)=>{T<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=T/2/Math.PI+.5)};for(let _=0,v=0;_<a.length;_+=9,v+=6){f.set(a[_+0],a[_+1],a[_+2]),m.set(a[_+3],a[_+4],a[_+5]),h.set(a[_+6],a[_+7],a[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),b.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,v+0,f,N),w(x,v+2,m,N),w(b,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],T=c[_+4],C=Math.max(v,N,T),O=Math.min(v,N,T);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),T<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Go(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var Rh=require("three"),Gh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Fs(r*.5,i,s):new Rh.DodecahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},Fs=class extends Go{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],c="DodecahedronGeometry";super(s,a,c,r,e,t),this.type=c}static fromJSON(r){return new Fs(r.radius,r.corner,r.cornerSides)}};var Ce=require("three");var ge=require("three"),ks=1e-12,gi=class{constructor(r){this.position=new ge.Vector2;this.startPosition=new ge.Vector2;this.uuid=ge.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new gi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},xi=class extends gi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new xi(this.parent).copy(this)}},br=class extends gi{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new xi(this),new xi(this))}static create(e,t){let o=new br(e,new ge.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new br(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ge.Vector2,t=new ge.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Vh(o,e),Vh(i,t)),[e,t]}computeTangent(e=new ge.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ge.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Vh(n,r=new ge.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Md=n=>n,vi=new ge.Vector2,Ul=new ge.Vector2,sP=new ge.Vector2,aP=new ge.Vector2,lP=new ge.Vector2,cP=new ge.Vector2,jh=new ge.Vector3,Fh=new ge.Vector3;function kh(n){let r=new ge.Vector2;r.addVectors(n.v0,vi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ge.Vector2;return e.addVectors(n.v2,Ul.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ge.CubicBezierCurve(n.v0,r,e,n.v2)}function Us(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function dP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function uP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Ed(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Uh(n,r,e){return zh(n,r)&&zh(r,e)&&Id(n.position,r.position,e.position)}function Id(n,r,e){return vi.copy(r).sub(n).cross(Ul.copy(e).sub(n))===0}function Hh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,a=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(a+c,s+u),o.set(a-c,s-u),[t,o]}function Wh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function qh(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+u)*(a+u)),d;return Ed(r,n,e)>Math.PI&&(l*=-1),Us(u,a)?d=(a+u)*(t/l-.5)*8/3/(s-c):d=(s+c)*(t/l-.5)*8/3/(u-a),o.set(r.x-d*a,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Ld(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function zh(n,r){return Id(n.position,n.controls[1].position,r.position)&&Id(n.position,r.controls[0].position,r.position)}function $h(n,r,e,t,o=.5){let i=vi.subVectors(r,n).multiplyScalar(o).add(n),s=Ul.subVectors(e,r).multiplyScalar(o).add(r),a=sP.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=aP.subVectors(s,i).multiplyScalar(o).add(i),l=lP.subVectors(a,s).multiplyScalar(o).add(s),d=a,p=cP.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function Yh(n,r,e=12,t=!0){let o=Fh.set(0,0,0),i,s=0,a=[];for(let c=0;c<r.length;c++){let u=Md(r[c]),l=vi,d=Vo(u,e);a.push(d);for(let p=0;p<=d;p++)if(u instanceof ge.CubicBezierCurve||u instanceof ge.QuadraticBezierCurve||u instanceof ge.LineCurve){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&uP(i,o))continue;i===void 0&&(i=jh),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Xh(n,r,e,t=12,o=!0){let i=Fh.set(0,0,0),s=0,a=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=Md(r[c]),d=vi,p=Vo(l,t);a.push(p);for(let f=0;f<=p;f++)if(l instanceof ge.CubicBezierCurve||l instanceof ge.QuadraticBezierCurve||l instanceof ge.LineCurve){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=jh:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function Dd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=Vo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=Vo(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Vo(n[0].roundedCurveCorner,r)*.5),t}function Vo(n,r=12){return n&&n instanceof ge.EllipseCurve?r*2:n&&(n instanceof ge.LineCurve||n instanceof ge.LineCurve3)?1:n&&n instanceof ge.SplineCurve?r*n.points.length:r}function Kh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=Md(r[s]),c=Vo(a,e),u=vi;for(let l=0;l<=c;l++)if(a instanceof ge.CubicBezierCurve||a instanceof ge.QuadraticBezierCurve||a instanceof ge.LineCurve){if(a.getPoint(l/c,u),o!==void 0&&dP(o,u,ks))continue;o===void 0&&(o=Ul),o.copy(u),n.push(u.x,u.y),i++}}return Us(n[0],n[n.length-2],ks)&&Us(n[1],n[n.length-1],ks)&&(n.pop(),n.pop()),t&&i>1&&!(Us(n[i-1],n[1],ks)&&Us(n[i-2],n[0],ks))&&(n.push(n[0],n[1]),i++),n}var Bd=new Ce.Vector2,pP=new Ce.Vector2,fP=new Ce.Vector2,mP=new Ce.Vector2,hP=new Ce.Vector2,yP=new Ce.Vector2,Ae=class extends Ce.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ce.Plane(new Ce.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ce.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ae;return i.isClosed=e.isClosed,i.points=e.points.map(s=>br.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Ae.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=e-t;if(a<=s.points.length-1)return s.points[a];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return t+a;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Bd.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ce.MathUtils.generateUUID()){let i;e instanceof Ce.Vector2?i=e:i=new Ce.Vector2(e,t);let s=new br(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Yh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Dd(this.points,e,!1),this.roundedCurveDivisions=Dd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Xh(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Kh(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=Vo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(Ld(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Bd.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=a[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Ld(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],a=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,l=a&&c&&Uh(a,s,c);if(!s.controlsMoved()&&u>0&&!l){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),x=Math.min(u,y*.499),b=Math.min(g,x),w=1-b/h,S=b/y,P=d.getPointAt(w,Bd),_=p.getPointAt(S,pP);this._subSplitCurve(d,f,w,P,void 0),this._subSplitCurve(p,m,S,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=Ed(P,s.position,_)/2,T=Math.tan(N)*P.distanceTo(s.position),[C,O]=Hh(P,_,T,fP,mP),A=Wh(C,O,s.position),[R,U]=qh(A,P,_,T,hP,yP);v=new Ce.CubicBezierCurve(P.clone(),R.clone(),U.clone(),_.clone())}else v=new Ce.QuadraticBezierCurve(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Ce.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,c=t,u=a.getUtoTmapping(o,0),l=$h(a.v0,a.v1,a.v2,a.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Ae(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new br(Ce.MathUtils.generateUUID(),new Ce.Vector2(s,a));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ae;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ce.CubicBezierCurve&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Ce.QuadraticBezierCurve&&(i[a]=kh(i[a]));for(a=0,c=i.length;a<c;a++){let d=i[a],p=a>0?i[a-1]:null,f;d instanceof Ce.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Ce.LineCurve&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],l=!1;return u instanceof Ce.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),l=!0):u instanceof Ce.LineCurve&&u.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Ce.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Ae;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Gd=Math.PI*2;function Rd({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function gP(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Zh(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function xP(n,r,e,t,o,i,s,a,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(a,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*a,y=m*-i/o*s,g=h+(n+e)/2,x=y+(r+t)/2,b=(s-h)/o,w=(a-y)/i,S=(-s-h)/o,P=(-a-y)/i,_=Zh(1,0,b,w),v=Zh(b,w,S,P);return!u&&v>0&&(v-=Gd),u&&v<0&&(v+=Gd),{centerx:g,centery:x,ang1:_,ang2:v}}function Qh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=xP(n,r,e,t,o,i,u,l,s,a),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Gd/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let b=0;b<x;b++)c.push(gP(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Rd(b[0],o,i,h,y),{x:P,y:_}=Rd(b[1],o,i,h,y),{x:v,y:N}=Rd(b[2],o,i,h,y);return{x1:w,y1:S,x2:P,y2:_,x:v,y:N}})}var un=require("three");var Pe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Pe||(Pe={}));var Ye;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ye||(Ye={}));function pe(n,r){if(!n)throw r||"Assertion Failed!"}var ce=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,a,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),Hs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Hl=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),bi=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),Jh=function(){function n(){var r=new bi,e=new Hs,t=new Hl(0),o=new Hl(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Hl(0),t=new Hl(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new bi,e=new bi,t=new Hs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new bi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Hs;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new Hs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new bi;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new Hs;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,a=r.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=r&&ce.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ce.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,a,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){pe(o.prev===i),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)pe(c.Sym.next===u.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),ey=function(){function n(){this.handle=null}return n}(),ty=function(){function n(){this.key=null,this.node=0}return n}(),vP=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new ey,this.handles[t]=new ty;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,pe(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new ey;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new ty}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Vd=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),ry=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),bP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new ry,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new ry;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),SP=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?ce.vertLeq(i.Org,s.Org)?ce.edgeSign(s.Dst,i.Org,s.Org)<=0:ce.edgeSign(i.Dst,s.Org,i.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(i.Dst,o,i.Org)>=0;var a=ce.edgeEval(i.Dst,o,i.Org),c=ce.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Vd;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,c,u,l,d=!0;u=t;do pe(ce.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),u=a.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),a.windingNumber=c.windingNumber-u.winding,a.inside=n.isWindingInside(r,a.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=a,l=u;c.dirty=!0,pe(c.windingNumber-u.winding===a.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ce.vertL1dist(e,r),i=ce.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ce.vertLeq(o.Org,i.Org)){if(ce.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ce.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ce.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(pe(!ce.vertEq(o.Dst,i.Dst)),ce.vertLeq(o.Dst,i.Dst)){if(ce.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ce.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,a=i.Org,c=o.Dst,u=i.Dst,l,d,p=new bi,f,m;if(pe(!ce.vertEq(u,c)),pe(ce.edgeSign(c,r.event,s)<=0),pe(ce.edgeSign(u,r.event,a)>=0),pe(s!==r.event&&a!==r.event),pe(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),d=Math.max(a.t,u.t),l>d))return!1;if(ce.vertLeq(s,a)){if(ce.edgeSign(u,s,a)>0)return!1}else if(ce.edgeSign(c,a,s)<0)return!1;return n.debugEvent(r),ce.intersect(c,s,u,a,p),pe(Math.min(s.t,c.t)<=p.t),pe(p.t<=Math.max(a.t,u.t)),pe(Math.min(u.s,c.s)<=p.s),pe(p.s<=Math.max(a.s,s.s)),ce.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ce.vertLeq(s,a)?s:a,ce.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ce.vertEq(p,s)||ce.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!ce.vertEq(c,r.event)&&ce.edgeSign(c,r.event,p)>=0||!ce.vertEq(u,r.event)&&ce.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ce.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ce.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,a,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),a=e.eUp,c=s.eUp,u=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(r,e),ce.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ce.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ce.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,a,c;if(o=e.eUp,ce.vertEq(o.Org,t)){pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ce.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}pe(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(pe(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ce.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,c,u=new Vd;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ce.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=r.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);pe(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Vd,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new bP(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++t===1)),pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ce.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new vP(i,ce.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ce.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),wP=function(){function n(){this.mesh=new Jh,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=Pe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,a,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ce.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ce.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ce.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ce.edgeGoesLeft(o.Lnext)||ce.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ce.edgeGoesRight(t.Lprev)||ce.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,a=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ye.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Ye.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,l=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Jh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=Pe.ODD),e===void 0&&(e=Ye.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),SP.computeInterior(this,s);var a=this.mesh;return e===Ye.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ye.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function Sr(n){var r=n.windingRule,e=r===void 0?Pe.ODD:r,t=n.elementType,o=t===void 0?Ye.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new wP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,s,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var ZG=Pe.ODD,QG=Pe.NONZERO,JG=Pe.POSITIVE,eV=Pe.NEGATIVE,tV=Pe.ABS_GEQ_TWO,rV=Ye.POLYGONS,oV=Ye.CONNECTED_POLYGONS,nV=Ye.BOUNDARY_CONTOURS;var dn=require("three");var Wl=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Wl.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Wl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Ws=Wl;Ws.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var qs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},jd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Fd={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},zd=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Si=class extends dn.BufferGeometry{constructor(e,t,o=0,i=12,s=3,a=Pe.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let v=_.extractShapePointsToFlatArray([],i),N=[];for(let T=v.length-1;T>=1;T-=2){let C=v[T-1],O=v[T-0];N.push(C,O)}return N}),l;try{l=Sr({windingRule:a,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{l=qs}let d;try{d=Sr({windingRule:Pe.ODD,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=jd}if(!l)throw new Error("error generating geometry");let p=l.elementCount;if(d){l.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let v=d.elements[_],N=_%2===0?l.vertexCount:0;l.elements.push(v+N)}for(let _=0;_<d.vertexIndices.length;_++){let v=d.vertexIndices[_],N=l.vertexCount;l.vertexIndices.push(v+N)}for(let _=0;_<d.vertices.length;_++){let v=d.vertices[_];l.vertices.push(v)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,v=l.vertexCount;_<v;_++){let N=_*2,T=l.vertices[N+0],C=l.vertices[N+1];T<f&&(f=T),T>m&&(m=T),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Ws(this._computeBufferEstimatedSize(l));let g=[],x=[];for(let _=l.elementCount-1;_>=0;_--){let v=_>=p,N=_*2,T=l.elements[N+0],C=l.elements[N+1],O=T+C,A={start:T,count:C,normals:[],continuous:[],concave:[]},R=T,U=O-1,$=T+1,ee=this._shape.roundedCurves.length;do{let V=R-T,G=l.vertices[U*2+0],D=l.vertices[U*2+1],L=l.vertices[R*2+0],B=l.vertices[R*2+1],X=l.vertices[$*2+0],W=l.vertices[$*2+1],j=L-G,F=B-D,M=Math.sqrt(j*j+F*F);j/=M,F/=M;let Q=L-X,re=B-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=j*re-F*Q>0;let K=l.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[te,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let se=J===1?te+1:te-1;se=(se+ee)%ee;let de=J===1?0:1,ae=this._shape.roundedCurves[te].getTangent(J),me=this._shape.roundedCurves[se].getTangent(de);A.continuous[V]=ae.dot(me)>.95}}v&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[U,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==T+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(T*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(T*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,D=(1-Math.cos(G))*this._bevelSize,L=[],B=[],X=[],W=[],j=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=l.vertices[A.start*2+Q+0],K=l.vertices[A.start*2+Q+1],te=-A.normals[re+0]*D,J=-A.normals[re+1]*D,se=-A.normals[Q+0]*D,de=-A.normals[Q+1]*D;if(A.concave[M]||!A.concave[M]&&v){let ae=Math.atan2(J,te),me=Math.atan2(de,se);me>ae&&(me-=Math.PI*2);let Ke=me-ae;if(A.continuous[M]||v){let ve=ae+Ke/2,it=Math.cos(ve)*D,Me=Math.sin(ve)*D;L[2*j+0]=oe+it*(v?-1:1),L[2*j+1]=K+Me*(v?-1:1),W[j]=M,j++}else{let ve=Math.max(1,Math.floor(i/4*Math.abs(Ke)/Math.PI));for(let it=0;it<=ve;it++){let Me=ae+Ke*(it/ve),zt=Math.cos(Me)*D,sr=Math.sin(Me)*D;L[2*j+0]=oe+zt,L[2*j+1]=K+sr,W[j]=M,j++}}}else L[2*j+0]=oe+te,L[2*j+1]=K+J,W[j]=M,B[M]=j,j++,L[2*j+0]=oe,L[2*j+1]=K,W[j]=M,j++,L[2*j+0]=oe+se,L[2*j+1]=K+de,W[j]=M,X[M]=j,j++}let F=Sr({windingRule:Pe.POSITIVE,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],K=W[(re+1)%W.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let M=0;M<F.vertexIndices.length;M++){let[Q,re]=F.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let te=K%C,J=(K+1)%C;if(!A.continuous[te]||!A.continuous[J]){F.vertexIndices[M]=[Q,te],F.vertexIndices.splice(M+1,0,[J,re]),F.vertices.splice((M+1)*2,0,F.vertices[M*2],F.vertices[M*2+1]);break}}}Y.push({bevelI:V,angle:G,size:D,boundary:F,reverseMap:W,insetPoints:L})}let q=(V,G,D)=>{let L=0,B=V.boundary.vertexIndices.length;for(;L<B&&D(V.boundary.vertexIndices[G]);)G=(G+1)%B,L++;return L},H=g.length;for(let V=1;V<Y.length;V++){let G=Y[V-1],D=Y[V],L=G.boundary.vertexIndices.length,B=D.boundary.vertexIndices.length;if(!L||!B)break;let X=A.concave.length,W=0,j=zd(W,C);for(;!G.boundary.vertexIndices.filter(j).length||!D.boundary.vertexIndices.filter(j).length;)W++,j=zd(W,C);let F=G.boundary.vertexIndices.findIndex(j),M=D.boundary.vertexIndices.findIndex(j);do F=(F+1)%L;while(j(G.boundary.vertexIndices[F]));do M=(M+1)%B;while(j(D.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(F-1+L)%L),oe=this._buildBevelVert(A,D,(M-1+B)%B),K=re,te=oe,J,se,de=!1;do{j=zd(W,C);let ae=q(G,F,j),me=q(D,M,j),Ke=de;if(de=!1,ae&&!me){for(let ve=0;ve<ae;ve++)J=this._buildBevelVert(A,G,(F+ve)%L,ve/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J;de=!0}else if(!ae&&me)for(let ve=0;ve<me;ve++)se=this._buildBevelVert(A,D,(M+ve)%B,ve/(me-1)),g.push(te.topN,K.topP,se.topP),g.push(K.bottomP,te.bottomN,se.bottomP),te=se;else if(ae&&me)if(J=this._buildBevelVert(A,G,F,0),se=this._buildBevelVert(A,D,M,0),Ke?(g.push(K.topN,se.topP,te.topN),g.push(K.topN,J.topP,se.topP),g.push(se.bottomP,K.bottomN,te.bottomN),g.push(se.bottomP,J.bottomP,K.bottomN)):(g.push(te.topN,K.topN,J.topP),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP)),K=J,te=se,ae===me)for(let ve=1;ve<ae;ve++)J=this._buildBevelVert(A,G,(F+ve)%L,ve/(ae-1)),se=this._buildBevelVert(A,D,(M+ve)%B,ve/(me-1)),g.push(K.topN,J.topP,te.topN),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP),K=J,te=se;else if(ae>me){let ve=ae/me,it=0;for(let Me=1;Me<ae;Me++)J=this._buildBevelVert(A,G,(F+Me)%L,Me/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J,Me>(it+1)*ve&&(it++,se=this._buildBevelVert(A,D,(M+it)%B,it/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se)}else{let ve=me/ae,it=0;for(let Me=1;Me<me;Me++)se=this._buildBevelVert(A,D,(M+Me)%B,Me/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se,Me>(it+1)*ve&&(it++,J=this._buildBevelVert(A,G,(F+it)%L,it/(ae-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J)}F=(F+ae)%L,M=(M+me)%B,W=(W+1)%X}while(W!==Q)}if(this._depth>this._bevel*2&&this._buildWall(Y,A,g),v){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let D=g[G-2],L=g[G-1],B=g[G-0];V.push(B,L,D)}g.splice(H,g.length-H,...V)}if(v){let V=[];for(let G=Y[Y.length-1].boundary.vertices.length-1;G>=1;G-=2){let D=Y[Y.length-1].boundary.vertices[G-1],L=Y[Y.length-1].boundary.vertices[G-0];V.push(D,L)}x.push(V)}if(!v){let V=Y[Y.length-1],G;try{G=Sr({windingRule:Y.length>1?Pe.POSITIVE:Pe.ODD,elementType:Ye.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...x]})}catch{G=Fd}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let D=0;D<G.elementCount*3;D+=3){let L=this._buildSurfaceVert(G,G.elements[D+0]),B=this._buildSurfaceVert(G,G.elements[D+1]),X=this._buildSurfaceVert(G,G.elements[D+2]);g.push(L.top,B.top,X.top),g.push(X.bottom,B.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new dn.BufferAttribute(Uint32Array.from(g),1),w=new dn.BufferAttribute(this._buffer.positions,3),S=new dn.BufferAttribute(this._buffer.normals,3),P=new dn.BufferAttribute(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,P.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",P),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),l=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[d+0]=a,this._buffer.uvs[d+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[d+2]=a,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=t.boundary.vertexIndices[o],u,l,d,p;a!==c?(l=a,u=c,p=!1,d=e.continuous[l]&&e.continuous[u]):(u=a,l=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=l*2,x=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(x-this._minX)/this._width,P=(b-this._minY)/this._height,_=e.normals[y+0],v=e.normals[y+1],N=e.normals[g+0],T=e.normals[g+1];if(p){let U=N-_,$=T-v;_=_+U*(1-i),v=v+$*(1-i);let ee=Math.sqrt(_*_+v*v);_/=ee,v/=ee}let C=this._buffer.get(d?2:4),O=C*3,A=C*2,R={i:o,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=v*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=v*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S,d||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=T*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=T*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new Si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=so(this.userData),e}};var wi=class extends un.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=Ye.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:Ye.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{a=Sr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{a=qs}let p=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new un.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new un.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new un.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new un.BufferAttribute(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1],N=(_-m)/x,T=(v-y)/b;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,T)}for(let w=0,S=f;w<S;w++){let P=w*3,_=a.elements[P+0],v=a.elements[P+1],N=a.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,v),this._indexAttribute.setX(P+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new wi(this._shape,this._curveSegments);return e.userData=so(this.userData),e}};var _i=class extends Si{constructor(e,t,o=0,i=12,s=3,a=Pe.ODD){super(e,t,o,i,s,a);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new _i(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=so(this.userData),e}};var Wt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Pe.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ae?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Ae(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Ae(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let a;return r<=0?a=new wi(n.shape,o,{windingRule:s}):a=new _i(n.shape,r,e,o,t,s),Object.assign(a,{userData:{...n,type:"VectorGeometry"}})}};var Ti=require("three"),ny=Math.PI*2,Oi=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=_P(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Wt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function _P(n,r,e,t,o,i){if(t>=ny)return o>30||o%4===0?(TP(n,r,e,i),Math.round(o/4)):oy(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},a=t+Math.PI*.5,c={x:Math.cos(a)*r,y:Math.sin(a)*e},u=Qh({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?PP(n,s.x,s.y,u,o,r,e,i):oy(n,t,o,r,e,i)}function PP(n,r,e,t,o,i,s,a){let c=Math.round(o/t.length);n.addPoint(Pi(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=Pi(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return a>0?iy(n,i,s,a):n.addPoint(Pi(0,0)),c}function oy(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let c=s*a,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(Pi(u,l))}return r<ny?i>0?iy(n,t,o,i):n.addPoint(Pi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&sy(n,t,o,i)),1}function TP(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,c=e*s;n.addPoint(ql(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(ql(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(ql(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(ql(o,i-e,o+a,i-e,o-a,i-e)),t>0&&sy(n,r,e,t)}function Pi(n,r){return new br(Ti.MathUtils.generateUUID(),new Ti.Vector2(n,r))}function ql(n,r,e,t,o,i){let s=Pi(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function iy(n,r,e,t){ay(n,r,e,t).forEach(i=>n.addPoint(i))}function sy(n,r,e,t){let o=ay(n,r,e,t),i=new Ae;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function ay(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Ti.Vector2(o/r,i/e),a=n.points.map(c=>{let u=c.clone();return u.uuid=Ti.MathUtils.generateUUID(),u}).reverse();return a.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),a}var wr=require("three"),ly=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new $s(!1,r,e,t,o,i,s,a,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},kd=new wr.Uint32BufferAttribute([0,0,0],1),$s=class extends wr.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,c=1,u=1,l=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new wr.Vector3,h=new wr.Vector3,y=m(),g=m(),x=m(),b,w,S,P,_,v,N,T,C=m(),O=m(),A=m(),R=m(),U=m(),$=m(),ee=m(),Y=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(a*s),G=V+1,D=q/V,L=-q/2,B=l+1,X=2*Math.PI/l,W=Math.PI/2/p,j=.01,F=Math.min((1-d/100)*c,c-j),M=c-F,Q=0,re=2,oe=p*re+re,K=B*oe/re,te=K+B*G,J=B*(G+oe),[se,de,ae]=[3,3,2].map(rt=>Array(J*rt).fill(0)),me=[],Ke=i-c;function ve(rt,Qt){let Ir=Math.PI/2;v=Qt*D,T=2*Math.PI*(v%H)/H+Ir,v+=L,N=Math.sin(T)*Ke,_=Math.cos(T)*Ke,r?rt.set(_,N,v):rt.set(_,v,N)}ve(h,-1e-10),ve(y,0),C.copy(h),ve(h,1);let it=h.distanceTo(y),Me=f?0:M+F,zt=it*V+2*Me,sr=F,An=zt-Me;for(let rt=0;rt<=V;rt++){ve(g,rt),Y.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),ee.crossVectors(Y,$).normalize();let Qt=rt===0,Ir=rt===V,C0=Qt?3*Math.PI/2:W,N0=Qt?sr:An,I0=Qt?B:te,M0=Qt?0:J-B,E0=Y.clone().multiplyScalar(Qt?-M:M).add(g),L0=Y.clone().multiplyScalar(Qt?-1:1).normalize();for(let to=0;to<B;to++){let Fu=to*X;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(Fu)),y.copy(ee).multiplyScalar(c*Math.sin(Fu))),A.copy(O).normalize(),Qt||Ir){f||(Q=M0+to,[0,1,2].forEach(jt=>{se[Q*3+jt]=E0.getComponent(jt),de[Q*3+jt]=L0.getComponent(jt)}),ae[Q*2]=+Ir,ae[Q*2+1]=to/l),y.copy(A).multiplyScalar(F),x.addVectors(g,y);for(let jt=0;jt<p;jt++){let jc=jt*W+C0;R.addVectors(h.copy(Y).multiplyScalar(M*Math.sin(jc)),y.copy(A).multiplyScalar(M*Math.cos(jc))),U.copy(R).normalize(),y.addVectors(x,R),R.normalize(),Q=I0+jt*B+to,[0,1,2].forEach(Ia=>{se[Q*3+Ia]=y.getComponent(Ia),de[Q*3+Ia]=U.getComponent(Ia)});let D0=+Qt+Math.sin(jc);ae[Q*2]=(N0+M*D0)/zt,ae[Q*2+1]=to/l}}y.addVectors(g,O),Q=K+rt*B+to,[0,1,2].forEach(jt=>{se[Q*3+jt]=y.getComponent(jt),de[Q*3+jt]=A.getComponent(jt)}),ae[Q*2]=(Me+rt*it)/zt,ae[Q*2+1]=to/l}}let Zt=G+2*p+re,Aa=1,[Ca,Na]=[+f,Zt-1];for(let rt=Ca;rt<=Na-1;rt++){let Qt=f&&rt===Na-1;for(let Ir=0;Ir<B-1;Ir++)b=rt*B+Ir,w=b+1,S=(Qt?Ir:b)+B,P=(Qt?Ir+1:w)+B,rt===0?me.push(w,P,S):rt===Zt-2?me.push(b,w,S):me.push(b,w,S,w,P,S)}this.setIndex(me),this.setAttribute("position",new wr.Float32BufferAttribute(se,3)),this.setAttribute("normal",new wr.Float32BufferAttribute(de,3)),this.setAttribute("uv",new wr.Float32BufferAttribute(ae,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,a,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,s=i+1,a=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=a,o[u++]=s,o[u++]=c,o[u++]=a;return o.length=u,kd.array=o,kd.count=o.length,kd}};var cy=require("three");var dy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Ys(r*.5,i,s):new cy.IcosahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Ys=class extends Go{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new Ys(r.radius,r.corner,r.cornerSides)}};var $l=require("three"),uy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new $l.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new $l.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var kr=require("three");var mo=require("three");var ie=require("three"),Fr=new ie.Matrix4,Ud=new ie.Object3D,Yl=new ie.Vector3,zo=class extends ie.EventDispatcher{constructor(){super(),this.uuid=ie.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new ie.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Fr.makeRotationX(r),this.applyMatrix4(Fr),this}rotateY(r){return Fr.makeRotationY(r),this.applyMatrix4(Fr),this}rotateZ(r){return Fr.makeRotationZ(r),this.applyMatrix4(Fr),this}translate(r,e,t){return Fr.makeTranslation(r,e,t),this.applyMatrix4(Fr),this}scale(r,e,t){return Fr.makeScale(r,e,t),this.applyMatrix4(Fr),this}lookAt(r){return Ud.lookAt(r),Ud.updateMatrix(),this.applyMatrix4(Ud.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,a=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new ie.Vector3().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new ie.Color().fromBufferAttribute(a,p));function l(p,f,m,h){let y=a===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ie.Vector3().fromBufferAttribute(s,p),new ie.Vector3().fromBufferAttribute(s,f),new ie.Vector3().fromBufferAttribute(s,m)],x=new Ai(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new ie.Vector2().fromBufferAttribute(c,p),new ie.Vector2().fromBufferAttribute(c,f),new ie.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new ie.Vector2().fromBufferAttribute(u,p),new ie.Vector2().fromBufferAttribute(u,f),new ie.Vector2().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Yl).negate(),this.translate(Yl.x,Yl.y,Yl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new ie.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new ie.Vector3,e=new ie.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,a),e.subVectors(s,a),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new ie.Vector3;if(r){let t=new ie.Vector3,o=new ie.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],u=this.vertices[a.b],l=this.vertices[a.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new zo;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let u=new ie.Vector3,l={a:new ie.Vector3,b:new ie.Vector3,c:new ie.Vector3};i.push(u),s.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ie.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ie.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,a=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new ie.Matrix3().getNormalMatrix(e));for(let p=0,f=a.length;p<f;p++){let h=a[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,b=new Ai(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=x.length;w<S;w++)y=x[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++)x.push(g[b].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ie.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),a&&a.push(i[u])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],a={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,b),_=l(_,5,w),_=l(_,6,S),_=l(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(b&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(S&&t.push(p(h.color)),P){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new zo().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];x.push(S.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let a=r.skinWeights;for(let p=0,f=a.length;p<f;p++)this.skinWeights.push(a[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Hd().fromGeometry(this),e=new ie.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Xl.call(new ie.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Xl.call(new ie.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",py.call(new ie.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",fy.call(new ie.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",fy.call(new ie.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let u=s[a],l=new ie.Float32BufferAttribute(u.data.length*3,3);l.name=u.name,i.push(Xl.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ie.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",my.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ie.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",my.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new ie.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new ie.Float32BufferAttribute(t.vertices.length*3,3),i=new ie.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Xl.call(o,t.vertices)),e.setAttribute("color",py.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ie.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",OP.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};zo.prototype.isGeometry=!0;var Hd=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=r.morphTargets,c=a.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:a[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let b=x.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=x.normal;this.normals.push(S,S,S)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=x.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ie.Vector2,new ie.Vector2,new ie.Vector2))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ie.Vector2,new ie.Vector2,new ie.Vector2))}for(let S=0;S<c;S++){let P=a[S].vertices;u[S].data.push(P[x.a],P[x.b],P[x.c])}for(let S=0;S<d;S++){let P=l[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Ai=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ie.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ie.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function OP(n){return this.array.set(n),this}function py(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new ie.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function fy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ie.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Xl(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new ie.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function my(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new ie.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var AP=["a","b","c"];function CP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Wd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function qd(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),c=s+"_"+a,u;if(t.has(c))u=t.get(c);else{let l=e[s],d=e[a];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function NP(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],qd(s.a,s.b,n,t,s,e),qd(s.b,s.c,n,t,s,e),qd(s.c,s.a,n,t,s,e)}function Kl(n,r,e,t,o){n.push(new Ai(r,e,t,void 0,void 0,o))}function Ci(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Zl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ql=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof mo.BufferGeometry?r=new zo().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new mo.Vector3,t,o,i,s,a,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;NP(c,u,p,f);let m=[],h,y,g,x,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new mo.Vector3,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(x=y.faces[s],a=0;a<3&&(h=c[CP(x,AP[a])],!(h!==y.a&&h!==y.b));a++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,v,N,T,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],T=p[o].edges,t=T.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),v=P,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=T[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,$,ee,Y,q=[],H=[],V,G,D,L,B=new mo.Vector2,X=new mo.Vector2,W=new mo.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(Wd(x.a,x.b,f).newEdge)+U,ee=Number(Wd(x.b,x.c,f).newEdge)+U,Y=Number(Wd(x.c,x.a,f).newEdge)+U,Kl(q,$,ee,Y,x.materialIndex),Kl(q,x.a,$,Y,x.materialIndex),Kl(q,x.b,ee,$,x.materialIndex),Kl(q,x.c,Y,ee,x.materialIndex),d&&(V=l[o],G=V[0],D=V[1],L=V[2],B.set(Ci(G.x,D.x),Ci(G.y,D.y)),X.set(Ci(D.x,L.x),Ci(D.y,L.y)),W.set(Ci(G.x,L.x),Ci(G.y,L.y)),Zl(H,B,X,W),Zl(H,G,B,W),Zl(H,D,X,B),Zl(H,L,W,X));r.vertices=R,r.faces=q,d&&(r.faceVertexUvs[0]=H)}};var dt=new kr.Vector3,hy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new kr.BufferGeometry().copy(new kr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(dt),t={width:dt.x,height:dt.y,depth:dt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new kr.BufferGeometry().copy(new kr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(dt)):dt.set(s.width,s.height,s.depth),(r!==dt.x||e!==dt.y||t!==dt.z)&&i.scale(dt.x===0?1:r/dt.x,dt.y===0?1:e/dt.y,dt.z===0?1:t/dt.z);let a=i.originalGeometry;try{o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Ql(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new kr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(dt);let s=100/dt.x;Object.assign(i.parameters,{width:100,height:dt.y*s,depth:dt.z*s}),r(this.build(i))})}};var Jl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Wt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var _e=require("three"),yy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:c}=n.parameters,u=new Yd(r*.5,e,o,i,s,a,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Xs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function $d(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let u=s.add(a).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(a,t/Math.sin(u))}}function IP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Yd=class extends _e.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,b=new _e.Vector3(0,-f,0),w=new _e.Vector3(0,f,0),S=new _e.Vector2(r,-f),P=new _e.Vector2(h,-f),_=new _e.Vector2(0,w.y).sub(P),v=new _e.Vector2(0,w.y).sub(S),N=new _e.Vector2(_.y,-_.x).normalize(),T=new _e.Vector2(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new _e.Vector3(N.x,N.y,0),V=new _e.Vector3(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),$=new _e.Vector3;if(!i){u.push(b.x,b.y,b.z),l.push(0,-1,0),d.push(0,0);let H=p++,V=[],G=S.clone(),D=R/Math.cos(Math.PI/t);G.x-=D;for(let L=0;L<t;L++){let B=L/t*Math.PI*2+m,X=new _e.Vector2(Math.sin(B),Math.cos(B));Xs(G,X,$),u.push($.x,$.y,$.z),l.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let ee=[];{let H=new _e.Vector3,V=new _e.Vector3,G=new _e.Vector3,D=new _e.Vector3,L=new _e.Vector3,B=new _e.Vector3;for(let X=0;X<t;X++){let W=X/t*Math.PI*2+m,j=(X+.5)/t*Math.PI*2+m,F=(X+1)/t*Math.PI*2+m,M=new _e.Vector2(Math.sin(W),Math.cos(W)),Q=new _e.Vector2(Math.sin(j),Math.cos(j)),re=new _e.Vector2(Math.sin(F),Math.cos(F));Xs(S,M,V),Xs(S,re,G),Xs(N,Q,H),$d(w,V,G,U,U,D),u.push(D.x,D.y,D.z),$d(V,w,G,U,R,L),u.push(L.x,L.y,L.z),$d(G,V,w,R,U,B),u.push(B.x,B.y,B.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,K=p++,te=p++;if(c.push(oe,K,te),s>0){{let de=V.clone().add(G).multiplyScalar(.5),ae=w.clone().sub(de).normalize(),Ke=b.clone().sub(de).normalize().add(ae).normalize().multiplyScalar(-1),ve=B.clone().sub(L);Y(de,ve,Ke,_.angle())}let J,se;{let de=new _e.Vector3;Xs(T,re,de);let ae=B.clone().add(D).multiplyScalar(.5);ae=IP(ae,G,w);let me=B.clone().sub(D);[J,se]=Y(ae,me,de,A,D.y)}{let de=J,ae=de.clone().setY(0).normalize(),me=new _e.Vector3(0,-1,0),Ke=ae.clone().cross(me);q(de,ae,me,Ke)}ee.concat(se);{let de=_.angle(),ae=Math.PI-de,me=w.clone();me.y-=s/Math.sin(de-Math.PI/2);let Ke=new _e.Vector3,ve=[];for(let Me=0;Me<a;Me++){let zt=[],sr=Math.PI/2-ae*Me/a,An=Math.cos(sr),Zt=Math.sin(sr),Aa=j;for(let Ca=0;Ca<=Me;Ca++){let Na=Math.cos(Aa),rt=Math.sin(Aa);H.x=An*rt,H.y=Zt,H.z=An*Na,Ke.copy(me).addScaledVector(H,s),u.push(Ke.x,Ke.y,Ke.z),l.push(H.x,H.y,H.z),d.push(0,0),zt.push(p++),Aa+=Math.PI*2/Me/t}ve.push(zt)}se.reverse(),ve.push(se);let it=ve.length-1;for(let Me=0;Me<it;Me++){let zt=ve[Me],sr=ve[Me+1],An=zt.length-1;c.push(sr[1],zt[0],sr[0]);for(let Zt=1;Zt<=An;Zt++)c.push(zt[Zt],zt[Zt-1],sr[Zt]),c.push(sr[Zt+1],zt[Zt],sr[Zt])}}}}}this.setIndex(c),this.setAttribute("position",new _e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new _e.Float32BufferAttribute(l,3)),this.setAttribute("uv",new _e.Float32BufferAttribute(d,2));function Y(H,V,G,D,L){let B=-D/2,X=(Math.PI-D)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(X));let j=new _e.Vector3,F=new _e.Vector3,M=1,Q=p,re=[];for(let oe=0;oe<=a;oe++){let K=B+oe/a*D;F.set(0,0,0),F.addScaledVector(W,Math.sin(K)),F.addScaledVector(G,Math.cos(K));for(let te=0;te<=M;te++){let J=te/M-.5;if(j.copy(H),j.addScaledVector(V,J),j.addScaledVector(F,s),L!=null){let se=Math.max(0,j.y-L);j.addScaledVector(V,-se/V.y)}u.push(j.x,j.y,j.z),l.push(F.x,F.y,F.z),d.push(0,0),te===0&&re.push(p),p++}}for(let oe=0;oe<a;oe++)for(let K=0;K<M;K++){let te=Q+K+(M+1)*oe,J=te+(M+1),se=J+1,de=te+1;c.push(te,J,de),c.push(J,se,de)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,D){let L=Math.PI/2,B=v.angle()-L,X=[],W=new _e.Vector3,j=new _e.Vector3;for(let M=0;M<=a;M++){let Q=[],re=M/a;for(let oe=0;oe<=M;oe++){let te=((M?oe/M:0)-.5)*x,J=Math.cos(te),se=Math.sin(te),de=Math.atan(Math.tan(B)*J),ae=(L+de)*re,me=Math.cos(ae),Ke=Math.sin(ae);W.set(0,0,0),W.addScaledVector(V,Ke*J),W.addScaledVector(G,me),W.addScaledVector(D,Ke*se),j.copy(H).addScaledVector(W,s),u.push(j.x,j.y,j.z),l.push(W.x,W.y,W.z),d.push(0,0),Q.push(p++)}X.push(Q)}let F=X.length-1;for(let M=0;M<F;M++){let Q=X[M],re=X[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};var ec=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,P){return S>e&&P>t?Math.min(w*e/S,w*t/P):S>e?w*e/S:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Wt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};var gy=require("three"),xy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:u}=n.parameters,l=new gy.SphereGeometry(.5*r,o,i,s,a,c,u);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var vy=require("three"),by=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new vy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var jo=require("three"),Sy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new Xd(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Xd=class extends jo.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],u=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,F=0,M=0)=>new jo.Vector3(j,F,M),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],b=-g,w=+g,[S,P,_]=[f(b,-y,+x),f(b,-y,-x),f(b,+y,-x)],v=(j,F=!1)=>Math.sin(j-Math.PI/(1+ +F)),N=(j,F=!1)=>Math.cos(j-Math.PI/(1+ +F));_.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-x,C=S.z-l;o<=p?(_.z=Math.min(T,C),_.z==C&&(_.y-=(T-C)/Math.tan(p-o))):P.z=Math.min(P.z-T-x,S.z-l),m.subVectors(S,P),h.subVectors(_,P);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(R).add(P);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let F=p+o+j*$;m.set(0,Math.sin(F)*A,Math.cos(F)*A),m.add(U),h.set(0,v(F),N(F)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let ee=Math.sin($/2)*A*2,Y=d.length-1,q=d[0][0].distanceTo(d[1][0]),H=d[Y-1][0].distanceTo(d[Y][0]),V=q+ee*s+H;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*ee)/V);d[Y].push(0);let[G,D,L]=d[0],B,X,W;for(let j=1;j<d.length;j++)[B,X,W]=d[j],a.push(b,G.y,G.z,b,B.y,B.z,w,G.y,G.z,w,G.y,G.z,b,B.y,B.z,w,B.y,B.z),c.push(0,D.y,D.z,0,X.y,X.z,0,D.y,D.z,0,D.y,D.z,0,X.y,X.z,0,X.y,X.z),u.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,D,L]=[B,X,W];this.setAttribute("position",new jo.Float32BufferAttribute(a,3)),this.setAttribute("normal",new jo.Float32BufferAttribute(c,3)),this.setAttribute("uv",new jo.Float32BufferAttribute(u,2))}};var tc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,P=f+Math.sin(S)*d,_=m+Math.cos(S)*p;l.addPoint(l.createPoint(P,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,P=m+Math.sin(y)*p;l.addPoint(l.createPoint(S,P)),y+=h,S=f+Math.cos(y)*g,P=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(S,P)),y+=h}l.isClosed=!0;for(let w=0,S=l.points.length;w<S;w++)l.points[w].roundness=i;l.roundness=i,l.update();let b=Wt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};var wy=require("three"),_y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new wy.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Py=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:c}=n.parameters,u=MP(r,e,t,r*.5,s,i,0,0,o,a,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function MP(n,r,e,t,o,i,s,a,c,u,l){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new $s(!0,n,r,e,t,o,i,s,a,c,u,l)}var Ty=require("three"),Oy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,a=r*.5;a!==e&&(a-=e);let c=new Ty.TorusKnotGeometry(a,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Ay=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5;a?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Wt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var be=require("three");function Cy(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function EP(n,r,e){let t=[new be.Vector3,new be.Vector3,new be.Vector3],o=[new be.Vector3,new be.Vector3,new be.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let a=o[s],c=be.MathUtils.lerp(i.length(),a.length(),e);i.lerp(a,e).setLength(c)}),new be.Matrix4().makeBasis(t[0],t[1],t[2])}var Ny=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Oi.create({parameters:fd}).userData.shape;return{path:n.path??ai.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Cl,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new Kd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new be.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Kd=class extends be.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Cy(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-a+1),s+2),l=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+a)%e.length:Math.min(O+a,e.length-1);l.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{l[O]=l[O].clone().lerp(l[A],R),d[O]=EP(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let O=l.length-1;l[O].copy(l[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:x,vertices:b}=this._computeShapePoints(5),w=0,S=0;x.sort((O,A)=>O.start-A.start),x.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let P=S*u,_,v=0;if(this._isOpenEnded()){try{_=Sr({windingRule:Pe.ODD,elementType:Ye.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Fd}v=_.vertexCount}let N=P+2*v,T={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];x.forEach(O=>{this._extrudeRegion(O,b,d,l,T,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,P,C,T,d[0],l[0],!1),this._closeEnd(_,P+v,C,T,d[d.length-1],l[l.length-1],!0)),this.setAttribute("position",new be.BufferAttribute(T.positions,3)),this.setAttribute("normal",new be.BufferAttribute(T.normals,3)),this.setAttribute("uv",new be.BufferAttribute(T.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=kl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new be.Vector3,a=new be.Vector3,c=new be.Vector3,u=new be.Vector3,l=new be.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(x).normalize(),S=b.clone().sub(g).normalize(),P=w.clone().add(S).normalize();c.copy(P),y===0&&(P.equals(l)||P.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(P).normalize(),v=P.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(s.copy(v),a.copy(P));let N=new be.Matrix4().makeBasis(_,v,P);t.push(N)}let d=i?a:c,p=i?s:new be.Vector3(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new be.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:a,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new be.Matrix4,d=new be.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(be.MathUtils.lerp(s,s+a,m));let h=be.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let b=y[x-1],w=y[x-0];g.push(b,w)}return g}),a;try{a=Sr({windingRule:t,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{a=qs}let c;try{c=Sr({windingRule:Pe.ODD,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=jd}if(!a)throw new Error("error generating geometry");let u=a.elementCount;if(c){a.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?a.vertexCount:0;a.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=a.vertexCount;a.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];a.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=a.vertexCount;h<y;h++){let g=h*2,x=a.vertices[g+0],b=a.vertices[g+1];x<l&&(l=x),x>d&&(d=x),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=a.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=a.elements[g+0],b=a.elements[g+1],w=x+b,S={start:x,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let P=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let T=P-x,C=a.vertices[_*2+0],O=a.vertices[_*2+1],A=a.vertices[P*2+0],R=a.vertices[P*2+1],U=a.vertices[v*2+0],$=a.vertices[v*2+1],ee=A-C,Y=R-O,q=Math.sqrt(ee*ee+Y*Y);ee/=q,Y/=q;let H=A-U,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[T*2+0]=-V,S.normals[T*2+1]=H;let D=a.vertexIndices[P];if(Array.isArray(D))S.continuous[T]=!1;else{let[L,B]=o.getCurveIndexFromVertexId(D-1,!0);if(B>0&&B<1)S.continuous[T]=!0;else{let X=B===1?L+1:L-1;X=(X+N)%N;let W=B===1?0:1,j=o.roundedCurves[L].getTangent(B),F=o.roundedCurves[X].getTangent(W);S.continuous[T]=j.dot(F)>.95}}y&&(S.normals[T*2+0]*=-1,S.normals[T*2+1]*=-1),[_,P,v]=[P,v,v+1],v>=w&&(v-=b)}while(v!==x+1)}return{regions:[i,...s],infos:m,vertices:a.vertices}}_insertVertex(e,t,o,i,s){let a=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[a+0]=s.x,e.uvs[a+1]=s.y}_extrudeRegion(e,t,o,i,s,a,c){let u=new be.Vector3,l=new be.Vector3,d=new be.Vector3,p=new be.Vector3,f=new be.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;l.set(t[S+0],t[S+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,x,d,p,f),x++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;l.set(t[S+0],t[S+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&x++;let w=b===e.count-1?0:x+1,S=y+x,P=y+w,_=g+w,v=g+x;e.isHole?a.push(S,_,P,S,v,_):a.push(S,P,_,S,_,v),x++}}}_closeEnd(e,t,o,i,s,a,c){let u=e.vertexCount,l=new be.Vector3(0,0,c?-1:1).applyMatrix4(s),d=new be.Vector3,p=new be.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(a),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}};var pn=require("three"),Iy=require("three/examples/jsm/utils/BufferGeometryUtils.js");function My(){let n=new pn.BufferGeometry;return n.setAttribute("position",new pn.BufferAttribute(new Float32Array([]),3)),n.setIndex(new pn.BufferAttribute(new Uint16Array([]),1)),n}var LP=My().attributes,DP=12,BP=1,Ni=class extends pn.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,LP),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=l===2?u.toUpperCase():l===3?u.toLowerCase():u,p=RP(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,x=f.map(S=>new Ae().fromShape(S));this.vectorShapes=x;let b=x.map(S=>Wt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:a,windingRule:s<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&s>0?BP:DP}})),w=b.length?(0,Iy.mergeBufferGeometries)(b):My();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,P])=>{this.setAttribute(S,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=yr(new pn.BufferGeometry,Ni.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function RP(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
2
  `?(t[t.length-1]+=o,o="",i===`
3
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var Ve=require("three");var ay,hi=new Promise(n=>{ay=n});var ly=Dn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.384/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});ay(i)});var cy=require("three");function Zo(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Oe.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new cy.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new ot(n,e);if(n.type==="TextGeometry")return new mi(n,r)}let o;try{o=Td(t)}catch(i){console.error(i)}if(!o){let i=Oe.createFromState(qn.defaultData(),100,100);t.shape=i,o=Td(t)}return o}var dy=require("three"),oP=new dy.Matrix4;function Ds(n,r,e,t){let o=n.position.array,i=n.normal.array,s=oP.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Dl=new Ve.Box3,yi=new Ve.Vector3,ue;hi.then(n=>{ue=n});var uy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),py=new Uint32Array([0,1,2,3]),fy=new Uint8Array([4]),ot=class extends Ve.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=bo.div(t,o);this.subdividedGeometry&&Ds(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ds(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(yi.fromArray(i));let l=yi.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=ot.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new Ve.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(ot.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ve.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Dl.setFromBufferAttribute(t),Dl.getCenter(o),e.boundingSphere.radius=o.distanceTo(Dl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Dl.getSize(yi);let i={width:yi.x,height:yi.y,depth:yi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(ue.free_bvh(t),ue.free_subdivision_surface(t));try{s=ot.allocate(e,i)}catch(a){console.error(a,e),s=ot.allocate({positionWASM:uy,indexWASM:py,verticesPerFaceWASM:fy},i)}if(ue.set_destination_refinement_level(s,0),l=ot.buildLevel(s,!0,u),e.subdivisions>0)try{ue.set_destination_refinement_level(s,e.subdivisions),c=ot.buildLevel(s,!1,u)}catch{try{ue.set_destination_refinement_level(s,e.subdivisions-1),c=ot.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:Zo(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let l,c,u,a;({positions:l,triIndices:a}=Cd(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=Id(l,a,i,d),{positions:l,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=uy,i=py,s=fy);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(m),v=new Float32Array(ue.HEAPF32.buffer,g,p),b=new Uint32Array(ue.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new Ve.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?ue.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):ue.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return ue._free(g),S}static buildLevel(e,t,o,i,s){let l=s?ue.get_mesh_data2(e,t?ue.Level.CONTROL:ue.Level.REFINED,o,s.elements):ue.get_mesh_data(e,t?ue.Level.CONTROL:ue.Level.REFINED,o),c=8,u=ue.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=ue.HEAPU32[u[d]>>2],f=ue.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=ue.HEAPU32[u[d]>>2],h=ue.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=ue.HEAPU32[u[d]>>2],g=ue.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=ue.HEAPU32[u[d]>>2],b=ue.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let w=new Ve.BufferGeometry;if(w.setIndex(new Ve.Uint32BufferAttribute(b,1)),w.setAttribute("position",new Ve.Float32BufferAttribute(f,3)),w.setAttribute("normal",new Ve.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new Ve.Uint32BufferAttribute(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new Ve.BufferAttribute(S,4))}return ue.free_mesh_data(l),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ue.free_mesh_data(l)}static freeSubdivPointer(e){ue.free_bvh(e),ue.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ue.get_wireframe_data_for_base_level(e),s=4,l=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=ue.HEAPU32[l[u]>>2],d=ue.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ue.HEAPU32[l[u]>>2],f=ue.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Ve.BufferGeometry;m.setAttribute("position",new Ve.Float32BufferAttribute(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new Ve.BufferAttribute(h,3)),m.setIndex(new Ve.Uint32BufferAttribute(f,1)),ue.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ue.set_destination_refinement_level(e,t);let s=o?ue.get_topological_data2(e,i?ue.Level.CONTROL:ue.Level.REFINED,o.elements):ue.get_topological_data(e,i?ue.Level.CONTROL:ue.Level.REFINED),l=6,c=ue.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=ue.HEAPU32[c[a]>>2],p=new Float32Array(ue.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=ue.HEAPU32[c[a]>>2],m=new Uint32Array(ue.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=ue.HEAPU32[c[a]>>2],y=new Uint8Array(ue.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return ue.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var my=["getX","getY","getZ"];function Cd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[my[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[my[p]](a));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var Gl=new Ve.Vector3,Od=new Ve.Vector3,Ad=new Ve.Vector3,Nd=new Ve.Vector3;function Id(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),l=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((d,p)=>Math.floor(p/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){Gl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Od.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Ad.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Nd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Od.sub(Gl).normalize(),Ad.sub(Gl).normalize(),Nd.sub(Gl).normalize();let c=Od.cross(Ad).dot(Nd);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Sr={};xu(Sr,{calcBoolean:()=>sP,calcBooleanTopological:()=>iP,freeMeshSet:()=>cP,getMeshSet:()=>aP,transformMeshSet:()=>lP});var hy,yy=new Promise(n=>{hy=n});var DV=Dn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.384/build",[e,t]=await Promise.all([import("./boolean.js"),fetch(`${r}/boolean.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});hy(i)});var Gs=require("three");var Se,gi;yy.then(n=>Se=n);function nP(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=Cd(n.getAttribute("position"),o),l;if(r&&e){let{indices:c,verticesPerFace:u}=Id(i,s,n);l=u.length,t=[];for(let a=0,d=0;a<l;a++){t.push(u[a]);for(let p=0;p<u[a];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),l=0;for(let u=0,a=0;a<t.length;)t[a++]=3,l++,t[a++]=s[u++],t[a++]=s[u++],t[a++]=s[u++]}return{positions:i,faceIndices:t,nFaces:l}}function gy(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Se._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Se.HEAPU32.buffer,i,r):new Float32Array(Se.HEAPF32.buffer,i,r)).set(n,0),i}function xy(n){switch(n){case 0:return Se.OP.UNION;case 1:return Se.OP.INTERSECTION;case 2:return Se.OP.A_MINUS_B;case 3:return Se.OP.B_MINUS_A;case 4:return Se.OP.SYMMETRIC_DIFFERENCE;case 5:return Se.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function iP(n,r){gi===void 0&&(gi=Se.init_csg());let e=gy(n),t=Se.csg_calc_topological(gi,e,n.length,xy(r));Se._free(e);let o=6,i=Se.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=Se.HEAPU32[i[l]>>2],u=new Float32Array(Se.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=Se.HEAPU32[i[l]>>2],d=new Uint32Array(Se.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=Se.HEAPU32[i[l]>>2],f=new Uint8Array(Se.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return Se.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function sP(n,r,e,t){gi===void 0&&(gi=Se.init_csg());let o=gy(n),i=Se.csg_calc(gi,o,n.length,t,xy(r));Se._free(o);let s=5,l=Se.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=Se.HEAPU32[l[u]>>2],d=Se.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=Se.HEAPU32[l[u]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Gs.Float32BufferAttribute(d,3)),e.setAttribute("normal",new Gs.Float32BufferAttribute(f,3));let h=Se.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Gs.Sphere),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},Se.free_mesh_data(i),m}function aP(n,r,e){if(Se===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=nP(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Se._malloc(a),m=new Float32Array(Se.HEAPF32.buffer,f,c),h=new Uint32Array(Se.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),Se.get_csg_mesh(f,s,f+d,l,i)}function lP(n,r){Se.transform_csg_mesh(n,r.elements)}function cP(n){Se.free_csg_mesh(n)}var dP={ConeGeometry:ch,CubeGeometry:dh,CylinderGeometry:ah,DodecahedronGeometry:ph,EllipseGeometry:ui,HelixGeometry:Rh,IcosahedronGeometry:zh,LatheGeometry:jh,NonParametricGeometry:Hh,PolygonGeometry:El,PyramidGeometry:qh,RectangleGeometry:Ll,SphereGeometry:$h,PlaneGeometry:Xh,BackdropGeometry:Kh,StarGeometry:Bl,TextFrameGeometry:Qh,TorusGeometry:Jh,TorusKnotGeometry:ty,TriangleGeometry:ry,PathGeometry:ny,VectorGeometry:Ft},Td=n=>dP[n.type].create(n);function Rs(n){return n!==null&&"booleanOp"in n}var xi=class extends Sl(Rl.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Rl.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Rs(this.parent)&&this.visible,Rs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Sr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Rs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof xi&&(e.freeBooleanPointer(),Rs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Rs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var Vl=new vi.Box3;function Vs(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}Vl.min.set(i,s,l),Vl.max.set(c,u,a),Vl.getCenter(t),Vl.getSize(o).multiplyScalar(.5)}var uP=new vi.BufferGeometry,pP=new vi.MeshBasicMaterial,wt=class extends xi{constructor(r,e){super(uP,pP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Vs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var lo=require("three");var er=require("three");var Fy=require("three");var _r=require("three");var zs=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var vy=require("three"),ht=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=vy.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof ht&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Md=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},lt=new Md;var Ed=require("three");var by=require("three"),le=class extends ht{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=by.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Be=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var Je=class extends Be{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ed.Vector2?e:new Ed.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Ld=require("three");var _t=class extends Be{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ld.Vector3?e:new Ld.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var Sy=require("three"),ct=class extends Sy.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 kt=class extends Be{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ct?e:new ct(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var fP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,wy=/[a-z_0-9]+/gi,U=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let a=[];for(;l=wy.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&lt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=lt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||lt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&lt.contains(h)&&e.include(lt.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=fP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(wy);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var mP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Bd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Bd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=mP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},Te=Bd;Te.PI="PI",Te.PI2="PI2",Te.RECIPROCAL_PI="RECIPROCAL_PI",Te.RECIPROCAL_PI2="RECIPROCAL_PI2",Te.LOG2="LOG2",Te.EPSILON="EPSILON";var hP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),yP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),bi=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=hP.exec(e);if(t){let o=t[2],i;for(;i=yP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Si=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};lt.addKeyword("uv",function(){return new Si});lt.addKeyword("uv2",function(){return new Si(1)});var zl=require("three");var Qo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Qo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case zl.LinearEncoding:return["Linear"];case zl.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Qo.Nodes[this.method],l=e.include(s);if(l===Qo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=Qo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Qo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},Et=Qo;Et.Nodes={LinearToLinear:new U(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
- `)),sRGBToLinear:new U(["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(`
6
- `)),LinearTosRGB:new U(["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(`
7
- `))},Et.LINEAR_TO_LINEAR="LinearToLinear",Et.SRGB_TO_LINEAR="sRGBToLinear",Et.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends U{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var _y=require("three"),Lt=class extends Be{constructor(e=new _y.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Si,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Et(new Ne("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,t)}};var Z=class extends Be{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var js=class extends le{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let d=l.inputs[a],p=this.inputs[a]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var Dd=class extends le{constructor(e,t,o=Dd.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},yt=Dd;yt.ADD="+",yt.SUB="-",yt.MUL="*",yt.DIV="/";var De=class extends le{constructor(e,t=De.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case De.MIX:case De.CLAMP:case De.REFRACT:case De.SMOOTHSTEP:case De.FACEFORWARD:return 3;case De.MIN:case De.MAX:case De.MOD:case De.STEP:case De.REFLECT:case De.DISTANCE:case De.DOT:case De.CROSS:case De.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case De.LENGTH:case De.DISTANCE:case De.DOT:return"f";case De.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case De.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case De.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case De.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case De.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case De.MIN:case De.MAX:case De.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case De.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case De.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},fe=De;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var wi=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new js(wi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Et(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Et(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Et(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Et(new Ne("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Ne("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new js(wi.Nodes.roughnessToMip,[i]),l=new fe(s,wi.Nodes.m0,wi.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(l,fe.FLOOR),u=new fe(l,fe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new yt(c,new Z(1).setReadonly(!0),yt.ADD)),p=new fe(a,d,u,fe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},_i=wi;_i.Nodes=function(){let e=new bi(`struct TextureCubeUVData {
3
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var Ve=require("three");var Ey,Ii=new Promise(n=>{Ey=n});var Ly=Kn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.386/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});Ey(i)});var Dy=require("three");function fn(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Ae.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new Dy.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new nt(n,e);if(n.type==="TextGeometry")return new Ni(n,r)}let o;try{o=Zd(t)}catch(i){console.error(i)}if(!o){let i=Ae.createFromState(si.defaultData(),100,100);t.shape=i,o=Zd(t)}return o}var By=require("three"),GP=new By.Matrix4;function Ks(n,r,e,t){let o=n.position.array,i=n.normal.array,s=GP.makeScale(r,e,t).invert().elements,a,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,a=i[l],c=i[l+1],u=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*u,i[l+1]=s[1]*a+s[5]*c+s[9]*u,i[l+2]=s[2]*a+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var rc=new Ve.Box3,Mi=new Ve.Vector3,ue;Ii.then(n=>{ue=n});var Ry=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Gy=new Uint32Array([0,1,2,3]),Vy=new Uint8Array([4]),nt=class extends Ve.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Co.div(t,o);this.subdividedGeometry&&Ks(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ks(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Mi.fromArray(i));let a=Mi.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=a/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new Ve.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ve.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;rc.setFromBufferAttribute(t),rc.getCenter(o),e.boundingSphere.radius=o.distanceTo(rc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rc.getSize(Mi);let i={width:Mi.x,height:Mi.y,depth:Mi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,a,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(ue.free_bvh(t),ue.free_subdivision_surface(t));try{s=nt.allocate(e,i)}catch(l){console.error(l,e),s=nt.allocate({positionWASM:Ry,indexWASM:Gy,verticesPerFaceWASM:Vy},i)}if(ue.set_destination_refinement_level(s,0),a=nt.buildLevel(s,!0,u),e.subdivisions>0)try{ue.set_destination_refinement_level(s,e.subdivisions),c=nt.buildLevel(s,!1,u)}catch{try{ue.set_destination_refinement_level(s,e.subdivisions-1),c=nt.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:a,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:fn(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let a,c,u,l;({positions:a,triIndices:l}=tu(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=ru(a,l,i,d),{positions:a,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,a=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=Ry,i=Gy,s=Vy);let u=o.length,l=i.length,d=s.length,p=o.length+a.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(m),x=new Float32Array(ue.HEAPF32.buffer,g,p),b=new Uint32Array(ue.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(a,o.length),x.set(c,o.length+a.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new Ve.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?ue.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):ue.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return ue._free(g),S}static buildLevel(e,t,o,i,s){let a=s?ue.get_mesh_data2(e,t?ue.Level.CONTROL:ue.Level.REFINED,o,s.elements):ue.get_mesh_data(e,t?ue.Level.CONTROL:ue.Level.REFINED,o),c=8,u=ue.HEAPU32.subarray(a>>2,(a>>2)+c),l=u.subarray(4,4+4),d=0,p=ue.HEAPU32[u[d]>>2],f=ue.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=ue.HEAPU32[u[d]>>2],h=ue.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=ue.HEAPU32[u[d]>>2],g=ue.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=ue.HEAPU32[u[d]>>2],b=ue.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new Ve.BufferGeometry;if(w.setIndex(new Ve.Uint32BufferAttribute(b,1)),w.setAttribute("position",new Ve.Float32BufferAttribute(f,3)),w.setAttribute("normal",new Ve.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new Ve.Uint32BufferAttribute(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new Ve.BufferAttribute(S,4))}return ue.free_mesh_data(a),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ue.free_mesh_data(a)}static freeSubdivPointer(e){ue.free_bvh(e),ue.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ue.get_wireframe_data_for_base_level(e),s=4,a=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+2),u=0,l=ue.HEAPU32[a[u]>>2],d=ue.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=ue.HEAPU32[a[u]>>2],f=ue.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Ve.BufferGeometry;m.setAttribute("position",new Ve.Float32BufferAttribute(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new Ve.BufferAttribute(h,3)),m.setIndex(new Ve.Uint32BufferAttribute(f,1)),ue.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ue.set_destination_refinement_level(e,t);let s=o?ue.get_topological_data2(e,i?ue.Level.CONTROL:ue.Level.REFINED,o.elements):ue.get_topological_data(e,i?ue.Level.CONTROL:ue.Level.REFINED),a=6,c=ue.HEAPU32.subarray(s>>2,(s>>2)+a),u=c.subarray(3,3+3),l=0,d=ue.HEAPU32[c[l]>>2],p=new Float32Array(ue.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=ue.HEAPU32[c[l]>>2],m=new Uint32Array(ue.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=ue.HEAPU32[c[l]>>2],y=new Uint8Array(ue.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return ue.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var zy=["getX","getY","getZ"];function tu(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[zy[p]](l)*a)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[zy[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var oc=new Ve.Vector3,Qd=new Ve.Vector3,Jd=new Ve.Vector3,eu=new Ve.Vector3;function ru(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&a<=24&&a%4===0&&e.userData.parameters.angle>=360){let l=s.length/2/a;s=s.filter((d,p)=>Math.floor(p/2)%l===0)}let c=0;for(let l=0;l<s.length;l+=2)c+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);n.length=0;let u=0;if(c<0)for(let l=0;l<s.length;l+=2)n.push(s[l],s[l+1],0),o.push(u++);else for(let l=s.length-2;l>=0;l-=2)n.push(s[l],s[l+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??r.length;s<a;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){oc.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Qd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Jd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),eu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Qd.sub(oc).normalize(),Jd.sub(oc).normalize(),eu.sub(oc).normalize();let c=Qd.cross(Jd).dot(eu);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,d=0;l<n.length;l+=3,d++)n[l+2]===0&&(s.push(d),c++),n[l+2]===u&&a.push(d);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var _r={};ku(_r,{calcBoolean:()=>jP,calcBooleanTopological:()=>zP,freeMeshSet:()=>UP,getMeshSet:()=>FP,transformMeshSet:()=>kP});var jy,Fy=new Promise(n=>{jy=n});var fj=Kn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.386/build",[e,t]=await Promise.all([import("./boolean.js"),fetch(`${r}/boolean.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});jy(i)});var Zs=require("three");var Se,Ei;Fy.then(n=>Se=n);function VP(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=tu(n.getAttribute("position"),o),a;if(r&&e){let{indices:c,verticesPerFace:u}=ru(i,s,n);a=u.length,t=[];for(let l=0,d=0;l<a;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),a=0;for(let u=0,l=0;l<t.length;)t[l++]=3,a++,t[l++]=s[u++],t[l++]=s[u++],t[l++]=s[u++]}return{positions:i,faceIndices:t,nFaces:a}}function ky(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Se._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Se.HEAPU32.buffer,i,r):new Float32Array(Se.HEAPF32.buffer,i,r)).set(n,0),i}function Uy(n){switch(n){case 0:return Se.OP.UNION;case 1:return Se.OP.INTERSECTION;case 2:return Se.OP.A_MINUS_B;case 3:return Se.OP.B_MINUS_A;case 4:return Se.OP.SYMMETRIC_DIFFERENCE;case 5:return Se.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function zP(n,r){Ei===void 0&&(Ei=Se.init_csg());let e=ky(n),t=Se.csg_calc_topological(Ei,e,n.length,Uy(r));Se._free(e);let o=6,i=Se.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,c=Se.HEAPU32[i[a]>>2],u=new Float32Array(Se.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=Se.HEAPU32[i[a]>>2],d=new Uint32Array(Se.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let p=Se.HEAPU32[i[a]>>2],f=new Uint8Array(Se.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return Se.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function jP(n,r,e,t){Ei===void 0&&(Ei=Se.init_csg());let o=ky(n),i=Se.csg_calc(Ei,o,n.length,t,Uy(r));Se._free(o);let s=5,a=Se.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),u=0,l=Se.HEAPU32[a[u]>>2],d=Se.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=Se.HEAPU32[a[u]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Zs.Float32BufferAttribute(d,3)),e.setAttribute("normal",new Zs.Float32BufferAttribute(f,3));let h=Se.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Zs.Sphere),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},Se.free_mesh_data(i),m}function FP(n,r,e){if(Se===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=VP(n,r,e));let s=t.length,a=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Se._malloc(l),m=new Float32Array(Se.HEAPF32.buffer,f,c),h=new Uint32Array(Se.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),Se.get_csg_mesh(f,s,f+d,a,i)}function kP(n,r){Se.transform_csg_mesh(n,r.elements)}function UP(n){Se.free_csg_mesh(n)}var HP={ConeGeometry:Dh,CubeGeometry:Bh,CylinderGeometry:Eh,DodecahedronGeometry:Gh,EllipseGeometry:Oi,HelixGeometry:ly,IcosahedronGeometry:dy,LatheGeometry:uy,NonParametricGeometry:hy,PolygonGeometry:Jl,PyramidGeometry:yy,RectangleGeometry:ec,SphereGeometry:xy,PlaneGeometry:by,BackdropGeometry:Sy,StarGeometry:tc,TextFrameGeometry:_y,TorusGeometry:Py,TorusKnotGeometry:Oy,TriangleGeometry:Ay,PathGeometry:Ny,VectorGeometry:Wt},Zd=n=>HP[n.type].create(n);function Qs(n){return n!==null&&"booleanOp"in n}var Li=class extends yi(nc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new nc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Qs(this.parent)&&this.visible,Qs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(_r.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Qs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Li&&(e.freeBooleanPointer(),Qs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Qs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var ic=new Di.Box3;function Js(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,a=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<a&&(a=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}ic.min.set(i,s,a),ic.max.set(c,u,l),ic.getCenter(t),ic.getSize(o).multiplyScalar(.5)}var WP=new Di.BufferGeometry,qP=new Di.MeshBasicMaterial,Pt=class extends Li{constructor(r,e){super(WP,qP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Js(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var go=require("three");var ir=require("three");var fg=require("three");var Tr=require("three");var ea=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var Hy=require("three"),xt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Hy.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof xt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var ou=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},ut=new ou;var nu=require("three");var Wy=require("three"),le=class extends xt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=Wy.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Be=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}};var Xe=class extends Be{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof nu.Vector2?e:new nu.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var iu=require("three");var Tt=class extends Be{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof iu.Vector3?e:new iu.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var qy=require("three"),pt=class extends qy.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],a=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 qt=class extends Be{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof pt?e:new pt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var $P=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,$y=/[a-z_0-9]+/gi,k=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let a,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;a=$y.exec(this.src);)l.push(a);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&ut.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=ut.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||ut.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&ut.contains(h)&&e.include(ut.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=$P.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match($y);if(a){let c=0;for(;c<a.length;){let u=a[c++],l;u==="in"||u==="out"||u==="inout"?l=a[c++]:(l=u,u="");let d=a[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var YP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,su=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||su.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let a,c,u="",l=YP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],u=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},Oe=su;Oe.PI="PI",Oe.PI2="PI2",Oe.RECIPROCAL_PI="RECIPROCAL_PI",Oe.RECIPROCAL_PI2="RECIPROCAL_PI2",Oe.LOG2="LOG2",Oe.EPSILON="EPSILON";var XP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),KP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Bi=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=XP.exec(e);if(t){let o=t[2],i;for(;i=KP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ri=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};ut.addKeyword("uv",function(){return new Ri});ut.addKeyword("uv2",function(){return new Ri(1)});var sc=require("three");var mn=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??mn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case sc.LinearEncoding:return["Linear"];case sc.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=mn.Nodes[this.method],a=e.include(s);if(a===mn.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=mn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=mn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},Rt=mn;Rt.Nodes={LinearToLinear:new k(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
+ `)),sRGBToLinear:new k(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
6
+ `)),LinearTosRGB:new k(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
7
+ `))},Rt.LINEAR_TO_LINEAR="LinearToLinear",Rt.SRGB_TO_LINEAR="sRGBToLinear",Rt.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends k{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var Yy=require("three"),Gt=class extends Be{constructor(e=new Yy.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Ri,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Rt(new Ne("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var Z=class extends Be{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ta=class extends le{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let a=this.value,c=a.build(e,t)+"( ",u=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let d=a.inputs[l],p=this.inputs[l]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var au=class extends le{constructor(e,t,o=au.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},vt=au;vt.ADD="+",vt.SUB="-",vt.MUL="*",vt.DIV="/";var Re=class extends le{constructor(e,t=Re.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Re.MIX:case Re.CLAMP:case Re.REFRACT:case Re.SMOOTHSTEP:case Re.FACEFORWARD:return 3;case Re.MIN:case Re.MAX:case Re.MOD:case Re.STEP:case Re.REFLECT:case Re.DISTANCE:case Re.DOT:case Re.CROSS:case Re.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Re.LENGTH:case Re.DISTANCE:case Re.DOT:return"f";case Re.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Re.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case Re.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case Re.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Re.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case Re.MIN:case Re.MAX:case Re.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Re.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Re.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,u===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},fe=Re;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var Gi=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ta(Gi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Rt(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Rt(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Rt(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Rt(new Ne("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Ne("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ta(Gi.Nodes.roughnessToMip,[i]),a=new fe(s,Gi.Nodes.m0,Gi.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(a,fe.FLOOR),u=new fe(a,fe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new vt(c,new Z(1).setReadonly(!0),vt.ADD)),p=new fe(l,d,u,fe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Vi=Gi;Vi.Nodes=function(){let e=new Bi(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
11
11
  vec4 bl;
12
12
  vec2 f;
13
- }`),t=new Te("float cubeUV_maxMipLevel 8.0",!0),o=new Te("float cubeUV_minMipLevel 4.0",!0),i=new Te("float cubeUV_maxTileSize 256.0",!0),s=new Te("float cubeUV_minTileSize 16.0",!0),l=new U(`float getFace(vec3 direction) {
13
+ }`),t=new Oe("float cubeUV_maxMipLevel 8.0",!0),o=new Oe("float cubeUV_minMipLevel 4.0",!0),i=new Oe("float cubeUV_maxTileSize 256.0",!0),s=new Oe("float cubeUV_minTileSize 16.0",!0),a=new k(`float getFace(vec3 direction) {
14
14
  vec3 absDirection = abs(direction);
15
15
  float face = -1.0;
16
16
  if (absDirection.x > absDirection.z) {
@@ -25,7 +25,7 @@
25
25
  face = direction.y > 0.0 ? 1.0 : 4.0;
26
26
  }
27
27
  return face;
28
- }`);l.useKeywords=!1;let c=new U(`vec2 getUV(vec3 direction, float face) {
28
+ }`);a.useKeywords=!1;let c=new k(`vec2 getUV(vec3 direction, float face) {
29
29
  vec2 uv;
30
30
  if (face == 0.0) {
31
31
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -41,7 +41,7 @@
41
41
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
42
42
  }
43
43
  return 0.5 * (uv + 1.0);
44
- }`);c.useKeywords=!1;let u=new U(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
44
+ }`);c.useKeywords=!1;let u=new k(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
45
45
  float face = getFace(direction);
46
46
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
47
47
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -69,7 +69,7 @@
69
69
  uv.x -= texelSize;
70
70
  vec4 bl = texture2D(envMap, uv);
71
71
  return TextureCubeUVData( tl, tr, br, bl, f );
72
- }`,[e,l,c,t,o,i,s]);u.useKeywords=!1;let a=new Te("float r0 1.0",!0),d=new Te("float v0 0.339",!0),p=new Te("float m0 -2.0",!0),f=new Te("float r1 0.8",!0),m=new Te("float v1 0.276",!0),h=new Te("float m1 -1.0",!0),y=new Te("float r4 0.4",!0),g=new Te("float v4 0.046",!0),v=new Te("float m4 2.0",!0),b=new Te("float r5 0.305",!0),w=new Te("float v5 0.016",!0),S=new Te("float m5 3.0",!0),P=new Te("float r6 0.21",!0),_=new Te("float v6 0.0038",!0),x=new Te("float m6 4.0",!0),C=[a,d,p,f,m,h,y,g,v,b,w,S,P,_,x],T=new U(`float roughnessToMip(float roughness) {
72
+ }`,[e,a,c,t,o,i,s]);u.useKeywords=!1;let l=new Oe("float r0 1.0",!0),d=new Oe("float v0 0.339",!0),p=new Oe("float m0 -2.0",!0),f=new Oe("float r1 0.8",!0),m=new Oe("float v1 0.276",!0),h=new Oe("float m1 -1.0",!0),y=new Oe("float r4 0.4",!0),g=new Oe("float v4 0.046",!0),x=new Oe("float m4 2.0",!0),b=new Oe("float r5 0.305",!0),w=new Oe("float v5 0.016",!0),S=new Oe("float m5 3.0",!0),P=new Oe("float r6 0.21",!0),_=new Oe("float v6 0.0038",!0),v=new Oe("float m6 4.0",!0),N=[l,d,p,f,m,h,y,g,x,b,w,S,P,_,v],T=new k(`float roughnessToMip(float roughness) {
73
73
  float mip = 0.0;
74
74
  if (roughness >= r1) {
75
75
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -83,7 +83,7 @@
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,C);return{bilinearCubeUV:u,roughnessToMip:T,m0:p,cubeUV_maxMipLevel:t}}();var Jo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Jo.VIEW}getShared(){return this.scope===Jo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case Jo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Jo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Jo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},gt=Jo;gt.LOCAL="local",gt.WORLD="world",gt.VIEW="view",gt.NORMAL="normal";lt.addKeyword("viewNormal",function(){return new gt(gt.VIEW)});lt.addKeyword("localNormal",function(){return new gt(gt.NORMAL)});lt.addKeyword("worldNormal",function(){return new gt(gt.WORLD)});var zr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??zr.LOCAL}getType(){switch(this.scope){case zr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case zr.LOCAL:case zr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case zr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case zr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case zr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case zr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ut=zr;Ut.LOCAL="local",Ut.WORLD="world",Ut.VIEW="view",Ut.PROJECTION="projection";lt.addKeyword("position",function(){return new Ut});lt.addKeyword("worldPosition",function(){return new Ut(Ut.WORLD)});lt.addKeyword("viewPosition",function(){return new Ut(Ut.VIEW)});var wr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??wr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case wr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case wr.VECTOR:{let s=new gt(gt.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ut(Ut.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case wr.CUBE:{let s=new wr(wr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case wr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new wr(wr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},jr=wr;jr.CUBE="cube",jr.SPHERE="sphere",jr.VECTOR="vector";var jl=class extends le{constructor(e=new Lt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new _i(this.value,t??new jr(jr.VECTOR),o),this.irradianceNode=new _i(this.value,new gt(gt.WORLD),new Z(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var Py=require("three");var Fl=class extends Be{constructor(e=new Py.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new jr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Et(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var Ty=`
86
+ }`,N);return{bilinearCubeUV:u,roughnessToMip:T,m0:p,cubeUV_maxMipLevel:t}}();var hn=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??hn.VIEW}getShared(){return this.scope===hn.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let a;switch(this.scope){case hn.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case hn.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case hn.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},bt=hn;bt.LOCAL="local",bt.WORLD="world",bt.VIEW="view",bt.NORMAL="normal";ut.addKeyword("viewNormal",function(){return new bt(bt.VIEW)});ut.addKeyword("localNormal",function(){return new bt(bt.NORMAL)});ut.addKeyword("worldNormal",function(){return new bt(bt.WORLD)});var Ur=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Ur.LOCAL}getType(){switch(this.scope){case Ur.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Ur.LOCAL:case Ur.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case Ur.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Ur.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Ur.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Ur.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},$t=Ur;$t.LOCAL="local",$t.WORLD="world",$t.VIEW="view",$t.PROJECTION="projection";ut.addKeyword("position",function(){return new $t});ut.addKeyword("worldPosition",function(){return new $t($t.WORLD)});ut.addKeyword("viewPosition",function(){return new $t($t.VIEW)});var Pr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Pr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Pr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Pr.VECTOR:{let s=new bt(bt.VIEW),a=e.context.roughness,c=s.build(e,"v3"),u=new $t($t.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;l&&(d=`normalize( mix( ${d}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Pr.CUBE:{let s=new Pr(Pr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Pr.SPHERE:{let a="normalize( ( viewMatrix * vec4( "+new Pr(Pr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Hr=Pr;Hr.CUBE="cube",Hr.SPHERE="sphere",Hr.VECTOR="vector";var ac=class extends le{constructor(e=new Gt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Vi(this.value,t??new Hr(Hr.VECTOR),o),this.irradianceNode=new Vi(this.value,new bt(bt.WORLD),new Z(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var Xy=require("three");var lc=class extends Be{constructor(e=new Xy.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Hr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Rt(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,u),e.removeContext(),e.format(a,u,t)}};var Ky=`
87
87
  uniform int frameIndex;
88
88
  uniform vec2 resolution;
89
89
  uniform mat4 previousModelViewMatrix;
@@ -91,7 +91,7 @@ uniform mat4 previousProjectionMatrix;
91
91
 
92
92
  varying vec4 vCurrentPosition;
93
93
  varying vec4 vPreviousPosition;
94
- `,Oy=`
94
+ `,Zy=`
95
95
  layout(location = 1) out vec4 gVelocity;
96
96
 
97
97
  uniform int frameIndex;
@@ -133,7 +133,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
133
133
  return fract(magic.z * fract(dot(screenPos, magic.xy)));
134
134
  }
135
135
 
136
- `,Ay=`
136
+ `,Qy=`
137
137
  // TODO: This could be generated CPU side and passed to the shader every frame
138
138
  const vec2 haltonSequence[16] = vec2[16](
139
139
  vec2( 0.000000,-0.333334),
@@ -170,7 +170,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
170
170
  #endif
171
171
  gl_Position = currentPositionJittered;
172
172
 
173
- `,Ny=`
173
+ `,Jy=`
174
174
  vec2 oldPos = vPreviousPosition.xy;
175
175
  oldPos /= vPreviousPosition.w;
176
176
  oldPos.xy = (oldPos.xy+1.)/2.0;
@@ -184,7 +184,7 @@ vec2 velocity = (newPos - oldPos);
184
184
  // NOTE: We use the blue channel to avoid temporal reprojection
185
185
  // with incorrect velocity if the fragment is transparent.
186
186
  gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
187
- `;var Cy=["x","y","z","w"],gP=["float","vec2","vec3","vec4"],xP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},vP={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[]"},kl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
187
+ `;var eg=["x","y","z","w"],ZP=["float","vec2","vec3","vec4"],QP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},JP={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[]"},cc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
188
188
  `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],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",`
189
189
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
190
190
  #define SPE_BLENDING_NORMAL 0
@@ -222,20 +222,20 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
222
222
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
223
223
  accumAlpha += (1.0 - accumAlpha) * alpha;
224
224
  }`,""].join(`
225
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Ty),this.addFragmentParsCode(Oy),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(Ay),this.addFragmentFinalCode(Ny)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
225
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Ky),this.addFragmentParsCode(Zy),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(Qy),this.addFragmentFinalCode(Jy)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
226
226
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
227
227
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
228
228
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
229
- `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let l=this.getVars(o),c=l[r];if(!c){let u=l.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},l.push(c),l[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
230
- `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],l=s.type,c=s.name,u=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?t+=e+" "+a.substring(0,a.length-2)+" "+c+`[${u}];
231
- `:t+=e+" "+a+" "+c+`;
232
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof ht?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new zs({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new zs({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?lt.get(r):r,this.context.include===!1)return r.name;r instanceof U?o=this.includes.functions:r instanceof Te?o=this.includes.consts:r instanceof bi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof U&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return gP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case _r.CubeReflectionMapping:case _r.CubeRefractionMapping:return new Fl(t);case _r.CubeUVReflectionMapping:return new jl(new Lt(t));default:return new Lt(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new _t(t);if(t.isVector4)return new kt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return xP[r]||r}getFormatByType(r){return vP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Cy[r]}getIndexByElement(r){return Cy.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=_r.LinearEncoding,e===_r.LinearEncoding&&this.context.gamma&&(e=_r.sRGBEncoding),e}};var Ge=require("three");var Me=class extends Be{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof ct?e:new ct(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return u?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var we=class extends Be{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};var ql=require("three");var et=class extends Be{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var Pr=class extends Be{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var Iy=require("three");var Co=class extends Be{};var Ul=class extends Co{constructor(e){super("v3");this.image=e;this._value=new Iy.Vector3}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var en=class extends Co{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var My=require("three");var Pi=class extends Be{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new My.Matrix3}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ey=require("three");var Pt=class extends Be{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Ey.Matrix4}generateReadonly(e,t,o,i,s,l){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var By=require("three");function Ly(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Hl=class extends Pi{constructor(e,t){super(new By.Matrix3);this.repeat=e;this.offset=t;Ly(this.value,e,t)}updateMatrix(){Ly(this.value,this.repeat,this.offset)}};var Gd=require("three");var Tr=class extends Be{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Gd.Vector4?new Array(e).fill(t):new Array(e).fill(new Gd.Vector4(0))}};var Ti=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Rd=class extends le{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Rd.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},tn=Rd;tn.Nodes=function(){return{customColor:new U(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
229
+ `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let a=this.getVars(o),c=a[r];if(!c){let u=a.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},a.push(c),a[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
230
+ `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],a=s.type,c=s.name,u=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?t+=e+" "+l.substring(0,l.length-2)+" "+c+`[${u}];
231
+ `:t+=e+" "+l+" "+c+`;
232
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof xt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,u=new ea({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}else{let a=this.inputs.uniforms,c=a.list.length,u=new ea({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?ut.get(r):r,this.context.include===!1)return r.name;r instanceof k?o=this.includes.functions:r instanceof Oe?o=this.includes.consts:r instanceof Bi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof k&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return ZP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case Tr.CubeReflectionMapping:case Tr.CubeRefractionMapping:return new lc(t);case Tr.CubeUVReflectionMapping:return new ac(new Gt(t));default:return new Gt(t)}else{if(t.isVector2)return new Xe(t);if(t.isVector3)return new Tt(t);if(t.isVector4)return new qt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return QP[r]||r}getFormatByType(r){return JP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return eg[r]}getIndexByElement(r){return eg.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=Tr.LinearEncoding,e===Tr.LinearEncoding&&this.context.gamma&&(e=Tr.sRGBEncoding),e}};var Ge=require("three");var Ee=class extends Be{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof pt?e:new pt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return u?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var we=class extends Be{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};var pc=require("three");var tt=class extends Be{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var Or=class extends Be{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var tg=require("three");var Fo=class extends Be{};var dc=class extends Fo{constructor(e){super("v3");this.image=e;this._value=new tg.Vector3}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var yn=class extends Fo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var rg=require("three");var zi=class extends Be{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new rg.Matrix3}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var og=require("three");var Ot=class extends Be{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new og.Matrix4}generateReadonly(e,t,o,i,s,a){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var ig=require("three");function ng(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var uc=class extends zi{constructor(e,t){super(new ig.Matrix3);this.repeat=e;this.offset=t;ng(this.value,e,t)}updateMatrix(){ng(this.value,this.repeat,this.offset)}};var lu=require("three");var Ar=class extends Be{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof lu.Vector4?new Array(e).fill(t):new Array(e).fill(new lu.Vector4(0))}};var ji=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var cu=class extends le{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(cu.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},gn=cu;gn.Nodes=function(){return{customColor:new k(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
233
233
  float lalpha = alpha * mask;
234
234
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
235
235
  accumAlpha += (1.0 - accumAlpha) * lalpha;
236
236
 
237
237
  return color;
238
- }`)}}();var Vd=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Vd.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Oi=Vd;Oi.Nodes=function(){return{customNormal:new U(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
238
+ }`)}}();var du=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(du.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Fi=du;Fi.Nodes=function(){return{customNormal:new k(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
239
239
  vec3 normal = packNormalToRGB( norm ).rgb;
240
240
  normal *= step( vec3(0.5), cnormal );
241
241
 
@@ -244,16 +244,17 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
244
244
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
245
245
 
246
246
  return normal;
247
- }`)}}();var Ai=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.blending=u,this.mat=a,this.alpha=d,this.mode=p,this.isMask=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Ai.Nodes.cylindrical);break;case 2:i=e.include(Ai.Nodes.spherical);break;case 1:let l=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=new U(`
248
- vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
249
-
250
- vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
247
+ }`)}}();var ki=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.blending=u,this.mat=l,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(ki.Nodes.cylindrical);break;case 2:i=e.include(ki.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],u=new k(`
248
+ vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
249
+ vec2 projected = (1. + (position.${c})) / 2.;
250
+ vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
251
+ writeUv = uvs;
251
252
 
252
253
  vec4 tmp = texture2D( tex, uvs );
253
254
 
254
255
  vec3 col = tmp.rgb;
255
256
  float lalpha = alpha * tmp.a;
256
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
257
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
257
258
 
258
259
  if ( crop > 0.5 ) {
259
260
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
@@ -267,8 +268,8 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
267
268
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
268
269
 
269
270
  return col;
270
- }`);i=e.include(c);break;case 4:i=e.include(Ai.Nodes.triplanar);break;default:i=e.include(Ai.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push("normal"),s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},Ni=Ai;Ni.Nodes=function(){let e=new U(`
271
- vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
271
+ }`);i=e.include(u);break;case 4:i=e.include(ki.Nodes.triplanar);break;default:i=e.include(ki.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let s=[];if(s.push("normal"),s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.projection.value===4){let a=`${o}_writeUvs`,c=a+"0",u=a+"1",l=a+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec3"),s.push(c),s.push(u),s.push(l),s.push(d)}else{let a=`${o}_writeUvs`;e.addFragmentVariable(a,"vec2"),s.push(a)}return e.format(i+"("+s.join(",")+")",this.getType(e),t)}},ko=ki;ko.Nodes=function(){let e=new k(`
272
+ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
272
273
  vec3 posN = normalize(position);
273
274
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
274
275
  float scaledHeight = position.y / (size.y * 0.5);
@@ -276,6 +277,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
276
277
 
277
278
  vec2 calculatedUv = vec2(u,v);
278
279
  vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
280
+ writeUv = uvs;
279
281
 
280
282
  vec2 df = fwidth(uvs);
281
283
  if(df.x > 0.5) df.x = 0.;
@@ -301,14 +303,15 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
301
303
 
302
304
  return col;
303
305
  }
304
- `),t=new U(`
305
- vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
306
+ `),t=new k(`
307
+ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
306
308
  vec3 posN = normalize(vPosition);
307
309
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
308
310
  float v = 0.5 + asin(posN.y) / 3.1415;
309
311
 
310
312
  vec2 calculatedUv = vec2(u,v);
311
313
  vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
314
+ writeUv = uvs;
312
315
 
313
316
  vec2 df = fwidth(uvs);
314
317
  if(df.x > 0.5) df.x = 0.;
@@ -333,9 +336,10 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
333
336
 
334
337
  return col;
335
338
  }
336
- `),o=new U(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
337
-
339
+ `),o=new k(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
338
340
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
341
+ writeUv = uvs;
342
+
339
343
  vec4 tmp = texture2D( tex, uvs );
340
344
 
341
345
  vec3 col = tmp.rgb;
@@ -353,7 +357,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
353
357
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
354
358
 
355
359
  return col;
356
- }`),i=new U(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
360
+ }`),i=new k(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
357
361
  vec3 p = position;
358
362
  vec2 uv0 = (1.0 + p.xy) / 2.0;
359
363
  vec2 uv1 = (1.0 + p.zy) / 2.0;
@@ -371,6 +375,12 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
371
375
  weights = pow(weights, vec3(exponent));
372
376
  weights /= dot(weights, vec3(1.0));
373
377
 
378
+ // Write out all sets of UVs that we generated
379
+ writeUvs0 = uv0;
380
+ writeUvs1 = uv1;
381
+ writeUvs2 = uv2;
382
+ writeWeights = weights;
383
+
374
384
  // Derivatives for LOD
375
385
  vec2 df0 = fwidth(uv0);
376
386
  vec2 df1 = fwidth(uv1);
@@ -413,7 +423,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
413
423
 
414
424
  return col;//n * 0.5 + 0.5;
415
425
  }
416
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Ci=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=u,this.colors=a,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new U(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
426
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Ui=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=u,this.colors=l,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new k(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
417
427
  vec4 color = colors[0];
418
428
  #ifdef ${o}_IS_VECTOR
419
429
  #ifdef ${o}_LINEAR
@@ -453,21 +463,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
453
463
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
454
464
 
455
465
  return color.rgb;
456
- }`,[Ci.Nodes.vectorLinearWorldSpaceDepth,Ci.Nodes.vectorLinearObjectSpaceDepth,Ci.Nodes.vectorSphericalObjectSpaceDepth,Ci.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.isMask.build(e,"b")),l.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ii=Ci;Ii.Nodes=function(){let e=new U(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
466
+ }`,[Ui.Nodes.vectorLinearWorldSpaceDepth,Ui.Nodes.vectorLinearObjectSpaceDepth,Ui.Nodes.vectorSphericalObjectSpaceDepth,Ui.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Hi=Ui;Hi.Nodes=function(){let e=new k(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
457
467
  vec3 n = normalize(direction);
458
468
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
459
469
  return ( dist - near ) / ( far - near );
460
- }`),t=new U(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
470
+ }`),t=new k(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
461
471
  vec3 n = normalize(direction);
462
472
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
463
473
  return ( dist - near ) / ( far - near );
464
- }`),o=new U(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
474
+ }`),o=new k(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
465
475
  float dist = length(vWPosition - origin);
466
476
  return ( dist - near ) / ( far - near );
467
- }`),i=new U(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
477
+ }`),i=new k(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
468
478
  float dist = length(position - origin);
469
479
  return ( dist - near ) / ( far - near );
470
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Fs=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new U(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
480
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var ra=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new k(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
471
481
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
472
482
 
473
483
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -475,7 +485,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
475
485
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
476
486
 
477
487
  return color;
478
- }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var zd=class extends le{constructor(e,t,o,i,s,l,c,u,a){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.isMask=a,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(zd.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Mi=zd;Mi.Nodes=function(){return{gradient:new U(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
488
+ }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var uu=class extends le{constructor(e,t,o,i,s,a,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(uu.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Wi=uu;Wi.Nodes=function(){return{gradient:new k(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
479
489
  vec4 color = colors[0];
480
490
  vec2 m = morph / vUv.xy;
481
491
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -517,7 +527,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
517
527
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
518
528
 
519
529
  return color.xyz;
520
- }`)}}();var jd=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(jd.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ei=jd;Ei.Nodes=function(){return{matcap:new U(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
530
+ }`)}}();var pu=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(pu.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},qi=pu;qi.Nodes=function(){return{matcap:new k(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
521
531
  vec3 viewDir = normalize( vViewPosition );
522
532
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
523
533
  vec3 y = cross( viewDir, x );
@@ -529,7 +539,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
529
539
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
530
540
 
531
541
  return matcapColor.rgb;
532
- }`)}}();var ks=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(ks||{}),xt=function(){let r=new U(`vec3 random3(vec3 c) {
542
+ }`)}}();var oa=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(oa||{}),St=function(){let r=new k(`vec3 random3(vec3 c) {
533
543
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
534
544
  vec3 r;
535
545
  r.z = fract(512.0*j);
@@ -538,7 +548,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
538
548
  j *= .125;
539
549
  r.y = fract(512.0*j);
540
550
  return r-0.5;
541
- }`),e=new U(`float simplex3d(vec3 p) {
551
+ }`),e=new k(`float simplex3d(vec3 p) {
542
552
  vec3 s = floor(p + dot(p, vec3(F3)));
543
553
  vec3 x = p - s + dot(s, vec3(G3));
544
554
 
@@ -569,7 +579,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
569
579
  d *= w;
570
580
 
571
581
  return dot(d, vec4(52.0));
572
- }`,[r]);e.keywords.F3=new Te("float F3 0.3333333"),e.keywords.G3=new Te("float G3 0.1666667");let t=new U(`float simplex3dFractal(vec3 m) {
582
+ }`,[r]);e.keywords.F3=new Oe("float F3 0.3333333"),e.keywords.G3=new Oe("float G3 0.1666667");let t=new k(`float simplex3dFractal(vec3 m) {
573
583
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
574
584
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
575
585
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -577,7 +587,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
577
587
  + 0.2666667 * simplex3d(2.0 * m * rot2)
578
588
  + 0.1333333 * simplex3d(4.0 * m * rot3)
579
589
  + 0.0666667 * simplex3d(8.0 * m);
580
- }`,[e]),o=new U("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new U("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new U(`float simplexAshima(vec3 v) {
590
+ }`,[e]),o=new k("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new k("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new k(`float simplexAshima(vec3 v) {
581
591
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
582
592
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
583
593
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -622,7 +632,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
622
632
  m = m * m;
623
633
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
624
634
  dot(p2,x2), dot(p3,x3) ) );
625
- }`,[o,i]),l=new U("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new U("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new U(`float noise(vec3 p){
635
+ }`,[o,i]),a=new k("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new k("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),u=new k(`float noise(vec3 p){
626
636
  vec3 a = floor(p);
627
637
  vec3 d = p - a;
628
638
  d = d * d * (3.0 - 2.0 * d);
@@ -637,7 +647,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
637
647
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
638
648
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
639
649
  return o4.y * d.y + o4.x * (1.0 - d.y);
640
- }`,[c]),a=new U(`float fbm(vec3 x) {
650
+ }`,[c]),l=new k(`float fbm(vec3 x) {
641
651
  float v = 0.0;
642
652
  float a = 0.5;
643
653
  vec3 shift = vec3(100);
@@ -647,7 +657,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
647
657
  a *= 0.5;
648
658
  }
649
659
  return v;
650
- }`,[u]);a.keywords.NUM_OCTAVES=new Te(`int NUM_OCTAVES ${5}`);let d=new U("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new U(`float perlin(vec3 P){
660
+ }`,[u]);l.keywords.NUM_OCTAVES=new Oe(`int NUM_OCTAVES ${5}`);let d=new k("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new k(`float perlin(vec3 P){
651
661
  vec3 Pi0 = floor(P);
652
662
  vec3 Pi1 = Pi0 + vec3(1.0);
653
663
  Pi0 = mod(Pi0, 289.0);
@@ -706,17 +716,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
706
716
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
707
717
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
708
718
  return 2.2 * n_xyz;
709
- }`,[o,i,d]),f=new U(`float hashwithoutsine13(vec3 p3)
719
+ }`,[o,i,d]),f=new k(`float hashwithoutsine13(vec3 p3)
710
720
  {
711
721
  p3 = fract(p3 * .1031);
712
722
  p3 += dot(p3, p3.yzx + 33.33);
713
723
  return fract((p3.x + p3.y) * p3.z);
714
- }`),m=new U(`vec3 hashwithoutsine33(vec3 p3)
724
+ }`),m=new k(`vec3 hashwithoutsine33(vec3 p3)
715
725
  {
716
726
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
717
727
  p3 += dot(p3, p3.yxz+33.33);
718
728
  return fract((p3.xxy + p3.yxx)*p3.zyx);
719
- }`),h=new U(`float metric(in vec3 p)
729
+ }`),h=new k(`float metric(in vec3 p)
720
730
  {
721
731
  // L2
722
732
  return length(p);
@@ -724,17 +734,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
724
734
  // Chebyshev
725
735
  // vec3 a = abs(p);
726
736
  // return max(a.x, max(a.y, a.z));
727
- }`),y=new U(`float smin( float a, float b, float k )
737
+ }`),y=new k(`float smin( float a, float b, float k )
728
738
  {
729
739
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
730
740
  float correction = k * h * (1.0 - h);
731
741
  return mix(b, a, h) - correction;
732
- }`),g=new U(`float smax( float a, float b, float k )
742
+ }`),g=new k(`float smax( float a, float b, float k )
733
743
  {
734
744
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
735
745
  float correction = k * h * (1.0 - h);
736
746
  return mix(a, b, h) + correction;
737
- }`),v=new U(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
747
+ }`),x=new k(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
738
748
  // Compute width of each interval
739
749
  float input_width = input_max - input_min;
740
750
  float output_width = output_max - output_min;
@@ -744,7 +754,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
744
754
 
745
755
  // Convert the 0-1 range into a value in output range
746
756
  return output_min + (scaled * output_width);
747
- }`),b=new U(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
757
+ }`),b=new k(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
748
758
  {
749
759
  // Integer and fractional parts of this point's coordinates
750
760
  ivec3 p = ivec3(floor(x));
@@ -882,8 +892,8 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
882
892
  return hashwithoutsine13(vec3(p + mb) + seed);
883
893
  }
884
894
  }
885
- `,[f,m,h,y,g,v]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p,voronoi:b}}();var Li=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=u,this.colorC=a,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=v,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(ks)[this.noiseType.value],c=l=="voronoi"?`
886
- float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
895
+ `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:l,perlin:p,voronoi:b}}();var $i=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=u,this.colorC=l,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(oa)[this.noiseType.value],c=a=="voronoi"?`
896
+ float v = ${a}(st + move, voronoiStyle, smoothness, seed, quality);
887
897
 
888
898
  // Apply clipping to colors
889
899
  v = remap(v, lowCut, highCut, 0.0, 1.0);
@@ -893,18 +903,18 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
893
903
  // Note that the voronoi mode only uses colors "A" and "C" from the UI
894
904
  vec4 color = mix(colorA, colorC, v);
895
905
  `:`
896
- vec3 q = vec3(${l}(st),
897
- ${l}(st + vec3(1.0)),
898
- ${l}(st + vec3(1.0)));
899
- vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
900
- ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
901
- ${l}(st * q));
902
- float f = ${l}(st + r);
906
+ vec3 q = vec3(${a}(st),
907
+ ${a}(st + vec3(1.0)),
908
+ ${a}(st + vec3(1.0)));
909
+ vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
910
+ ${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
911
+ ${a}(st * q));
912
+ float f = ${a}(st + r);
903
913
  vec4 color;
904
914
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
905
915
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
906
916
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
907
- `,u=new U(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
917
+ `,u=new k(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
908
918
  {
909
919
  // Prevent scale of zero
910
920
  scale = max(abs(scale), 0.001);
@@ -919,10 +929,10 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
919
929
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
920
930
 
921
931
  return clamp(color, 0.0, 1.0).rgb;
922
- }`,[xt.simplex,xt.simplexFractal,xt.simplexAshima,xt.fbm,xt.perlin,xt.voronoi]),a=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(a+"("+d.join(",")+")",this.getType(e),t)}};Li.numOctaves=5;var Fd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=a,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),l=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(l,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
932
+ }`,[St.simplex,St.simplexFractal,St.simplexAshima,St.fbm,St.perlin,St.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};$i.numOctaves=5;var fu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=l,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
923
933
  vID = randomColor.r;
924
934
  vec2 ${o}_offset = vec2(0.0);
925
- if (${l}) {
935
+ if (${a}) {
926
936
  vec4 ${o}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
927
937
  // NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
928
938
  // normals face the camera directly. So we hackily fix this by offsetting the normal
@@ -934,7 +944,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
934
944
  // if this offset is the biggest of all the potential offsets
935
945
  gl_Position = ${o}_clipPosition;
936
946
  }
937
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Fd.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Bi=Fd;Bi.Nodes=function(){let e=new U(`
947
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(fu.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Yi=fu;Yi.Nodes=function(){let e=new k(`
938
948
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
939
949
  {
940
950
  vec2 halton = haltonSequence[frameIndex];
@@ -1040,7 +1050,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1040
1050
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
1041
1051
  return edgeNormal;
1042
1052
  }
1043
- `);return{outline:new U(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1053
+ `);return{outline:new k(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1044
1054
  vec3 result = outlineColor;
1045
1055
  float resultAlpha = 0.0;
1046
1056
 
@@ -1083,12 +1093,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1083
1093
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1084
1094
 
1085
1095
  return result;
1086
- }`,[e])}}();var Fr=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=l,this.colorB=c,this.frequency=u,this.size=a,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=b,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new U(`float hashwithoutsine12(vec2 p)
1096
+ }`,[e])}}();var Wr=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=a,this.colorB=c,this.frequency=u,this.size=l,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=b,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new k(`float hashwithoutsine12(vec2 p)
1087
1097
  {
1088
1098
  vec3 p3 = fract(vec3(p.xyx) * .1031);
1089
1099
  p3 += dot(p3, p3.yzx + 33.33);
1090
1100
  return fract((p3.x + p3.y) * p3.z);
1091
- }`),l=new U(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1101
+ }`),a=new k(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1092
1102
  {
1093
1103
  const float mid = 0.5;
1094
1104
  float radians = a * (PI / 180.0);
@@ -1145,7 +1155,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1145
1155
  custom_uv = rotate_uv(custom_uv, rotation, true);
1146
1156
 
1147
1157
  float draw = ${p};
1148
- `}let u=new U(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1158
+ `}let u=new k(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1149
1159
  const float TWO_PI = PI * 2.0;
1150
1160
  float smoothness_remapped = pow(smoothness, 5.0);
1151
1161
 
@@ -1169,11 +1179,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1169
1179
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1170
1180
 
1171
1181
  return clamp(color, 0.0, 1.0).rgb;
1172
- }`,[l,s,Fr.DrawFunctions.circle,Fr.DrawFunctions.ring,Fr.DrawFunctions.polygon,Fr.DrawFunctions.cross,Fr.DrawFunctions.diamond,Fr.DrawFunctions.checkerboard,Fr.DrawFunctions.line,Fr.DrawFunctions.wave]),a=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(a+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Di=Fr;Di.DrawFunctions=function(){let e=new U(`float hashwithoutsine12(vec2 p) {
1182
+ }`,[a,s,Wr.DrawFunctions.circle,Wr.DrawFunctions.ring,Wr.DrawFunctions.polygon,Wr.DrawFunctions.cross,Wr.DrawFunctions.diamond,Wr.DrawFunctions.checkerboard,Wr.DrawFunctions.line,Wr.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Xi=Wr;Xi.DrawFunctions=function(){let e=new k(`float hashwithoutsine12(vec2 p) {
1173
1183
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1174
1184
  p3 += dot(p3, p3.yzx + 33.33);
1175
1185
  return fract((p3.x + p3.y) * p3.z);
1176
- }`),t=new U(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1186
+ }`),t=new k(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1177
1187
  // Create tiles in UV-space
1178
1188
  uv *= frequency;
1179
1189
 
@@ -1202,14 +1212,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1202
1212
  f *= jitter;
1203
1213
 
1204
1214
  return f;
1205
- }`,[e]),o=new U(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1215
+ }`,[e]),o=new k(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1206
1216
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1207
1217
  return smoothstep(
1208
1218
  -smoothness,
1209
1219
  smoothness,
1210
1220
  length(f) - size
1211
1221
  );
1212
- }`,[t]),i=new U(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1222
+ }`,[t]),i=new k(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1213
1223
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1214
1224
 
1215
1225
  float d = length(f);
@@ -1218,7 +1228,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1218
1228
  float outer = smoothstep(-smoothness, smoothness, d - size);
1219
1229
  float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
1220
1230
  return outer + (1.0 - inner);
1221
- }`,[t]),s=new U(`float sdf_ngon(in vec2 p, in float r, in int n) {
1231
+ }`,[t]),s=new k(`float sdf_ngon(in vec2 p, in float r, in int n) {
1222
1232
  float an = (PI * 2.0) / float(n);
1223
1233
  float he = r * tan(0.5 * an);
1224
1234
 
@@ -1235,7 +1245,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1235
1245
  float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
1236
1246
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1237
1247
  return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
1238
- }`,[t]),l=new U(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1248
+ }`,[t]),a=new k(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1239
1249
  p = abs(p);
1240
1250
  p = (p.y > p.x) ? p.yx : p.xy;
1241
1251
  vec2 q = p - b;
@@ -1248,7 +1258,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1248
1258
  float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1249
1259
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1250
1260
  return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
1251
- }`,[t]),c=new U(`float ndot(vec2 a, vec2 b) {
1261
+ }`,[t]),c=new k(`float ndot(vec2 a, vec2 b) {
1252
1262
  return a.x*b.x - a.y*b.y;
1253
1263
  }
1254
1264
 
@@ -1262,7 +1272,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1262
1272
  float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1263
1273
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1264
1274
  return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
1265
- }`,[t]),u=new U(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1275
+ }`,[t]),u=new k(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1266
1276
  uv *= frequency;
1267
1277
  vec2 i = floor(uv);
1268
1278
 
@@ -1272,7 +1282,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1272
1282
  float x = floor(uv.x);
1273
1283
 
1274
1284
  return mod(x, 2.0);
1275
- }`),a=new U(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1285
+ }`),l=new k(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1276
1286
  vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
1277
1287
 
1278
1288
  // Different approach for variation param here
@@ -1285,7 +1295,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1285
1295
  s + smoothness,
1286
1296
  abs(f.y)
1287
1297
  );
1288
- }`,[t]),d=new U(`// Uses bisection
1298
+ }`,[t]),d=new k(`// Uses bisection
1289
1299
  float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1290
1300
  // Convert all data to a primitive cosine wave
1291
1301
  p = c * (p - vec2(d, a));
@@ -1334,7 +1344,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1334
1344
  float s = mix(size, size * rand, variation);
1335
1345
 
1336
1346
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1337
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:l,diamond:c,checkerboard:u,line:a,wave:d}}();var kd=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(kd.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Gi=kd;Gi.Nodes=function(){let e=new U(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1347
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:a,diamond:c,checkerboard:u,line:l,wave:d}}();var mu=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(mu.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ki=mu;Ki.Nodes=function(){let e=new k(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1338
1348
  vec3 st = position / noiseScale;
1339
1349
  vec3 q = vec3(simplex3d(st),
1340
1350
  simplex3d(st + vec3(1.0)),
@@ -1347,7 +1357,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1347
1357
  float noise = simplex3d(st + r);
1348
1358
 
1349
1359
  return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1350
- }`,[xt.simplex]);return{rainbow:new U(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1360
+ }`,[St.simplex]);return{rainbow:new k(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1351
1361
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1352
1362
 
1353
1363
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -1357,14 +1367,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1357
1367
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1358
1368
 
1359
1369
  return res;
1360
- }`,[e])}}();var Ud=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=u,this.offset=a,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Ud.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ri=Ud;Ri.Nodes=function(){let e=new U(`float rand(float n) {
1370
+ }`,[e])}}();var hu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(hu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Zi=hu;Zi.Nodes=function(){let e=new k(`float rand(float n) {
1361
1371
  return fract(sin(n) * 43758.5453123);
1362
- }`),t=new U(`float hash1(float p) {
1372
+ }`),t=new k(`float hash1(float p) {
1363
1373
  p = fract(p * 0.011);
1364
1374
  p *= p + 7.5;
1365
1375
  p *= p + p;
1366
1376
  return fract(p);
1367
- }`),o=new U(`float valueNoise(vec3 x) {
1377
+ }`),o=new k(`float valueNoise(vec3 x) {
1368
1378
  const vec3 step = vec3(110, 241, 171);
1369
1379
 
1370
1380
  vec3 i = floor(x);
@@ -1379,13 +1389,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1379
1389
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1380
1390
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1381
1391
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1382
- }`,[t]),i=new U(`vec3 hash3(vec3 x) {
1392
+ }`,[t]),i=new k(`vec3 hash3(vec3 x) {
1383
1393
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1384
1394
  dot(x,vec3(269.5, 183.3, 246.1)),
1385
1395
  dot(x,vec3(113.5, 271.9, 124.6)));
1386
1396
 
1387
1397
  return fract(sin(x)*43758.5453123);
1388
- }`),s=new U(`vec3 voronoiNoise(in vec3 x)
1398
+ }`),s=new k(`vec3 voronoiNoise(in vec3 x)
1389
1399
  {
1390
1400
  vec3 p = floor(x);
1391
1401
  vec3 f = fract(x);
@@ -1416,7 +1426,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1416
1426
 
1417
1427
  return vec3(sqrt(res), abs(id));
1418
1428
  }
1419
- `,[i]);return{toon:new U(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1429
+ `,[i]);return{toon:new k(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1420
1430
  float t = 0.0;
1421
1431
  float shadow = 1.0;
1422
1432
 
@@ -1593,7 +1603,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1593
1603
 
1594
1604
  return color.xyz;
1595
1605
 
1596
- }`,[xt.simplex,e,o,s])}}();var Dy=function(){return{textureBicubic:new U(`float w0( float a ) {
1606
+ }`,[St.simplex,e,o,s])}}();var yu=require("three");var sg=function(){return{textureBicubic:new k(`float w0( float a ) {
1597
1607
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1598
1608
  }
1599
1609
 
@@ -1657,7 +1667,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1657
1667
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1658
1668
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1659
1669
  return mix( fSample, cSample, fract( lod ) );
1660
- }`)}}();var Hd=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,xe.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Hd.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Vi=Hd;Vi.Nodes=function(){let e=new U(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1670
+ }`)}}();function ag(n,r){return n>=r?new yu.Vector2(r/n,1):new yu.Vector2(1,n/r)}var gu=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,xe.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(gu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Qi=gu;Qi.Nodes=function(){let e=new k(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1661
1671
  // Slightly modified version of this:
1662
1672
  // https://www.shadertoy.com/view/ltScRG
1663
1673
 
@@ -1690,7 +1700,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1690
1700
  res += textureLod(sp, uv, lod).rgb;
1691
1701
  }
1692
1702
  return res / float(NUM_SAMPLES);
1693
- }`),t=new U(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1703
+ }`),t=new k(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1694
1704
  // Direction of refracted light.
1695
1705
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
1696
1706
 
@@ -1702,11 +1712,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1702
1712
 
1703
1713
  // The thickness is specified in local space
1704
1714
  return normalize( refractionVector ) * thickness * modelScale;
1705
- }`),o=new U(`float applyIorToRoughness( float roughness, float ior ) {
1715
+ }`),o=new k(`float applyIorToRoughness( float roughness, float ior ) {
1706
1716
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
1707
1717
  // an IOR of 1.5 results in the default amount of microfacet refraction.
1708
1718
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1709
- }`),i=new U(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1719
+ }`),i=new k(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1710
1720
  // Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
1711
1721
  // also the code in convertTransmission.ts, which runs during export
1712
1722
  #ifdef IS_THREEJS_EXPORT
@@ -1717,7 +1727,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1717
1727
  float lod = applyIorToRoughness(roughness, ior);
1718
1728
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1719
1729
  #endif
1720
- }`,[Dy.textureBicubic,o,e]),s=new U(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1730
+ }`,[sg.textureBicubic,o,e]),s=new k(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1721
1731
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1722
1732
  vec3 refractedRayExit = position + transmissionRay;
1723
1733
 
@@ -1734,7 +1744,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1734
1744
 
1735
1745
  // Sample framebuffer to get pixel the refracted ray hits.
1736
1746
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
1737
- }`,[i,t]);return{transmission:new U(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1747
+ }`,[i,t]);return{transmission:new k(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1738
1748
  vec3 v = vec3(0.);
1739
1749
  if (isOrthographic) {
1740
1750
  v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
@@ -1748,20 +1758,20 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1748
1758
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1749
1759
 
1750
1760
  return transmission;
1751
- }`,[s])}}();var qd=(e=>(e.NOISE="noise",e.MAP="map",e))(qd||{}),Wd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p){super("v3");this.displacementTypeIndex=new we(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(qd)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Pi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=l,this.highCut=c,this.lowCut=u,this.quality=a}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(qd)[this.displacementTypeIndex.value]){case"map":{o=e.include(Wd.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let l=Object.values(ks)[this.noiseFunctionIndex.value],c=new U(`vec3 orthogonal(vec3 v) {
1761
+ }`,[s])}}();var xu=(e=>(e.NOISE="noise",e.MAP="map",e))(xu||{}),vu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p){super("v3");this.displacementTypeIndex=new we(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(xu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new zi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=a,this.highCut=c,this.lowCut=u,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(xu)[this.displacementTypeIndex.value]){case"map":{o=e.include(vu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(oa)[this.noiseFunctionIndex.value],c=new k(`vec3 orthogonal(vec3 v) {
1752
1762
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1753
- }`),u=l=="voronoi"?`
1754
- float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1763
+ }`),u=a=="voronoi"?`
1764
+ float v = ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1755
1765
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1756
1766
  v = smax(v, 0.0, smoothness * 0.25);
1757
1767
  v = smin(v, 1.0, smoothness * 0.25);
1758
1768
 
1759
1769
  return p + n * v * intensity;
1760
1770
  `:`
1761
- return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1762
- `,a=new U(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1771
+ return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1772
+ `,l=new k(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1763
1773
  ${u}
1764
- }`,[xt.simplex,xt.simplexFractal,xt.simplexAshima,xt.fbm,xt.perlin,xt.voronoi]),d=new U(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1774
+ }`,[St.simplex,St.simplexFractal,St.simplexAshima,St.fbm,St.perlin,St.voronoi]),d=new k(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1765
1775
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1766
1776
  vec3 tangent1 = orthogonal(normal);
1767
1777
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1777,9 +1787,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1777
1787
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1778
1788
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1779
1789
  return displaced_position;
1780
- }`,[a,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},zi=Wd;zi.Nodes=function(){let e=new U(`vec3 orthogonal(vec3 v) {
1790
+ }`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ji=vu;Ji.Nodes=function(){let e=new k(`vec3 orthogonal(vec3 v) {
1781
1791
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1782
- }`),t=new U(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1792
+ }`),t=new k(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1783
1793
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
1784
1794
  vec4 tmp = texture2D(tex, uvs);
1785
1795
  vec3 col = tmp.rgb;
@@ -1789,7 +1799,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1789
1799
  }
1790
1800
  }
1791
1801
  return col.r;
1792
- }`);return{map:new U(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1802
+ }`);return{map:new k(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1793
1803
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
1794
1804
  vec3 tangent1 = normalize(orthogonal(normal));
1795
1805
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1799,7 +1809,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1799
1809
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1800
1810
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1801
1811
  return displaced_position;
1802
- }`,[e,t])}}();var xe={normalRenderTarget:new Lt,normalRenderTargetDepth:new Lt,transmissionRenderTarget:new Lt,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Lt,aoRenderTarget:new Lt,aoEnabled:new et,pixelRatioNode:new Z(1),resolution:new Je,penumbraSize:new Pr(5,.5),frameIndex:new we(0),transmissionLod:new we(2)};for(let n of Object.values(xe))n.isRenderGlobal=!0;var rn=class extends ht{constructor(){super("basic");this.nodeType="Basic";this.color=new Me(5526619),this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.previousModelViewMatrix=new Pt,this.previouseProjectionMatrix=new Pt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ql.UniformsUtils.merge([ql.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1812
+ }`,[e,t])}}();var xe={normalRenderTarget:new Gt,normalRenderTargetDepth:new Gt,transmissionRenderTarget:new Gt,aspectRatio:new Xe,transmissionSize:new Xe(2048,2048),transmissionRenderTargetDepth:new Gt,aoRenderTarget:new Gt,aoEnabled:new tt,pixelRatioNode:new Z(1),resolution:new Xe,penumbraSize:new Or(5,.5),frameIndex:new we(0),transmissionLod:new we(2)};for(let n of Object.values(xe))n.isRenderGlobal=!0;var vn=class extends xt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ee(ct),this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(pc.UniformsUtils.merge([pc.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1803
1813
  `));let i=["#include <beginnormal_vertex>",`
1804
1814
  #if !defined( USE_LAYER_DISPLACE )
1805
1815
  #include <defaultnormal_vertex>
@@ -1817,9 +1827,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1817
1827
  #include <begin_vertex>
1818
1828
  #endif /* !USE_LAYER_DISPLACE */
1819
1829
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1820
- `)}else{this.color===void 0&&(this.color=new Me(5526619)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1821
- `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
1822
- `)}return t}};var Us=require("three");var Hs=class extends ht{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Me(5526619),this.emissive=new Me(0),this.emissiveIntensity=new Z(1),this.previousModelViewMatrix=new Pt,this.previouseProjectionMatrix=new Pt,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new et(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Us.UniformsUtils.merge([Us.UniformsLib.fog,Us.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1830
+ `)}else{this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1831
+ `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),t=a.join(`
1832
+ `)}return t}};var na=require("three");var ia=class extends xt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ee(ct),this.emissive=new Ee(0),this.emissiveIntensity=new Z(1),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new tt(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(na.UniformsUtils.merge([na.UniformsLib.fog,na.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1823
1833
  `));let i=["#include <beginnormal_vertex>",`
1824
1834
  #ifndef USE_LAYER_DISPLACE
1825
1835
  #include <defaultnormal_vertex>
@@ -1842,6 +1852,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1842
1852
  geometry.position = mvPosition.xyz;
1843
1853
  geometry.normal = normalize( transformedNormal );
1844
1854
  geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
1855
+ `),i.push(`
1845
1856
  GeometricContext backGeometry;
1846
1857
  backGeometry.position = geometry.position;
1847
1858
  backGeometry.normal = -geometry.normal;
@@ -1911,14 +1922,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1911
1922
  #pragma unroll_loop_end
1912
1923
  #endif
1913
1924
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1914
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Me(5526619)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),l=this.occlusion.flow(e,"b",{slot:"occlusion"}),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1925
+ `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.occlusion.flow(e,"b",{slot:"occlusion"}),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1915
1926
  `));let p=["#include <normal_fragment_begin>",`
1916
1927
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1917
1928
  vec3 viewdx = dFdx(vViewPosition);
1918
1929
  vec3 viewdy = dFdy(vViewPosition);
1919
1930
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
1920
1931
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1921
- `,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),d&&p.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),p.push("vec3 ao = aoEnabled && "+l.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
1932
+ `,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),d&&p.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),p.push("vec3 ao = aoEnabled && "+a.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
1922
1933
  if (outgoingLight != diffuseColor) {
1923
1934
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1924
1935
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${f} * lightAccu;
@@ -1926,16 +1937,43 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1926
1937
 
1927
1938
  outgoingLight *= ao;
1928
1939
  }
1929
- `),a&&p.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
1930
- `)}return t}};var qs=require("three");var Ws=class extends ht{constructor(){super("phong");this.nodeType="Phong";this.color=new Me(5526619),this.specular=new Me(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new Pt,this.previouseProjectionMatrix=new Pt,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new et(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(qs.UniformsUtils.merge([qs.UniformsLib.fog,qs.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1940
+ `),l&&p.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
1941
+ `)}return t}};var sa=require("three");var yo=function(){let n=new k(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1942
+
1943
+ vec2 dSTdx = dFdx( bumpMapUv );
1944
+ vec2 dSTdy = dFdy( bumpMapUv );
1945
+
1946
+ float Hll = bumpScale * texture2D( bumpMap, bumpMapUv ).x;
1947
+ float dBx = bumpScale * texture2D( bumpMap, bumpMapUv + dSTdx ).x - Hll;
1948
+ float dBy = bumpScale * texture2D( bumpMap, bumpMapUv + dSTdy ).x - Hll;
1949
+
1950
+ return vec2( dBx, dBy );
1951
+
1952
+ }`),r=new k(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1953
+
1954
+ vec3 vSigmaX = dFdx( surf_pos.xyz );
1955
+ vec3 vSigmaY = dFdy( surf_pos.xyz );
1956
+ vec3 vN = surf_norm; // normalized
1957
+
1958
+ vec3 R1 = cross( vSigmaY, vN );
1959
+ vec3 R2 = cross( vN, vSigmaX );
1960
+
1961
+ float fDet = dot( vSigmaX, R1 ) * faceDirection;
1962
+
1963
+ vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
1964
+ return normalize( abs( fDet ) * surf_norm - vGrad );
1965
+
1966
+ }`);return{dHdxy:n,perturbNormalArb:r}}();var aa=class extends xt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ee(ct),this.specular=new Ee(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new tt(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sa.UniformsUtils.merge([sa.UniformsLib.fog,sa.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1931
1967
  `));let i=["#include <beginnormal_vertex>",`
1968
+ #include <skinbase_vertex>
1969
+ #include <skinnormal_vertex>
1932
1970
  #ifndef USE_LAYER_DISPLACE
1933
1971
  #include <defaultnormal_vertex>
1934
1972
  #endif
1935
1973
 
1936
1974
 
1937
1975
  vec3 displaced_position = position;
1938
- vec3 displaced_normal = normal;
1976
+ vec3 displaced_normal = objectNormal;
1939
1977
 
1940
1978
  #ifdef USE_LAYER_DISPLACE
1941
1979
  vec3 transformed;
@@ -1945,8 +1983,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1945
1983
  #ifndef USE_LAYER_DISPLACE
1946
1984
  #include <begin_vertex>
1947
1985
  #endif
1948
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1949
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Me(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),s=this.specular.flow(e,"c"),l=this.shininess.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1986
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1987
+ `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),s=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1950
1988
  `));let p=["#include <normal_fragment_begin>",`
1951
1989
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1952
1990
  vec3 viewdx = dFdx(vViewPosition);
@@ -1955,7 +1993,36 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1955
1993
  if (dot(normal, faceNormal) < 0.0) {
1956
1994
  normal *= -1.0;
1957
1995
  }
1958
- `," BlinnPhongMaterial material;"];p.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",s.code," vec3 specular = "+s.result+";",l.code," float shininess = max( 0.0001, "+l.result+" );"," float specularStrength = 1.0;"),d&&p.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
1996
+ `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
1997
+ vec3 bumpNormal = vec3(0.0);
1998
+ {
1999
+ vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
2000
+ vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
2001
+ vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2002
+ vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2003
+
2004
+ vec2 grad0 = dHdxy(${m.result}, uv0, ${y});
2005
+ vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2006
+
2007
+ vec2 grad1 = dHdxy(${m.result}, uv1, ${y});
2008
+ vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2009
+
2010
+ vec2 grad2 = dHdxy(${m.result}, uv2, ${y});
2011
+ vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2012
+
2013
+ bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
2014
+ bumpNormal = normalize(bumpNormal);
2015
+ }
2016
+
2017
+ normal = bumpNormal;
2018
+ `:g=`
2019
+ vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2020
+ vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${y});
2021
+ normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2022
+ `,p.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2023
+ ${h.result};
2024
+ ${g}
2025
+ `)}p.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",s.code," vec3 specular = "+s.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),d&&p.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
1959
2026
  if (outgoingLight != diffuseColor) {
1960
2027
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1961
2028
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${f} * lightAccu;
@@ -1963,8 +2030,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1963
2030
 
1964
2031
  outgoingLight *= ao;
1965
2032
  }
1966
- `),a&&p.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
1967
- `)}return t}};var ji=require("three");var $s=class extends ht{constructor(){super("standard");this.nodeType="Standard";this.color=new Me(5526619),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.previousModelViewMatrix=new Pt,this.previouseProjectionMatrix=new Pt,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new et(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ji.UniformsUtils.merge([ji.UniformsLib.fog,ji.UniformsLib.lights])),ji.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2033
+ `),l&&p.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
2034
+ `)}return t}};var es=require("three");var la=class extends xt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ee(ct),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0),this.occlusion=new tt(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(es.UniformsUtils.merge([es.UniformsLib.fog,es.UniformsLib.lights])),es.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1968
2035
  `));let i=["#include <beginnormal_vertex>",`
1969
2036
  #if !defined( USE_LAYER_DISPLACE )
1970
2037
  #include <defaultnormal_vertex>
@@ -1982,7 +2049,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1982
2049
  #include <begin_vertex>
1983
2050
  #endif /* !USE_LAYER_DISPLACE */
1984
2051
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1985
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Me(5526619)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let s=this.color.flow(e,"c",{slot:"color",context:o}),l=this.roughness.flow(e,"f"),c=this.metalness.flow(e,"f"),u=this.shadingAlpha.flow(e,"f"),a=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2052
+ `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let s=this.color.flow(e,"c",{slot:"color",context:o}),a=this.roughness.flow(e,"f"),c=this.metalness.flow(e,"f"),u=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
1986
2053
  `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1987
2054
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1988
2055
  vec3 viewdx = dFdx(vViewPosition);
@@ -1991,16 +2058,71 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1991
2058
  if (dot(normal, faceNormal) < 0.0) {
1992
2059
  normal *= -1.0;
1993
2060
  }
1994
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];m.push(s.code," vec3 diffuseColor = "+s.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float roughnessFactor = "+l.result+";",c.code," float metalnessFactor = "+c.result+";"),p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?m.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2061
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let y=this.bumpMap.texture.flow(e,"t"),g=this.bumpMap.flow(e,"v3"),x=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
2062
+ vec3 bumpNormal = vec3(0.0);
2063
+ {
2064
+ vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
2065
+ vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
2066
+ vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2067
+ vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2068
+
2069
+ vec2 grad0 = dHdxy(${y.result}, uv0, ${x});
2070
+ vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2071
+
2072
+ vec2 grad1 = dHdxy(${y.result}, uv1, ${x});
2073
+ vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2074
+
2075
+ vec2 grad2 = dHdxy(${y.result}, uv2, ${x});
2076
+ vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2077
+
2078
+ bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
2079
+ bumpNormal = normalize(bumpNormal);
2080
+ }
2081
+
2082
+ normal = bumpNormal;
2083
+ `:b=`
2084
+ vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2085
+ vec2 grad = dHdxy(${y.result}, bumpMapCachedUv, ${x});
2086
+ normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2087
+ `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2088
+ ${g.result};
2089
+ ${b}
2090
+ `)}if(m.push(s.code," vec3 diffuseColor = "+s.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",c.code," float metalnessFactor = "+c.result+";"),this.roughnessMap){let y=this.roughnessMap.texture.flow(e,"t"),g=this.roughnessMap.flow(e,"v3"),x="";this.roughnessMap.projection.value===4?x=`
2091
+ float roughnessChange = 1.0;
2092
+ {
2093
+ vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
2094
+ vec2 uv1 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
2095
+ vec2 uv2 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2096
+ vec3 weights = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2097
+
2098
+ float r0 = luminance(texture(${y.result}, uv0).rgb) * roughnessScale;
2099
+ float r1 = luminance(texture(${y.result}, uv1).rgb) * roughnessScale;
2100
+ float r2 = luminance(texture(${y.result}, uv2).rgb) * roughnessScale;
2101
+
2102
+ roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
2103
+ }
2104
+ float roughnessFactor = roughnessChange * ${a.result};
2105
+ `:x=`
2106
+ vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2107
+
2108
+ vec4 vals = texture(${y.result}, roughnessMapCachedUv);
2109
+ float roughnessFactor = luminance(vals.rgb) * ${a.result};
2110
+ `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2111
+ ${g.result};
2112
+
2113
+ const float roughnessScale = 1.0;
2114
+
2115
+ ${x}
2116
+ `)}else m.push(a.code," float roughnessFactor = "+a.result+";");p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?m.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
1995
2117
  if (outgoingLight != diffuseColor) {
1996
2118
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1997
2119
  accumAlpha += ( 1.0 - accumAlpha ) * ${u.result} * ${h} * lightAccu;
1998
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${u.result} * ${h}, ${a.result} );
2120
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${u.result} * ${h}, ${l.result} );
1999
2121
 
2000
2122
  outgoingLight *= ao;
2001
2123
  }
2002
2124
  `),d&&m.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2003
- `)}return t}};var Ys=require("three");var Xs=class extends ht{constructor(){super("toon");this.nodeType="Toon";this.color=new Me(5526619),this.specular=new Me(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new Pt,this.previouseProjectionMatrix=new Pt,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ys.UniformsUtils.merge([Ys.UniformsLib.fog,Ys.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2125
+ `)}return t}};var ca=require("three");var da=class extends xt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ee(ct),this.specular=new Ee(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Z(1),this.shadingBlend=new we(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ca.UniformsUtils.merge([ca.UniformsLib.fog,ca.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2004
2126
  `));let i=["#include <beginnormal_vertex>",`
2005
2127
  #ifndef USE_LAYER_DISPLACE
2006
2128
  #include <defaultnormal_vertex>
@@ -2018,7 +2140,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2018
2140
  #include <begin_vertex>
2019
2141
  #endif
2020
2142
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2021
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Me(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2143
+ `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2022
2144
  varying vec3 vViewPosition;
2023
2145
  struct ToonMaterial {
2024
2146
  vec3 diffuseColor;
@@ -2047,15 +2169,418 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2047
2169
  if (dot(normal, faceNormal) < 0.0) {
2048
2170
  normal *= -1.0;
2049
2171
  }
2050
- `," ToonMaterial material;"];d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&d.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
2172
+ `," ToonMaterial material;"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let f=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),h=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",y="";this.bumpMap.projection.value===4?y=`
2173
+ vec3 bumpNormal = vec3(0.0);
2174
+ {
2175
+ vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
2176
+ vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
2177
+ vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2178
+ vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2179
+
2180
+ vec2 grad0 = dHdxy(${f.result}, uv0, ${h});
2181
+ vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2182
+
2183
+ vec2 grad1 = dHdxy(${f.result}, uv1, ${h});
2184
+ vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2185
+
2186
+ vec2 grad2 = dHdxy(${f.result}, uv2, ${h});
2187
+ vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2188
+
2189
+ bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
2190
+ bumpNormal = normalize(bumpNormal);
2191
+ }
2192
+
2193
+ normal = bumpNormal;
2194
+ `:y=`
2195
+ vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2196
+ vec2 grad = dHdxy(${f.result}, bumpMapCachedUv, ${h});
2197
+ normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2198
+ `,d.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2199
+ ${m.result};
2200
+ ${y}
2201
+ `)}d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&d.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
2051
2202
  if (outgoingLight != diffuseColor) {
2052
2203
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2053
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
2054
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
2204
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * ${p} * lightAccu;
2205
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result} * ${p}, ${c.result} );
2055
2206
  }
2056
- `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2057
- `)}return t}};var Xl=require("three");var Wl=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Yd=class extends Wl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},$d;function Gy(n){return typeof n=="string"?n:($d||($d=new Yd),$d.load(n))}var $l=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Yl=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var Fi=class extends $l{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let l=this[s];l&&(l.image=this.img,l.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Gy(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new Xl.VideoTexture(this.img,void 0,e,e):o=new Xl.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var nr=class extends Fi{};var Fe=require("three");function vt(n,r){return r.color(n)}function Ry(n,r){switch(n.type){case"fresnel":return wP(n,r);case"gradient":return _P(n);case"depth":return PP(n);case"normal":return TP(n);case"noise":return OP(n,r);case"rainbow":return AP(n);case"toon":return NP(n,r);case"outline":return CP(n,r);case"transmission":return IP(n,r);case"color":return SP(n,r);case"pattern":return MP(n,r)}}function bP(n){return{type:n.type}}function Or(n){let{alpha:r,mode:e,isMask:t}=n;return{...bP(n),alpha:r,mode:e,isMask:t}}function SP(n,r){return{...Or(n),color:vt(n.color,r)}}function wP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:l}=n;return{...Or(n),color:vt(s,r),bias:e,scale:t,intensity:o,factor:i}}function _P(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...Or(n),gradientType:r,smooth:e,colors:t.map(c=>new Fe.Vector4(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Fe.Vector2(...s),morph:new Fe.Vector2(...l),angle:i}}function PP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...Or(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Fe.Vector3(...s),direction:l?new Fe.Vector3(...l):new Fe.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new Fe.Vector4(d[0],d[1],d[2],d[3]):new Fe.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function TP(n){let{cnormal:r}=n;return{...Or(n),cnormal:new Fe.Vector3(r[0],r[1],r[2])}}function OP(n,r){return{...Or(n),scale:n.scale,move:n.move,fA:new Fe.Vector2(...n.fA),fB:new Fe.Vector2(...n.fB),size:new Fe.Vector3(...n.size),distortion:new Fe.Vector2(...n.distortion),colorA:vt(n.colorA,r),colorB:vt(n.colorB,r),colorC:vt(n.colorC,r),colorD:vt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function AP(n){return{...Or(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Fe.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Fe.Vector3(...n.offset)}}function NP(n,r){return{...Or(n),positioning:n.positioning,colors:n.colors.map(e=>new Fe.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Fe.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:vt(n.shadowColor,r),offset:new Fe.Vector3(...n.offset)}}function CP(n,r){return{...Or(n),outlineColor:vt(n.outlineColor,r),contourColor:vt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Fe.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function IP(n,r){return{...Or(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function MP(n,r){return{...Or(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Fe.Vector2(...n.offset),colorA:vt(n.colorA,r),colorB:vt(n.colorB,r),frequency:new Fe.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Fe.Vector2(...n.vertical),horizontal:new Fe.Vector2(...n.horizontal),sides:n.sides}}var Io=class extends ct{};var Vy=require("three");var Xd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Kd={depth:["colors"]};function EP(n,r,e){if(r==="isMask")return!0;let t=Xd[n.type],o=Kd[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Zd(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=r.image(s),c=t;c.image instanceof nr||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof nr||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function zy(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Qd(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof Co))switch(o=o||EP(e,i,s),l.constructor){case Me:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Io?l.value=new ct(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case kt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Io?l.value=new ct(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Je:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case _t:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Lt:{Zd(s,r,e);break}case Tr:{l.value=s.map(c=>new Vy.Vector4(...c));break}default:{l.value=s;break}}}return o}var kr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Qd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return sr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new en(i,t.texture.wrapping),l=new Ul(i),c=new Hl(t.texture.repeat,t.texture.offset),u=new Z(t.crop?1:0),a=new we(t.projection??0),d=new we(["x","y","z"].indexOf(t.axis)??0),p=new we(t.side??0),f=new Je(t.size?new Ge.Vector2(t.size[0],t.size[1]):new Ge.Vector2(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new we(t.mode??0),g=new et(t.isMask??!1),v=new Ni(s,l,u,a,d,p,f,m,c,h,y,g),b=new Ne(v.calpha,"f");return new We(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},v,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new en(i,t.texture.wrapping),l=new Z(t.alpha??1),c=new we(t.mode??0),u=new et(t.isMask??!1),a=new Ei(s,l,c,u),d=new Ne(a.calpha,"f");return new We(r,e,t,{texture:s,alpha:l,mode:c,isMask:u},a,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new _t(new Ge.Vector3(...t.offset)),s=new Z(t.scale??10),l=new Z(t.intensity??8),c=new Z(t.movement??1),u=new we(t.noiseType??0),a=new we(t.voronoiStyle??0),d=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new we(t.quality??1),y=new zi(l,c,i,a,d,p,f,m,h,s,u);return new Ks(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u,voronoiStyle:a,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return DP(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene?.markNeedsUpdateRendererDirty(),!0):zy(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Zd(o.props,t.shared,this):!0;return!1}dispose(){if(LP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof nr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},We=class extends kr{constructor(e,t,o,i,s,l,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c;this.isMask=u}},Ks=class extends kr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},sr=class extends kr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new Z(o.alpha),c=new we(o.mode),u;if(!o.visible)s=new rn,u={};else if(o.category==="lambert"){s=new Hs;let a=new Me(i.color(o.emissive)??0),d=new et(o.occlusion??!0);u={emissive:a,occlusion:d},s.emissive=a,s.occlusion=d}else if(o.category==="toon"){s=new Xs;let a=new Z(o.shininess??30),d=new Me(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new $s;let a=new Z(o.roughness??.3),d=new Z(o.metalness??0),p=new Z(o.reflectivity??.5),f=new et(o.occlusion??!0);u={roughness:a,metalness:d,reflectivity:p,occlusion:f},s.roughness=a,s.metalness=d,s.reflectivity=p,s.occlusion=f}else{s=new Ws;let a=new Z(o.shininess??30),d=new Me(o.specular!==void 0?i.color(o.specular)??1118481:1118481),p=new et(o.occlusion??!0);u={shininess:a,specular:d,occlusion:p},s.shininess=a,s.specular=d,s.occlusion=p}return s.alpha=new Z(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new sr(e,t,o,s,u)}get category(){return this.node.category}};function LP(n){let r=n instanceof kr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function ir(n){return{alpha:new Z(n.alpha??1),mode:new we(n.mode??0),isMask:new et(n.isMask??!1)}}function BP(n,r,e,t){switch(n.type){case"color":{let o=new Me(t.color??5526619),i=ir(t),s=new tn(o,i.alpha),l=new Ne(s.calpha,"f");return new We(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}case"fresnel":{let o=new Me(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),l=new Z(t.intensity??2),c=new Z(t.factor??1),u=ir(t),a=new Fs(o,i,s,l,c,u.alpha,u.mode,u.isMask),d=new Ne(a.calpha,"f");return new We(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,...u},a,u.mode,d,u.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new _t(t.wavelengths??new Ge.Vector3(0,0,0)),l=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),u=new _t(t.offset??new Ge.Vector3(0,0,0)),a=ir(t),d=new Gi(o,i,s,l,c,u,a.alpha,a.isMask),p=new Ne(d.calpha,"f");return new We(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...a},d,a.mode,p,a.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),l=xe.transmissionSize,c=xe.transmissionRenderTarget,u=xe.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new Je(d/a,1):new Je(1,a/d),f=ir(t),m=new Vi(o,i,s,l,c,u,p,f.alpha),h=new Ne(m.calpha,"f");return new We(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new we(t.positioning??0),i;t.colors?i=new Tr(t.colors.length,t.colors):(i=new Tr(10,new Ge.Vector4(0,0,0,1)),i.value[1]=new Ge.Vector4(1,1,1,1));let s;t.steps?s=new Pr(t.steps.length,t.steps):(s=new Pr(10,1),s.value[0]=0);let l=new _t(t.source??new Ge.Vector3(0,0,0)),c=new et(t.isWorldSpace??!0),u=new Z(t.noiseStrength??0),a=new Z(t.noiseScale??1),d=new kt(t.shadowColor),p=new _t(t.offset??new Ge.Vector3(0,0,0)),f=ir(t),m=new Ri(o,i,s,l,c,u,a,d,p,f.alpha),h=new Ne(m.calpha,"f");return new We(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Me(t.outlineColor??16777215),i=new Me(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),l=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),u=new Z(t.contourThreshold??.1),a=new Z(t.outlineSmoothing??.1),d=new Z(t.contourFrequency??.1),p=new _t(t.contourDirection??new Ge.Vector3(0,1,0)),f=new et(t.positionalLines??!1),m=new et(t.compensation??!0),h=xe.normalRenderTarget,y=xe.normalRenderTargetDepth,g=xe.pixelRatioNode,v=xe.resolution,b=ir(t),w=new Bi(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b.alpha),S=new Ne(w.calpha,"f");return new We(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new we(t.gradientType??0),i=new et(t.smooth??!1),s=new Z(t.near??50),l=new Z(t.far??200),c=new Z(t.isVector??1),u=new Z(t.isWorldSpace??0),a=new _t(t.origin??new Ge.Vector3),d=new _t(t.direction??new Ge.Vector3),p;t.colors?p=new Tr(t.colors.length,t.colors):(p=new Tr(2,new Ge.Vector4(0,0,0,1)),p.value[1]=new Ge.Vector4(1,1,1,1));let f;t.steps?f=new Pr(t.steps.length,t.steps):(f=new Pr(2,1),f.value[0]=0);let m=ir(t),h=new Ii(o,i,s,l,c,u,a,d,p,f,m.alpha,m.isMask),y=new Ne(h.calpha,"f");return new We(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new _t(t.size??new Ge.Vector3(100,100,100)),s=new Z(t.move??1),l=new Je(t.fA??new Ge.Vector2(1.7,9.2)),c=new Je(t.fB??new Ge.Vector2(8.3,2.8)),u=new Je(t.distortion??new Ge.Vector2(1,1)),a=new kt(t.colorA),d=new kt(t.colorB),p=new kt(t.colorC),f=new kt(t.colorD),m=new we(t.noiseType??0),h=new we(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),v=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new we(t.quality??1),S=ir(t),P=new Li(o,i,s,l,c,u,a,d,p,f,S.alpha,m,S.isMask,h,y,g,v,b,w),_=new Ne(P.calpha,"f");return new We(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:v,seed:b,quality:w},P,S.mode,_,S.isMask)}case"normal":{let o=new _t(t.cnormal??new Ge.Vector3(1,1,1)),i=ir(t),s=new Oi(o,i.alpha),l=new Ne(s.calpha,"f");return new We(r,e,n,{cnormal:o,...i},s,i.mode,l,i.isMask)}case"gradient":{let o=new we(t.gradientType??0),i=new et(t.smooth??!1),s;t.colors?s=new Tr(t.colors.length,t.colors):(s=new Tr(10,new Ge.Vector4(0,0,0,1)),s.value[1]=new Ge.Vector4(1,1,1,1));let l;t.steps?l=new Pr(t.steps.length,t.steps):(l=new Pr(10,1),l.value[0]=0);let c=new Je(t.offset??new Ge.Vector2(0,0)),u=new Je(t.morph??new Ge.Vector2(0,0)),a=new Z(t.angle??0),d=ir(t),p=new Mi(o,i,s,l,c,u,a,d.alpha,d.isMask),f=new Ne(p.calpha,"f");return new We(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new we(t.style??0),i=new we(t.projection??0),s=new we(["x","y","z"].indexOf(t.axis)??0),l=new Z(t.blending??0),c=new Je(t.offset??new Ge.Vector2(0,0)),u=new kt(t.colorA),a=new kt(t.colorB),d=new Je(t.frequency??new Ge.Vector2(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new Je(t.vertical??new Ge.Vector2(0,1)),v=new Je(t.horizontal??new Ge.Vector2(0,1)),b=new we(t.sides??6),w=ir(t),S=new Di(o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b,w.alpha,w.isMask),P=new Ne(S.calpha,"f");return new We(r,e,n,{style:o,projection:i,axis:s,blending:l,offset:c,colorA:u,colorB:a,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:v,sides:b,...w},S,w.mode,P,w.isMask)}default:{let o=new Me(1,0,0,1),i=ir(t),s=new tn(o,i.alpha),l=new Ne(s.calpha,"f");return new We(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}}}function DP(n,r,e,t){let o=Ry(e,t);return BP(e,n,r,o)}function Qd(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function jy(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"&&t.data.type!=="pattern"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}}return e<1}var Ht=class extends Fy.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Kl=class extends Ht{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},on=class extends Ht{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Kl(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??zt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>kr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=jy(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof sr),this.lightLayer===void 0&&(this.lightLayer=new sr(0,"",{...Mt.defaultData("light","phong"),visible:!1},new rn,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=jy(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=kr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),o.scene?.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene?.markNeedsUpdateRendererDirty();else if(e.type===6){let l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene?.markNeedsUpdateRendererDirty();let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=kr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof We?t.color.mask=void 0:t instanceof sr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof We&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof sr?i.node.mask=new yt(t.color,t.alpha,yt.MUL):i instanceof We&&(i.isMask.value||(i.color.mask=new yt(t.color,t.alpha,yt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),t=this.layers.findIndex(o=>o instanceof sr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof We){if(s.isMask.value)continue;o=new Ti(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof sr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof We){if(i.isMask.value)continue;e=new Ti(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Ks);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new yt(t,e[o].position,yt.ADD),t=new yt(t,new Z(.5).setReadonly(!0),yt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Xd[t.type]??[]).map(u=>t[u]),i=(Kd[t.type]??[]).map(u=>t[u]?.length??0),s=[...o,...i],l="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${l}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new kl;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof We){let t=e.params.texture;if(t instanceof en&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Ht.prototype,{properties:{get:function(){return this.fragment.properties}}});var nn=class extends on{};var qy=Go(ky());var Uy=new Map;function Hy(n){if(typeof n=="string")return n;let r=Uy.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Uy.set(n,r)),r.url}var sn=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Hy(r),format:"wav"},this.sound=new qy.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var dt=require("three"),Ql=class{constructor(){this.type="ShapePath";this.color=new dt.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new dt.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let b=h.x,w=y.x,S=g.x,P=v.x,_=h.y,x=y.y,C=g.y,T=v.y,N=(P-S)*(_-C)-(T-C)*(b-S),O=(w-b)*(_-C)-(x-_)*(b-S),A=(T-C)*(w-b)-(P-S)*(x-_),G=N/A,k=O/A;if(A===0&&N!==0||G<=0||G>=1||k<0||k>1)return null;if(N===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let ee=$===0?g:v;return{x:ee.x,y:ee.y,t:t.t}}else if(t.loc===e.BETWEEN){let ee=+(b+t.t*(w-b)).toPrecision(10),Y=+(_+t.t*(x-_)).toPrecision(10);return{x:ee,y:Y,t:t.t}}return null}else{for(let Y=0;Y<2;Y++)if(i(Y===0?g:v,h,y),t.loc===e.ORIGIN){let W=Y===0?g:v;return{x:W.x,y:W.y,t:t.t}}let $=+(b+G*(w-b)).toPrecision(10),ee=+(_+G*(x-_)).toPrecision(10);return{x:$,y:ee,t:G}}}function i(h,y,g){let v=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,P=v*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(v*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=w/v:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let P=1;P<y.length;P++){let _=y[P-1],x=y[P],C=o(w,S,_,x);C!==null&&g.find(T=>T.t<=C.t+Number.EPSILON&&T.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new dt.Vector2(C.x,C.y)))}}return v}function l(h,y,g){let v=new dt.Vector2;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(P=>{b.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,v,b){(b==null||b==="")&&(b="nonzero");let w=new dt.Vector2;h.boundingBox.getCenter(w);let S=[new dt.Vector2(g,w.y),new dt.Vector2(v,w.y)],P=l(S,h.boundingBox,y);P.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];P.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let C=_[0].point.x,T=[],N=0;for(;N<x.length&&x[N].point.x<C;)T.length>0&&T[T.length-1]===x[N].identifier?T.pop():T.push(x[N].identifier),N++;if(T.push(h.identifier),b==="evenodd"){let O=T.length%2===0,A=T[T.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,G=null;for(let k=0;k<T.length;k++){let $=T[k];y[$]&&(O?(G=y[$].isCW,O=!1,A=$):G!==y[$].isCW&&(G=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<v&&(v=P.y),P.x>b&&(b=P.x),P.x<w&&(w=P.x)}d<=b&&(d=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:dt.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new dt.Box2(new dt.Vector2(w,v),new dt.Vector2(b,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new dt.Shape;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new dt.Path;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Wy,Jd=new Promise(n=>{Wy=n});var $y=Dn(async()=>{let n=await import("./opentype.js");Wy(n)});var Zs=class{async load(r,e,t=()=>{}){let{load:o}=await Jd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Jd;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function GP(n){return await(await fetch(n)).arrayBuffer()}var RP=new Zs;async function eu(n){let r,e,t=!1;if(n.url?(r=await GP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await RP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var ki=require("three");function VP(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Jl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=eu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=eu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(VP(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
2058
- `,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let b=r[v],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,b,c);let P=[];try{P=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],C=x.index===0?`
2059
- `:x.unicode?String.fromCharCode(x.unicode):void 0,T=P[_],N=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(N=t.getKerningValue(x,y)*o),d+=O+N;let A=0;if(C===`
2060
- `)A=u;else if(C===" ")A=a;else{let G=this.createPath(x,o,d,p,e);G&&(A=G.offsetX-(N+O),f.push(G.path))}if(T.replacements.length===1)h[v].push([d,p]),m[v].push(A);else{let G=T.replacements.map(Y=>(t.glyphs.get(Y).advanceWidth??0)*o),k=G.reduce((Y,W)=>Y+=W,0),$=G.map(Y=>Y/k),ee=d;for(let Y=0;Y<$.length;Y++){let W=A*$[Y];h[v].push([ee,p]),m[v].push(W),ee+=W}}d+=A,y=x}p-=i}let g=[];for(let v=0,b=f.length;v<b;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2061
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Ql,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=zP(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function zP(n){if(n.length){let r=n[0];if(r instanceof ki.LineCurve)return r.v1;if(r instanceof ki.CubicBezierCurve||r instanceof ki.QuadraticBezierCurve)return r.v0}}var tu=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Qs=class extends tu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Zo(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Yy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var ru=class extends Yl{constructor(e){super();this.shared=e}create(e){return new Fi(e,this.shared)}},an=class{constructor(r,e={}){this.geometryCache=new Qs(!0);this.geometryCache2=new Qs(!1);this.imageHolderCache=new ru(this);this.thisContext={scene:Yy,shared:this};this.deletedMaterial=new nn(zt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new nr(Zn.emptyImage,this);this.deletedVideo=new nr(Hn.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new nn(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new on(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new nr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new nr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Io(e.r,e.g,e.b,e.a):this.colors[r]=new Io(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ct(0,0,0,0))}else return"a"in r?new ct(r.r,r.g,r.b,r.a):new ct(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof sn)return e;{let t=new sn({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof sn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Jl(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof sn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Xy=new an(hl.emptyData());var ar=class extends wt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),em(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(fr(e.path,["material"])&&this.material instanceof Ht)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(St.drop(e,1),t.material,o);else if(fr(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(St.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&ya(this.material).forEach(e=>{e instanceof Ht&&(e instanceof nn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Ky=require("three");var Tt=class extends ar{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Ky.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof an){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return ys.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return ys.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),fr(e.path,["geometry"])&&this.updateByPatchedOpGeometry(St.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=Zo(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Ds(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Zo(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&ls(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof ot&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function jP(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new er.Vector3(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new er.Vector3})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new er.Float32BufferAttribute(i,3))}function FP(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new er.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new er.Float32BufferAttribute(t,3))}function Ui(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Ht)||n.material.getLayersOfType("outline").length===0)return;n instanceof Tt&&n.is2DAndNoDepth?FP(n):jP(n)}function Hi(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[er.MathUtils.seededRandom(o),er.MathUtils.seededRandom(o+1e4),er.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new er.BufferAttribute(t,3))}var kP;hi.then(n=>{kP=n});var Ur=new lo.Box3,Js=new lo.Vector3;function Zy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var ln=class extends Tt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new lo.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=ot.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,Ui(this),Hi(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,wt.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new lo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Ur.setFromBufferAttribute(t),Ur.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ur.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ur.getSize(Js),this.hasNonUniformScale&&Js.divide(this.scale);let i={width:Js.x,height:Js.y,depth:Js.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Ur.min.set(e[0],e[2],e[4]),Ur.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Ur.min.applyMatrix4(this.shearScaleInv),Ur.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new lo.Sphere);let o=t.boundingSphere.center;Ur.getCenter(o),t.boundingSphere.radius=o.distanceTo(Ur.max)}freeSubdivPointer(){this.subdivPointer&&(ot.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Hr=require("three"),Qy=-1,UP=1,Jy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},eg={polygon_center:0,edge:1,vertex:2},ea=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,he=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Qy)*(e-t)/(UP-Qy)+t};function tg(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var HP=new Hr.Vector3,ec=new Hr.Vector3,qP=new Hr.Vector3,WP=new Hr.Vector3;function qi(n,r){let e=qP.fromArray(n),t=WP.fromArray(r);ec.copy(t).sub(e);let o=ec.length();return ec.normalize().multiplyScalar(o*.5),HP.copy(e).add(ec).toArray()}var lr=new Hr.Triangle,tc=new Hr.Vector3,rc=new Hr.Vector3,cn=new Hr.Vector3;function rg(n){let r=[];for(let e=0;e<=n.index.count;e++)if(tc.fromArray(n.index.array,e*3),lr.setFromAttributeAndIndices(n.attributes.position,tc.x,tc.y,tc.z),lr.getNormal(rc),lr.getMidpoint(cn),!(isNaN(cn.x)||isNaN(cn.y)||isNaN(cn.z))){let{a:t,b:o,c:i}=lr,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=qi(s,l),f=qi(l,c),m=qi(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=lr.getMidpoint(cn).toArray();y===u&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===d&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:lr.getNormal(rc).toArray()})}return r}function og(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){lr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),lr.getNormal(rc),lr.getMidpoint(cn);let o=lr.a.toArray(),i=lr.b.toArray(),s=lr.c.toArray();r.push({vertices:[o,i,s],faceCenters:[qi(o,i),qi(i,s),qi(s,o)],midpoint:cn.toArray(),norm:rc.toArray()})}return r}var $P=4,YP=.5,ou=n=>.5*(1-Math.cos(n*Math.PI)),nu=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<$P;g++){let v=o+(i<<4)+(s<<8);a=ou(l),d=ou(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=ou(u)*(h-m),p+=m*f,f*=YP,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},ng=nu;var $i=require("three");var ig=new $i.Vector3,sg=new $i.Matrix4,ag=new $i.Ray;function lg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Wi=class extends Tt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(sg.copy(o).invert(),ag.copy(e.ray).applyMatrix4(sg),ag.intersectBox(this.singleBBox,ig))){let i=ig.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Bt=1e-4,qr,ug,pg,fg,cg=new Ee.Vector3,dg=new Ee.Vector3;hi.then(n=>{qr=n,ug=[qr.get_face_center,qr.get_edge_midpoint,qr.get_vertex_position],pg=[qr.get_face_normal,qr.get_edge_normal,qr.get_vertex_normal],fg=[qr.face_count,qr.edge_count,qr.vertex_count]});var XP=new Ee.Matrix4,KP=new Ee.Matrix4,Mo=new Ee.Vector3,dn=new Ee.Vector3,ta=new Ee.Vector3,iu=new Ee.Vector3,ZP=new Ee.Vector3,QP=new Ee.Vector3;var co=new ng,Xi=class extends ei(Ee.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof no&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof no&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new no(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new no(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ee.MathUtils.DEG2RAD,i=t.end*Ee.MathUtils.DEG2RAD,s=o-i,l=new Ee.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ee.Vector3(0,0,1);break;case"y":c=new Ee.Vector3(0,1,0);break;default:case"x":c=new Ee.Vector3(1,0,0);break}let u=e.randomnessObject??Dr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";co.noiseSeed(u.seed);let d=gl((0,Yi.default)(u.seed)),p=ea(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?co.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,he(y,u.scale[0]))||Bt,m.scale.y=t.scale[1]+p(g,he(y,u.scale[1]))||Bt,m.scale.z=t.scale[2]+p(g,he(y,u.scale[2]))||Bt,m.position.setScalar(0);let v=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,v,0);break;case"y":m.rotation.set(0,0,v);break;case"z":m.rotation.set(v,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,he(y,u.position[0])),m.position.y+=t.position[1]+p(g,he(y,u.position[1])),m.position.z+=t.position[2]+p(g,he(y,u.position[2]));let b=p(g,he(y,u.rotation[0])),w=p(g,he(y,u.rotation[1])),S=p(g,he(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+b,m.rotation.y+=l.y+w,m.rotation.z+=l.z+S):m.rotation.set(l.x+b,l.y+w,l.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ee.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Dr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";co.noiseSeed(i.seed);let l=gl((0,Yi.default)(i.seed)),c=ea(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?co.noise(d):l(d,d),f=u+1,m=c(f,he(p,i.rotation[0])),h=c(f,he(p,i.rotation[1])),y=c(f,he(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(f,he(p,i.scale[0]))||Bt,a.scale.y=1+(t.scale[1]-1)*u+c(f,he(p,i.scale[1]))||Bt,a.scale.z=1+(t.scale[2]-1)*u+c(f,he(p,i.scale[2]))||Bt,a.rotation.x=o.x*u+m,a.rotation.y=o.y*u+h,a.rotation.z=o.z*u+y,a.position.x=t.position[0]*u+c(f,he(p,i.position[0])),a.position.y=t.position[1]*u+c(f,he(p,i.position[1])),a.position.z=t.position[2]*u+c(f,he(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Dr.defaultData([1,1,1]).randomnessObject,s=ea(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";co.noiseSeed(i.seed);let c=Zm((0,Yi.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new Ee.Vector3(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?co.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,he(h,i.scale[0]))||Bt,y.scale.y=1+s(t,he(h,i.scale[1]))||Bt,y.scale.z=1+s(t,he(h,i.scale[2]))||Bt;let g=s(t,he(h,i.rotation[0])),v=s(t,he(h,i.rotation[1])),b=s(t,he(h,i.rotation[2]));y.rotation.set(g,v,b),y.position.x=o.size[0]*d-a.x+s(t,he(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,he(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,he(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?co.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,he(f,i.scale[0]))||Bt,m.scale.y=1+s(t,he(f,i.scale[1]))||Bt,m.scale.z=1+s(t,he(f,i.scale[2]))||Bt;let h=s(t,he(f,i.rotation[0])),y=s(t,he(f,i.rotation[1])),g=s(t,he(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,he(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,he(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,he(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ee.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Dr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";co.noiseSeed(i.seed);let l=gl((0,Yi.default)(i.seed)),c=ea(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Wi)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,b=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),S=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(b=>b.norm))}):a.push(g)});let f=tg(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new xl(this.objectForSample).build(),h=Jy[t.axis],y=this.children;m.setRandomGenerator((0,Yi.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?co.noise(b):l(b,b),S=g+1,P=c(S,he(w,i.rotation[0])),_=c(S,he(w,i.rotation[1])),x=c(S,he(w,i.rotation[2]));t.spreadType==="random"?m.sample(ta,iu):(f.length&&(ta.fromArray(f[g].pos),iu.fromArray(f[g].norm)),this.objectForSample instanceof ln&&ta.applyMatrix4(XP.copy(this.objectForSample.matrixWorld).invert())),ta.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(ta),Mo.fromArray(h);let C=t.align==="normal"?iu:this.object.getWorldDirection(QP),T=dn.fromArray(t.position);dn.x+=dn.x+c(S,he(w,i.position[0])),dn.y+=dn.y+c(S,he(w,i.position[1])),dn.z+=dn.z+c(S,he(w,i.position[2]));let N=Math.acos(C.dot(Mo)),O=ZP.crossVectors(Mo,C).normalize(),A=KP.makeRotationAxis(O,N),G=C.clone().cross(this.object.up).normalize(),k=G.clone().cross(C).normalize(),$=new Ee.Matrix4().makeBasis(G,C,k),ee=new Ee.Vector3(Mo.y,Mo.z,Mo.x).normalize(),Y=ee.clone().cross(Mo).normalize(),W=new Ee.Matrix4().makeBasis(ee,Mo,Y).invert(),H=new Ee.Matrix4().multiplyMatrices($,W);v.rotation.setFromRotationMatrix(H),T.applyMatrix4(A),v.position.add(T),v.rotation.x=v.rotation.x+o.x+P,v.rotation.y=v.rotation.y+o.y+_,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(S,he(w,i.scale[0]))||Bt,v.scale.y=v.scale.y+t.scale[1]+c(S,he(w,i.scale[1]))||Bt,v.scale.z=v.scale.z+t.scale[2]+c(S,he(w,i.scale[2]))||Bt,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ln){let t=this.objectForSample,o=eg[e],i=fg[o],s=ug[o],l=pg[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);cg.fromArray(d).applyMatrix4(t.matrixWorld),dg.fromArray(p),c.push({pos:cg.toArray(),norm:dg.toArray()})}return c}else return(this.objectForSample.geometry.index?rg(this.objectForSample.geometry):og(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=to(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof wt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ee.Matrix4,this.hiddenMatrix=new Ee.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var pr=require("three");var ke=require("three");var Ot=require("three");var mg=require("three"),Wr=n=>{var r;return r=class extends n{},r.geometryHelper=new mg.BoxGeometry(30,30,30),r};var Nt=require("three"),oc=new Nt.Ray,su=new Nt.Sphere,hg=new Nt.Matrix4,$r=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),su.copy(i.boundingSphere),su.applyMatrix4(s),e.ray.intersectsSphere(su)===!1||(hg.copy(s).invert(),oc.copy(e.ray).applyMatrix4(hg),i.boundingBox!==null&&oc.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,oc,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Nt.Vector3,w=new Nt.Vector3,S=new Nt.Vector3,P=new Nt.Vector3,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=C*C,N=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=N,G=O-1;A<G;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),oc.distanceSqToSegment(b,w,P,S)>T)continue;P.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(P);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,P,_){let x=new Nt.Vector3,C=new Nt.Vector3,T=new Nt.Vector3,N=new Nt.Vector3,O=new Nt.Vector3;if(x.fromBufferAttribute(w,S),C.fromBufferAttribute(w,P),T.fromBufferAttribute(w,_),b.intersectTriangle(x,C,T,!1,N)===null)return null;O.copy(N),O.applyMatrix4(g.matrixWorld);let G=v.ray.origin.distanceTo(O);return G<v.near||G>v.far?null:{faceIndex:1,distance:G,point:O.clone(),object:g}}};var nc=new Ot.Vector3,cr=new Ot.Camera,au=class extends Ot.LineSegments{constructor(e){let t=new Ot.BufferGeometry,o=new Ot.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Ot.Color(15711266),u=new Ot.Color(15711266),a=new Ot.Color(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}t.setAttribute("position",new Ot.Float32BufferAttribute(i,3)),t.setAttribute("color",new Ot.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;cr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;Ar("n1",t,e,cr,-i,-s,l),Ar("n2",t,e,cr,i,-s,l),Ar("n3",t,e,cr,-i,s,l),Ar("n4",t,e,cr,i,s,l);let c=l;Ar("f1",t,e,cr,-i,-s,c),Ar("f2",t,e,cr,i,-s,c),Ar("f3",t,e,cr,-i,s,c),Ar("f4",t,e,cr,i,s,c);let u=c,a=.5;Ar("u1",t,e,cr,i*.7*a,s*1.1,u),Ar("u2",t,e,cr,-i*.7*a,s*1.1,u),Ar("u3",t,e,cr,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ar(n,r,e,t,o,i,s){nc.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],nc.x,nc.y,nc.z)}}var ic=class extends Wr(au){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){$r(this.object,this.geometry,e,t,!0)}};var ra=require("three");var sc;(r=>r.is=e=>"objectHelper"in e)(sc||(sc={}));var Eo=(n,r)=>class extends Sl(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ra.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof ra.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ra.Box3Helper&&(i.visible=!1)}}};var lu=790,Ki=new ke.Vector3,cu=new ke.Vector3,du=new ke.Quaternion,uu=new ke.Vector3,oa=new ke.Vector3,pu=new ke.Vector3,Yr=class extends Eo(ke.Camera,ic){constructor(e="",t={...Yn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new ke.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??lu,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new ke.OrthographicCamera(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new ke.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new ke.PerspectiveCamera(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new ke.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ki),this.targetOffset=Ki.distanceTo(e)}getTarget(e=new ke.Vector3){return this.getWorldDirection(cu),this.getWorldPosition(Ki),cu.multiplyScalar(this.targetOffset),e.copy(Ki).add(cu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ki),Ki.distanceTo(e)}updateUp(){this.getWorldQuaternion(du),uu.set(0,0,1).applyQuaternion(du),oa.copy(ke.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&oa.negate(),oa.applyQuaternion(du),pu.copy(ke.Object3D.DEFAULT_UP).projectOnPlane(uu),this.angleOffsetFromUp=pu.angleTo(oa),this.angleOffsetFromUp*=pu.cross(oa).dot(uu)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new ke.Vector3),i=e.getWorldDirection(new ke.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new ke.Vector3),i=this.getWorldDirection(new ke.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??lu,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}toOrthographic(){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.objectHelper&&this.objectHelper.update()}toPerspective(){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.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,o,i,s,l)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom,autoZoom:!0,autoZoomFrustumSize:lu},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ln(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),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()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var Lo=require("three");var Zi=new Lo.Matrix4,eT=new Lo.Matrix4;var dr=class extends ar{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Lo.BufferGeometry;this.onAfterRender=(e,t,o,i,s,l)=>{super.onAfterRender(e,t,o,i,s,l),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof dr&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof wt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(Zi.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=Sr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;Sr.transformMeshSet(s.booleanMeshSetAddress,Zi),s.booleanMatrixInvOld.copy(Zi).invert(),s.booleanWasTransformed=!1}else s instanceof dr&&s.needsTransformForDownstream===!0?(Sr.transformMeshSet(s.booleanMeshSetAddress,Zi),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Sr.transformMeshSet(s.booleanMeshSetAddress,eT.multiplyMatrices(Zi,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(Zi).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new Lo.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Sr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Lo.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Sr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,Ui(this),Hi(this)}dispose(){super.dispose(),this.geometry.dispose()}};var gg=require("three");var yg;(r=>{function n(e){return Re.is(e)&&e instanceof gg.Light}r.is=n})(yg||(yg={}));var Qi=(n,r)=>class extends Eo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Ji=n=>n instanceof wt,na=n=>n!==null&&n instanceof dr,xg=n=>n instanceof Yr;var fu=n=>sc.is(n);var bg=require("three");var vg=require("three");var Bo=class extends Wr(vg.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){$r(this.object,Bo.geometryHelper,e,t)}update(){}};var ia=class extends Eo(bg.Group,Bo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var aa=require("three");var Sg=require("three");var es=class extends Wr(Sg.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){$r(this.object,es.geometryHelper,e,t)}};var wg=require("three");var ts=class extends Wr(wg.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){$r(this.object,ts.geometryHelper,e,t)}};var lc=require("three");var ac=class extends Wr(lc.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){$r(this.object,ac.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=ac._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},sa=ac;sa._vector=new lc.Vector3;function tT(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var cc=class extends Qi(aa.DirectionalLight,es){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new aa.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof aa.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&tT(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t&&this.update()}};var qt=require("three");var dc=class extends Qi(qt.PointLight,ts){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new qt.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new qt.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new qt.Box3(s,l),u=new qt.Box3Helper(c,new qt.Color(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof qt.Box3Helper){let t=this.shadow.camera,o=new qt.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new qt.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var ur=require("three");var _g=new ur.Vector3,Pg=new ur.Vector3,Tg=new ur.Quaternion,uc=class extends Qi(ur.SpotLight,sa){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=ur.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new ur.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof ur.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Pg.setFromMatrixPosition(this.matrixWorld),Tg.setFromRotationMatrix(this.matrixWorld),_g.copy(this.up).applyQuaternion(Tg).negate().multiplyScalar(this.distance),this.target.position.copy(Pg).add(_g),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var pc=class extends Tt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Vs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var rs=class extends Tt{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Ll;break;case"Ellipse":i=ui;break;case"Polygon":i=El;break;case"Star":i=Bl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Vs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ag=require("three");var uo=class extends Eo(Ag.Group,Bo){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of _o.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of _o.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Re.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),fc(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Ng(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function fc(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Re.is(e)&&fc(e)}}function Og(n,r,e,t){return n.component===r&&ls(n.identity,t)?n.overrideData===e?2:1:0}function Ng(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof uo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Re.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Xn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Re.is(m)?m:null,p!==null){let h=Og(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=Og(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?ro.apply(u.data,d):u.data;mr.is(m.type)&&(m={...m,type:"Empty"}),p=gr.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,Ng(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Re.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function rT(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Wi(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new ln(n,r,e):r.geometry.type==="PathGeometry"?t=new rs(n,r,e):r.geometry.type==="VectorGeometry"?t=new pc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new dr(n,r,e):t=new Tt(n,r,e),t)}function mc(n,r,e){return r.type==="Mesh"?rT(n,r,e):r.type==="Empty"?new ia(n,r):r.type==="PointLight"?new dc(n,r,e):r.type==="SpotLight"?new uc(n,r,e):r.type==="DirectionalLight"?new cc(n,r,e):r.type==="Component"||r.type==="Instance"?new uo(n,r,e):mr.is(r.type)?new Yr(n,r):(console.error(r),new ia(n,r))}gr.createEntity=mc;function oT(n,r,e){let t=mc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}gr.changeEntityProptotype=oT;gr.Cloner=Xi;function Cg(n,r,e,t){n.updateByOp(r,e,t,!1)}var os=require("three");function Ig(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Hi(n),Ui(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof ar&&n.needsAO&&n.layers.enable(5),e}function Mg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function Eg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Ig(e,e.material[t])&&(r=!0);else Ig(e,e.material)&&(r=!0)}),r}function Lg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Mg(e,e.material[t])&&(r=!0);else Mg(e,e.material)&&(r=!0)}),r}var sT=new os.Raycaster,aT=new os.Matrix4,lT=new os.Ray;function mu(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=aT.copy(i.matrixWorld).invert(),l=lT.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=sT;u.set(l.origin,l.direction),u.near=r.near,u.far=r.far;let a=u.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var hc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let l=i.length-2;l>=0;l--)if(!e.has(i[l])){let c=r.find(i[l]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[l]}`),e.add(i[l])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var cT=new pr.MeshBasicMaterial;cT.wireframe=!0;var Bg=new pr.Vector3,hu=class extends pr.Scene{constructor(e,t){super();this.data=e;this.backupFog=new pr.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.occlusion=!1;this.aoFullRes=!1;this.radius=128;this.bias=.5;this.aoColor={r:0,g:0,b:0};this.geometryCacheChanged=!1;this.bgColor=new ct(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new hc;this.needsRecomputeInstances=!1;this.ambientLight=new pr.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Lg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Eg(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Su(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),Ji(i)&&na(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),o.parent.remove(o),na(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ji(o)&&(o.freeBooleanPointer(),i instanceof dr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof rs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ji(o)&&(o.invalidateUpstreamBooleanData(),na(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof dr&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props){let{rest:l}=t.props;t={...t,props:l},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{Cg(s,t,o,{scene:this,shared:i}),s instanceof Tt&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(vt(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Yr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{na(o)&&o.recomputeBoolean(),o instanceof Yr&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Re.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=kn(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...ya(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;Ct.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof uo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=kn(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof uo&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),fc(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof uo&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Re.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Yr(hu.PERSONAL_CAMERA_ID,{...Yn.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Re.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ji(s)||fu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),mu(s,e,t)),o(s))}};return o(this),t}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Re.is(s)&&(s.visible||l?.object.data.visible)&&((Ji(s)||fu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),mu(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Re.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Re.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)ws.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Re.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=vt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=vt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=vt(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled),e.occlusion!==void 0&&(this.occlusion=e.occlusion),e.aoFullRes!==void 0&&(this.aoFullRes=e.aoFullRes),e.radius!==void 0&&(this.radius=e.radius),e.bias!==void 0&&(this.bias=e.bias),e.aoColor!==void 0&&(this.aoColor=vt(e.aoColor,t))}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,l){let c={scene:this,shared:l},u=mc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof Tt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;t.push(...a.vertices)}let o=new pr.Box3;return o.setFromPoints(t),o.getCenter(Bg),Bg}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof wt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Ht&&e(t.material[o]);else t.material instanceof Ht&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},ns=hu;ns.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",ns.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";var Dg=require("three/examples/jsm/loaders/DRACOLoader.js");var Do;function dT(){return Do||(Do=new Dg.DRACOLoader,Do.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Do.decoderPending}async function uT(n){if(Do){let r={attributeIDs:Do.defaultAttributeIDs,attributeTypes:Do.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Do.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Gg(n,r){let[e,t]=Ic(nl.deserialize(new Uint8Array(n)));$m(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await dT();for(let i of o){let s=await uT(pt(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var pT=require("three"),fT=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Rg(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var ca=require("three");function Vg(n){let r=new Set;return n.traverse(e=>{if(e instanceof ar)if(Xe(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(mT(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new ca.Color,specularColor:new ca.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},ca.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else hT(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function mT(n){return n.getLayersOfType("transmission").length>0}function hT(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function zg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function jg(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}var Fg=require("three/examples/jsm/utils/BufferGeometryUtils.js");function kg(n){let r=[];return n.traverse(e=>{e instanceof Xi&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(l=>{l.updateMatrix();let c;if(l.geometry!==void 0)try{c=l.geometry.clone().applyMatrix4(l.matrix)}catch(u){console.error(u)}return c!==void 0&&l.matrix.determinant()<0&&Rg(c),c}).filter(l=>l!==void 0)];if(!e.parameters.hideBase&&t instanceof wt&&s.unshift(t.geometry),s.length){let l=(0,Fg.mergeBufferGeometries)(s);t instanceof wt&&(t.geometry=l)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Xy})}),n}function Ug(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Hg(n){Object.values(n.shared.materials).forEach(r=>{yu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?yu(e.material):"materials"in e&&e.materials.forEach(t=>{yu(t)})})}function yu(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Xg=Go(Wg(),1);function $g(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var Yg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",yc=class extends gc.Loader{load(r,e,t,o=console.error){let i=new gc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Yg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Yg),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},t,o)}async parse(r){let e=await Gg(r,Hg);e.version&&(0,Xg.default)(e.version,"0.9.384")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Zy(e)&&ly(),lg(e)&&$y()].filter(Boolean));let t=new an(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new ns(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&xg(s)&&Object.assign(s,{makeDefault:!0})}return o=kg(o),o=Vg(o),o=zg(o),o=jg(o),o=Ug(o),o=$g(o),o}};
2207
+ `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),l?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2208
+ `)}return t}};var yc=require("three");var fc=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Su=class extends fc{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},bu;function lg(n){return typeof n=="string"?n:(bu||(bu=new Su),bu.load(n))}var mc=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},hc=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var ts=class extends mc{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let a=this[s];a&&(a.image=this.img,a.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(s=>{o.onloadend=a=>{i=a.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=lg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new yc.VideoTexture(this.img,void 0,e,e):o=new yc.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var cr=class extends ts{};var Fe=require("three");function At(n,r){return r.color(n)}function cg(n,r){switch(n.type){case"fresnel":return rT(n,r);case"gradient":return oT(n);case"depth":return nT(n);case"normal":return iT(n);case"noise":return sT(n,r);case"rainbow":return aT(n);case"toon":return lT(n,r);case"outline":return cT(n,r);case"transmission":return dT(n,r);case"color":return tT(n,r);case"pattern":return uT(n,r)}}function eT(n){return{type:n.type}}function Cr(n){let{alpha:r,mode:e,isMask:t}=n;return{...eT(n),alpha:r,mode:e,isMask:t}}function tT(n,r){return{...Cr(n),color:At(n.color,r)}}function rT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:a}=n;return{...Cr(n),color:At(s,r),bias:e,scale:t,intensity:o,factor:i}}function oT(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...Cr(n),gradientType:r,smooth:e,colors:t.map(c=>new Fe.Vector4(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Fe.Vector2(...s),morph:new Fe.Vector2(...a),angle:i}}function nT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:u,smooth:l}=n;return{...Cr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Fe.Vector3(...s),direction:a?new Fe.Vector3(...a):new Fe.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new Fe.Vector4(d[0],d[1],d[2],d[3]):new Fe.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:l}}function iT(n){let{cnormal:r}=n;return{...Cr(n),cnormal:new Fe.Vector3(r[0],r[1],r[2])}}function sT(n,r){return{...Cr(n),scale:n.scale,move:n.move,fA:new Fe.Vector2(...n.fA),fB:new Fe.Vector2(...n.fB),size:new Fe.Vector3(...n.size),distortion:new Fe.Vector2(...n.distortion),colorA:At(n.colorA,r),colorB:At(n.colorB,r),colorC:At(n.colorC,r),colorD:At(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function aT(n){return{...Cr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Fe.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Fe.Vector3(...n.offset)}}function lT(n,r){return{...Cr(n),positioning:n.positioning,colors:n.colors.map(e=>new Fe.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Fe.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:At(n.shadowColor,r),offset:new Fe.Vector3(...n.offset)}}function cT(n,r){return{...Cr(n),outlineColor:At(n.outlineColor,r),contourColor:At(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Fe.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function dT(n,r){return{...Cr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function uT(n,r){return{...Cr(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Fe.Vector2(...n.offset),colorA:At(n.colorA,r),colorB:At(n.colorB,r),frequency:new Fe.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Fe.Vector2(...n.vertical),horizontal:new Fe.Vector2(...n.horizontal),sides:n.sides}}var Uo=class extends pt{};var dg=require("three");var wu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},_u={depth:["colors"]};function pT(n,r,e){if(r==="isMask")return!0;let t=wu[n.type],o=_u[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Pu(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let s=i.image,a=r.image(s),c=t;c.image instanceof cr||c.image.deref(),c.image=a}if("video"in i){let s=i.video,a=r.video(s),c=t;c.image instanceof cr||c.image.deref(),c.image=a}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function ug(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Tu(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Fo))switch(o=o||pT(e,i,s),a.constructor){case Ee:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Uo?a.value=new pt(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case qt:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Uo?a.value=new pt(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Xe:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Tt:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Gt:{Pu(s,r,e);break}case Ar:{a.value=s.map(c=>new dg.Vector4(...c));break}default:{a.value=s;break}}}return o}var qr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Tu(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return or.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new yn(i,t.texture.wrapping),a=new dc(i),c=new uc(t.texture.repeat,t.texture.offset),u=new Z(t.crop?1:0),l=new we(t.projection??0),d=new we(["x","y","z"].indexOf(t.axis)??0),p=new we(t.side??0),f=new Xe(t.size?new Ge.Vector2(t.size[0],t.size[1]):new Ge.Vector2(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new we(t.mode??0),g=new tt(t.isMask??!1),x=new ko(s,a,u,l,d,p,f,m,c,h,y,g),b=new Ne(x.calpha,"f");return new He(r,e,t,{texture:s,textureSize:a,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new yn(i,t.texture.wrapping),a=new Z(t.alpha??1),c=new we(t.mode??0),u=new tt(t.isMask??!1),l=new qi(s,a,c,u),d=new Ne(l.calpha,"f");return new He(r,e,t,{texture:s,alpha:a,mode:c,isMask:u},l,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Tt(new Ge.Vector3(...t.offset)),s=new Z(t.scale??10),a=new Z(t.intensity??8),c=new Z(t.movement??1),u=new we(t.noiseType??0),l=new we(t.voronoiStyle??0),d=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new we(t.quality??1),y=new Ji(a,c,i,l,d,p,f,m,h,s,u);return new ua(r,e,t,{offset:i,scale:s,intensity:a,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return hT(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):ug(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Pu(o.props,t.shared,this):!0;return!1}dispose(){if(fT(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof cr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},He=class extends qr{constructor(e,t,o,i,s,a,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=a;this.alpha=c;this.isMask=u}},ua=class extends qr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},or=class extends qr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,a=new Z(o.alpha),c=new we(o.mode),u=new Z(o.bumpMapIntensity),l;if(!o.visible)s=new vn,l={};else if(o.category==="lambert"){s=new ia;let d=new Ee(i.color(o.emissive)??0),p=new tt(o.occlusion??!0);l={emissive:d,occlusion:p},s.emissive=d,s.occlusion=p}else if(o.category==="toon"){s=new da;let d=new Z(o.shininess??30),p=new Ee(i.color(o.specular)??1118481);l={shininess:d,specular:p},s.shininess=d,s.specular=p}else if(o.category==="physical"){s=new la;let d=new Z(o.roughness??.3),p=new Z(o.metalness??0),f=new Z(o.reflectivity??.5),m=new tt(o.occlusion??!0);l={roughness:d,metalness:p,reflectivity:f,occlusion:m},s.roughness=d,s.metalness=p,s.reflectivity=f,s.occlusion=m}else{s=new aa;let d=new Z(o.shininess??30),p=new Ee(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new tt(o.occlusion??!0);l={shininess:d,specular:p,occlusion:f},s.shininess=d,s.specular=p,s.occlusion=f}return s.alpha=new Z(1),s.shadingAlpha=a,s.shadingBlend=c,s.bumpMapIntensity=u,l.alpha=s.shadingAlpha,l.mode=s.shadingBlend,l.bumpMapIntensity=s.bumpMapIntensity,new or(e,t,o,s,l)}get category(){return this.node.category}};function fT(n){let r=n instanceof qr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function dr(n){return{alpha:new Z(n.alpha??1),mode:new we(n.mode??0),isMask:new tt(n.isMask??!1)}}function mT(n,r,e,t){switch(n.type){case"color":{let o=new Ee(t.color??ct),i=dr(t),s=new gn(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}case"fresnel":{let o=new Ee(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),a=new Z(t.intensity??2),c=new Z(t.factor??1),u=dr(t),l=new ra(o,i,s,a,c,u.alpha,u.mode,u.isMask),d=new Ne(l.calpha,"f");return new He(r,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,...u},l,u.mode,d,u.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new Tt(t.wavelengths??new Ge.Vector3(0,0,0)),a=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),u=new Tt(t.offset??new Ge.Vector3(0,0,0)),l=dr(t),d=new Ki(o,i,s,a,c,u,l.alpha,l.isMask),p=new Ne(d.calpha,"f");return new He(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:u,...l},d,l.mode,p,l.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),a=xe.transmissionSize,c=xe.transmissionRenderTarget,u=xe.transmissionRenderTargetDepth,l=window.innerWidth,d=window.innerHeight,p=l>=d?new Xe(d/l,1):new Xe(1,l/d),f=dr(t),m=new Qi(o,i,s,a,c,u,p,f.alpha),h=new Ne(m.calpha,"f");return new He(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new we(t.positioning??0),i;t.colors?i=new Ar(t.colors.length,t.colors):(i=new Ar(10,new Ge.Vector4(0,0,0,1)),i.value[1]=new Ge.Vector4(1,1,1,1));let s;t.steps?s=new Or(t.steps.length,t.steps):(s=new Or(10,1),s.value[0]=0);let a=new Tt(t.source??new Ge.Vector3(0,0,0)),c=new tt(t.isWorldSpace??!0),u=new Z(t.noiseStrength??0),l=new Z(t.noiseScale??1),d=new qt(t.shadowColor),p=new Tt(t.offset??new Ge.Vector3(0,0,0)),f=dr(t),m=new Zi(o,i,s,a,c,u,l,d,p,f.alpha),h=new Ne(m.calpha,"f");return new He(r,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:u,noiseScale:l,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Ee(t.outlineColor??16777215),i=new Ee(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),a=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),u=new Z(t.contourThreshold??.1),l=new Z(t.outlineSmoothing??.1),d=new Z(t.contourFrequency??.1),p=new Tt(t.contourDirection??new Ge.Vector3(0,1,0)),f=new tt(t.positionalLines??!1),m=new tt(t.compensation??!0),h=xe.normalRenderTarget,y=xe.normalRenderTargetDepth,g=xe.pixelRatioNode,x=xe.resolution,b=dr(t),w=new Yi(o,i,s,a,c,u,l,d,p,f,m,x,h,y,g,b.alpha),S=new Ne(w.calpha,"f");return new He(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:u,outlineSmoothing:l,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new we(t.gradientType??0),i=new tt(t.smooth??!1),s=new Z(t.near??50),a=new Z(t.far??200),c=new Z(t.isVector??1),u=new Z(t.isWorldSpace??0),l=new Tt(t.origin??new Ge.Vector3),d=new Tt(t.direction??new Ge.Vector3),p;t.colors?p=new Ar(t.colors.length,t.colors):(p=new Ar(2,new Ge.Vector4(0,0,0,1)),p.value[1]=new Ge.Vector4(1,1,1,1));let f;t.steps?f=new Or(t.steps.length,t.steps):(f=new Or(2,1),f.value[0]=0);let m=dr(t),h=new Hi(o,i,s,a,c,u,l,d,p,f,m.alpha,m.isMask),y=new Ne(h.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:u,origin:l,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new Tt(t.size??new Ge.Vector3(100,100,100)),s=new Z(t.move??1),a=new Xe(t.fA??new Ge.Vector2(1.7,9.2)),c=new Xe(t.fB??new Ge.Vector2(8.3,2.8)),u=new Xe(t.distortion??new Ge.Vector2(1,1)),l=new qt(t.colorA),d=new qt(t.colorB),p=new qt(t.colorC),f=new qt(t.colorD),m=new we(t.noiseType??0),h=new we(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),x=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new we(t.quality??1),S=dr(t),P=new $i(o,i,s,a,c,u,l,d,p,f,S.alpha,m,S.isMask,h,y,g,x,b,w),_=new Ne(P.calpha,"f");return new He(r,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:u,colorA:l,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:x,seed:b,quality:w},P,S.mode,_,S.isMask)}case"normal":{let o=new Tt(t.cnormal??new Ge.Vector3(1,1,1)),i=dr(t),s=new Fi(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{cnormal:o,...i},s,i.mode,a,i.isMask)}case"gradient":{let o=new we(t.gradientType??0),i=new tt(t.smooth??!1),s;t.colors?s=new Ar(t.colors.length,t.colors):(s=new Ar(10,new Ge.Vector4(0,0,0,1)),s.value[1]=new Ge.Vector4(1,1,1,1));let a;t.steps?a=new Or(t.steps.length,t.steps):(a=new Or(10,1),a.value[0]=0);let c=new Xe(t.offset??new Ge.Vector2(0,0)),u=new Xe(t.morph??new Ge.Vector2(0,0)),l=new Z(t.angle??0),d=dr(t),p=new Wi(o,i,s,a,c,u,l,d.alpha,d.isMask),f=new Ne(p.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:u,angle:l,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new we(t.style??0),i=new we(t.projection??0),s=new we(["x","y","z"].indexOf(t.axis)??0),a=new Z(t.blending??0),c=new Xe(t.offset??new Ge.Vector2(0,0)),u=new qt(t.colorA),l=new qt(t.colorB),d=new Xe(t.frequency??new Ge.Vector2(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new Xe(t.vertical??new Ge.Vector2(0,1)),x=new Xe(t.horizontal??new Ge.Vector2(0,1)),b=new we(t.sides??6),w=dr(t),S=new Xi(o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w.alpha,w.isMask),P=new Ne(S.calpha,"f");return new He(r,e,n,{style:o,projection:i,axis:s,blending:a,offset:c,colorA:u,colorB:l,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:x,sides:b,...w},S,w.mode,P,w.isMask)}default:{let o=new Ee(1,0,0,1),i=dr(t),s=new gn(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}}}function hT(n,r,e,t){let o=cg(e,t);return mT(e,n,r,o)}function Tu(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function pg(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"&&t.data.type!=="pattern"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,a=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(a,c)));u<1&&(o=u)}e+=(1-e)*o}}return e<1}var Yt=class extends fg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},gc=class extends Yt{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},bn=class extends Yt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new gc(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??Ut.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>qr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=pg(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof or),this.lightLayer===void 0&&(this.lightLayer=new or(0,"",{...Bt.defaultData("light","phong"),visible:!1},new vn,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(s=>s instanceof or);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let s=0;s<this.layers.length;++s){let a=this.layers[s];a instanceof He&&a.color instanceof ko&&(a.uuid===o&&(e.node.bumpMap=a.color),a.uuid===i&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=pg(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let a=qr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,a),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let a=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let a=this.layers.find(c=>c.uuid===s);if(a){let c=t.layers.data(s);if(a.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=qr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,l),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof He?t.color.mask=void 0:t instanceof or&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof He&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof or?i.node.mask=new vt(t.color,t.alpha,vt.MUL):i instanceof He&&(i.isMask.value||(i.color.mask=new vt(t.color,t.alpha,vt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof He),t=this.layers.findIndex(o=>o instanceof or);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof He){if(s.isMask.value)continue;o=new ji(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof or);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof He){if(i.isMask.value)continue;e=new ji(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof ua);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new vt(t,e[o].position,vt.ADD),t=new vt(t,new Z(.5).setReadonly(!0),vt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(wu[t.type]??[]).map(u=>t[u]),i=(_u[t.type]??[]).map(u=>t[u]?.length??0),s=[...o,...i],a="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${a}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new cc;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof He){let t=e.params.texture;if(t instanceof yn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Yt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Sn=class extends bn{};var gg=Xo(mg());var hg=new Map;function yg(n){if(typeof n=="string")return n;let r=hg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},hg.set(n,r)),r.url}var wn=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:yg(r),format:"wav"},this.sound=new gg.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var ft=require("three"),vc=class{constructor(){this.type="ShapePath";this.color=new ft.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new ft.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,x){let b=h.x,w=y.x,S=g.x,P=x.x,_=h.y,v=y.y,N=g.y,T=x.y,C=(P-S)*(_-N)-(T-N)*(b-S),O=(w-b)*(_-N)-(v-_)*(b-S),A=(T-N)*(w-b)-(P-S)*(v-_),R=C/A,U=O/A;if(A===0&&C!==0||R<=0||R>=1||U<0||U>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:x,h,y),t.loc===e.ORIGIN){let ee=$===0?g:x;return{x:ee.x,y:ee.y,t:t.t}}else if(t.loc===e.BETWEEN){let ee=+(b+t.t*(w-b)).toPrecision(10),Y=+(_+t.t*(v-_)).toPrecision(10);return{x:ee,y:Y,t:t.t}}return null}else{for(let Y=0;Y<2;Y++)if(i(Y===0?g:x,h,y),t.loc===e.ORIGIN){let q=Y===0?g:x;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),ee=+(_+R*(v-_)).toPrecision(10);return{x:$,y:ee,t:R}}}function i(h,y,g){let x=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,P=x*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],x=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let P=1;P<y.length;P++){let _=y[P-1],v=y[P],N=o(w,S,_,v);N!==null&&g.find(T=>T.t<=N.t+Number.EPSILON&&T.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new ft.Vector2(N.x,N.y)))}}return x}function a(h,y,g){let x=new ft.Vector2;y.getCenter(x);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(P=>{b.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,x,b){(b==null||b==="")&&(b="nonzero");let w=new ft.Vector2;h.boundingBox.getCenter(w);let S=[new ft.Vector2(g,w.y),new ft.Vector2(x,w.y)],P=a(S,h.boundingBox,y);P.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];P.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,T=[],C=0;for(;C<v.length&&v[C].point.x<N;)T.length>0&&T[T.length-1]===v[C].identifier?T.pop():T.push(v[C].identifier),C++;if(T.push(h.identifier),b==="evenodd"){let O=T.length%2===0,A=T[T.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let U=0;U<T.length;U++){let $=T[U];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<x&&(x=P.y),P.x>b&&(b=P.x),P.x<w&&(w=P.x)}d<=b&&(d=b+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:ft.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new ft.Box2(new ft.Vector2(w,x),new ft.Vector2(b,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new ft.Shape;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new ft.Path;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var xg,Ou=new Promise(n=>{xg=n});var vg=Kn(async()=>{let n=await import("./opentype.js");xg(n)});var pa=class{async load(r,e,t=()=>{}){let{load:o}=await Ou;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Ou;try{let o=e(r),i=new t,s=a=>o.charToGlyphIndex(a.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function yT(n){return await(await fetch(n)).arrayBuffer()}var gT=new pa;async function Au(n){let r,e,t=!1;if(n.url?(r=await yT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await gT.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var rs=require("three");function xT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var bc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Au(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Au(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],a=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[a];if(xT(l,p)||c)s.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),a++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)a++,m=e.charAt(a),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),a>e.length&&(g=!0);s.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),a++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(x=>this.getTextWidth(x,e)),a=e.width,c=this.getCharWidth(`
2209
+ `,e),u=e.horizontalAlign===1?c:0,l=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],a,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(x=>[]),h=r.map(x=>[]),y;for(let x=0;x<r.length;x++){let b=r[x],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[x],a,e.horizontalAlign,b,c);let P=[];try{P=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}l=this.computeSpaceWidthForLine(r,x,e);for(let _=0;_<S.length;_++){let v=S[_],N=v.index===0?`
2210
+ `:v.unicode?String.fromCharCode(v.unicode):void 0,T=P[_],C=0,O=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(O=-v.leftSideBearing*o),y&&(C=t.getKerningValue(v,y)*o),d+=O+C;let A=0;if(N===`
2211
+ `)A=u;else if(N===" ")A=l;else{let R=this.createPath(v,o,d,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(T.replacements.length===1)h[x].push([d,p]),m[x].push(A);else{let R=T.replacements.map(Y=>(t.glyphs.get(Y).advanceWidth??0)*o),U=R.reduce((Y,q)=>Y+=q,0),$=R.map(Y=>Y/U),ee=d;for(let Y=0;Y<$.length;Y++){let q=A*$[Y];h[x].push([ee,p]),m[x].push(q),ee+=q}}d+=A,y=v}p-=i}let g=[];for(let x=0,b=f.length;x<b;x++)g.push(...f[x].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2212
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,a=Math.abs(this.ascender-this.descender)*o,c=r-a,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let a=new vc,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let l=a.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":a.moveTo(u.x,-u.y);break;case"L":a.lineTo(u.x,-u.y);break;case"Q":a.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":a.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return a.subPaths.forEach(u=>{let l=vT(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:a}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let a=t.width,c=this.getTextWidth(i,t);return(a-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function vT(n){if(n.length){let r=n[0];if(r instanceof rs.LineCurve)return r.v1;if(r instanceof rs.CubicBezierCurve||r instanceof rs.QuadraticBezierCurve)return r.v0}}var Cu=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},fa=class extends Cu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=fn(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var bg={markNeedsUpdateRendererDirty:()=>{}};var Nu=class extends hc{constructor(e){super();this.shared=e}create(e){return new ts(e,this.shared)}},_n=class{constructor(r,e={}){this.geometryCache=new fa(!0);this.geometryCache2=new fa(!1);this.imageHolderCache=new Nu(this);this.thisContext={scene:bg,shared:this};this.deletedMaterial=new Sn(Ut.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new cr(ui.emptyImage,this);this.deletedVideo=new cr(ii.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Sn(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t)}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new bn(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new cr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new cr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Uo(e.r,e.g,e.b,e.a):this.colors[r]=new Uo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new pt(0,0,0,0))}else return"a"in r?new pt(r.r,r.g,r.b,r.a):new pt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof wn)return e;{let t=new wn({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof wn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new bc(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof wn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Sg=new _n(Rl.emptyData());var Xt=class extends Pt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Pm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let a=o.shared.material(s);this.material[Number(i)]=a}else if(Nt(e.path,["material"])&&this.material instanceof Yt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(_t.drop(e,1),t.material,o);else if(Nt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(_t.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&La(this.material).forEach(e=>{e instanceof Yt&&(e instanceof Sn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var nr=require("three");var wg=new nr.Vector3,_g=new nr.Vector4,Pg=new nr.Vector4,bT=new nr.Vector3,Tg=new nr.Matrix4,lt=class extends Xt{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new nr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new nr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof nr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof _n){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ls.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ls.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Nt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(_t.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=fn(l,t,this.data.flatShading)}let s,a,c;i.scaleBaked?[s,a,c]=i.scaleBaked:{width:s,height:a,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Ks(this.localGeometry.attributes,s/u.sxPrev,a/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=a,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fn(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Ts(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new nr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,s=o.count;i<s;i++){t.fromBufferAttribute(o,i);let a=1/t.manhattanLength();a!==1/0?t.multiplyScalar(a):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;_g.fromBufferAttribute(i.attributes.skinIndex,e),Pg.fromBufferAttribute(i.attributes.skinWeight,e),wg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){let a=Pg.getComponent(s);if(a!==0){let c=_g.getComponent(s);Tg.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(bT.copy(wg).applyMatrix4(Tg),a)}}return t.applyMatrix4(this.bindMatrixInverse)}};function ST(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new ir.Vector3(o[s],o[s+1],o[s+2]);r.has(a)?r.get(a)?.normals.push(c):r.set(a,{normals:[c],result:new ir.Vector3})}r.forEach((s,a)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(a)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ir.Float32BufferAttribute(i,3))}function wT(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new ir.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new ir.Float32BufferAttribute(t,3))}function os(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Yt)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?wT(n):ST(n)}function ns(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[ir.MathUtils.seededRandom(o),ir.MathUtils.seededRandom(o+1e4),ir.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new ir.BufferAttribute(t,3))}var _T;Ii.then(n=>{_T=n});var $r=new go.Box3,ma=new go.Vector3;function Og(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Pn=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new go.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,os(this),ns(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Pt.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new go.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;$r.setFromBufferAttribute(t),$r.getCenter(o),e.boundingSphere.radius=o.distanceTo($r.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),$r.getSize(ma),this.hasNonUniformScale&&ma.divide(this.scale);let i={width:ma.x,height:ma.y,depth:ma.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;$r.min.set(e[0],e[2],e[4]),$r.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&($r.min.applyMatrix4(this.shearScaleInv),$r.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new go.Sphere);let o=t.boundingSphere.center;$r.getCenter(o),t.boundingSphere.radius=o.distanceTo($r.max)}freeSubdivPointer(){this.subdivPointer&&(nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Yr=require("three"),Ag=-1,PT=1,Cg={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Ng={polygon_center:0,edge:1,vertex:2},ha=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,ye=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Ag)*(e-t)/(PT-Ag)+t};function Ig(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var TT=new Yr.Vector3,Sc=new Yr.Vector3,OT=new Yr.Vector3,AT=new Yr.Vector3;function is(n,r){let e=OT.fromArray(n),t=AT.fromArray(r);Sc.copy(t).sub(e);let o=Sc.length();return Sc.normalize().multiplyScalar(o*.5),TT.copy(e).add(Sc).toArray()}var ur=new Yr.Triangle,wc=new Yr.Vector3,_c=new Yr.Vector3,Tn=new Yr.Vector3;function Mg(n){let r=[];for(let e=0;e<=n.index.count;e++)if(wc.fromArray(n.index.array,e*3),ur.setFromAttributeAndIndices(n.attributes.position,wc.x,wc.y,wc.z),ur.getNormal(_c),ur.getMidpoint(Tn),!(isNaN(Tn.x)||isNaN(Tn.y)||isNaN(Tn.z))){let{a:t,b:o,c:i}=ur,s=t.toArray(),a=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=is(s,a),f=is(a,c),m=is(c,s),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],b=ur.getMidpoint(Tn).toArray();y===u&&!g&&(x=[f,m,m],b=p),y===l&&!g&&(x=[p,m,m],b=f),y===d&&!g&&(x=[p,f,f],b=m),g&&(x=[p,f,m]),r.push({vertices:[s,a,c],faceCenters:x,midpoint:b,norm:ur.getNormal(_c).toArray()})}return r}function Eg(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){ur.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),ur.getNormal(_c),ur.getMidpoint(Tn);let o=ur.a.toArray(),i=ur.b.toArray(),s=ur.c.toArray();r.push({vertices:[o,i,s],faceCenters:[is(o,i),is(i,s),is(s,o)],midpoint:Tn.toArray(),norm:_c.toArray()})}return r}var CT=4,NT=.5,Iu=n=>.5*(1-Math.cos(n*Math.PI)),Mu=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),a=r-o,c=e-i,u=t-s,l,d,p=0,f=.5,m,h,y;for(let g=0;g<CT;g++){let x=o+(i<<4)+(s<<8);l=Iu(a),d=Iu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Iu(u)*(h-m),p+=m*f,f*=NT,o<<=1,a*=2,i<<=1,c*=2,s<<=1,u*=2,a>=1&&(o++,a--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,a;return{setSeed(c){a=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return a=(1664525*a+1013904223)%4294967296,a/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Lg=Mu;var as=require("three");var Dg=new as.Vector3,Bg=new as.Matrix4,Rg=new as.Ray;function Gg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var ss=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Bg.copy(o).invert(),Rg.copy(e.ray).applyMatrix4(Bg),Rg.intersectBox(this.singleBBox,Dg))){let i=Dg.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Vt=1e-4,Xr,jg,Fg,kg,Vg=new Le.Vector3,zg=new Le.Vector3;Ii.then(n=>{Xr=n,jg=[Xr.get_face_center,Xr.get_edge_midpoint,Xr.get_vertex_position],Fg=[Xr.get_face_normal,Xr.get_edge_normal,Xr.get_vertex_normal],kg=[Xr.face_count,Xr.edge_count,Xr.vertex_count]});var IT=new Le.Matrix4,MT=new Le.Matrix4,Ho=new Le.Vector3,On=new Le.Vector3,ya=new Le.Vector3,Eu=new Le.Vector3,ET=new Le.Vector3,LT=new Le.Vector3;var xo=new Lg,cs=class extends fi(Le.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof po&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof po&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let a=new po(this.object);a.expand(),this.add(a)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new po(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Le.MathUtils.DEG2RAD,i=t.end*Le.MathUtils.DEG2RAD,s=o-i,a=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Le.Vector3(0,0,1);break;case"y":c=new Le.Vector3(0,1,0);break;default:case"x":c=new Le.Vector3(1,0,0);break}let u=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";xo.noiseSeed(u.seed);let d=zl((0,ls.default)(u.seed)),p=ha(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?xo.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,ye(y,u.scale[0]))||Vt,m.scale.y=t.scale[1]+p(g,ye(y,u.scale[1]))||Vt,m.scale.z=t.scale[2]+p(g,ye(y,u.scale[2]))||Vt,m.position.setScalar(0);let x=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,ye(y,u.position[0])),m.position.y+=t.position[1]+p(g,ye(y,u.position[1])),m.position.z+=t.position[2]+p(g,ye(y,u.position[2]));let b=p(g,ye(y,u.rotation[0])),w=p(g,ye(y,u.rotation[1])),S=p(g,ye(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=a.x+b,m.rotation.y+=a.y+w,m.rotation.z+=a.z+S):m.rotation.set(a.x+b,a.y+w,a.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";xo.noiseSeed(i.seed);let a=zl((0,ls.default)(i.seed)),c=ha(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?xo.noise(d):a(d,d),f=u+1,m=c(f,ye(p,i.rotation[0])),h=c(f,ye(p,i.rotation[1])),y=c(f,ye(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,ye(p,i.scale[0]))||Vt,l.scale.y=1+(t.scale[1]-1)*u+c(f,ye(p,i.scale[1]))||Vt,l.scale.z=1+(t.scale[2]-1)*u+c(f,ye(p,i.scale[2]))||Vt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,ye(p,i.position[0])),l.position.y=t.position[1]*u+c(f,ye(p,i.position[1])),l.position.z=t.position[2]*u+c(f,ye(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=ha(i.strength,this.parameters.randomness),a=i.noiseType==="perlin";xo.noiseSeed(i.seed);let c=wh((0,ls.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Le.Vector3(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=a?xo.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,ye(h,i.scale[0]))||Vt,y.scale.y=1+s(t,ye(h,i.scale[1]))||Vt,y.scale.z=1+s(t,ye(h,i.scale[2]))||Vt;let g=s(t,ye(h,i.rotation[0])),x=s(t,ye(h,i.rotation[1])),b=s(t,ye(h,i.rotation[2]));y.rotation.set(g,x,b),y.position.x=o.size[0]*d-l.x+s(t,ye(h,i.position[0])),y.position.y=o.size[1]*p-l.y+s(t,ye(h,i.position[1])),y.position.z=o.size[2]*f-l.z+s(t,ye(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=a?xo.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,ye(f,i.scale[0]))||Vt,m.scale.y=1+s(t,ye(f,i.scale[1]))||Vt,m.scale.z=1+s(t,ye(f,i.scale[2]))||Vt;let h=s(t,ye(f,i.rotation[0])),y=s(t,ye(f,i.rotation[1])),g=s(t,ye(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,ye(f,i.position[0])),m.position.y=-o.size[1]*l+s(t,ye(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,ye(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";xo.noiseSeed(i.seed);let a=zl((0,ls.default)(i.seed)),c=ha(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof ss)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,b=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),S=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[b/x,w/x,S/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(b=>b.norm))}):l.push(g)});let f=Ig(l);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new jl(this.objectForSample).build(),h=Cg[t.axis],y=this.children;m.setRandomGenerator((0,ls.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?xo.noise(b):a(b,b),S=g+1,P=c(S,ye(w,i.rotation[0])),_=c(S,ye(w,i.rotation[1])),v=c(S,ye(w,i.rotation[2]));t.spreadType==="random"?m.sample(ya,Eu):(f.length&&(ya.fromArray(f[g].pos),Eu.fromArray(f[g].norm)),this.objectForSample instanceof Pn&&ya.applyMatrix4(IT.copy(this.objectForSample.matrixWorld).invert())),ya.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(ya),Ho.fromArray(h);let N=t.align==="normal"?Eu:this.object.getWorldDirection(LT),T=On.fromArray(t.position);On.x+=On.x+c(S,ye(w,i.position[0])),On.y+=On.y+c(S,ye(w,i.position[1])),On.z+=On.z+c(S,ye(w,i.position[2]));let C=Math.acos(N.dot(Ho)),O=ET.crossVectors(Ho,N).normalize(),A=MT.makeRotationAxis(O,C),R=N.clone().cross(this.object.up).normalize(),U=R.clone().cross(N).normalize(),$=new Le.Matrix4().makeBasis(R,N,U),ee=new Le.Vector3(Ho.y,Ho.z,Ho.x).normalize(),Y=ee.clone().cross(Ho).normalize(),q=new Le.Matrix4().makeBasis(ee,Ho,Y).invert(),H=new Le.Matrix4().multiplyMatrices($,q);x.rotation.setFromRotationMatrix(H),T.applyMatrix4(A),x.position.add(T),x.rotation.x=x.rotation.x+o.x+P,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(S,ye(w,i.scale[0]))||Vt,x.scale.y=x.scale.y+t.scale[1]+c(S,ye(w,i.scale[1]))||Vt,x.scale.z=x.scale.z+t.scale[2]+c(S,ye(w,i.scale[2]))||Vt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Pn){let t=this.objectForSample,o=Ng[e],i=kg[o],s=jg[o],a=Fg[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=s(t.subdivPointerNew,l),p=a(t.subdivPointerNew,l);Vg.fromArray(d).applyMatrix4(t.matrixWorld),zg.fromArray(p),c.push({pos:Vg.toArray(),norm:zg.toArray()})}return c}else return(this.objectForSample.geometry.index?Mg(this.objectForSample.geometry):Eg(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=so(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Pt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Le.Matrix4,this.hiddenMatrix=new Le.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var hr=require("three");var We=require("three");var Ct=require("three");var Ug=require("three"),Kr=n=>{var r;return r=class extends n{},r.geometryHelper=new Ug.BoxGeometry(30,30,30),r};var Mt=require("three"),Pc=new Mt.Ray,Lu=new Mt.Sphere,Hg=new Mt.Matrix4,Zr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Lu.copy(i.boundingSphere),Lu.applyMatrix4(s),e.ray.intersectsSphere(Lu)===!1||(Hg.copy(s).invert(),Pc.copy(e.ray).applyMatrix4(Hg),i.boundingBox!==null&&Pc.intersectsBox(i.boundingBox)===!1))return;let a,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),a=y(n,e,Pc,p,c,u,l),a){a.faceIndex=Math.floor(m/3),t.push(a);return}}else{let x=i.attributes.position,b=new Mt.Vector3,w=new Mt.Vector3,S=new Mt.Vector3,P=new Mt.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),Pc.distanceSqToSegment(b,w,P,S)>T)continue;P.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(P);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,b,w,S,P,_){let v=new Mt.Vector3,N=new Mt.Vector3,T=new Mt.Vector3,C=new Mt.Vector3,O=new Mt.Vector3;if(v.fromBufferAttribute(w,S),N.fromBufferAttribute(w,P),T.fromBufferAttribute(w,_),b.intersectTriangle(v,N,T,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=x.ray.origin.distanceTo(O);return R<x.near||R>x.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Tc=new Ct.Vector3,pr=new Ct.Camera,Du=class extends Ct.LineSegments{constructor(e){let t=new Ct.BufferGeometry,o=new Ct.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new Ct.Color(15711266),u=new Ct.Color(15711266),l=new Ct.Color(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}t.setAttribute("position",new Ct.Float32BufferAttribute(i,3)),t.setAttribute("color",new Ct.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;pr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;Nr("n1",t,e,pr,-i,-s,a),Nr("n2",t,e,pr,i,-s,a),Nr("n3",t,e,pr,-i,s,a),Nr("n4",t,e,pr,i,s,a);let c=a;Nr("f1",t,e,pr,-i,-s,c),Nr("f2",t,e,pr,i,-s,c),Nr("f3",t,e,pr,-i,s,c),Nr("f4",t,e,pr,i,s,c);let u=c,l=.5;Nr("u1",t,e,pr,i*.7*l,s*1.1,u),Nr("u2",t,e,pr,-i*.7*l,s*1.1,u),Nr("u3",t,e,pr,0,s*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Nr(n,r,e,t,o,i,s){Tc.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let c=e.getAttribute("position");for(let u=0,l=a.length;u<l;u++)c.setXYZ(a[u],Tc.x,Tc.y,Tc.z)}}var Oc=class extends Kr(Du){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){Zr(this.object,this.geometry,e,t,!0)}};var ga=require("three");var Ac;(r=>r.is=e=>"objectHelper"in e)(Ac||(Ac={}));var Qr=(n,r)=>class extends yi(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ga.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof ga.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ga.Box3Helper&&(i.visible=!1)}}};var Cc=790,ds=new We.Vector3,Bu=new We.Vector3,Ru=new We.Quaternion,Gu=new We.Vector3,xa=new We.Vector3,Vu=new We.Vector3,Jr=class extends Qr(We.Camera,Oc){constructor(e="",t={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Eo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new We.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new We.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new We.PerspectiveCamera(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new We.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(ds),this.targetOffset=ds.distanceTo(e)}getTarget(e=new We.Vector3){return this.getWorldDirection(Bu),this.getWorldPosition(ds),Bu.multiplyScalar(this.targetOffset),e.copy(ds).add(Bu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ds),ds.distanceTo(e)}updateUp(){this.getWorldQuaternion(Ru),Gu.set(0,0,1).applyQuaternion(Ru),xa.copy(We.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&xa.negate(),xa.applyQuaternion(Ru),Vu.copy(We.Object3D.DEFAULT_UP).projectOnPlane(Gu),this.angleOffsetFromUp=Vu.angleTo(xa),this.angleOffsetFromUp*=Vu.cross(xa).dot(Gu)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new We.Vector3),i=e.getWorldDirection(new We.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new We.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new We.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-Cc*.5*i,this.right=Cc*.5*i,this.top=Cc*.5*(1/s),this.bottom=-Cc*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){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.objectHelper&&this.objectHelper.update()}toPerspective(){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.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Xn(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),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()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var Wo=require("three");var us=new Wo.Matrix4,BT=new Wo.Matrix4;var fr=class extends Xt{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Wo.BufferGeometry;this.onAfterRender=(e,t,o,i,s,a)=>{super.onAfterRender(e,t,o,i,s,a),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof fr&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof Pt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(us.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=_r.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;_r.transformMeshSet(s.booleanMeshSetAddress,us),s.booleanMatrixInvOld.copy(us).invert(),s.booleanWasTransformed=!1}else s instanceof fr&&s.needsTransformForDownstream===!0?(_r.transformMeshSet(s.booleanMeshSetAddress,us),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(_r.transformMeshSet(s.booleanMeshSetAddress,BT.multiplyMatrices(us,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(us).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new Wo.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return _r.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Wo.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=_r.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,os(this),ns(this)}dispose(){super.dispose(),this.geometry.dispose()}};var qg=require("three");var Wg;(r=>{function n(e){return Te.is(e)&&e instanceof qg.Light}r.is=n})(Wg||(Wg={}));var ps=(n,r)=>class extends Qr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var qo=n=>n instanceof Pt,va=n=>n!==null&&n instanceof fr,$g=n=>n instanceof Jr;var ba=n=>Ac.is(n);var Xg=require("three");var Yg=require("three");var eo=class extends Kr(Yg.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){Zr(this.object,eo.geometryHelper,e,t)}update(){}};var Sa=class extends Qr(Xg.Group,eo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var xs=require("three");var fs=require("three"),RT=n=>`
2213
+
2214
+ // PCSS implementation based on:
2215
+ // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
2216
+ // NOTE: This number affects how big the shadow blur can
2217
+ // possibly get. Bigger number == bigger blur, but less precise results
2218
+
2219
+ const float gPenumbraFilterSize = 80.0;
2220
+ const int gPenumbraSamples = ${n};
2221
+ const int gShadowSamples = ${n};
2222
+ const float gShadowSamplesRpc = 1.0f / float(gShadowSamples);
2223
+
2224
+ #ifdef USE_SHADOWMAP
2225
+ #if NUM_DIR_LIGHT_SHADOWS > 0
2226
+
2227
+ uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
2228
+ varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
2229
+
2230
+ struct DirectionalLightShadow {
2231
+ float shadowBias;
2232
+ float shadowNormalBias;
2233
+ float shadowRadius;
2234
+ vec2 shadowMapSize;
2235
+ };
2236
+
2237
+ uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
2238
+
2239
+ #endif
2240
+
2241
+ #if NUM_SPOT_LIGHT_SHADOWS > 0
2242
+
2243
+ uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
2244
+ varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_SHADOWS ];
2245
+
2246
+ struct SpotLightShadow {
2247
+ float shadowBias;
2248
+ float shadowNormalBias;
2249
+ float shadowRadius;
2250
+ vec2 shadowMapSize;
2251
+ };
2252
+
2253
+ uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
2254
+
2255
+ #endif
2256
+
2257
+ #if NUM_POINT_LIGHT_SHADOWS > 0
2258
+
2259
+ uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
2260
+ varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
2261
+
2262
+ struct PointLightShadow {
2263
+ float shadowBias;
2264
+ float shadowNormalBias;
2265
+ float shadowRadius;
2266
+ vec2 shadowMapSize;
2267
+ float shadowCameraNear;
2268
+ float shadowCameraFar;
2269
+ };
2270
+
2271
+ uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
2272
+
2273
+ #endif
2274
+
2275
+ /*
2276
+ #if NUM_RECT_AREA_LIGHTS > 0
2277
+
2278
+ // TODO (abelnation): create uniforms for area light shadows
2279
+
2280
+ #endif
2281
+ */
2282
+
2283
+ float computePenumbra(int index, sampler2D shadowMap, float temporalAngle, float texelSize, vec2 uv, float compare, float texelScalar, float shadowRadius)
2284
+ {
2285
+ float penumbra = 1.0;
2286
+ float blockerDepthAvg = 0.0;
2287
+ float blockerCount = 0.0;
2288
+
2289
+ #pragma unroll_loop_start
2290
+ for(int i = 0; i < gPenumbraSamples; i ++)
2291
+ {
2292
+ vec2 offset = (vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize) * texelScalar;
2293
+ float depth = unpackRGBAToDepth( texture2D( shadowMap, uv + offset ) );
2294
+
2295
+ if(depth < compare + 0.0001)
2296
+ {
2297
+ blockerDepthAvg += depth;
2298
+ blockerCount++;
2299
+ }
2300
+ }
2301
+ #pragma unroll_loop_end
2302
+
2303
+ if (blockerCount > 0.0)
2304
+ {
2305
+ blockerDepthAvg /= blockerCount;
2306
+
2307
+ // Compute penumbra
2308
+ penumbra = (compare - blockerDepthAvg) / (blockerDepthAvg);
2309
+ penumbra *= penumbra;
2310
+ penumbra *= 200.0 * penumbraSize[min(index, ${5} - 1)]; // Magic number that affects how quickly the penumbra grows
2311
+
2312
+ return clamp(penumbra, 0.00, 1.0);
2313
+ }
2314
+ return 0.0;
2315
+ }
2316
+
2317
+ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, float compare, float shadowRadius)
2318
+ {
2319
+ float shadow = 0.0f;
2320
+
2321
+ // NOTE: When using TAA, we should use screen space interleaved gradient noise
2322
+ vec2 halton = haltonSequence[frameIndex];
2323
+ float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
2324
+ float temporalAngle = temporalOffset * PI2;
2325
+
2326
+ float texelScalar = (gPenumbraFilterSize) / (texelSize * 1024.);
2327
+ float penumbra = computePenumbra(index, shadowMap, temporalAngle, texelSize, uv, compare, texelScalar, shadowRadius);
2328
+ if (penumbra == -1.0) {
2329
+ return 1.0;
2330
+ }
2331
+
2332
+ #pragma unroll_loop_start
2333
+ for (int i = 0; i < gShadowSamples; i++)
2334
+ {
2335
+ vec2 vogelSample = vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
2336
+ // Overall blurring offset
2337
+ vec2 offset = vogelSample * (shadowRadius * 2.);
2338
+
2339
+ // Penumbra offset
2340
+ offset += vogelSample * (penumbra * texelScalar);
2341
+
2342
+ shadow += step( compare, unpackRGBAToDepth( texture2D( shadowMap, uv + offset ) ) );
2343
+ }
2344
+ #pragma unroll_loop_end
2345
+
2346
+ return shadow * gShadowSamplesRpc;
2347
+ }
2348
+
2349
+
2350
+ float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
2351
+
2352
+ return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
2353
+
2354
+ }
2355
+
2356
+ vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
2357
+
2358
+ return unpackRGBATo2Half( texture2D( shadow, uv ) );
2359
+
2360
+ }
2361
+
2362
+ float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
2363
+
2364
+ float occlusion = 1.0;
2365
+
2366
+ vec2 distribution = texture2DDistribution( shadow, uv );
2367
+
2368
+ float hard_shadow = step( compare , distribution.x ); // Hard Shadow
2369
+
2370
+ if (hard_shadow != 1.0 ) {
2371
+
2372
+ float distance = compare - distribution.x ;
2373
+ float variance = max( 0.00000, distribution.y * distribution.y );
2374
+ float softness_probability = variance / (variance + distance * distance ); // Chebeyshevs inequality
2375
+ softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); // 0.3 reduces light bleed
2376
+ occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
2377
+
2378
+ }
2379
+ return occlusion;
2380
+
2381
+ }
2382
+
2383
+ float getShadow( int i, sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
2384
+
2385
+ float shadow = 1.0;
2386
+
2387
+ shadowCoord.xyz /= shadowCoord.w;
2388
+ shadowCoord.z += shadowBias;
2389
+
2390
+ // if ( something && something ) breaks ATI OpenGL shader compiler
2391
+ // if ( all( something, something ) ) using this instead
2392
+
2393
+ bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
2394
+ bool inFrustum = all( inFrustumVec );
2395
+
2396
+ bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
2397
+
2398
+ bool frustumTest = all( frustumTestVec );
2399
+
2400
+ if ( frustumTest ) {
2401
+
2402
+ #if defined( SHADOWMAP_TYPE_PCF )
2403
+
2404
+ vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
2405
+ return vogelShadow(i, shadowMap, shadowCoord.xy, texelSize.x, shadowCoord.z, shadowRadius );
2406
+
2407
+ #elif defined( SHADOWMAP_TYPE_PCF_SOFT )
2408
+
2409
+ vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
2410
+ float dx = texelSize.x;
2411
+ float dy = texelSize.y;
2412
+
2413
+ vec2 uv = shadowCoord.xy;
2414
+ vec2 f = fract( uv * shadowMapSize + 0.5 );
2415
+ uv -= f * texelSize;
2416
+
2417
+ shadow = (
2418
+ texture2DCompare( shadowMap, uv, shadowCoord.z ) +
2419
+ texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
2420
+ texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
2421
+ texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
2422
+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
2423
+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
2424
+ f.x ) +
2425
+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
2426
+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
2427
+ f.x ) +
2428
+ mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
2429
+ texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
2430
+ f.y ) +
2431
+ mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
2432
+ texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
2433
+ f.y ) +
2434
+ mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
2435
+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
2436
+ f.x ),
2437
+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
2438
+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
2439
+ f.x ),
2440
+ f.y )
2441
+ ) * ( 1.0 / 9.0 );
2442
+
2443
+ #elif defined( SHADOWMAP_TYPE_VSM )
2444
+
2445
+ shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
2446
+
2447
+ #else // no percentage-closer filtering:
2448
+
2449
+ shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
2450
+
2451
+ #endif
2452
+
2453
+ }
2454
+
2455
+ return shadow;
2456
+
2457
+ }
2458
+
2459
+ // cubeToUV() maps a 3D direction vector suitable for cube texture mapping to a 2D
2460
+ // vector suitable for 2D texture mapping. This code uses the following layout for the
2461
+ // 2D texture:
2462
+ //
2463
+ // xzXZ
2464
+ // y Y
2465
+ //
2466
+ // Y - Positive y direction
2467
+ // y - Negative y direction
2468
+ // X - Positive x direction
2469
+ // x - Negative x direction
2470
+ // Z - Positive z direction
2471
+ // z - Negative z direction
2472
+ //
2473
+ // Source and test bed:
2474
+ // https://gist.github.com/tschw/da10c43c467ce8afd0c4
2475
+
2476
+ vec2 cubeToUV( vec3 v, float texelSizeY ) {
2477
+
2478
+ // Number of texels to avoid at the edge of each square
2479
+
2480
+ vec3 absV = abs( v );
2481
+
2482
+ // Intersect unit cube
2483
+
2484
+ float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
2485
+ absV *= scaleToCube;
2486
+
2487
+ // Apply scale to avoid seams
2488
+
2489
+ // two texels less per square (one texel will do for NEAREST)
2490
+ v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
2491
+
2492
+ // Unwrap
2493
+
2494
+ // space: -1 ... 1 range for each square
2495
+ //
2496
+ // #X## dim := ( 4 , 2 )
2497
+ // # # center := ( 1 , 1 )
2498
+
2499
+ vec2 planar = v.xy;
2500
+
2501
+ float almostATexel = 1.5 * texelSizeY;
2502
+ float almostOne = 1.0 - almostATexel;
2503
+
2504
+ if ( absV.z >= almostOne ) {
2505
+
2506
+ if ( v.z > 0.0 )
2507
+ planar.x = 4.0 - v.x;
2508
+
2509
+ } else if ( absV.x >= almostOne ) {
2510
+
2511
+ float signX = sign( v.x );
2512
+ planar.x = v.z * signX + 2.0 * signX;
2513
+
2514
+ } else if ( absV.y >= almostOne ) {
2515
+
2516
+ float signY = sign( v.y );
2517
+ planar.x = v.x + 2.0 * signY + 2.0;
2518
+ planar.y = v.z * signY - 2.0;
2519
+
2520
+ }
2521
+
2522
+ // Transform to UV space
2523
+
2524
+ // scale := 0.5 / dim
2525
+ // translate := ( center + 0.5 ) / dim
2526
+ return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
2527
+
2528
+ }
2529
+
2530
+ float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
2531
+
2532
+ float shadow = 1.0;
2533
+ vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
2534
+
2535
+ // for point lights, the uniform @vShadowCoord is re-purposed to hold
2536
+ // the vector from the light to the world-space position of the fragment.
2537
+ vec3 lightToPosition = shadowCoord.xyz;
2538
+
2539
+ // dp = normalized distance from light to fragment position
2540
+ float compare = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); // need to clamp?
2541
+ compare += shadowBias;
2542
+
2543
+ // bd3D = base direction 3D
2544
+ vec3 bd3D = normalize( lightToPosition );
2545
+
2546
+ vec2 halton = haltonSequence[frameIndex];
2547
+ float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
2548
+ float temporalAngle = temporalOffset * PI2;
2549
+
2550
+ #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_VSM )
2551
+ for (int i = 0; i < gShadowSamples; i++) {
2552
+ vec2 vogelSample = vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
2553
+
2554
+ // Overall blurring offset
2555
+ vec3 offset = vec3(vogelSample.x, vogelSample.y, -vogelSample.x) * (shadowRadius + 5.);
2556
+
2557
+ // NOTE: Removed for now
2558
+ // Penumbra offset
2559
+ //offset += vec3(vogelSample.x, vogelSample.y, vogelSample.y) * (penumbra * gPenumbraFilterSize);
2560
+
2561
+ shadow += texture2DCompare( shadowMap, cubeToUV( bd3D + offset, texelSize.y ), compare );
2562
+
2563
+ }
2564
+ return shadow * gShadowSamplesRpc;
2565
+
2566
+ #elif defined( SHADOWMAP_TYPE_PCF_SOFT )
2567
+ for (int i = 0; i < 16; i++) {
2568
+ vec2 vogelSample = vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
2569
+
2570
+ // Overall blurring offset
2571
+ vec3 offset = vec3(vogelSample.x, vogelSample.y, -vogelSample.x) * (shadowRadius + 5.);
2572
+
2573
+ shadow += texture2DCompare( shadowMap, cubeToUV( bd3D + offset, texelSize.y ), compare );
2574
+
2575
+ }
2576
+ return shadow * (1.0 / 16.0);
2577
+ #else // no percentage-closer filtering
2578
+
2579
+ return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), compare );
2580
+
2581
+ #endif
2582
+
2583
+ }
2584
+
2585
+ #endif
2586
+ `,GT=fs.ShaderChunk.lights_fragment_begin,VT=fs.ShaderChunk.shadowmask_pars_fragment,Kg=null,zT=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Zg=(n="medium")=>{if(Kg===n)return!1;Kg=n;let r=zT(n);fs.ShaderChunk.shadowmap_pars_fragment=RT(r);let e=GT.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),fs.ShaderChunk.lights_fragment_begin=e;let t=VT.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),fs.ShaderChunk.shadowmask_pars_fragment=t,!0};var _a=require("three");var Qg=require("three");var ms=class extends Kr(Qg.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,ms.geometryHelper,e,t)}};var Jg=require("three");var hs=class extends Kr(Jg.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,hs.geometryHelper,e,t)}};var Ic=require("three");var Nc=class extends Kr(Ic.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,Nc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Nc._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},wa=Nc;wa._vector=new Ic.Vector3;function jT(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var ys=class extends ps(_a.DirectionalLight,ms){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new _a.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof _a.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&jT(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var o0=require("three");var mr=require("three");var e0=new mr.Vector3,t0=new mr.Vector3,r0=new mr.Quaternion,gs=class extends ps(mr.SpotLight,wa){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=mr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new mr.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof mr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),t0.setFromMatrixPosition(this.matrixWorld),r0.setFromRotationMatrix(this.matrixWorld),e0.copy(this.up).applyQuaternion(r0).negate().multiplyScalar(this.distance),this.target.position.copy(t0).add(e0),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var $o=class extends yi(o0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new pt(1,1,1,1);this.fog=null;this.backupFog=new xs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new xs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Jr(Io,{...on.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new xs.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=At(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Xt)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Zg(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=At(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=At(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let s=t;Nt(e.path,["fog"])?this.updateFog(s.fog,o.shared):Nt(e.path,["ao"])?this.updateAo(s.ao,o.shared):Nt(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Nt(e.path,["shadow"])&&this.updateShadow(s.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(At(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ys&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof gs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Te.is(s)&&(s.visible||a?.object.data.visible)&&((qo(s)||ba(s)&&this.scene.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Ta(s,e,t,!0)),o(s))}};return o(this),t}};var Kt=require("three");var Mc=class extends ps(Kt.PointLight,hs){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new Kt.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),a=new Kt.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new Kt.Box3(s,a),u=new Kt.Box3Helper(c,new Kt.Color(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Kt.Box3Helper){let t=this.shadow.camera,o=new Kt.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Kt.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ec=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Js(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var vs=class extends lt{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=ec;break;case"Ellipse":i=Oi;break;case"Polygon":i=Jl;break;case"Star":i=tc;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Js(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var bs=require("three");var vo=class extends Qr(bs.Group,eo){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let a of co.rootOverrideProps)e[a]===void 0?(i===void 0&&(i={...e}),i[a]=o.data[a]):(s===void 0&&(s={}),s[a]=e[a],i===void 0&&(i={...e}),i[a]=Lr.apply(o.data[a],e[a]));return this.overrideData=s,i}else return{...It.defaultData,...e}}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let a of co.rootOverrideProps)a in e.props&&e.props[a]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[a]=this.component.data[a]);else if(e.type===0&&e.path.length>0&&co.rootOverrideProps.includes(e.path[0])){let a=e.path[0];s===void 0&&(s={...e,path:[],props:{[a]:t[a]}})}}super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let s=0;for(let a of this.children)if(Te.is(a))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Lc(a),s+=1;else break;this.children.splice(0,s)}i=!0}if(o){let s={};i0(e,[this.uuid],t.overrides,this,o,o,0,i,s);for(let a of this.children)if(Te.is(a)){let c=a.data;c.type==="Empty"&&c.animations&&a.traverseEntity(u=>{if(u instanceof lt&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(s[m])),p=l.boneInverses.map(m=>new bs.Matrix4().fromArray(m)),f=new bs.Skeleton(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Lc(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Te.is(e)&&Lc(e)}}function n0(n,r,e,t){return n.component===r&&Ts(n.identity,t)?n.overrideData===e?2:1:0}function i0(n,r,e,t,o,i,s,a,c){if(s>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof vo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Te.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=ci.resolve(e,d,1),f=null,m;if(!a){let h=t.children[u];if(f=Te.is(h)?h:null,f!==null){let y=n0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=n0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?Lr.apply(l.data,p):l.data;gr.is(h.type)&&(h={...h,type:"Empty"}),f=vr.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,i0(n,r,e,f,l,i,s+1,a,c)}if(!a){let l=u;for(;;){let d=t.children[u];if(Te.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}var s0=require("three");var Dc=class extends Qr(s0.Bone,eo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function FT(n,r,e){let t;return r.geometry.type==="TextGeometry"?new ss(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Pn(n,r,e):r.geometry.type==="PathGeometry"?t=new vs(n,r,e):r.geometry.type==="VectorGeometry"?t=new Ec(n,r,e):r.geometry.type==="BooleanGeometry"?t=new fr(n,r,e):t=new lt(n,r,e),t)}function Bc(n,r,e){return r.type==="Mesh"?FT(n,r,e):r.type==="Empty"?new Sa(n,r):r.type==="Bone"?new Dc(n,r):r.type==="Page"?new $o(n,r):r.type==="PointLight"?new Mc(n,r,e):r.type==="SpotLight"?new gs(n,r,e):r.type==="DirectionalLight"?new ys(n,r,e):r.type==="Component"||r.type==="Instance"?new vo(n,r,e):gr.is(r.type)?new Jr(n,r):(console.error(r),new Sa(n,r))}vr.createEntity=Bc;function kT(n,r,e){let t=Bc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,a=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=a,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}vr.changeEntityProptotype=kT;vr.Cloner=cs;function a0(n,r,e,t){n.updateByOp(r,e,t,!1)}var Ss=require("three");function l0(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,ns(n),os(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Xt&&n.needsAO&&n.layers.enable(5),e}function c0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function d0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Xt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)l0(e,e.material[t])&&(r=!0);else l0(e,e.material)&&(r=!0)}),r}function u0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Xt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)c0(e,e.material[t])&&(r=!0);else c0(e,e.material)&&(r=!0)}),r}var WT=new Ss.Raycaster,qT=new Ss.Matrix4,$T=new Ss.Ray;function Ta(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=qT.copy(i.matrixWorld).invert(),a=$T.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;a.applyMatrix4(c);let u=WT;u.set(a.origin,a.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var Rc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let a=i.length-2;a>=0;a--)if(!e.has(i[a])){let c=r.find(i[a]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[a]}`),e.add(i[a])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var YT=new hr.MeshBasicMaterial;YT.wireframe=!0;var p0=new hr.Vector3,Gc=class extends hr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Rc;this.errorPage=new $o("fdasfa",{...uo.defaultData,name:""});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=u0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=d0(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof $o&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let a=i.children.indexOf(s);o.splice(0,0,a)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Wu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Io)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),qo(i)&&va(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),va(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),qo(o)&&(o.freeBooleanPointer(),i instanceof fr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof vs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let a=e.localIndex;s.children.splice(a,0,s.children.pop()),qo(o)&&(o.invalidateUpstreamBooleanData(),va(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof fr&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof $o&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{a0(s,t,o,{scene:this,shared:i}),s instanceof lt&&s.updateGeometryGroupsIfNeeded()}catch(a){console.error(a)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}init(e,t){this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(o=>{va(o)&&o.recomputeBoolean(),o instanceof Jr&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Te.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Te.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,a,c){if(e){let u=i.find(e);u&&u!==i&&s.forInstancesRec(l=>{l.data=oi(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(a);if(f){let m=[...La(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=Et.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,s,a){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof vo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let s=!1;if(t.forInstancesRec(a=>{a.data=oi(a.data,c=>{a.isInstanceRoot||(c.events.delete(i.id),s=!0)}).data}),s===!1)for(let a of Gl.list)this.rewriteActions(i.data.gameActions[a],["gameActions",a],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(s=>{if(s instanceof vo&&s.isInstanceRoot)return s.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||s.resetBBoxNeedsUpdate(),o&&s.traverseEntity(a=>{o.addClip(a)}),!0});for(let s of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Lc(s)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof vo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Te.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=s=>{for(let a of s.children){let c=a.cloner;if(Te.is(a)&&!a.raycastLock&&(a.visible||c?.object.data.visible))if(t===!0&&a.isInstanceRoot){let u=[];if(e.intersectObject(a,!0,u),u.length){let l=u[0];l.object=a,l.point.applyMatrix4(l.object.matrixWorld);let d=a.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(qo(a)||ba(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,o),Ta(a,e,o)),i(a)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Te.is(s)&&(s.visible||a?.object.data.visible)&&((qo(s)||ba(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Ta(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Te.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Te.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Te.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)pi.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Te.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,a){let c={scene:this,shared:a},u=Bc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,a)),u.updateState(t,c),u instanceof lt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof lt&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new hr.Matrix4().fromArray(h)),m=new hr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],u=this.find(a),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new hr.Box3;return o.setFromPoints(t),o.getCenter(p0),p0}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Pt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Yt&&e(t.material[o]);else t.material instanceof Yt&&e(t.material)})}updateCanvasSize(e,t,o=!1){this.activeCamera.setViewplaneSize(e,t,o)}};var f0=require("three/examples/jsm/loaders/DRACOLoader.js");var Yo;function XT(){return Yo||(Yo=new f0.DRACOLoader,Yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yo.decoderPending}async function KT(n){if(Yo){let r={attributeIDs:Yo.defaultAttributeIDs,attributeTypes:Yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Yo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function m0(n,r){let[e,t]=Qc(Sl.deserialize(new Uint8Array(n)));xh(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await XT();for(let i of o){let s=await KT(at(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:u,itemSize:l})=>{a[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var ZT=require("three"),QT=require("three/examples/jsm/utils/BufferGeometryUtils.js");function h0(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var Oa=require("three");function y0(n){let r=new Set;return n.traverse(e=>{if(e instanceof Xt)if(Ze(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(JT(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Oa.Color,specularColor:new Oa.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},Oa.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=ag(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else eO(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function JT(n){return n.getLayersOfType("transmission").length>0}function eO(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function g0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function x0(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}var v0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function b0(n){let r=[];return n.traverse(e=>{e instanceof cs&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(a=>{a.updateMatrix();let c;if(a.geometry!==void 0)try{c=a.geometry.clone().applyMatrix4(a.matrix)}catch(u){console.error(u)}return c!==void 0&&a.matrix.determinant()<0&&h0(c),c}).filter(a=>a!==void 0)];if(!e.parameters.hideBase&&t instanceof Pt&&s.unshift(t.geometry),s.length){let a=(0,v0.mergeBufferGeometries)(s);t instanceof Pt&&(t.geometry=a)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Sg})}),n}function S0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function w0(n){Object.values(n.shared.materials).forEach(r=>{ju(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?ju(e.material):"materials"in e&&e.materials.forEach(t=>{ju(t)})})}function ju(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var A0=Xo(P0(),1);function T0(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var O0="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Vc=class extends zc.Loader{load(r,e,t,o=console.error){let i=new zc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(O0+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(O0),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await m0(r,w0);e.version&&(0,A0.default)(e.version,"0.9.386")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Og(e)&&Ly(),Gg(e)&&vg()].filter(Boolean));let t=new _n(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Gc(e.scene,t),i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&$g(s)&&Object.assign(s,{makeDefault:!0})}return o=b0(o),o=y0(o),o=g0(o),o=x0(o),o=S0(o),o=T0(o),o}};