@splinetool/loader 0.9.345 → 0.9.347
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.
- package/build/SplineLoader.cjs +1167 -618
- package/build/SplineLoader.js +1166 -617
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";var Gg=Object.create;var na=Object.defineProperty;var Rg=Object.getOwnPropertyDescriptor;var Vg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Fg=Object.prototype.hasOwnProperty;var ia=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),su=(n,r)=>{for(var e in r)na(n,e,{get:r[e],enumerable:!0})},au=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Vg(r))!Fg.call(n,o)&&o!==e&&na(n,o,{get:()=>r[o],enumerable:!(t=Rg(r,o))||t.enumerable});return n};var nn=(n,r,e)=>(e=n!=null?Gg(jg(n)):{},au(r||!n||!n.__esModule?na(e,"default",{value:n,enumerable:!0}):e,n)),zg=n=>au(na({},"__esModule",{value:!0}),n);var Lm=ia((Rc,Mm)=>{(function(n,r){typeof Rc=="object"?Mm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Rc,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 jm=ia((cl,Vm)=>{(function(n,r){typeof cl=="object"&&typeof Vm<"u"?r(cl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(cl,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=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=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(P[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(P[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++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[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=P[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 I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[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=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[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=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[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=P[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=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[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,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var by=ia(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,T=(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=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){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 P=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(R){p._emit("playerror",y._id,R)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),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 T=(Date.now()-S)/f;S=Date.now(),g+=v*T,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 Og=ia((S8,Pg)=>{Pg.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 HT={};su(HT,{default:()=>sc});module.exports=zg(HT);var ac=require("three");var Ge=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,Ge.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,Ge.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,Ge.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Vi(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"&&Vi(t)}return Object.freeze(n)}function lu(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 sn=class extends Error{};function sa(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function _r(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 an(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 cu(){return typeof process<"u"}function du(n,r){for(let e of n)r(e.id,e.data)!==!0&&du(e.children,r)}function uu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)uu(e,r)}var tt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,tt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vi(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&&uu(o,t)}}traverse(e){du(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,tt.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 sn("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)=>lu(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 _r(0,o,o);{let s=i[0].fi;return _r(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 _r(c,c+o,o)}else return _r(s.fi,l.fi,o)}}};var ln;(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})(ln||(ln={}));var ge=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ge.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vi(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,ge.prototype);let t=e;return cu()||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 _r(0,t,t);{let i=o[0].fi;return _r(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 _r(l,l+t,t)}else return _r(i.fi,s.fi,t)}}};function cn(n){return n&&typeof n=="object"&&n instanceof Ue}var Ue=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&&!cn(t))return null;o+=1}t=t?sa(t):new Ue;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=sa(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=sa(c);u[r.path[o-1]]=t,t=u}else{let u=new Ue;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Ue.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Wr;(t=>{function n(o,i){return ji(o,i)??o}t.apply=n;function r(o,i){return dc(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=Tt.zoomOnce(c,l[s]),c===void 0)return i;if(!cn(c))return;s+=1}if(c===void 0)return i;if(!!cn(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=cc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Wr||(Wr={}));function cc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ji(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=cc(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 Ug(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ji(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 ji(n,r){if(!cn(r))return r;if(n instanceof tt){let e=cc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ge)return Ug(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=ji(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 Ue)return dc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=ji(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 dc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!cn(r))return r;if(!cn(n))return Wr.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 Ue;for(let o of e){let i=dc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function pu(n,r){let e={cur:[],result:[],len:0};return n=Fi(n,r,e)??n,[n,e.result]}function aa(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function la(n){n&&(n.len-=1)}function kg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function fu(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=Fi(i.data,r,aa(e,s));la(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=fu(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 Hg(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=Fi(i.data,r,aa(e,s));return la(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 Fi(n,r,e){if(n instanceof tt){let t=fu(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ge)return Hg(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Fi(i,r,aa(e,s));return la(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"&&!an(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=Fi(s,r,aa(e,i));la(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");kg(e)}return t}else return}}var ca;(r=>{function n(e,t){let o=Tt.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})(ca||(ca={}));var ht;(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 Ue&&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 tt||c instanceof ge||c instanceof Ge?p=c.runOp(u):p=ln.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 tt){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ge){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ge){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ue){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Ue.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 tt){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ge){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})(ht||(ht={}));var uc;(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=>ht.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>ht.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=Tt.zoom(d,[...m.path,m.id]),y=ht.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=pu(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=ht.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof sn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(uc||(uc={}));var mu=Symbol(),Wg=Symbol(),ua=Symbol(),Eo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof da);){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[ua];t&&t(),delete this._children[r]}}}},fc=class extends Eo{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,ln.runOp(this._current,r),r.path)}},mc=class extends Eo{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,Ge.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},hu={get(n,r){if(r===ua)return()=>{n._parent=null};if(r===mu)return n._current;if(r===Wg)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=pa(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]}}},qg={...hu,set(n,r,e){let t={type:0,props:{[r]:lt(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}},$g={...hu,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}},dn=class extends Eo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ua]=()=>{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=pa(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)}},un=class extends Eo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ua]=()=>{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=pa(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 pc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Tt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var da=class extends Eo{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){pc(this.ts,e,r),pc(this.actual,t,r),pc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function pa(n,r,e){return e instanceof tt?new dn(n,r,e):e instanceof ge?new un(n,r,e):e instanceof Ge?new Proxy(new mc(n,r,e),$g):e!==null&&typeof e=="object"?an(e)?e:new Proxy(new fc(n,r,e),qg):e}function hc(n){let r=new da(n);return[pa(r,"",n),r]}function pn(n,r){let[e,t]=hc(n);return r(e),t.result()}function lt(n){return n instanceof dn||n instanceof un?n._current:n!==null&&typeof n=="object"?n[mu]:n}var Tt;(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 tt||i instanceof dn)&&typeof s=="string")return i.data(s);if((i instanceof ge||i instanceof un)&&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})(Tt||(Tt={}));function yu(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 ar(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 fa=class{},zi=class extends fa{constructor(e){super();this.id=e}},Ui=class extends fa{constructor(e){super();this.data=e}};var gc;try{gc=new TextDecoder}catch{}var ne,ao,N=0;var Tu=[],xc=Tu,vc=0,Mt={},Ae,so,Zt=0,Tr=0,Wt,qr,Pt=[],Me,gu={useRecords:!1,mapsAsObjects:!0},ki=class{},Sc=new ki;Sc.name="MessagePack 0xC1";var fn=!1,Pr=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 Cu(()=>(ha(),this?this.unpack(r,e):Pr.prototype.unpack.call(gu,r,e)));ao=e>-1?e:r.length,N=0,vc=0,Tr=0,so=null,xc=Tu,Wt=null,ne=r;try{Me=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 Pr){if(Mt=this,this.structures)return Ae=this.structures,ma();(!Ae||Ae.length>0)&&(Ae=[])}else Mt=gu,(!Ae||Ae.length>0)&&(Ae=[]);return ma()}unpackMultiple(r,e){let t,o=0;try{fn=!0;let i=r.length,s=this?this.unpack(r,i):xa.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(ma())===!1)return}else{for(t=[s];N<i;)o=N,t.push(ma());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{fn=!1,ha()}}_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 ma(){try{if(!Mt.trusted&&!fn){let r=Ae.sharedLength||0;r<Ae.length&&(Ae.length=r)}let n=qe();if(N==ao)Ae.restoreStructures&&xu(),Ae=null,ne=null,qr&&(qr=null);else if(N>ao){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!fn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ae.restoreStructures&&xu(),ha(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function xu(){for(let n in Ae.restoreStructures)Ae[n]=Ae.restoreStructures[n];Ae.restoreStructures=null}function qe(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=Ae[n&63]||Mt.getStructures&&Pu()[n&63];return r?(r.read||(r.read=wc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Mt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Au()]=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(Tr>=N)return so.slice(N-Zt,(N+=r)-Zt);if(Tr==0&&ao<140){let e=r<16?_c(r):Ou(r);if(e!=null)return e}return bc(r)}else{let r;switch(n){case 192:return null;case 193:return Wt?(r=qe(),r>0?Wt[1].slice(Wt.position1,Wt.position1+=r):Wt[0].slice(Wt.position0,Wt.position0-=r)):Sc;case 194:return!1;case 195:return!0;case 196:return yc(ne[N++]);case 197:return r=Me.getUint16(N),N+=2,yc(r);case 198:return r=Me.getUint32(N),N+=4,yc(r);case 199:return Mo(ne[N++]);case 200:return r=Me.getUint16(N),N+=2,Mo(r);case 201:return r=Me.getUint32(N),N+=4,Mo(r);case 202:if(r=Me.getFloat32(N),Mt.useFloat32>2){let e=ga[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Me.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Me.getUint16(N),N+=2,r;case 206:return r=Me.getUint32(N),N+=4,r;case 207:return Mt.int64AsNumber?(r=Me.getUint32(N)*4294967296,r+=Me.getUint32(N+4)):r=Me.getBigUint64(N),N+=8,r;case 208:return Me.getInt8(N++);case 209:return r=Me.getInt16(N),N+=2,r;case 210:return r=Me.getInt32(N),N+=4,r;case 211:return Mt.int64AsNumber?(r=Me.getInt32(N)*4294967296,r+=Me.getUint32(N+4)):r=Me.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return _u(ne[N++]&63);{let e=Pt[r];if(e)return e.read?(N++,e.read(qe())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,_u(ne[N++]&63,ne[N++])):Mo(2);case 214:return Mo(4);case 215:return Mo(8);case 216:return Mo(16);case 217:return r=ne[N++],Tr>=N?so.slice(N-Zt,(N+=r)-Zt):Xg(r);case 218:return r=Me.getUint16(N),N+=2,Tr>=N?so.slice(N-Zt,(N+=r)-Zt):Kg(r);case 219:return r=Me.getUint32(N),N+=4,Tr>=N?so.slice(N-Zt,(N+=r)-Zt):Zg(r);case 220:return r=Me.getUint16(N),N+=2,bu(r);case 221:return r=Me.getUint32(N),N+=4,bu(r);case 222:return r=Me.getUint16(N),N+=2,Su(r);case 223:return r=Me.getUint32(N),N+=4,Su(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 Yg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(qe);return n.highByte===0&&(n.read=vu(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?vu(r,e):e}var vu=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ae[t]||Pu()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=wc(o,n)),o.read()};function Pu(){let n=Cu(()=>(ne=null,Mt.getStructures()));return Ae=Mt._mergeStructures(n,Ae)}var bc=ya,Xg=ya,Kg=ya,Zg=ya;function ya(n){let r;if(n<16&&(r=_c(n)))return r;if(n>64&&gc)return gc.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&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+=ct.apply(String,t),t.length=0)}return t.length>0&&(r+=ct.apply(String,t)),r}function bu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=qe();return r}function Su(n){if(Mt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Au()]=qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(qe(),qe());return r}}var ct=String.fromCharCode;function Ou(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return ct.apply(String,e)}function _c(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return ct(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return ct(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return ct(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return ct(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return ct(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return ct(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return ct(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return ct(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return ct(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return ct(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return ct(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return ct(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return ct(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return ct(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return ct(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function yc(n){return Mt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function Mo(n){let r=ne[N++];if(Pt[r])return Pt[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var wu=new Array(4096);function Au(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,Tr>=N)return so.slice(N-Zt,(N+=n)-Zt);if(!(Tr==0&&ao<180))return bc(n)}else return N--,qe();let r=(n<<5^(n>1?Me.getUint16(N):n>0?ne[N]:0))&4095,e=wu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Me.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 N=t,e.string;o-=3,t=N}for(e=[],wu[r]=e,e.bytes=n;t<o;)i=Me.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?_c(n):Ou(n);return l!=null?e.string=l:e.string=bc(n)}var _u=(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=Ae[n];return o&&o.isShared&&((Ae.restoreStructures||(Ae.restoreStructures=[]))[n]=o),Ae[n]=e,e.read=wc(e,t),e.read()},Iu=typeof self=="object"?self:global;Pt[0]=()=>{};Pt[0].noBuffer=!0;Pt[101]=()=>{let n=qe();return(Iu[n[0]]||Error)(n[1])};Pt[105]=n=>{let r=Me.getUint32(N-4);qr||(qr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};qr.set(r,o);let i=qe();return o.used?Object.assign(t,i):(o.target=i,i)};Pt[112]=n=>{let r=Me.getUint32(N-4),e=qr.get(r);return e.used=!0,e.target};Pt[115]=()=>new Set(qe());var Tc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Pt[116]=n=>{let r=n[0],e=Tc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Iu[e](Uint8Array.prototype.slice.call(n,1).buffer)};Pt[120]=()=>{let n=qe();return new RegExp(n[0],n[1])};Pt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Wt=[qe(),qe()],Wt.position0=0,Wt.position1=0;let t=N;N=e;try{return qe()}finally{N=t}};Pt[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 Cu(n){let r=ao,e=N,t=vc,o=Zt,i=Tr,s=so,l=xc,c=qr,u=Wt,a=new Uint8Array(ne.slice(0,ao)),d=Ae,p=Ae.slice(0,Ae.length),f=Mt,m=fn,h=n();return ao=r,N=e,vc=t,Zt=o,Tr=i,so=s,xc=l,qr=c,Wt=u,ne=a,fn=m,Ae=d,Ae.splice(0,Ae.length,...p),Mt=f,Me=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function ha(){ne=null,qr=null,Ae=null}function Nu(n){n.unpack?Pt[n.type]=n.unpack:Pt[n.type]=n}var ga=new Array(147);for(let n=0;n<256;n++)ga[n]=+("1e"+Math.floor(45.15-n*.30103));var xa=new Pr({useRecords:!1}),Qg=xa.unpack,Jg=xa.unpackMultiple,ex=xa.unpack,va={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},tx=new Float32Array(1),YP=new Uint8Array(tx.buffer,0,4);var ba;try{ba=new TextEncoder}catch{}var Sa,Oc,wa=typeof Buffer<"u",Pc=wa?Buffer.allocUnsafeSlow:Uint8Array,Bu=wa?Buffer:Uint8Array,Eu=wa?4294967296:2144337920,j,Qe,M=0,Or,Ar=null,rx=/[\u0080-\uFFFF]/,Hi=Symbol("record-id"),Lo=class extends Pr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Bu.prototype.utf8Write?function(x,C,P){return j.utf8Write(x,C,P)}:ba&&ba.encodeInto?function(x,C){return ba.encodeInto(x,j.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(j||(j=new Pc(8192),Qe=new DataView(j.buffer,0,8192),M=0),Or=j.length-10,Or-M<2048?(j=new Pc(j.length),Qe=new DataView(j.buffer,0,j.length),Or=j.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(Ar=["",""],j[M++]=214,j[M++]=98,Ar.position=M-t,M+=4):Ar=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>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 I=0;I<P;I++){let O=o[I];if(!O)continue;let A,R=o.transitions;for(let U=0,q=O.length;U<q;U++){let te=O[U];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[Hi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),Ar){Qe.setUint32(Ar.position+t,M-Ar.position-t);let P=Ar;Ar=null,S(P[0]),S(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>Or&&_(M),a.offset=M;let P=nx(j.subarray(t,M),l.idsToInsert);return l=null,P}return C&Gu?(j.start=t,j.end=M,j):j.subarray(t,M)}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 P=0,I=v.length;P<I;P++)v[P][Hi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=j.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&ux&&(M=t)}};let S=x=>{M>Or&&(j=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(Ar&&I>=8&&I<4096){let R=rx.test(x);Ar[R?0:1]+=x,j[M++]=193,S(R?-I:I);return}let O;I<32?O=1:I<256?O=2:I<65536?O=3:O=5;let A=I*3;if(M+A>Or&&(j=_(M+A)),I<64||!u){let R,U,q,te=M+O;for(R=0;R<I;R++)U=x.charCodeAt(R),U<128?j[te++]=U:U<2048?(j[te++]=U>>6|192,j[te++]=U&63|128):(U&64512)===55296&&((q=x.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+(q&1023),R++,j[te++]=U>>18|240,j[te++]=U>>12&63|128,j[te++]=U>>6&63|128,j[te++]=U&63|128):(j[te++]=U>>12|224,j[te++]=U>>6&63|128,j[te++]=U&63|128);P=te-M-O}else P=u(x,M+O,A);P<32?j[M++]=160|P:P<256?(O<2&&j.copyWithin(M+2,M+1,M+1+P),j[M++]=217,j[M++]=P):P<65536?(O<3&&j.copyWithin(M+3,M+2,M+2+P),j[M++]=218,j[M++]=P>>8,j[M++]=P&255):(O<5&&j.copyWithin(M+5,M+3,M+3+P),j[M++]=219,Qe.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?j[M++]=x:x<256?(j[M++]=204,j[M++]=x):x<65536?(j[M++]=205,j[M++]=x>>8,j[M++]=x&255):(j[M++]=206,Qe.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?j[M++]=256+x:x>=-128?(j[M++]=208,j[M++]=x+256):x>=-32768?(j[M++]=209,Qe.setInt16(M,x),M+=2):(j[M++]=210,Qe.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){j[M++]=202,Qe.setFloat32(M,x);let O;if(I<4||(O=x*ga[(j[M]&127)<<1|j[M+1]>>7])>>0===O){M+=4;return}else M--}j[M++]=203,Qe.setFloat64(M,x),M+=8}else if(C==="object")if(!x)j[M++]=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)}j[M++]=214,j[M++]=112,Qe.setUint32(M,O.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?j[M++]=144|P:P<65536?(j[M++]=220,j[M++]=P>>8,j[M++]=P&255):(j[M++]=221,Qe.setUint32(M,P),M+=4);for(let O=0;O<P;O++)S(x[O])}else if(I===Map){P=x.size,P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,Qe.setUint32(M,P),M+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Sa.length;O<A;O++){let R=Oc[O];if(x instanceof R){let U=Sa[O];if(U.write){U.type&&(j[M++]=212,j[M++]=U.type,j[M++]=0),S(U.write.call(this,x));return}let q=j,te=Qe,$=M;j=null;let W;try{W=U.pack.call(this,x,k=>(j=q,q=null,M+=k,M>Or&&_(M),{target:j,targetView:Qe,position:M-k}),S)}finally{q&&(j=q,Qe=te,M=$,Or=j.length-10)}W&&(W.length+M>Or&&_(W.length+M),M=ox(W,j,M,U.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")j[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))j[M++]=211,Qe.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)j[M++]=207,Qe.setBigUint64(M,x);else if(this.largeBigIntToFloat)j[M++]=203,Qe.setFloat64(M,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");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?j[M++]=192:(j[M++]=212,j[M++]=0,j[M++]=0);else if(C==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,Qe.setUint32(M,P),M+=4);let I;for(let O=0;O<P;O++)S(I=C[O]),S(x[I])}:(x,C)=>{j[M++]=222;let P=M-t;M+=2;let I=0;for(let O in x)(C||x.hasOwnProperty(O))&&(S(O),S(x[O]),I++);j[P+++t]=I>>8,j[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=C.length;R<U;R++){let q=C[R];P=I[q],P||(P=I[q]=Object.create(null),O++),I=P}let A=I[Hi];if(A)A>=96&&h?(j[M++]=((A-=96)&31)+96,j[M++]=A>>5):j[M++]=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 R=C.highByte=A>=96&&h?A-96>>5:-1;I[Hi]=A,s[A-64]=C,A<y?(C.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(j[M++]=(A&31)+96,j[M++]=R):j[M++]=A):(R>=0?(j[M++]=213,j[M++]=114,j[M++]=(A&31)+96,j[M++]=R):(j[M++]=212,j[M++]=114,j[M++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[Hi]=0),v.push(I),S(C))}for(let R=0,U=C.length;R<U;R++)S(x[C[R]])},_=x=>{let C;if(x>16777216){if(x-t>Eu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Eu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,j.length-1)>>12)+1<<12;let P=new Pc(C);return Qe=new DataView(P.buffer,0,C),j.copy?j.copy(P,0,t,x):P.set(j.slice(t,x)),M-=t,t=0,Or=P.length-10,j=P}}useBuffer(r){j=r,Qe=new DataView(j.buffer,j.byteOffset,j.byteLength),M=0}};Oc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ki];Sa=[{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?Mu(n,16,r):Lu(wa?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Bu&&this.structuredClone?Mu(n,Tc.indexOf(e.name),r):Lu(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Mu(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 Lu(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 ox(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 nx(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 lo(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)");Oc.unshift(n.Class),Sa.unshift(n)}Nu(n)}var Du=new Lo({useRecords:!1}),ix=Du.pack,sx=Du.pack;var{NEVER:ax,ALWAYS:lx,DECIMAL_ROUND:cx,DECIMAL_FIT:dx}=va,Gu=512,ux=1024;var Ru=new Lo({structuredClone:!0});lo({Class:Ge.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ge.prototype),n}});lo({Class:ge.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ge.prototype),n}});lo({Class:tt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,tt.prototype),n}});lo({Class:zi.prototype.constructor,type:4,write(n){return n.id},read(n){return new zi(n)}});lo({Class:Ui.prototype.constructor,type:5,write(n){return n.data},read(n){return new Ui(n)}});lo({Class:Ue.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ue.prototype),n}});function px(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 Ac(n){if(an(n))return n;if(Array.isArray(n))return n.map(Ac);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Ac(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var _a;(t=>{function n(o){return Ru.pack(o)}t.serialize=n;function r(o){return Ru.unpack(o)}t.deserialize=r;function e(o){return px(n(Ac(o))).toString()}t.checksum=e})(_a||(_a={}));var Vu;(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})(Vu||(Vu={}));var co;(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})(co||(co={}));var ju;(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})(ju||(ju={}));var uo;(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})(uo||(uo={}));var Lt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(Lt||(Lt={}));var lr;(l=>{l.white={...Lt.white,a:1},l.transparent={...Lt.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{...Lt.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 Lt.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})(lr||(lr={}));var Ta;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ta||(Ta={}));var Fu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Fu||(Fu={}));var zu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(zu||(zu={}));var cr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(cr||(cr={}));var Bo;(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})(Bo||(Bo={}));var Ir;(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(fx.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;mx.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;hx.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;yx.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;gx.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;xx.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(Ir||(Ir={}));var Pa;(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})(Pa||(Pa={}));var fx=["count"],mx=["radius","start","end","position","scale","rotation"],hx=["position","scale","rotation"],yx=["count","size"],gx=["count","position","scale","rotation"],xx=["strength","scale","rotation","position","movement","seed","freqScale"];var Oa;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Oa||(Oa={}));var Aa;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:lr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:lr.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:lr.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Aa||(Aa={}));var Ic;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Ic||(Ic={}));var Cc;(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})(Cc||(Cc={}));var Ia;(r=>r.defaultData={...Cc.defaultData,...Ic.defaultData})(Ia||(Ia={}));var mn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(mn||(mn={}));var Uu;(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==="light"}r.is=n})(Uu||(Uu={}));var ku;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(ku||(ku={}));var Hu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Wu=["wrapping","image","video"],Ot;(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){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:mn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Lt.fromHex(5526619)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Lt.fromHex(6710886),a:1},colorB:{...Lt.fromHex(6710886),a:1},colorC:{...Lt.fromHex(16777215),a:1},colorD:{...Lt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:lr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:lr.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:lr.fromHexAndA(0,1),contourColor:lr.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Ot||(Ot={}));var Bt;(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 ge}}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 ge;return p.push({fi:0,data:Ot.defaultData("light",u),id:a}),p.push({fi:1,data:Ot.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=Ot.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ge;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Ot.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=Ot.defaultData("video");Object.assign(f.texture,{video:u});let m=new ge;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Ot.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Bt||(Bt={}));var hn;(r=>{function n(){return{points:new ge,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(hn||(hn={}));var yn;(r=>{function n(){return{points:new ge,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(yn||(yn={}));var Nc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var Ca;(r=>{function n(e,t){let o={...e};return vx.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Ca||(Ca={}));var Na={shape:Nc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},vx=["depth","offset","angle","twist","startScale","endScale"];var Wi;(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})(Wi||(Wi={}));var Ea;(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,Ca.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Ea||(Ea={}));var po;(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:yn.defaultData(),extrusion:Na};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:hn.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};throw new Error("not implemented")}r.defaultData=n})(po||(po={}));function qu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function $r(n,r){return Object.setPrototypeOf(n,r),n}function Ma(n){return Array.isArray(n)?n:[n]}function $u(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 bx=typeof global=="object"&&global&&global.Object===Object&&global,La=bx;var Sx=typeof self=="object"&&self&&self.Object===Object&&self,wx=La||Sx||Function("return this")(),rt=wx;var _x=rt.Symbol,dt=_x;var Yu=Object.prototype,Tx=Yu.hasOwnProperty,Px=Yu.toString,qi=dt?dt.toStringTag:void 0;function Ox(n){var r=Tx.call(n,qi),e=n[qi];try{n[qi]=void 0;var t=!0}catch{}var o=Px.call(n);return t&&(r?n[qi]=e:delete n[qi]),o}var Xu=Ox;var Ax=Object.prototype,Ix=Ax.toString;function Cx(n){return Ix.call(n)}var Ku=Cx;var Nx="[object Null]",Ex="[object Undefined]",Zu=dt?dt.toStringTag:void 0;function Mx(n){return n==null?n===void 0?Ex:Nx:Zu&&Zu in Object(n)?Xu(n):Ku(n)}var qt=Mx;function Lx(n){return n!=null&&typeof n=="object"}var yt=Lx;var Bx="[object Symbol]";function Dx(n){return typeof n=="symbol"||yt(n)&&qt(n)==Bx}var gn=Dx;function Gx(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=Gx;var Rx=Array.isArray,$e=Rx;var Vx=1/0,Qu=dt?dt.prototype:void 0,Ju=Qu?Qu.toString:void 0;function ep(n){if(typeof n=="string")return n;if($e(n))return Ba(n,ep)+"";if(gn(n))return Ju?Ju.call(n):"";var r=n+"";return r=="0"&&1/n==-Vx?"-0":r}var tp=ep;function jx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var $t=jx;function Fx(n){return n}var rp=Fx;var zx="[object AsyncFunction]",Ux="[object Function]",kx="[object GeneratorFunction]",Hx="[object Proxy]";function Wx(n){if(!$t(n))return!1;var r=qt(n);return r==Ux||r==kx||r==zx||r==Hx}var Da=Wx;var qx=rt["__core-js_shared__"],Ga=qx;var op=function(){var n=/[^.]+$/.exec(Ga&&Ga.keys&&Ga.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function $x(n){return!!op&&op in n}var np=$x;var Yx=Function.prototype,Xx=Yx.toString;function Kx(n){if(n!=null){try{return Xx.call(n)}catch{}try{return n+""}catch{}}return""}var Yr=Kx;var Zx=/[\\^$.*+?()[\]{}|]/g,Qx=/^\[object .+?Constructor\]$/,Jx=Function.prototype,e0=Object.prototype,t0=Jx.toString,r0=e0.hasOwnProperty,o0=RegExp("^"+t0.call(r0).replace(Zx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function n0(n){if(!$t(n)||np(n))return!1;var r=Da(n)?o0:Qx;return r.test(Yr(n))}var ip=n0;function i0(n,r){return n?.[r]}var sp=i0;function s0(n,r){var e=sp(n,r);return ip(e)?e:void 0}var Dt=s0;var a0=Dt(rt,"WeakMap"),Ra=a0;var ap=Object.create,l0=function(){function n(){}return function(r){if(!$t(r))return{};if(ap)return ap(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),lp=l0;function c0(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 cp=c0;function d0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var dp=d0;var u0=800,p0=16,f0=Date.now;function m0(n){var r=0,e=0;return function(){var t=f0(),o=p0-(t-e);if(e=t,o>0){if(++r>=u0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var up=m0;function h0(n){return function(){return n}}var pp=h0;var y0=function(){try{var n=Dt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),xn=y0;var g0=xn?function(n,r){return xn(n,"toString",{configurable:!0,enumerable:!1,value:pp(r),writable:!0})}:rp,fp=g0;var x0=up(fp),mp=x0;function v0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var hp=v0;var b0=9007199254740991,S0=/^(?:0|[1-9]\d*)$/;function w0(n,r){var e=typeof n;return r=r??b0,!!r&&(e=="number"||e!="symbol"&&S0.test(n))&&n>-1&&n%1==0&&n<r}var vn=w0;function _0(n,r,e){r=="__proto__"&&xn?xn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Va=_0;function T0(n,r){return n===r||n!==n&&r!==r}var bn=T0;var P0=Object.prototype,O0=P0.hasOwnProperty;function A0(n,r,e){var t=n[r];(!(O0.call(n,r)&&bn(t,e))||e===void 0&&!(r in n))&&Va(n,r,e)}var Sn=A0;function I0(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?Va(e,l,c):Sn(e,l,c)}return e}var Cr=I0;var yp=Math.max;function C0(n,r,e){return r=yp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=yp(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),cp(n,this,l)}}var gp=C0;var N0=9007199254740991;function E0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=N0}var wn=E0;function M0(n){return n!=null&&wn(n.length)&&!Da(n)}var ja=M0;var L0=Object.prototype;function B0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||L0;return n===e}var _n=B0;function D0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var xp=D0;var G0="[object Arguments]";function R0(n){return yt(n)&&qt(n)==G0}var Ec=R0;var vp=Object.prototype,V0=vp.hasOwnProperty,j0=vp.propertyIsEnumerable,F0=Ec(function(){return arguments}())?Ec:function(n){return yt(n)&&V0.call(n,"callee")&&!j0.call(n,"callee")},Tn=F0;function z0(){return!1}var bp=z0;var _p=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sp=_p&&typeof module=="object"&&module&&!module.nodeType&&module,U0=Sp&&Sp.exports===_p,wp=U0?rt.Buffer:void 0,k0=wp?wp.isBuffer:void 0,H0=k0||bp,Do=H0;var W0="[object Arguments]",q0="[object Array]",$0="[object Boolean]",Y0="[object Date]",X0="[object Error]",K0="[object Function]",Z0="[object Map]",Q0="[object Number]",J0="[object Object]",ev="[object RegExp]",tv="[object Set]",rv="[object String]",ov="[object WeakMap]",nv="[object ArrayBuffer]",iv="[object DataView]",sv="[object Float32Array]",av="[object Float64Array]",lv="[object Int8Array]",cv="[object Int16Array]",dv="[object Int32Array]",uv="[object Uint8Array]",pv="[object Uint8ClampedArray]",fv="[object Uint16Array]",mv="[object Uint32Array]",Fe={};Fe[sv]=Fe[av]=Fe[lv]=Fe[cv]=Fe[dv]=Fe[uv]=Fe[pv]=Fe[fv]=Fe[mv]=!0;Fe[W0]=Fe[q0]=Fe[nv]=Fe[$0]=Fe[iv]=Fe[Y0]=Fe[X0]=Fe[K0]=Fe[Z0]=Fe[Q0]=Fe[J0]=Fe[ev]=Fe[tv]=Fe[rv]=Fe[ov]=!1;function hv(n){return yt(n)&&wn(n.length)&&!!Fe[qt(n)]}var Tp=hv;function yv(n){return function(r){return n(r)}}var Pn=yv;var Pp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$i=Pp&&typeof module=="object"&&module&&!module.nodeType&&module,gv=$i&&$i.exports===Pp,Mc=gv&&La.process,xv=function(){try{var n=$i&&$i.require&&$i.require("util").types;return n||Mc&&Mc.binding&&Mc.binding("util")}catch{}}(),Xr=xv;var Op=Xr&&Xr.isTypedArray,vv=Op?Pn(Op):Tp,Fa=vv;var bv=Object.prototype,Sv=bv.hasOwnProperty;function wv(n,r){var e=$e(n),t=!e&&Tn(n),o=!e&&!t&&Do(n),i=!e&&!t&&!o&&Fa(n),s=e||t||o||i,l=s?xp(n.length,String):[],c=l.length;for(var u in n)(r||Sv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||vn(u,c)))&&l.push(u);return l}var za=wv;function _v(n,r){return function(e){return n(r(e))}}var Ua=_v;var Tv=Ua(Object.keys,Object),Ap=Tv;var Pv=Object.prototype,Ov=Pv.hasOwnProperty;function Av(n){if(!_n(n))return Ap(n);var r=[];for(var e in Object(n))Ov.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ip=Av;function Iv(n){return ja(n)?za(n):Ip(n)}var On=Iv;function Cv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Cp=Cv;var Nv=Object.prototype,Ev=Nv.hasOwnProperty;function Mv(n){if(!$t(n))return Cp(n);var r=_n(n),e=[];for(var t in n)t=="constructor"&&(r||!Ev.call(n,t))||e.push(t);return e}var Np=Mv;function Lv(n){return ja(n)?za(n,!0):Np(n)}var An=Lv;var Bv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dv=/^\w*$/;function Gv(n,r){if($e(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||gn(n)?!0:Dv.test(n)||!Bv.test(n)||r!=null&&n in Object(r)}var Ep=Gv;var Rv=Dt(Object,"create"),Kr=Rv;function Vv(){this.__data__=Kr?Kr(null):{},this.size=0}var Mp=Vv;function jv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Lp=jv;var Fv="__lodash_hash_undefined__",zv=Object.prototype,Uv=zv.hasOwnProperty;function kv(n){var r=this.__data__;if(Kr){var e=r[n];return e===Fv?void 0:e}return Uv.call(r,n)?r[n]:void 0}var Bp=kv;var Hv=Object.prototype,Wv=Hv.hasOwnProperty;function qv(n){var r=this.__data__;return Kr?r[n]!==void 0:Wv.call(r,n)}var Dp=qv;var $v="__lodash_hash_undefined__";function Yv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Kr&&r===void 0?$v:r,this}var Gp=Yv;function In(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])}}In.prototype.clear=Mp;In.prototype.delete=Lp;In.prototype.get=Bp;In.prototype.has=Dp;In.prototype.set=Gp;var Lc=In;function Xv(){this.__data__=[],this.size=0}var Rp=Xv;function Kv(n,r){for(var e=n.length;e--;)if(bn(n[e][0],r))return e;return-1}var fo=Kv;var Zv=Array.prototype,Qv=Zv.splice;function Jv(n){var r=this.__data__,e=fo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Qv.call(r,e,1),--this.size,!0}var Vp=Jv;function eb(n){var r=this.__data__,e=fo(r,n);return e<0?void 0:r[e][1]}var jp=eb;function tb(n){return fo(this.__data__,n)>-1}var Fp=tb;function rb(n,r){var e=this.__data__,t=fo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var zp=rb;function Cn(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])}}Cn.prototype.clear=Rp;Cn.prototype.delete=Vp;Cn.prototype.get=jp;Cn.prototype.has=Fp;Cn.prototype.set=zp;var mo=Cn;var ob=Dt(rt,"Map"),ho=ob;function nb(){this.size=0,this.__data__={hash:new Lc,map:new(ho||mo),string:new Lc}}var Up=nb;function ib(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var kp=ib;function sb(n,r){var e=n.__data__;return kp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var yo=sb;function ab(n){var r=yo(this,n).delete(n);return this.size-=r?1:0,r}var Hp=ab;function lb(n){return yo(this,n).get(n)}var Wp=lb;function cb(n){return yo(this,n).has(n)}var qp=cb;function db(n,r){var e=yo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var $p=db;function Nn(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])}}Nn.prototype.clear=Up;Nn.prototype.delete=Hp;Nn.prototype.get=Wp;Nn.prototype.has=qp;Nn.prototype.set=$p;var Go=Nn;var ub="Expected a function";function Bc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(ub);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(Bc.Cache||Go),e}Bc.Cache=Go;var Yp=Bc;var pb=500;function fb(n){var r=Yp(n,function(t){return e.size===pb&&e.clear(),t}),e=r.cache;return r}var Xp=fb;var mb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hb=/\\(\\)?/g,yb=Xp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(mb,function(e,t,o,i){r.push(o?i.replace(hb,"$1"):t||e)}),r}),Kp=yb;function gb(n){return n==null?"":tp(n)}var Zp=gb;function xb(n,r){return $e(n)?n:Ep(n,r)?[n]:Kp(Zp(n))}var Qt=xb;var vb=1/0;function bb(n){if(typeof n=="string"||gn(n))return n;var r=n+"";return r=="0"&&1/n==-vb?"-0":r}var go=bb;function Sb(n,r){r=Qt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[go(r[e++])];return e&&e==t?n:void 0}var ka=Sb;function wb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var En=wb;var Qp=dt?dt.isConcatSpreadable:void 0;function _b(n){return $e(n)||Tn(n)||!!(Qp&&n&&n[Qp])}var Jp=_b;function ef(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Jp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?ef(l,r-1,e,t,o):En(o,l):t||(o[o.length]=l)}return o}var tf=ef;function Tb(n){var r=n==null?0:n.length;return r?tf(n,1):[]}var rf=Tb;function Pb(n){return mp(gp(n,void 0,rf),n+"")}var Ha=Pb;var Ob=Ua(Object.getPrototypeOf,Object),Mn=Ob;var Ab="[object Object]",Ib=Function.prototype,Cb=Object.prototype,of=Ib.toString,Nb=Cb.hasOwnProperty,Eb=of.call(Object);function Mb(n){if(!yt(n)||qt(n)!=Ab)return!1;var r=Mn(n);if(r===null)return!0;var e=Nb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&of.call(e)==Eb}var nf=Mb;function Lb(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 sf=Lb;function Bb(){this.__data__=new mo,this.size=0}var af=Bb;function Db(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var lf=Db;function Gb(n){return this.__data__.get(n)}var cf=Gb;function Rb(n){return this.__data__.has(n)}var df=Rb;var Vb=200;function jb(n,r){var e=this.__data__;if(e instanceof mo){var t=e.__data__;if(!ho||t.length<Vb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Go(t)}return e.set(n,r),this.size=e.size,this}var uf=jb;function Ln(n){var r=this.__data__=new mo(n);this.size=r.size}Ln.prototype.clear=af;Ln.prototype.delete=lf;Ln.prototype.get=cf;Ln.prototype.has=df;Ln.prototype.set=uf;var Bn=Ln;function Fb(n,r){return n&&Cr(r,On(r),n)}var pf=Fb;function zb(n,r){return n&&Cr(r,An(r),n)}var ff=zb;var gf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,mf=gf&&typeof module=="object"&&module&&!module.nodeType&&module,Ub=mf&&mf.exports===gf,hf=Ub?rt.Buffer:void 0,yf=hf?hf.allocUnsafe:void 0;function kb(n,r){if(r)return n.slice();var e=n.length,t=yf?yf(e):new n.constructor(e);return n.copy(t),t}var xf=kb;function Hb(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 vf=Hb;function Wb(){return[]}var Wa=Wb;var qb=Object.prototype,$b=qb.propertyIsEnumerable,bf=Object.getOwnPropertySymbols,Yb=bf?function(n){return n==null?[]:(n=Object(n),vf(bf(n),function(r){return $b.call(n,r)}))}:Wa,Dn=Yb;function Xb(n,r){return Cr(n,Dn(n),r)}var Sf=Xb;var Kb=Object.getOwnPropertySymbols,Zb=Kb?function(n){for(var r=[];n;)En(r,Dn(n)),n=Mn(n);return r}:Wa,qa=Zb;function Qb(n,r){return Cr(n,qa(n),r)}var wf=Qb;function Jb(n,r,e){var t=r(n);return $e(n)?t:En(t,e(n))}var $a=Jb;function eS(n){return $a(n,On,Dn)}var Yi=eS;function tS(n){return $a(n,An,qa)}var Ya=tS;var rS=Dt(rt,"DataView"),Xa=rS;var oS=Dt(rt,"Promise"),Ka=oS;var nS=Dt(rt,"Set"),Za=nS;var _f="[object Map]",iS="[object Object]",Tf="[object Promise]",Pf="[object Set]",Of="[object WeakMap]",Af="[object DataView]",sS=Yr(Xa),aS=Yr(ho),lS=Yr(Ka),cS=Yr(Za),dS=Yr(Ra),Ro=qt;(Xa&&Ro(new Xa(new ArrayBuffer(1)))!=Af||ho&&Ro(new ho)!=_f||Ka&&Ro(Ka.resolve())!=Tf||Za&&Ro(new Za)!=Pf||Ra&&Ro(new Ra)!=Of)&&(Ro=function(n){var r=qt(n),e=r==iS?n.constructor:void 0,t=e?Yr(e):"";if(t)switch(t){case sS:return Af;case aS:return _f;case lS:return Tf;case cS:return Pf;case dS:return Of}return r});var Zr=Ro;var uS=Object.prototype,pS=uS.hasOwnProperty;function fS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&pS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var If=fS;var mS=rt.Uint8Array,Gn=mS;function hS(n){var r=new n.constructor(n.byteLength);return new Gn(r).set(new Gn(n)),r}var Rn=hS;function yS(n,r){var e=r?Rn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Cf=yS;var gS=/\w*$/;function xS(n){var r=new n.constructor(n.source,gS.exec(n));return r.lastIndex=n.lastIndex,r}var Nf=xS;var Ef=dt?dt.prototype:void 0,Mf=Ef?Ef.valueOf:void 0;function vS(n){return Mf?Object(Mf.call(n)):{}}var Lf=vS;function bS(n,r){var e=r?Rn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Bf=bS;var SS="[object Boolean]",wS="[object Date]",_S="[object Map]",TS="[object Number]",PS="[object RegExp]",OS="[object Set]",AS="[object String]",IS="[object Symbol]",CS="[object ArrayBuffer]",NS="[object DataView]",ES="[object Float32Array]",MS="[object Float64Array]",LS="[object Int8Array]",BS="[object Int16Array]",DS="[object Int32Array]",GS="[object Uint8Array]",RS="[object Uint8ClampedArray]",VS="[object Uint16Array]",jS="[object Uint32Array]";function FS(n,r,e){var t=n.constructor;switch(r){case CS:return Rn(n);case SS:case wS:return new t(+n);case NS:return Cf(n,e);case ES:case MS:case LS:case BS:case DS:case GS:case RS:case VS:case jS:return Bf(n,e);case _S:return new t;case TS:case AS:return new t(n);case PS:return Nf(n);case OS:return new t;case IS:return Lf(n)}}var Df=FS;function zS(n){return typeof n.constructor=="function"&&!_n(n)?lp(Mn(n)):{}}var Gf=zS;var US="[object Map]";function kS(n){return yt(n)&&Zr(n)==US}var Rf=kS;var Vf=Xr&&Xr.isMap,HS=Vf?Pn(Vf):Rf,jf=HS;var WS="[object Set]";function qS(n){return yt(n)&&Zr(n)==WS}var Ff=qS;var zf=Xr&&Xr.isSet,$S=zf?Pn(zf):Ff,Uf=$S;var YS=1,XS=2,KS=4,kf="[object Arguments]",ZS="[object Array]",QS="[object Boolean]",JS="[object Date]",e1="[object Error]",Hf="[object Function]",t1="[object GeneratorFunction]",r1="[object Map]",o1="[object Number]",Wf="[object Object]",n1="[object RegExp]",i1="[object Set]",s1="[object String]",a1="[object Symbol]",l1="[object WeakMap]",c1="[object ArrayBuffer]",d1="[object DataView]",u1="[object Float32Array]",p1="[object Float64Array]",f1="[object Int8Array]",m1="[object Int16Array]",h1="[object Int32Array]",y1="[object Uint8Array]",g1="[object Uint8ClampedArray]",x1="[object Uint16Array]",v1="[object Uint32Array]",Ve={};Ve[kf]=Ve[ZS]=Ve[c1]=Ve[d1]=Ve[QS]=Ve[JS]=Ve[u1]=Ve[p1]=Ve[f1]=Ve[m1]=Ve[h1]=Ve[r1]=Ve[o1]=Ve[Wf]=Ve[n1]=Ve[i1]=Ve[s1]=Ve[a1]=Ve[y1]=Ve[g1]=Ve[x1]=Ve[v1]=!0;Ve[e1]=Ve[Hf]=Ve[l1]=!1;function Qa(n,r,e,t,o,i){var s,l=r&YS,c=r&XS,u=r&KS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!$t(n))return n;var a=$e(n);if(a){if(s=If(n),!l)return dp(n,s)}else{var d=Zr(n),p=d==Hf||d==t1;if(Do(n))return xf(n,l);if(d==Wf||d==kf||p&&!o){if(s=c||p?{}:Gf(n),!l)return c?wf(n,ff(s,n)):Sf(n,pf(s,n))}else{if(!Ve[d])return o?n:{};s=Df(n,d,l)}}i||(i=new Bn);var f=i.get(n);if(f)return f;i.set(n,s),Uf(n)?n.forEach(function(y){s.add(Qa(y,r,e,y,n,i))}):jf(n)&&n.forEach(function(y,g){s.set(g,Qa(y,r,e,g,n,i))});var m=u?c?Ya:Yi:c?An:On,h=a?void 0:m(n);return hp(h||n,function(y,g){h&&(g=y,y=n[g]),Sn(s,g,Qa(y,r,e,g,n,i))}),s}var Ja=Qa;var b1=1,S1=4;function w1(n){return Ja(n,b1|S1)}var Qr=w1;var _1="__lodash_hash_undefined__";function T1(n){return this.__data__.set(n,_1),this}var qf=T1;function P1(n){return this.__data__.has(n)}var $f=P1;function el(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Go;++r<e;)this.add(n[r])}el.prototype.add=el.prototype.push=qf;el.prototype.has=$f;var Yf=el;function O1(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 Xf=O1;function A1(n,r){return n.has(r)}var Kf=A1;var I1=1,C1=2;function N1(n,r,e,t,o,i){var s=e&I1,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&C1?new Yf: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(!Xf(r,function(g,v){if(!Kf(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 tl=N1;function E1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Zf=E1;function M1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Qf=M1;var L1=1,B1=2,D1="[object Boolean]",G1="[object Date]",R1="[object Error]",V1="[object Map]",j1="[object Number]",F1="[object RegExp]",z1="[object Set]",U1="[object String]",k1="[object Symbol]",H1="[object ArrayBuffer]",W1="[object DataView]",Jf=dt?dt.prototype:void 0,Dc=Jf?Jf.valueOf:void 0;function q1(n,r,e,t,o,i,s){switch(e){case W1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case H1:return!(n.byteLength!=r.byteLength||!i(new Gn(n),new Gn(r)));case D1:case G1:case j1:return bn(+n,+r);case R1:return n.name==r.name&&n.message==r.message;case F1:case U1:return n==r+"";case V1:var l=Zf;case z1:var c=t&L1;if(l||(l=Qf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=B1,s.set(n,r);var a=tl(l(n),l(r),t,o,i,s);return s.delete(n),a;case k1:if(Dc)return Dc.call(n)==Dc.call(r)}return!1}var em=q1;var $1=1,Y1=Object.prototype,X1=Y1.hasOwnProperty;function K1(n,r,e,t,o,i){var s=e&$1,l=Yi(n),c=l.length,u=Yi(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:X1.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 tm=K1;var Z1=1,rm="[object Arguments]",om="[object Array]",rl="[object Object]",Q1=Object.prototype,nm=Q1.hasOwnProperty;function J1(n,r,e,t,o,i){var s=$e(n),l=$e(r),c=s?om:Zr(n),u=l?om:Zr(r);c=c==rm?rl:c,u=u==rm?rl:u;var a=c==rl,d=u==rl,p=c==u;if(p&&Do(n)){if(!Do(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Bn),s||Fa(n)?tl(n,r,e,t,o,i):em(n,r,c,e,t,o,i);if(!(e&Z1)){var f=a&&nm.call(n,"__wrapped__"),m=d&&nm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Bn),o(h,y,e,t,i)}}return p?(i||(i=new Bn),tm(n,r,e,t,o,i)):!1}var im=J1;function sm(n,r,e,t,o){return n===r?!0:n==null||r==null||!yt(n)&&!yt(r)?n!==n&&r!==r:im(n,r,e,t,sm,o)}var am=sm;function ew(n,r){return n!=null&&r in Object(n)}var lm=ew;function tw(n,r,e){r=Qt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=go(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&&wn(o)&&vn(s,o)&&($e(n)||Tn(n)))}var cm=tw;function rw(n,r){return n!=null&&cm(n,r,lm)}var dm=rw;function ow(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var um=ow;function nw(n,r){return r.length<2?n:ka(n,sf(r,0,-1))}var pm=nw;function iw(n,r){return am(n,r)}var Xi=iw;function sw(n,r){return r=Qt(r,n),n=pm(n,r),n==null||delete n[go(um(r))]}var fm=sw;function aw(n){return nf(n)?void 0:n}var mm=aw;var lw=1,cw=2,dw=4,uw=Ha(function(n,r){var e={};if(n==null)return e;var t=!1;r=Ba(r,function(i){return i=Qt(i,n),t||(t=i.length>1),i}),Cr(n,Ya(n),e),t&&(e=Ja(e,lw|cw|dw,mm));for(var o=r.length;o--;)fm(e,r[o]);return e}),Vn=uw;function pw(n,r,e,t){if(!$t(n))return n;r=Qt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=go(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=$t(a)?a:vn(r[o+1])?[]:{})}Sn(l,c,u),l=l[c]}return n}var hm=pw;function fw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=ka(n,s);e(l,s)&&hm(i,Qt(s,n),l)}return i}var ym=fw;function mw(n,r){return ym(n,r,function(e,t){return dm(n,t)})}var gm=mw;var hw=Ha(function(n,r){return n==null?{}:gm(n,r)}),jn=hw;var xm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(xm||(xm={}));var Fn;(o=>{o.identity={...Ta.identity,hiddenMatrix:uo.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 qu({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:uo.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Fn||(Fn={}));var vm;(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]})(vm||(vm={}));var Yt;(r=>r.defaultData={states:new ge,events:new ge,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Fn.identity,cloner:null})(Yt||(Yt={}));var bm;(r=>r.defaultData={type:"Empty",...Yt.defaultData})(bm||(bm={}));var Sm;(r=>r.defaultData={type:"Component",...Yt.defaultData})(Sm||(Sm={}));var Vo;(r=>r.defaultData={type:"Mesh",...Yt.defaultData,...Ia.defaultData})(Vo||(Vo={}));var zn;(r=>r.defaultData={...Yt.defaultData,...Fn.identity,...Bo.defaultData})(zn||(zn={}));var wm;(r=>{function n(e){return{...Yt.defaultData,...Aa.defaultData(e)}}r.defaultData=n})(wm||(wm={}));var Un;(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})(Un||(Un={}));var xo;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Yt.defaultData,...l,component:s,overrides:new Ue,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Fn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(xo||(xo={}));var _m;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:uo.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new ge,events:new ge,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Bo.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",...Yt.defaultData,...Vo.defaultData,geometry:po.defaultData("RectangleGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Yt.defaultData,...Vo.defaultData,geometry:po.defaultData("BooleanGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Yt.defaultData,...Vo.defaultData,geometry:po.defaultData("TextGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")}))(_m||(_m={}));var jo;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Ue}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Ue})))):cr.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=pn(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&Ot.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=pn(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&&Ot.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(...Pa.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,Fn.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})}),cr.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:Ea.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Ir.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Ir.merge(l.cloner,s.cloner)});else if(Oa.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=Lt.clone(c.color))}return l}o.patch=t})(jo||(jo={}));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 ol;(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})(ol||(ol={}));var Hn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Hn||(Hn={}));var nl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},$r(o,Ge.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Hn.emptyImage,name:"AI generated image"}),$r(i,Ge.prototype)}t.defaultImages=r;function e(){return{materials:new Ge,images:new Ge,videos:new Ge,colors:new Ge,audios:new Ge,fonts:new Ge,penumbraSize:[2,2,2]}}t.emptyData=e})(nl||(nl={}));var Zi=require("three");function Tm(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={...jn(lt(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={...lt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function il(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function sl(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 yw(n){Object.assign(n.scene.publish,{orbitControls:{...kn.defaultData,...lt(n.scene.publish.orbitControls)}})}function gw(n){Object.assign(n.scene.publish.settings,{video:{...ol.defaultData.settings.video,...lt(n.scene.publish.settings.video)}})}function xw(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((Hu.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Wu.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 vw(n){n.scene.publish.withBackground=!0}function bw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Sw(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 ww(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=lt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=lt(e).booleanExclude!==!0)}})}function Tw(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 Pw(n){function r(t){Object.setPrototypeOf(t,Ue.prototype),t.texture&&Object.setPrototypeOf(t.texture,Ue.prototype)}function e(t){Object.setPrototypeOf(t,Ue.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=lt(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=lt(c).layers;e(u),c.layers=u}})})}function Pm(n){n.layers===void 0&&Object.assign(n,Bt.defaultTwoLayerData("lambert"))}function Gc(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={...lt(r),colors:e,steps:t};Object.assign(r,o)}})}function Ow(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Om(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Gc(t)}):"material"in e&&typeof e.material!="string"&&Gc(e.material)}),Object.values(n.shared.materials).forEach(r=>Gc(r))}function Aw(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 Iw(n){n.shared.audios=$r({},Ge.prototype)}function Cw(n){n.shared.videos=$r({},Ge.prototype)}function Nw(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 Ew(n){Object.entries(lt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(lt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Mw(n){n.scene.publish.settings.web.preload=!1}function Am(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 Lw(n){n.shared.fonts=$r({},Ge.prototype)}function Bw(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 Dw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Bt.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=Bw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Yt.defaultData,...Vo.defaultData,flatShading:!1,wireframe:!1,geometry:{...po.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:lt(o.states),events:lt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=lt(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 Gw(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 ge,move:new ge,jump:new ge}});else{let i=new ge;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:Zi.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,jn(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 ge({fi:0,id:Zi.MathUtils.generateUUID(),data:u},{fi:1,id:Zi.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Rw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ge,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...jn(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={...jn(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:Zi.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Im(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Ot.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Cm(n){il(n,Im),sl(n,Im)}function Vw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function jw(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 Fw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Bt.defaultTwoLayerData("phong"))})}function zw(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 Uw(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 kw(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 Hw(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function Ww(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function qw(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Nm=37;function Em(n){let r=n.schema??0;r!==Nm&&(console.warn("updating from ",r,"to ",Nm),r<1&&(sl(n,Tm),il(n,Tm),n.schema=1),r<2&&(yw(n),n.schema=2),r<3&&(xw(n),n.schema=3),r<4&&(vw(n),n.schema=4),r<5&&(bw(n),n.schema=5),r<6&&(Sw(n),n.schema=6),r<7&&(ww(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Om(n),n.schema=9),r<10&&(Ow(n),n.schema=10),r<11&&(Aw(n),n.schema=11),r<12&&(Om(n),n.schema=12),r<13&&(Iw(n),n.schema=13),r<14&&(Nw(n),n.schema=14),r<15&&(Ew(n),n.schema=15),r<16&&(Mw(n),n.schema=16),r<17&&(sl(n,Am),il(n,Am),n.schema=17),r<18&&(sl(n,Pm),il(n,Pm),n.schema=18),r<19&&(gw(n),n.schema=19),r<20&&(Lw(n),Dw(n),n.schema=20),r<21&&(Gw(n),Rw(n),n.schema=21),r<22&&(Cm(n),n.schema=22),r<23&&(Vw(n),n.schema=23),r<24&&(jw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Cw(n),r<25&&(n.schema=25)),r<26&&(_w(n),n.schema=26),r<27&&(Tw(n),n.schema=27),r<28&&(Cm(n),n.schema=28),r<29&&(Pw(n),n.schema=29),r<30&&(Fw(n),n.schema=30),r<31&&(zw(n),n.schema=31),r<33&&(Uw(n),n.schema=33),r<34&&(kw(n),n.schema=34),r<35&&(Hw(n),n.schema=35),r<36&&(Ww(n),n.schema=36),r<37&&(qw(n),n.schema=37))}var Ee=require("three"),Ai=nn(Lm());var $w=.5*(Math.sqrt(3)-1),Ji=(3-Math.sqrt(3))/6,Yw=1/3,Nr=1/6,vB=(Math.sqrt(5)-1)/4,bB=(5-Math.sqrt(5))/20,es=n=>Math.floor(n)|0,Bm=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]),Vc=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 al(n=Math.random){let r=Gm(n),e=new Float64Array(r).map(o=>Bm[o%12*2]),t=new Float64Array(r).map(o=>Bm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*$w,d=es(i+a),p=es(s+a),f=(d+p)*Ji,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+Ji,S=g-b+Ji,T=y-1+2*Ji,_=g-1+2*Ji,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[C],R=e[A],U=t[A];P*=P,l=P*P*(R*y+U*g)}let I=.5-w*w-S*S;if(I>=0){let A=x+v+r[C+b],R=e[A],U=t[A];I*=I,c=I*I*(R*w+U*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[C+1],R=e[A],U=t[A];O*=O,u=O*O*(R*T+U*_)}return 70*(l+c+u)}}function Dm(n=Math.random){let r=Gm(n),e=new Float64Array(r).map(i=>Vc[i%12*3]),t=new Float64Array(r).map(i=>Vc[i%12*3+1]),o=new Float64Array(r).map(i=>Vc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*Yw,m=es(s+f),h=es(l+f),y=es(c+f),g=(m+h+y)*Nr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,C,P,I,O,A;S>=T?T>=_?(x=1,C=0,P=0,I=1,O=1,A=0):S>=_?(x=1,C=0,P=0,I=1,O=0,A=1):(x=0,C=0,P=1,I=1,O=0,A=1):T<_?(x=0,C=0,P=1,I=0,O=1,A=1):S<_?(x=0,C=1,P=0,I=0,O=1,A=1):(x=0,C=1,P=0,I=1,O=1,A=0);let R=S-x+Nr,U=T-C+Nr,q=_-P+Nr,te=S-I+2*Nr,$=T-O+2*Nr,W=_-A+2*Nr,k=S-1+3*Nr,V=T-1+3*Nr,G=_-1+3*Nr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)u=0;else{let E=B+r[L+r[D]];Y*=Y,u=Y*Y*(e[E]*S+t[E]*T+o[E]*_)}let H=.6-R*R-U*U-q*q;if(H<0)a=0;else{let E=B+x+r[L+C+r[D+P]];H*=H,a=H*H*(e[E]*R+t[E]*U+o[E]*q)}let F=.6-te*te-$*$-W*W;if(F<0)d=0;else{let E=B+I+r[L+O+r[D+A]];F*=F,d=F*F*(e[E]*te+t[E]*$+o[E]*W)}let z=.6-k*k-V*V-G*G;if(z<0)p=0;else{let E=B+1+r[L+1+r[D+1]];z*=z,p=z*z*(e[E]*k+t[E]*V+o[E]*G)}return 32*(u+a+d+p)}}function Gm(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 Rm=require("three"),ur=new Rm.Triangle,ll=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;ur.a.fromBufferAttribute(r,o),ur.b.fromBufferAttribute(r,o+1),ur.c.fromBufferAttribute(r,o+2),i*=ur.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),ur.a.fromBufferAttribute(this.positionAttribute,r*3),ur.b.fromBufferAttribute(this.positionAttribute,r*3+1),ur.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(ur.a,o).addScaledVector(ur.b,i).addScaledVector(ur.c,1-(o+i)),ur.getNormal(t),this}};var zm=require("three");var Jt=require("three"),Fm=nn(jm()),Xw=new Jt.Matrix4,Kw=new Jt.Matrix4,Zw=new Jt.Matrix4,ts;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(ts||(ts={}));var Wn=n=>class extends n{constructor(){super(...arguments);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)ts.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,Fm.SVD)(o),c=Xw.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=Kw.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=Zw.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}};var jc=class extends Wn(zm.Object3D){},Qw=n=>n.type==="Mesh",Jr=class extends jc{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 Jr(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 Qw(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 ui=require("three");var Al=require("three");var eo=require("three");var Ye=require("three"),Fo=new Ye.Vector3,zo=new Ye.Vector3,qn=new Ye.Matrix4,km=[new Ye.Vector3(-1,1,1),new Ye.Vector3(-1,-1,1),new Ye.Vector3(1,-1,1),new Ye.Vector3(1,1,1),new Ye.Vector3(-1,1,-1),new Ye.Vector3(-1,-1,-1),new Ye.Vector3(1,-1,-1),new Ye.Vector3(1,1,-1)],Jw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],e_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Um=(n,r,e)=>{n.updateEntityBoxSize(Fo,zo),qn.copy(r).multiply(n.matrixWorld),zo.x===0&&zo.y===0&&zo.z===0?e.push(new Ye.Vector3(Fo.x,Fo.y,Fo.z).applyMatrix4(qn)):km.forEach(t=>{e.push(t.clone().multiply(zo).add(Fo).applyMatrix4(qn))})},rs=class extends Ye.Box3{constructor(){super(...arguments);this.matrix=new Ye.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 Ye.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 Ye.Vector3);return}Um(s,t,i)}}):Um(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(qn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(zo).multiplyScalar(.5),this.getCenter(Fo),qn.copy(this.matrix).setPosition(Fo),this.vertices=km.map(e=>e.clone().multiply(zo).applyMatrix4(qn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Jw.map(([e,t])=>new Ye.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ye.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=e_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var pr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var ut=require("three"),zc=class extends ut.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 Uc=.001;function kc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Uc}function Fc(n,r){let e=new ut.Vector3(...n.position),t=new ut.Vector3(...n.controlNext.position),o=new ut.Vector3(...r.controlPrevious.position),i=new ut.Vector3(...r.position);return kc(e,t,i)&&kc(e,o,i)}function dl(n){let r=n.points.map(a=>new ut.Vector3(...a.data.position)),e=[n.points[0]],t=new ut.Vector3(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)kc(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 ut.Vector3(...d.position),f=new ut.Vector3(...d.controlPrevious.position),m=new ut.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 ut.Vector3(...v.position),S=new ut.Vector3(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Fc(v,d),C=Fc(d,b);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}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(!Fc(e[d].data,e[p].data))f.position.distanceTo(m.position)>Uc&&(h=new ut.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)>Uc&&(h=new ut.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),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new ut.CubicBezierCurve3(f,x,C,m)}let u=new zc;return c.forEach(a=>{a&&u.add(a)}),u}var Be;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Be||(Be={}));var os=n=>Be.is(n),t_={type:"completeState",isfromEntity:!0},ul=n=>class extends Wn(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 rs;this._recursiveBBox=new rs;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(Be.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(Be.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)jo.toOps(this.data,s.data).forEach(c=>{let u=ca.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=jo.patch(this.data,s),jo.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=>{os(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(Be.is(o[i]))return o[i];if(Be.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Be.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)os(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Be.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)os(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)os(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=>os(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 Vn(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??uo.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)Be.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Be.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Vn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=ar(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=Tt.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=Tt.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,jo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),ar(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(Wr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=Tt.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=Un.resolve(o.overrides,a),p.updateByOp(t,ht.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 xo.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of xo.rootOverrideProps)if(ar(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Wr.filterOp(d.overrideData,a);p&&d.updateByOp(p,ht.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Wr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=ht.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&&!cr.is(t.props.type)&&pr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){pr.changeEntityProptotype(this,o,i);for(let s of this.children)Be.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),ar(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),ar(t.path,["cloner"])!==null){let s=ht.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=dl(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 eo.Matrix4;c.updateMatrixWorld();let m=new eo.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new eo.Matrix4().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new eo.Matrix4().lookAt(p,g,new eo.Vector3(0,1,0)),b=new eo.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 pr.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 pr.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 qm=require("three");var ze=require("three"),Wm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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 ns(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new ze.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 vo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Hm(n){return new ze.Vector2(n.y,-n.x)}var ns=class extends ze.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 ze.Vector3,S=new ze.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new ze.Vector2(r,b),_=new ze.Vector2(e,-b),x=null,C=null,P=null,I=null,O=T.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let q=T.clone();q.x-=A;let te=Math.PI-O.angle(),$=O.angle(),W=Math.tan($/2),k=Math.tan(te/2),V=W+k,G=p?V:k,B=p?V:W;if(u=Math.min(u,(r-R)/G,O.length()/V),a=Math.min(a,(e-U)/B,O.length()/V),u>0){let z=u/W;x=T.clone().sub(new ze.Vector2(z,u)),p&&(P=x.clone(),P.x-=A-V*u),T.sub(O.clone().setLength(z))}if(a>0){let z=a/k;C=_.clone().sub(new ze.Vector2(z,-a)),_.add(O.clone().setLength(z)),p&&(I=C.clone(),I.x-=A-V*a,q.sub(O.clone().setLength(z)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let z=0;z<=o;z++){let E=[],K=z/o,re=K*c+l,oe=new ze.Vector2(Math.sin(re),Math.cos(re));I&&C?(Y(E,K,oe,te,a,I,-1,!0),Y(E,K,oe,$,a,C,-1,!1)):C?(H(E,oe,C.x,0,-1),Y(E,K,oe,$,a,C,-1,!1)):s||H(E,oe,e,U,-1);let X=Hm(O).normalize();if(vo(X,oe,w),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,se=O.clone().multiplyScalar(Z).add(_);vo(se,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}if(P&&x?(Y(E,K,oe,te,u,x,1,!1),Y(E,K,oe,$,u,P,1,!0)):x?(Y(E,K,oe,te,u,x,1,!1),H(E,oe,x.x,0,1)):s||H(E,oe,r,R,1),p&&!L){let ee=Hm(O).multiplyScalar(-1).normalize();vo(ee,oe,w);for(let Z=0;Z<=i;Z++){let se=Z/i,de=O.clone().multiplyScalar(-se).add(q);vo(de,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),D.push(E)}for(let z=0;z<D.length-1;z++)for(let E=0;E<D[0].length-1;E++){if(s&&p&&E==i)continue;let K=D[z][E],re=D[z+1][E],oe=D[z+1][E+1],X=D[z][E+1],ee=h[oe*3+0],Z=h[oe*3+2];m.push(K,re,X),(ee!=0||Z!=0)&&m.push(re,oe,X)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new ze.Float32BufferAttribute(h,3)),this.setAttribute("normal",new ze.Float32BufferAttribute(y,3)),this.setAttribute("uv",new ze.Float32BufferAttribute(g,2));function Y(z,E,K,re,oe,X,ee,Z){for(let se=0;se<d+1;se++){let de=se/d,ae=ee<0?de:1-de;Z&&(ae-=1),ae*=re;let me=new ze.Vector2(Math.sin(ae),Math.cos(ae)*ee),We=me.clone().multiplyScalar(oe).add(X);vo(We,K,S),h.push(S.x,S.y,S.z),vo(me,K,w),y.push(w.x,w.y,w.z),g.push(E,.5+S.y/t),z.push(v++)}}function H(z,E,K,re,oe){let X=new ze.Vector3,ee=new ze.Vector2,Z=[K,re];oe<0&&Z.reverse();for(let se of Z)ee.set(se,b*oe),vo(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,oe,0),g.push(.5,.5),z.push(v++)}function F(z,E,K){let re=new ze.Vector2(Math.sin(K),Math.cos(K)),oe=new ze.Vector2(-Math.cos(K),Math.sin(K)),X=new ze.Vector3,ee=z<0?(de,ae,me)=>m.push(de,ae,me):(de,ae,me)=>m.push(de,me,ae),Z=new ze.Vector2((r+e+R+U)/4,0);vo(Z,re,X),h.push(X.x,X.y,X.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let se=v++;for(let de of E){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++)ee(se,de,de+1);ee(se,v-1,se+1)}}};var $m=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 ns(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new qm.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Gt=require("three"),Ym=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 Gt.BoxGeometry(r,e,t,o,i,s):u=new Wc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Hc=Math.PI/2,Wc=class extends Gt.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 Gt.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Gt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Gt.Float32BufferAttribute(f,2));function y(b,w,S,T,_,x,C,P,I,O,A){let R=(x-2*l)/I,U=(C-2*l)/O,q=x/2-l,te=C/2-l,$=P/2,W=I+1,k=O+1,V=0,G=0,B=new Gt.Vector3;for(let L=0;L<k;L++){let D=L*U-te;for(let Y=0;Y<W;Y++){let H=Y*R-q;B[b]=H*T,B[w]=D*_,B[S]=$,d.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(Y/I),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<I;D++){let Y=m+D+W*L,H=m+D+W*(L+1),F=m+(D+1)+W*(L+1),z=m+(D+1)+W*L;a.push(Y,H,z),a.push(H,F,z),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,C,P,I,O,A){let R=(C-2*l)/O,U=C/2-l,q=P/2-l,te=I/2,$=O+1,W=0,k=0,V=new Gt.Vector3,G=new Gt.Vector3;for(let B=0;B<c+1;B++){let L=B/c*Hc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,H=Math.sin(L),F=Math.cos(L);V[w]=(q+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=H*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let z=0;z<$;z++){let E=z*R-U;V[b]=E*T,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(z/O),f.push(0),W+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+$*B,Y=m+L+$*(B+1),H=m+(L+1)+$*(B+1),F=m+(L+1)+$*B;a.push(D,Y,F),a.push(Y,H,F),k+=6}u.addGroup(h,k,A),h+=k,m+=W}function v(b,w,S){let T=new Gt.Vector3,_=new Gt.Vector3(r/2,e/2,t/2);_.subScalar(l);let x=[],C=b*w*S>0?(I,O,A)=>a.push(I,O,A):(I,O,A)=>a.push(I,A,O);for(let I=0;I<=c;I++){let O=[],A=Hc*(1-I/c),R=Math.cos(A),U=Math.sin(A),q=0;for(let te=0;te<=I;te++){let $=Math.cos(q),W=Math.sin(q);T.x=R*$,T.y=U,T.z=R*W;let k=_.clone().addScaledVector(T,l);d.push(b*k.x,w*k.y,S*k.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),q+=Hc/I}x.push(O)}let P=x.length-1;for(let I=0;I<P;I++){let O=x[I],A=x[I+1],R=O.length-1;C(O[0],A[1],A[0]);for(let U=1;U<=R;U++)C(O[U-1],O[U],A[U]),C(O[U],A[U+1],A[U])}}}};var Xe=require("three"),bo=class extends Xe.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 Xe.Float32BufferAttribute(l,3)),this.setAttribute("normal",new Xe.Float32BufferAttribute(u,3)),this.setAttribute("uv",new Xe.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 Xe.Vector3,h=m.clone(),y=new Xe.Triangle,g=i*o,v=o-g,b=s+1,w=new Xe.Vector3,S=(W,k)=>w.subVectors(W,k).normalize(),T=(W,k)=>Array(W).fill(void 0).map(k),_=T(r.length/3,(W,k)=>new Xe.Vector3().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let W=0;W<_.length;W++){let k=_[W],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(W,Y+1))!=-1;){let E=Y-Y%3;G=e[E+(Y+1)%3],B=e[E+(Y+2)%3],L=k.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let H=[],F=0,z=V.length;for(let E=0;E<z;E++){[G,B,L]=V[F];let K=x[G]?.includes(W)==!0;L<=D&&H.push(G+ +K*C),F=V.findIndex(re=>re[0]==B)}x.push(H)}let P=[];{let W=0,k=0,V,G,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[W,k]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[k,V]:[W,G],k,W),[V,G]=[W,k];P.push(V,G,V+s+2)}}let I=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),q=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let W=0;W<_.length;W++){m.copy(_[W]).normalize(),I.copy(m).multiplyScalar(v);let k=x[W];for(let H=0;H<k.length;H++){let F=k[H],z=k[(H+1)%f];y.setFromPointsAndIndices(_,W,F%C,z%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[W][H])}let V=[],G=[],B=[],L=new Xe.Vector3;s==0&&[...te[W]].reduce((H,F)=>H.add(F),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let F=[],z=(H-1+f)%f,E=te[W][z],K=te[W][H];m.copy(E).sub(I),h.copy(K).sub(I);let re=I.angleTo(m),oe=m.angleTo(h),X=Math.cos(re)*g;s==0?O.copy(L):O.copy(I).setLength(v+X),G.push(X);let ee=[O,E,K];for(let Z=0;Z<2;Z++){let se=ee[Z],de=ee[Z+1];R.subVectors(se,I),U.subVectors(de,I),A.crossVectors(R,U).normalize();for(let ae=0;ae<b;ae++){let me=[re,oe][Z]*ae/b;m.copy(R).applyAxisAngle(A,me).add(I),V.push(m.clone()),Z&&(S(m,I),F.push([ae==0?se:m.clone(),w.clone()]))}Z&&(S(de,I),F.push([de,w.clone()]))}B.push(F)}q.push(B);let D=2*b,Y=2;for(let H=0;H<f;H++){let F=D*H,z=D*((H+1)%f),E=[V[F]];for(let re=1;re<b;re++){R=V[F+re],U=V[z+re],E.push(R);for(let oe=1,X=re-Y+1;oe<=X;oe++)m.lerpVectors(R,U,oe/(X+1)),m.sub(I).setLength(G[H]).add(I),E.push(m.clone());E.push(U)}for(let re=0;re<b;re++)E.push(V[re+b+F]);E.push(V[z+b]);let K=P.map(re=>E[re]);l.push(...K.map(re=>[re.x,re.y,re.z]).flat()),u.push(...K.map(re=>(S(re,I),[w.x,w.y,w.z])).flat())}}let $=[];for(let W=0;W<x.length;W++)for(let k=0;k<f;k++){let V=x[W][k];if(V<C){let G=x[V].findIndex(D=>D%C==W),B=q[W][k],L=q[V][G];for(let D=0;D<b;D++){let Y=B[D],H=L[b-D],F=B[D+1],z=L[b-(D+1)];[Y,H,F,F,H,z].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}$.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;$.length;){let W,k,V,G;[W,k]=$.splice(0,2);let B=[W];for(;W!=k;)B.push(k),V=$.indexOf(k),G=V%2,k=$.splice(V-G,2)[1-G];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(Y=>{l.push(Y.x,Y.y,Y.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Xe.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=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new Xe.Vector3,m=new Xe.Vector3,h=new Xe.Vector3,y=new Xe.Vector3,g=new Xe.Vector2,v=new Xe.Vector2,b=new Xe.Vector2,w=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/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],P=c[_+4],I=Math.max(x,C,P),O=Math.min(x,C,P);I>.9&&O<.1&&(x<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new bo(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var Xm=require("three"),Km=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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 is(r*.5,i,s):new Xm.DodecahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},is=class extends bo{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 is(r.radius,r.corner,r.cornerSides)}};var Oe=require("three");var ye=require("three"),ss=1e-12,$n=class{constructor(r){this.position=new ye.Vector2;this.startPosition=new ye.Vector2;this.uuid=ye.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 $n(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Yn=class extends $n{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Yn(this.parent).copy(this)}},fr=class extends $n{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Yn(this),new Yn(this))}static create(e,t){let o=new fr(e,new ye.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 fr(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 ye.Vector2,t=new ye.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Zm(o,e),Zm(i,t)),[e,t]}computeTangent(e=new ye.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ye.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Zm(n,r=new ye.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var $c=n=>n,Xn=new ye.Vector2,pl=new ye.Vector2,r_=new ye.Vector2,o_=new ye.Vector2,n_=new ye.Vector2,i_=new ye.Vector2,Jm=new ye.Vector3,eh=new ye.Vector3;function th(n){let r=new ye.Vector2;r.addVectors(n.v0,Xn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ye.Vector2;return e.addVectors(n.v2,pl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ye.CubicBezierCurve(n.v0,r,e,n.v2)}function as(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function s_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function a_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Yc(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 rh(n,r,e){return Qm(n,r)&&Qm(r,e)&&qc(n.position,r.position,e.position)}function qc(n,r,e){return Xn.copy(r).sub(n).cross(pl.copy(e).sub(n))===0}function oh(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 nh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function ih(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 Yc(r,n,e)>Math.PI&&(a*=-1),as(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 Xc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Qm(n,r){return qc(n.position,n.controls[1].position,r.position)&&qc(n.position,r.controls[0].position,r.position)}function sh(n,r,e,t,o=.5){let i=Xn.subVectors(r,n).multiplyScalar(o).add(n),s=pl.subVectors(e,r).multiplyScalar(o).add(r),l=r_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=o_.subVectors(s,i).multiplyScalar(o).add(i),a=n_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=i_.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 ah(n,r,e=12,t=!0){let o=eh.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=$c(r[c]),a=Xn,d=So(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof ye.CubicBezierCurve||u instanceof ye.QuadraticBezierCurve||u instanceof ye.LineCurve){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&a_(i,o))continue;i===void 0&&(i=Jm),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 lh(n,r,e,t=12,o=!0){let i=eh.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=$c(r[c]),d=Xn,p=So(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof ye.CubicBezierCurve||a instanceof ye.QuadraticBezierCurve||a instanceof ye.LineCurve){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Jm:(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 Kc(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=So(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=So(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=So(n[0].roundedCurveCorner,r)*.5),t}function So(n,r=12){return n&&n instanceof ye.EllipseCurve?r*2:n&&(n instanceof ye.LineCurve||n instanceof ye.LineCurve3)?1:n&&n instanceof ye.SplineCurve?r*n.points.length:r}function ch(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=$c(r[s]),c=So(l,e),u=Xn;for(let a=0;a<=c;a++)if(l instanceof ye.CubicBezierCurve||l instanceof ye.QuadraticBezierCurve||l instanceof ye.LineCurve){if(l.getPoint(a/c,u),o!==void 0&&s_(o,u,ss))continue;o===void 0&&(o=pl),o.copy(u),n.push(u.x,u.y),i++}}return as(n[0],n[n.length-2],ss)&&as(n[1],n[n.length-1],ss)&&(n.pop(),n.pop()),t&&i>1&&!(as(n[i-1],n[1],ss)&&as(n[i-2],n[0],ss))&&(n.push(n[0],n[1]),i++),n}var Zc=new Oe.Vector2,l_=new Oe.Vector2,c_=new Oe.Vector2,d_=new Oe.Vector2,u_=new Oe.Vector2,p_=new Oe.Vector2,Pe=class extends Oe.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Oe.Plane(new Oe.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=Oe.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Pe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>fr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Pe.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=Zc.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=Oe.MathUtils.generateUUID()){let i;e instanceof Oe.Vector2?i=e:i=new Oe.Vector2(e,t);let s=new fr(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 ah(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Kc(this.points,e,!1),this.roundedCurveDivisions=Kc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return lh(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),ch(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=So(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(Xc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Zc.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){Xc(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&&rh(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,T=d.getPointAt(w,Zc),_=p.getPointAt(S,l_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Yc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,O]=oh(T,_,P,c_,d_),A=nh(I,O,s.position),[R,U]=ih(A,T,_,P,u_,p_);x=new Oe.CubicBezierCurve(T.clone(),R.clone(),U.clone(),_.clone())}else x=new Oe.QuadraticBezierCurve(T.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 Oe.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=sh(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 Pe(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 fr(Oe.MathUtils.generateUUID(),new Oe.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 Pe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Oe.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 Oe.QuadraticBezierCurve&&(i[l]=th(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 Oe.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Oe.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 Oe.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof Oe.LineCurve&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Oe.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Pe;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 Jc=Math.PI*2;function Qc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function f_(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 dh(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 m_(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,T=(-l-y)/i,_=dh(1,0,b,w),x=dh(b,w,S,T);return!u&&x>0&&(x-=Jc),u&&x<0&&(x+=Jc),{centerx:g,centery:v,ang1:_,ang2:x}}function uh({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=m_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Jc/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(f_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Qc(b[0],o,i,h,y),{x:T,y:_}=Qc(b[1],o,i,h,y),{x,y:C}=Qc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:C}})}var ko=require("three");var _e;(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"})(_e||(_e={}));var He;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(He||(He={}));function pe(n,r){if(!n)throw r||"Assertion Failed!"}var le=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}(),ls=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}(),fl=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}(),Kn=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}(),ph=function(){function n(){var r=new Kn,e=new ls,t=new fl(0),o=new fl(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 fl(0),t=new fl(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 Kn,e=new Kn,t=new ls,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 Kn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ls;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 ls;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 Kn;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 ls;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&&le.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&le.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}(),fh=function(){function n(){this.handle=null}return n}(),mh=function(){function n(){this.key=null,this.node=0}return n}(),h_=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 fh,this.handles[t]=new mh;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 fh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new mh}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}(),ed=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}(),hh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),y_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new hh,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 hh;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}(),g_=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?le.vertLeq(i.Org,s.Org)?le.edgeSign(s.Dst,i.Org,s.Org)<=0:le.edgeSign(i.Dst,s.Org,i.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(i.Dst,o,i.Org)>=0;var l=le.edgeEval(i.Dst,o,i.Org),c=le.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 ed;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 _e.ODD:return(e&1)!==0;case _e.NONZERO:return e!==0;case _e.POSITIVE:return e>0;case _e.NEGATIVE:return e<0;case _e.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(le.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=le.vertL1dist(e,r),i=le.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(le.vertLeq(o.Org,i.Org)){if(le.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;le.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(le.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(!le.vertEq(o.Dst,i.Dst)),le.vertLeq(o.Dst,i.Dst)){if(le.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(le.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 Kn,f,m;if(pe(!le.vertEq(u,c)),pe(le.edgeSign(c,r.event,s)<=0),pe(le.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(le.vertLeq(s,l)){if(le.edgeSign(u,s,l)>0)return!1}else if(le.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),le.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)),le.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=le.vertLeq(s,l)?s:l,le.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),le.vertEq(p,s)||le.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!le.vertEq(c,r.event)&&le.edgeSign(c,r.event,p)>=0||!le.vertEq(u,r.event)&&le.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):(le.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),le.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),le.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),le.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}le.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,le.vertEq(o.Org,t)){pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!le.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),le.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 ed;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=le.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 ed,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 y_(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,le.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 h_(i,le.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||!le.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}(),x_=function(){function n(){this.mesh=new ph,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=_e.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(;le.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;le.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(le.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(le.edgeGoesLeft(o.Lnext)||le.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&&(le.edgeGoesRight(t.Lprev)||le.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===He.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===He.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 ph),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=_e.ODD),e===void 0&&(e=He.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_(),g_.computeInterior(this,s);var l=this.mesh;return e===He.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===He.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function mr(n){var r=n.windingRule,e=r===void 0?_e.ODD:r,t=n.elementType,o=t===void 0?He.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 x_;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 ID=_e.ODD,CD=_e.NONZERO,ND=_e.POSITIVE,ED=_e.NEGATIVE,MD=_e.ABS_GEQ_TWO,LD=He.POLYGONS,BD=He.CONNECTED_POLYGONS,DD=He.BOUNDARY_CONTOURS;var Uo=require("three");var ml=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*ml.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*ml.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)}},cs=ml;cs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ds={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},rd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},od={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},td=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Zn=class extends Uo.BufferGeometry{constructor(e,t,o=0,i=12,s=3,l=_e.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 P=x.length-1;P>=1;P-=2){let I=x[P-1],O=x[P-0];C.push(I,O)}return C}),a;try{a=mr({windingRule:l,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=ds}let d;try{d=mr({windingRule:_e.ODD,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=rd}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,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new cs(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],O=P+I,A={start:P,count:I,normals:[],continuous:[],concave:[]},R=P,U=O-1,q=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[U*2+0],B=a.vertices[U*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[q*2+0],H=a.vertices[q*2+1],F=L-G,z=D-B,E=Math.sqrt(F*F+z*z);F/=E,z/=E;let K=L-Y,re=D-H,oe=Math.sqrt(K*K+re*re);K/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=K,A.concave[V]=F*re-z*K>0;let X=a.vertexIndices[R];if(Array.isArray(X))A.continuous[V]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)A.continuous[V]=!0;else{let se=Z===1?ee+1:ee-1;se=(se+te)%te;let de=Z===1?0:1,ae=this._shape.roundedCurves[ee].getTangent(Z),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),[U,R,q]=[R,q,q+1],q>=O&&(q-=I)}while(q!==P+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((V,G)=>[G,G]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(G))*this._bevelSize,L=[],D=[],Y=[],H=[],F=0;for(let E=0;E<I;E++){let K=E*2,re=(E-1+I)%I*2,oe=a.vertices[A.start*2+K+0],X=a.vertices[A.start*2+K+1],ee=-A.normals[re+0]*B,Z=-A.normals[re+1]*B,se=-A.normals[K+0]*B,de=-A.normals[K+1]*B;if(A.concave[E]||!A.concave[E]&&x){let ae=Math.atan2(Z,ee),me=Math.atan2(de,se);me>ae&&(me-=Math.PI*2);let We=me-ae;if(A.continuous[E]||x){let xe=ae+We/2,et=Math.cos(xe)*B,Ce=Math.sin(xe)*B;L[2*F+0]=oe+et*(x?-1:1),L[2*F+1]=X+Ce*(x?-1:1),H[F]=E,F++}else{let xe=Math.max(1,Math.floor(i/4*Math.abs(We)/Math.PI));for(let et=0;et<=xe;et++){let Ce=ae+We*(et/xe),Nt=Math.cos(Ce)*B,Kt=Math.sin(Ce)*B;L[2*F+0]=oe+Nt,L[2*F+1]=X+Kt,H[F]=E,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=X+Z,H[F]=E,D[E]=F,F++,L[2*F+0]=oe,L[2*F+1]=X,H[F]=E,F++,L[2*F+0]=oe+se,L[2*F+1]=X+de,H[F]=E,Y[E]=F,F++}let z=mr({windingRule:_e.POSITIVE,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let re=E.Org.idx,oe=H[re],X=H[(re+1)%H.length];E.idx=[oe,X],E.Sym.idx=[X,oe]},vertexIdCallback:E=>{let K=E.Lprev.idx;return[K?K[1]:0,E.idx?E.idx[0]:0]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let E=0;E<z.vertexIndices.length;E++){let[K,re]=z.vertexIndices[E];if(K===re)continue;let oe=re;re<K&&(oe+=I);for(let X=K;X<oe;X++){let ee=X%I,Z=(X+1)%I;if(!A.continuous[ee]||!A.continuous[Z]){z.vertexIndices[E]=[K,ee],z.vertexIndices.splice(E+1,0,[Z,re]),z.vertices.splice((E+1)*2,0,z.vertices[E*2],z.vertices[E*2+1]);break}}}$.push({bevelI:V,angle:G,size:B,boundary:z,reverseMap:H,insetPoints:L})}let W=(V,G,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[G]);)G=(G+1)%D,L++;return L},k=g.length;for(let V=1;V<$.length;V++){let G=$[V-1],B=$[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,H=0,F=td(H,I);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)H++,F=td(H,I);let z=G.boundary.vertexIndices.findIndex(F),E=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%L;while(F(G.boundary.vertexIndices[z]));do E=(E+1)%D;while(F(B.boundary.vertexIndices[E]));H=(H+1)%I;let K=H,re=this._buildBevelVert(A,G,(z-1+L)%L),oe=this._buildBevelVert(A,B,(E-1+D)%D),X=re,ee=oe,Z,se,de=!1;do{F=td(H,I);let ae=W(G,z,F),me=W(B,E,F),We=de;if(de=!1,ae&&!me){for(let xe=0;xe<ae;xe++)Z=this._buildBevelVert(A,G,(z+xe)%L,xe/(ae-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;de=!0}else if(!ae&&me)for(let xe=0;xe<me;xe++)se=this._buildBevelVert(A,B,(E+xe)%D,xe/(me-1)),g.push(ee.topN,X.topP,se.topP),g.push(X.bottomP,ee.bottomN,se.bottomP),ee=se;else if(ae&&me)if(Z=this._buildBevelVert(A,G,z,0),se=this._buildBevelVert(A,B,E,0),We?(g.push(X.topN,se.topP,ee.topN),g.push(X.topN,Z.topP,se.topP),g.push(se.bottomP,X.bottomN,ee.bottomN),g.push(se.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,se.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,se.bottomP)),X=Z,ee=se,ae===me)for(let xe=1;xe<ae;xe++)Z=this._buildBevelVert(A,G,(z+xe)%L,xe/(ae-1)),se=this._buildBevelVert(A,B,(E+xe)%D,xe/(me-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,se.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,se.bottomP),X=Z,ee=se;else if(ae>me){let xe=ae/me,et=0;for(let Ce=1;Ce<ae;Ce++)Z=this._buildBevelVert(A,G,(z+Ce)%L,Ce/(ae-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Ce>(et+1)*xe&&(et++,se=this._buildBevelVert(A,B,(E+et)%D,et/(me-1)),g.push(ee.topN,Z.topP,se.topP),g.push(Z.bottomP,ee.bottomN,se.bottomP),ee=se)}else{let xe=me/ae,et=0;for(let Ce=1;Ce<me;Ce++)se=this._buildBevelVert(A,B,(E+Ce)%D,Ce/(me-1)),g.push(ee.topN,Z.topP,se.topP),g.push(Z.bottomP,ee.bottomN,se.bottomP),ee=se,Ce>(et+1)*xe&&(et++,Z=this._buildBevelVert(A,G,(z+et)%L,et/(ae-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}z=(z+ae)%L,E=(E+me)%D,H=(H+1)%Y}while(H!==K)}if(this._buildWall($,A,g),x){let V=[];for(let G=g.length-1;G>=k+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(k,g.length-k,...V)}if(x){let V=[];for(let G=$[$.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=$[$.length-1].boundary.vertices[G-1],L=$[$.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=$[$.length-1],G;try{G=mr({windingRule:$.length>1?_e.POSITIVE:_e.ODD,elementType:He.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=od}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<G.elementCount*3;B+=3){let L=this._buildSurfaceVert(G,G.elements[B+0]),D=this._buildSurfaceVert(G,G.elements[B+1]),Y=this._buildSurfaceVert(G,G.elements[B+2]);g.push(L.top,D.top,Y.top),g.push(Y.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Uo.BufferAttribute(Uint32Array.from(g),1),w=new Uo.BufferAttribute(this._buffer.positions,3),S=new Uo.BufferAttribute(this._buffer.normals,3),T=new Uo.BufferAttribute(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),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,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let U=C-_,q=P-x;_=_+U*(1-i),x=x+q*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),O=I*3,A=I*2,R={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+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]=T,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]=T,this._buffer.uvs[A+3]=S,d||(I+=2,O+=6,A+=4,R.topP=I+0,R.bottomP=I+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]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,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]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new Zn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Qr(this.userData),e}};var Qn=class extends ko.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=_e.ODD;this.elementType=He.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:_e.ODD,elementType:He.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=mr({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=ds}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new ko.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new ko.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new ko.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new ko.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 T=w*2,_=l.vertices[T+0],x=l.vertices[T+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 T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+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 Qn(this._shape,this._curveSegments);return e.userData=Qr(this.userData),e}};var Jn=class extends Zn{constructor(e,t,o=0,i=12,s=3,l=_e.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 Jn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Qr(this.userData),e}};var Rt=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:_e.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 Pe?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Pe(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Pe(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 Qn(n.shape,o,{windingRule:s}):l=new Jn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};var ti=require("three"),gh=Math.PI*2,ri=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 Pe?n.shape:new Pe,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=v_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Rt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function v_(n,r,e,t,o,i){if(t>=gh)return o>30||o%4===0?(S_(n,r,e,i),Math.round(o/4)):yh(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=uh({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?b_(n,s.x,s.y,u,o,r,e,i):yh(n,t,o,r,e,i)}function b_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(ei(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=ei(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?xh(n,i,s,l):n.addPoint(ei(0,0)),c}function yh(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(ei(u,a))}return r<gh?i>0?xh(n,t,o,i):n.addPoint(ei(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&vh(n,t,o,i)),1}function S_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(hl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(hl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(hl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(hl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&vh(n,r,e,t)}function ei(n,r){return new fr(ti.MathUtils.generateUUID(),new ti.Vector2(n,r))}function hl(n,r,e,t,o,i){let s=ei(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function xh(n,r,e,t){bh(n,r,e,t).forEach(i=>n.addPoint(i))}function vh(n,r,e,t){let o=bh(n,r,e,t),i=new Pe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function bh(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),l=n.points.map(c=>{let u=c.clone();return u.uuid=ti.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 to=require("three"),Sh=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 us(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},us=class extends to.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 to.Vector3,h=new to.Vector3,y=m(),g=m(),v=m(),b,w,S,T,_,x,C,P,I=m(),O=m(),A=m(),R=m(),U=m(),q=m(),te=m(),$=m(),W=t-2*c+.001,k=W/s,V=Math.ceil(l*s),G=V+1,B=W/V,L=-W/2,D=a+1,Y=2*Math.PI/a,H=Math.PI/2/p,F=.01,z=Math.min((1-d/100)*c,c-F),E=c-z,K=0,re=2,oe=p*re+re,X=D*oe/re,ee=X+D*G,Z=D*(G+oe),[se,de,ae]=[3,3,2].map(Ze=>Array(Z*Ze).fill(0)),me=[],We=i-c;function xe(Ze,Ht){let wr=Math.PI/2;x=Ht*B,P=2*Math.PI*(x%k)/k+wr,x+=L,C=Math.sin(P)*We,_=Math.cos(P)*We,r?Ze.set(_,C,x):Ze.set(_,x,C)}xe(h,-1e-10),xe(y,0),I.copy(h),xe(h,1);let et=h.distanceTo(y),Ce=f?0:E+z,Nt=et*V+2*Ce,Kt=z,on=Nt-Ce;for(let Ze=0;Ze<=V;Ze++){xe(g,Ze),$.subVectors(g,I).normalize(),I.copy(g),q.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors($,q).normalize();let Ht=Ze===0,wr=Ze===V,Cg=Ht?3*Math.PI/2:H,Ng=Ht?Kt:on,Eg=Ht?D:ee,Mg=Ht?0:Z-D,Lg=$.clone().multiplyScalar(Ht?-E:E).add(g),Bg=$.clone().multiplyScalar(Ht?-1:1).normalize();for(let Hr=0;Hr<D;Hr++){let iu=Hr*Y;if(O.addVectors(h.copy(q).multiplyScalar(c*Math.cos(iu)),y.copy(te).multiplyScalar(c*Math.sin(iu))),A.copy(O).normalize(),Ht||wr){f||(K=Mg+Hr,[0,1,2].forEach(Et=>{se[K*3+Et]=Lg.getComponent(Et),de[K*3+Et]=Bg.getComponent(Et)}),ae[K*2]=+wr,ae[K*2+1]=Hr/a),y.copy(A).multiplyScalar(z),v.addVectors(g,y);for(let Et=0;Et<p;Et++){let lc=Et*H+Cg;R.addVectors(h.copy($).multiplyScalar(E*Math.sin(lc)),y.copy(A).multiplyScalar(E*Math.cos(lc))),U.copy(R).normalize(),y.addVectors(v,R),R.normalize(),K=Eg+Et*D+Hr,[0,1,2].forEach(oa=>{se[K*3+oa]=y.getComponent(oa),de[K*3+oa]=U.getComponent(oa)});let Dg=+Ht+Math.sin(lc);ae[K*2]=(Ng+E*Dg)/Nt,ae[K*2+1]=Hr/a}}y.addVectors(g,O),K=X+Ze*D+Hr,[0,1,2].forEach(Et=>{se[K*3+Et]=y.getComponent(Et),de[K*3+Et]=A.getComponent(Et)}),ae[K*2]=(Ce+Ze*et)/Nt,ae[K*2+1]=Hr/a}}let kt=G+2*p+re,ta=1,[ra,Ri]=[+f,kt-1];f&&(Ri-=1);for(let Ze=ra;Ze<=Ri-1;Ze++){let Ht=f&&Ze===Ri-1;for(let wr=0;wr<D-1;wr++)b=Ze*D+wr,w=b+1,S=(Ht?wr:b)+D,T=(Ht?wr+1:w)+D,Ze===0?me.push(w,T,S):Ze===kt-2?me.push(b,w,S):me.push(b,w,S,w,T,S)}this.setIndex(me),this.setAttribute("position",new to.Float32BufferAttribute(se,3)),this.setAttribute("normal",new to.Float32BufferAttribute(de,3)),this.setAttribute("uv",new to.Float32BufferAttribute(ae,2))}};var wh=require("three");var _h=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 ps(r*.5,i,s):new wh.IcosahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},ps=class extends bo{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 ps(r.radius,r.corner,r.cornerSides)}};var yl=require("three"),Th=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 yl.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 yl.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Mr=require("three");var ro=require("three");var ie=require("three"),Er=new ie.Matrix4,nd=new ie.Object3D,gl=new ie.Vector3,wo=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 Er.makeRotationX(r),this.applyMatrix4(Er),this}rotateY(r){return Er.makeRotationY(r),this.applyMatrix4(Er),this}rotateZ(r){return Er.makeRotationZ(r),this.applyMatrix4(Er),this}translate(r,e,t){return Er.makeTranslation(r,e,t),this.applyMatrix4(Er),this}scale(r,e,t){return Er.makeScale(r,e,t),this.applyMatrix4(Er),this}lookAt(r){return nd.lookAt(r),nd.updateMatrix(),this.applyMatrix4(nd.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 oi(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(gl).negate(),this.translate(gl.x,gl.y,gl.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 wo;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 oi(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,T=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,T),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)),T){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 wo().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 id().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",Ph.call(new ie.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Oh.call(new ie.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Oh.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(xl.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",Ah.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ie.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Ah.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",Ph.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}};wo.prototype.isGeometry=!0;var id=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 T=l[S].vertices;u[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.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}},oi=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 Ph(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 Oh(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 Ah(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 T_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function sd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function ad(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 P_(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],ad(s.a,s.b,n,t,s,e),ad(s.b,s.c,n,t,s,e),ad(s.c,s.a,n,t,s,e)}function vl(n,r,e,t,o){n.push(new oi(r,e,t,void 0,void 0,o))}function ni(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function bl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Sl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof ro.BufferGeometry?r=new wo().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 ro.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;P_(c,u,p,f);let m=[],h,y,g,v,b,w,S;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new ro.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[T_(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 T,_,x,C,P,I,O,A=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,q,te,$,W=[],k=[],V,G,B,L,D=new ro.Vector2,Y=new ro.Vector2,H=new ro.Vector2;for(o=0,i=u.length;o<i;o++)v=u[o],q=Number(sd(v.a,v.b,f).newEdge)+U,te=Number(sd(v.b,v.c,f).newEdge)+U,$=Number(sd(v.c,v.a,f).newEdge)+U,vl(W,q,te,$,v.materialIndex),vl(W,v.a,q,$,v.materialIndex),vl(W,v.b,te,q,v.materialIndex),vl(W,v.c,$,te,v.materialIndex),d&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set(ni(G.x,B.x),ni(G.y,B.y)),Y.set(ni(B.x,L.x),ni(B.y,L.y)),H.set(ni(G.x,L.x),ni(G.y,L.y)),bl(k,D,Y,H),bl(k,G,D,H),bl(k,B,Y,D),bl(k,L,H,Y));r.vertices=R,r.faces=W,d&&(r.faceVertexUvs[0]=k)}};var nt=new Mr.Vector3,Ih=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Mr.BufferGeometry().copy(new Mr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(nt),t={width:nt.x,height:nt.y,depth:nt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Mr.BufferGeometry().copy(new Mr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(nt)):nt.set(s.width,s.height,s.depth),(r!==nt.x||e!==nt.y||t!==nt.z)&&i.scale(nt.x===0?1:r/nt.x,nt.y===0?1:e/nt.y,nt.z===0?1:t/nt.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Sl(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 Mr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(nt);let s=100/nt.x;Object.assign(i.parameters,{width:100,height:nt.y*s,depth:nt.z*s}),r(this.build(i))})}};var wl=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 Pe?n.shape:new Pe,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=Rt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var we=require("three"),Ch=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 cd(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function fs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function ld(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 O_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var cd=class extends we.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 we.Vector3(0,-f,0),w=new we.Vector3(0,f,0),S=new we.Vector2(r,-f),T=new we.Vector2(h,-f),_=new we.Vector2(0,w.y).sub(T),x=new we.Vector2(0,w.y).sub(S),C=new we.Vector2(_.y,-_.x).normalize(),P=new we.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 k=new we.Vector3(C.x,C.y,0),V=new we.Vector3(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);A=k.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),q=new we.Vector3;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let k=p++,V=[],G=S.clone(),B=R/Math.cos(Math.PI/t);G.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,Y=new we.Vector2(Math.sin(D),Math.cos(D));fs(G,Y,q),u.push(q.x,q.y,q.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],k,V[(L+1)%V.length])}let te=[];{let k=new we.Vector3,V=new we.Vector3,G=new we.Vector3,B=new we.Vector3,L=new we.Vector3,D=new we.Vector3;for(let Y=0;Y<t;Y++){let H=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,z=(Y+1)/t*Math.PI*2+m,E=new we.Vector2(Math.sin(H),Math.cos(H)),K=new we.Vector2(Math.sin(F),Math.cos(F)),re=new we.Vector2(Math.sin(z),Math.cos(z));fs(S,E,V),fs(S,re,G),fs(C,K,k),ld(w,V,G,U,U,B),u.push(B.x,B.y,B.z),ld(V,w,G,U,R,L),u.push(L.x,L.y,L.z),ld(G,V,w,R,U,D),u.push(D.x,D.y,D.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,X=p++,ee=p++;if(c.push(oe,X,ee),s>0){{let de=V.clone().add(G).multiplyScalar(.5),ae=w.clone().sub(de).normalize(),We=b.clone().sub(de).normalize().add(ae).normalize().multiplyScalar(-1),xe=D.clone().sub(L);$(de,xe,We,_.angle())}let Z,se;{let de=new we.Vector3;fs(P,re,de);let ae=D.clone().add(B).multiplyScalar(.5);ae=O_(ae,G,w);let me=D.clone().sub(B);[Z,se]=$(ae,me,de,A,B.y)}{let de=Z,ae=de.clone().setY(0).normalize(),me=new we.Vector3(0,-1,0),We=ae.clone().cross(me);W(de,ae,me,We)}te.concat(se);{let de=_.angle(),ae=Math.PI-de,me=w.clone();me.y-=s/Math.sin(de-Math.PI/2);let We=new we.Vector3,xe=[];for(let Ce=0;Ce<l;Ce++){let Nt=[],Kt=Math.PI/2-ae*Ce/l,on=Math.cos(Kt),kt=Math.sin(Kt),ta=F;for(let ra=0;ra<=Ce;ra++){let Ri=Math.cos(ta),Ze=Math.sin(ta);k.x=on*Ze,k.y=kt,k.z=on*Ri,We.copy(me).addScaledVector(k,s),u.push(We.x,We.y,We.z),a.push(k.x,k.y,k.z),d.push(0,0),Nt.push(p++),ta+=Math.PI*2/Ce/t}xe.push(Nt)}se.reverse(),xe.push(se);let et=xe.length-1;for(let Ce=0;Ce<et;Ce++){let Nt=xe[Ce],Kt=xe[Ce+1],on=Nt.length-1;c.push(Kt[1],Nt[0],Kt[0]);for(let kt=1;kt<=on;kt++)c.push(Nt[kt],Nt[kt-1],Kt[kt]),c.push(Kt[kt+1],Nt[kt],Kt[kt])}}}}}this.setIndex(c),this.setAttribute("position",new we.Float32BufferAttribute(u,3)),this.setAttribute("normal",new we.Float32BufferAttribute(a,3)),this.setAttribute("uv",new we.Float32BufferAttribute(d,2));function $(k,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,H=V.clone().normalize().cross(G);k.addScaledVector(G,-s/Math.sin(Y));let F=new we.Vector3,z=new we.Vector3,E=1,K=p,re=[];for(let oe=0;oe<=l;oe++){let X=D+oe/l*B;z.set(0,0,0),z.addScaledVector(H,Math.sin(X)),z.addScaledVector(G,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(F.copy(k),F.addScaledVector(V,Z),F.addScaledVector(z,s),L!=null){let se=Math.max(0,F.y-L);F.addScaledVector(V,-se/V.y)}u.push(F.x,F.y,F.z),a.push(z.x,z.y,z.z),d.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let X=0;X<E;X++){let ee=K+X+(E+1)*oe,Z=ee+(E+1),se=Z+1,de=ee+1;c.push(ee,Z,de),c.push(Z,se,de)}return[k.clone().addScaledVector(V,.5),re]}function W(k,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],H=new we.Vector3,F=new we.Vector3;for(let E=0;E<=l;E++){let K=[],re=E/l;for(let oe=0;oe<=E;oe++){let ee=((E?oe/E:0)-.5)*v,Z=Math.cos(ee),se=Math.sin(ee),de=Math.atan(Math.tan(D)*Z),ae=(L+de)*re,me=Math.cos(ae),We=Math.sin(ae);H.set(0,0,0),H.addScaledVector(V,We*Z),H.addScaledVector(G,me),H.addScaledVector(B,We*se),F.copy(k).addScaledVector(H,s),u.push(F.x,F.y,F.z),a.push(H.x,H.y,H.z),d.push(0,0),K.push(p++)}Y.push(K)}let z=Y.length-1;for(let E=0;E<z;E++){let K=Y[E],re=Y[E+1],oe=K.length-1;c.push(K[0],re[1],re[0]);for(let X=1;X<=oe;X++)c.push(K[X-1],K[X],re[X]),c.push(K[X],re[X+1],re[X])}}}};var _l=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 Pe?n.shape:new Pe,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,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T: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=Rt.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};var Nh=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,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 Nh.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 Mh=require("three"),Lh=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 Mh.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var _o=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,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 dd(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},dd=class extends _o.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=(F=0,z=0,E=0)=>new _o.Vector3(F,z,E),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),C=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);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(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let q=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=p+o+F*q;m.set(0,Math.sin(z)*A,Math.cos(z)*A),m.add(U),h.set(0,x(z),C(z)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let te=Math.sin(q/2)*A*2,$=d.length-1,W=d[0][0].distanceTo(d[1][0]),k=d[$-1][0].distanceTo(d[$][0]),V=W+te*s+k;d[0].push(1);for(let F=0;F<=s;F++)d[F+1].push(1-(W+F*te)/V);d[$].push(0);let[G,B,L]=d[0],D,Y,H;for(let F=1;F<d.length;F++)[D,Y,H]=d[F],l.push(b,G.y,G.z,b,D.y,D.z,w,G.y,G.z,w,G.y,G.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[G,B,L]=[D,Y,H];this.setAttribute("position",new _o.Float32BufferAttribute(l,3)),this.setAttribute("normal",new _o.Float32BufferAttribute(c,3)),this.setAttribute("uv",new _o.Float32BufferAttribute(u,2))}};var Tl=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 Pe?n.shape:new Pe,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,T=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),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=Rt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};var Dh=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,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 Dh.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Rh=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=A_(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 A_(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 us(!0,n,r,e,t,o,i,s,l,c,u,a)}var Vh=require("three"),jh=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 Vh.TorusKnotGeometry(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Fh=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 Pe?n.shape:new Pe,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=Rt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var ve=require("three");function zh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function I_(n,r,e){let t=[new ve.Vector3,new ve.Vector3,new ve.Vector3],o=[new ve.Vector3,new ve.Vector3,new ve.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=ve.MathUtils.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new ve.Matrix4().makeBasis(t[0],t[1],t[2])}var Uh=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??ri.create({parameters:Nc}).userData.shape;return{path:n.path??yn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Na,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new ud(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ve.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},ud=class extends ve.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)||!zh(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,R)=>{a[O]=a[O].clone().lerp(a[A],R),d[O]=I_(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(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,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*u,_,x=0;if(this._isOpenEnded()){try{_=mr({windingRule:_e.ODD,elementType:He.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=od}x=_.vertexCount}let C=T+2*x,P={positions:new Float32Array(C*3),normals:new Float32Array(C*3),uvs:new Float32Array(C*2)},I=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,P,I,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,I,P,d[0],a[0],!1),this._closeEnd(_,T+x,I,P,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new ve.BufferAttribute(P.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(P.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(P.uvs,2)),this.setIndex(I)}_extractPathPoints(){let t=dl(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 ve.Vector3,l=new ve.Vector3,c=new ve.Vector3,u=new ve.Vector3,a=new ve.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(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new ve.Matrix4().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new ve.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 ve.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 ve.Matrix4,d=new ve.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(ve.MathUtils.lerp(s,s+l,m));let h=ve.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(a).multiply(d)}),e}_computeShapePoints(e=12,t=_e.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=mr({windingRule:t,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=ds}let c;try{c=mr({windingRule:_e.ODD,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=rd}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 T=v,_=w-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],U=l.vertices[x*2+0],q=l.vertices[x*2+1],te=A-I,$=R-O,W=Math.sqrt(te*te+$*$);te/=W,$/=W;let k=A-U,V=R-q,G=Math.sqrt(k*k+V*V);k/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[P]=!0;else{let Y=D===1?L+1:L-1;Y=(Y+C)%C;let H=D===1?0:1,F=o.roundedCurves[L].getTangent(D),z=o.roundedCurves[Y].getTangent(H);S.continuous[P]=F.dot(z)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,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 ve.Vector3,a=new ve.Vector3,d=new ve.Vector3,p=new ve.Vector3,f=new ve.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,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new ve.Vector3(0,0,c?-1:1).applyMatrix4(s),d=new ve.Vector3,p=new ve.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 Ho=require("three"),kh=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Hh(){let n=new Ho.BufferGeometry;return n.setAttribute("position",new Ho.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Ho.BufferAttribute(new Uint16Array([]),1)),n}var C_=Hh().attributes,N_=12,E_=1,ii=class extends Ho.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,C_),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=M_(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Pe().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Rt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?_e.NONZERO:_e.ODD,subdivisions:this.isLowResolution&&s>0?E_:N_}})),w=b.length?(0,kh.mergeBufferGeometries)(b):Hh();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,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=$r(new Ho.BufferGeometry,ii.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 M_(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1
|
+
"use strict";var Ug=Object.create;var da=Object.defineProperty;var Hg=Object.getOwnPropertyDescriptor;var Wg=Object.getOwnPropertyNames;var qg=Object.getPrototypeOf,$g=Object.prototype.hasOwnProperty;var pa=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),dd=(n,r)=>{for(var e in r)da(n,e,{get:r[e],enumerable:!0})},pd=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Wg(r))!$g.call(n,o)&&o!==e&&da(n,o,{get:()=>r[o],enumerable:!(t=Hg(r,o))||t.enumerable});return n};var ln=(n,r,e)=>(e=n!=null?Ug(qg(n)):{},pd(r||!n||!n.__esModule?da(e,"default",{value:n,enumerable:!0}):e,n)),Xg=n=>pd(da({},"__esModule",{value:!0}),n);var Fm=pa((jc,zm)=>{(function(n,r){typeof jc=="object"?zm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(jc,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 d=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[t,o,i,s]},d.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},d}(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 qm=pa((ml,Wm)=>{(function(n,r){typeof ml=="object"&&typeof Wm<"u"?r(ml):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(ml,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,d,a,u,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=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var N,P=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=(u=S[x][x])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=u-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(u=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+u*S[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(u=S[x][x+1])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=u-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(P[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++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[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=P[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(u=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+u*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 C=0;C<50;C++){for(N=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(P[c-1])<=o)break}if(!N){for(a=0,d=c-(m=1),x=c;x<l+1&&(u=m*w[x],w[x]=a*w[x],!(Math.abs(u)<=o));x++)if(p=P[x],P[x]=Math.sqrt(u*u+p*p),a=p/(f=P[x]),m=-u/f,e)for(s=0;s<b;s++)y=S[s][d],g=S[s][x],S[s][d]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],u=(((y=P[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((h-g)*(h+g)+f*(y/(u<0?u-p:u+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(u*u+f*f),u=h*(a=u/(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=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(u*u+f*f),u=(a=u/(P[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]=u,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ay=pa(Wl=>{(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 u=this||r;if(a=parseFloat(a),u.ctx||d(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||r;u.ctx||d(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||r,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||r,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,d()),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 u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var p=u.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||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.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 u=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",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||r;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var p=0;p<a._howls[u]._sounds.length;p++)if(!a._howls[u]._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 u=0;u<a._howls.length;u++)a._howls[u]._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 u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return r.ctx||d(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._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},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=r.usingWebAudio&&!u._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=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)){u=a._src[p];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,u){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 u||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,T=(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=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var N=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)),u||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 P=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,u?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})):u||(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(R){p._emit("playerror",y._id,R)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var C=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||C)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var p=u._getSoundIds(a),f=0;f<p.length;f++){u._clearTimer(p[f]);var m=u._soundById(p[f]);if(m&&!m._paused&&(m._seek=u.seek(p[f]),m._rateSeek=0,m._paused=!0,u._stopFade(p[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(a,u){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))),u||p._emit("stop",h._id))}return p},mute:function(a,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,u)}}),p;if(typeof u>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(u),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,u=arguments,p,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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,u[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,u,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),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(u,b)}m._startFadeInterval(g,a,u,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,u,p,f,m,h){var y=this,g=u,v=p-u,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 T=(Date.now()-S)/f;S=Date.now(),g+=v*T,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<u&&g<=p||p>u&&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 u=this,p=u._soundById(a);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,a),p._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,p,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],a._loop=p;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[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,u=arguments,p,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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,u=arguments,p,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[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,u)}}),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 u=this;if(typeof a=="number"){var p=u._soundById(a);return p?!p._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(a){var u=this,p=u._duration,f=u._soundById(a);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,p=0;p<u.length;p++)u[p]._paused||a.stop(u[p]._id),a._webAudio||(a._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(r._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),r._releaseHtml5Audio(u[p]._node)),delete u[p]._node,a._clearTimer(u[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,u,p,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),m},off:function(a,u,p){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(u===m[h].fn&&y||!u&&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,u,p){var f=this;return f.on(a,u,p,1),f},_emit:function(a,u,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(y){y.call(this,u,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 u=this;if(u._queue.length>0){var p=u._queue[0];p.event===a&&(u._queue.shift(),u._loadQueue()),a||p.action()}return u},_ended:function(a){var u=this,p=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[p][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._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);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),r._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var p=u._soundById(a);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,p=0;p<u._sounds.length;p++)if(a===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new t(a)},_drain:function(){var a=this,u=a._pool,p=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=u)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 u=this;if(typeof a>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._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),u},_cleanBuffer:function(a){var u=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,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return u._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=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._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,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.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,u,!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[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,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,u){u&&!a._duration&&(a._duration=u.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())},d=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),u=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[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 Wl<"u"&&(Wl.Howler=r,Wl.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 d=i._panner;d?(d.coneInnerAngle=c.coneInnerAngle,d.coneOuterAngle=c.coneOuterAngle,d.coneOuterGain=c.coneOuterGain,d.distanceModel=c.distanceModel,d.maxDistance=c.maxDistance,d.refDistance=c.refDistance,d.rolloffFactor=c.rolloffFactor,d.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 Lg=pa((y$,Eg)=>{Eg.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 QT={};dd(QT,{default:()=>uc});module.exports=Xg(QT);var dc=require("three");var Re=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,Re.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,Re.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,Re.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function es(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"&&es(t)}return Object.freeze(n)}function fd(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 cn=class extends Error{};function fa(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Cr(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 un(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 md(){return typeof process<"u"}function hd(n,r){for(let e of n)r(e.id,e.data)!==!0&&hd(e.children,r)}function yd(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)yd(e,r)}var ot=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ot.prototype)}deepFreeze(){let e=0;for(;e<this.length;)es(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&&yd(o,t)}}traverse(e){hd(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 d=i.findIndex(a=>a.id===c);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:l}}Object.setPrototypeOf(i,ot.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,d=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return d=[...d,a],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(a),{data:this.modifyArrayBy(c,d),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(d=>d.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 cn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),d=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(d,1)[0],u=this.modifyArrayBy(s,c);s=t,c=u.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),u=u.modifyArrayBy(s,c),{data:u,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)=>fd(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 Cr(0,o,o);{let s=i[0].fi;return Cr(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 Cr(c,c+o,o)}else return Cr(s.fi,l.fi,o)}}};var dn;(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 d=parseInt(c);if(isNaN(d))throw new Error("wrong index");i[c]=s[d],s[d]=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 d=o[c];d===void 0?delete s[c]:s[c]=d,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(dn||(dn={}));var ge=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ge.prototype)}deepFreeze(){let e=0;for(;e<this.length;)es(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(d=>d.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,ge.prototype);let t=e;return md()||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((d,a)=>d.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,u)=>a.fi-u.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 Cr(0,t,t);{let i=o[0].fi;return Cr(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 Cr(l,l+t,t)}else return Cr(i.fi,s.fi,t)}}};function pn(n){return n&&typeof n=="object"&&n instanceof Ue}var Ue=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&&!pn(t))return null;o+=1}t=t?fa(t):new Ue;for(let[c,d]of Object.entries(r.props)){let a=t[c];i[c]=a,d===void 0?delete t[c]:t[c]=d}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 d=fa(c);d[r.path[o-1]]=t,t=d}else{let d=new Ue;d[r.path[o-1]]=t,t=d}}o-=1}let s=Object.setPrototypeOf(t,Ue.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Yr;(t=>{function n(o,i){return ts(o,i)??o}t.apply=n;function r(o,i){return mc(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=At.zoomOnce(c,l[s]),c===void 0)return i;if(!pn(c))return;s+=1}if(c===void 0)return i;if(!!pn(c))if(i.type===0){let d={...i.props};for(let a of Object.keys(c))delete d[a];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=fc([i],c);return d?(console.log(d),d):i}else return i}t.filterOp=e})(Yr||(Yr={}));function fc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ts(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=fc(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 Yg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ts(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 ts(n,r){if(!pn(r))return r;if(n instanceof ot){let e=fc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ge)return Yg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=ts(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 Ue)return mc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=ts(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 mc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!pn(r))return r;if(!pn(n))return Yr.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 Ue;for(let o of e){let i=mc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function gd(n,r){let e={cur:[],result:[],len:0};return n=rs(n,r,e)??n,[n,e.result]}function ma(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function ha(n){n&&(n.len-=1)}function Kg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function xd(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=rs(i.data,r,ma(e,s));ha(e),t=t||c!==void 0,c===void 0&&(c=i.data);let d=xd(i.children,r,e);return d!==void 0?t=!0:d=i.children,{...i,id:s,data:c,children:d}});if(t)return o}function Zg(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=rs(i.data,r,ma(e,s));return ha(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 rs(n,r,e){if(n instanceof ot){let t=xd(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ge)return Zg(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=rs(i,r,ma(e,s));return ha(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"&&!un(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=rs(s,r,ma(e,i));ha(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");Kg(e)}return t}else return}}var ya;(r=>{function n(e,t){let o=At.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})(ya||(ya={}));var xt;(l=>{function n(c,d){return{...c,path:c.path.slice(d)}}l.drop=n;function r(c,d){return e(c,d)?.data??c}l.applySimple=r;function e(c,d){let a=d.path;for(var u=[];;){let p;if(c instanceof Ue&&d.type===0&&(p=c.runOp({...d,path:a.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===a.length&&(c instanceof ot||c instanceof ge||c instanceof Re?p=c.runOp(d):p=dn.runOp(c,d)),p!==void 0)if(p!==null){let h=p.data;for(let y=u.length-1;y>=0;y--){let g=a[y],v=u[y];if(v instanceof ot){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ge){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Re){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ue){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Ue.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[u.length],m;if(c instanceof ot){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ge){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)u.push(c),c=m;else return null}}l.apply=e;function t(c,d){for(let a=0;a<c.length&&a<d.length;a++)if(c[a]!==d[a])return!0;return!1}l.pathDisjoint=t;function o(c,d){if(c.length!==d.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==d[a])return!1;return!0}l.pathEq=o;function i(c,d){return t(c.path,d.path)}l.commutative=i;function s(c,d){return c.type===0&&d.type===0&&o(c.path,d.path)?Object.keys(c.props).every(a=>d.props[a]!==void 0):!1}l.subsumed=s})(xt||(xt={}));var hc;(c=>{function n(){return[]}c.empty=n;function r(d,a){let u=[];for(let p of d){let[f,...m]=p.path;f===a&&u.push({...p,path:m})}return u}c.removePrefix=r;function e(d,a){return d.map(u=>({...u,path:[a,...u.path]}))}c.addPrefix=e;function t(d,a){return[...d,...a]}c.concat=t;function o(d,a){return[...d.filter(p=>!a.some(f=>xt.subsumed(p,f))),...a]}c.compress=o;function i(d,a){return d.every(u=>a.every(p=>xt.commutative(u,p)))}c.commutative=i;function s(d,a){for(let u of a){let p=l(d,u);p!==null&&(d=p.data)}return d}c.applyAll=s;function l(d,a){var u=d;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=At.zoom(u,[...m.path,m.id]),y=xt.apply(u,{...m,type:2});if(y!==null){u=y.data;let[g,v]=gd(u,{[m.id]:h});u=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=xt.apply(u,m);h!==null&&(p.push(h.actual),u=h.data,f.push(h.reverse))}}catch(h){if(h instanceof cn)return null;throw h}return{data:u,actual:p,reverse:f.reverse()}}c.apply=l})(hc||(hc={}));var vd=Symbol(),Qg=Symbol(),xa=Symbol(),Lo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof ga);){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[xa];t&&t(),delete this._children[r]}}}},gc=class extends Lo{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,dn.runOp(this._current,r),r.path)}},xc=class extends Lo{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,Re.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},bd={get(n,r){if(r===xa)return()=>{n._parent=null};if(r===vd)return n._current;if(r===Qg)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=va(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]}}},Jg={...bd,set(n,r,e){let t={type:0,props:{[r]:ut(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}},e0={...bd,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}},fn=class extends Lo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[xa]=()=>{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=va(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)}},mn=class extends Lo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[xa]=()=>{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=va(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 yc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&At.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var ga=class extends Lo{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){yc(this.ts,e,r),yc(this.actual,t,r),yc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function va(n,r,e){return e instanceof ot?new fn(n,r,e):e instanceof ge?new mn(n,r,e):e instanceof Re?new Proxy(new xc(n,r,e),e0):e!==null&&typeof e=="object"?un(e)?e:new Proxy(new gc(n,r,e),Jg):e}function vc(n){let r=new ga(n);return[va(r,"",n),r]}function hn(n,r){let[e,t]=vc(n);return r(e),t.result()}function ut(n){return n instanceof fn||n instanceof mn?n._current:n!==null&&typeof n=="object"?n[vd]:n}var At;(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 d={...s};return Object.keys(c).forEach(a=>{delete d[a]}),d}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof ot||i instanceof fn)&&typeof s=="string")return i.data(s);if((i instanceof ge||i instanceof mn)&&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})(At||(At={}));function Sd(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 cr(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 ba=class{},os=class extends ba{constructor(e){super();this.id=e}},ns=class extends ba{constructor(e){super();this.data=e}};var Sc;try{Sc=new TextDecoder}catch{}var ne,uo,I=0;var Nd=[],wc=Nd,_c=0,Bt={},Ce,co,Qt=0,Nr=0,qt,Kr,Ct=[],Ee,wd={useRecords:!1,mapsAsObjects:!0},is=class{},Pc=new is;Pc.name="MessagePack 0xC1";var yn=!1,Ir=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 Bd(()=>(wa(),this?this.unpack(r,e):Ir.prototype.unpack.call(wd,r,e)));uo=e>-1?e:r.length,I=0,_c=0,Nr=0,co=null,wc=Nd,qt=null,ne=r;try{Ee=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 Ir){if(Bt=this,this.structures)return Ce=this.structures,Sa();(!Ce||Ce.length>0)&&(Ce=[])}else Bt=wd,(!Ce||Ce.length>0)&&(Ce=[]);return Sa()}unpackMultiple(r,e){let t,o=0;try{yn=!0;let i=r.length,s=this?this.unpack(r,i):Pa.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(Sa())===!1)return}else{for(t=[s];I<i;)o=I,t.push(Sa());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{yn=!1,wa()}}_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 Sa(){try{if(!Bt.trusted&&!yn){let r=Ce.sharedLength||0;r<Ce.length&&(Ce.length=r)}let n=Xe();if(I==uo)Ce.restoreStructures&&_d(),Ce=null,ne=null,Kr&&(Kr=null);else if(I>uo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!yn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ce.restoreStructures&&_d(),wa(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function _d(){for(let n in Ce.restoreStructures)Ce[n]=Ce.restoreStructures[n];Ce.restoreStructures=null}function Xe(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Ce[n&63]||Bt.getStructures&&Id()[n&63];return r?(r.read||(r.read=Oc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Bt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ed()]=Xe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Xe(),Xe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Xe();return r}else if(n<192){let r=n-160;if(Nr>=I)return co.slice(I-Qt,(I+=r)-Qt);if(Nr==0&&uo<140){let e=r<16?Ac(r):Md(r);if(e!=null)return e}return Tc(r)}else{let r;switch(n){case 192:return null;case 193:return qt?(r=Xe(),r>0?qt[1].slice(qt.position1,qt.position1+=r):qt[0].slice(qt.position0,qt.position0-=r)):Pc;case 194:return!1;case 195:return!0;case 196:return bc(ne[I++]);case 197:return r=Ee.getUint16(I),I+=2,bc(r);case 198:return r=Ee.getUint32(I),I+=4,bc(r);case 199:return Bo(ne[I++]);case 200:return r=Ee.getUint16(I),I+=2,Bo(r);case 201:return r=Ee.getUint32(I),I+=4,Bo(r);case 202:if(r=Ee.getFloat32(I),Bt.useFloat32>2){let e=Ta[(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=Ee.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Ee.getUint16(I),I+=2,r;case 206:return r=Ee.getUint32(I),I+=4,r;case 207:return Bt.int64AsNumber?(r=Ee.getUint32(I)*4294967296,r+=Ee.getUint32(I+4)):r=Ee.getBigUint64(I),I+=8,r;case 208:return Ee.getInt8(I++);case 209:return r=Ee.getInt16(I),I+=2,r;case 210:return r=Ee.getInt32(I),I+=4,r;case 211:return Bt.int64AsNumber?(r=Ee.getInt32(I)*4294967296,r+=Ee.getUint32(I+4)):r=Ee.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Cd(ne[I++]&63);{let e=Ct[r];if(e)return e.read?(I++,e.read(Xe())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Cd(ne[I++]&63,ne[I++])):Bo(2);case 214:return Bo(4);case 215:return Bo(8);case 216:return Bo(16);case 217:return r=ne[I++],Nr>=I?co.slice(I-Qt,(I+=r)-Qt):r0(r);case 218:return r=Ee.getUint16(I),I+=2,Nr>=I?co.slice(I-Qt,(I+=r)-Qt):o0(r);case 219:return r=Ee.getUint32(I),I+=4,Nr>=I?co.slice(I-Qt,(I+=r)-Qt):n0(r);case 220:return r=Ee.getUint16(I),I+=2,Pd(r);case 221:return r=Ee.getUint32(I),I+=4,Pd(r);case 222:return r=Ee.getUint16(I),I+=2,Od(r);case 223:return r=Ee.getUint32(I),I+=4,Od(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 t0=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Oc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>t0.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Xe);return n.highByte===0&&(n.read=Td(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Xe()}return t}return e.count=0,n.highByte===0?Td(r,e):e}var Td=(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]||Id()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Oc(o,n)),o.read()};function Id(){let n=Bd(()=>(ne=null,Bt.getStructures()));return Ce=Bt._mergeStructures(n,Ce)}var Tc=_a,r0=_a,o0=_a,n0=_a;function _a(n){let r;if(n<16&&(r=Ac(n)))return r;if(n>64&&Sc)return Sc.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+=dt.apply(String,t),t.length=0)}return t.length>0&&(r+=dt.apply(String,t)),r}function Pd(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Xe();return r}function Od(n){if(Bt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ed()]=Xe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Xe(),Xe());return r}}var dt=String.fromCharCode;function Md(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 dt.apply(String,e)}function Ac(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return dt(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return dt(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return dt(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 dt(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return dt(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 dt(r,e,t,o,i,s);let l=ne[I++];if((l&128)>0){I-=7;return}return dt(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 dt(r,e,t,o,i,s,l,c);{let d=ne[I++];if((d&128)>0){I-=9;return}return dt(r,e,t,o,i,s,l,c,d)}}else if(n<12){let d=ne[I++],a=ne[I++];if((d&128)>0||(a&128)>0){I-=10;return}if(n<11)return dt(r,e,t,o,i,s,l,c,d,a);let u=ne[I++];if((u&128)>0){I-=11;return}return dt(r,e,t,o,i,s,l,c,d,a,u)}else{let d=ne[I++],a=ne[I++],u=ne[I++],p=ne[I++];if((d&128)>0||(a&128)>0||(u&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return dt(r,e,t,o,i,s,l,c,d,a,u,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return dt(r,e,t,o,i,s,l,c,d,a,u,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return dt(r,e,t,o,i,s,l,c,d,a,u,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return dt(r,e,t,o,i,s,l,c,d,a,u,p,f,m,h)}}}}}function bc(n){return Bt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function Bo(n){let r=ne[I++];if(Ct[r])return Ct[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Ad=new Array(4096);function Ed(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,Nr>=I)return co.slice(I-Qt,(I+=n)-Qt);if(!(Nr==0&&uo<180))return Tc(n)}else return I--,Xe();let r=(n<<5^(n>1?Ee.getUint16(I):n>0?ne[I]:0))&4095,e=Ad[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ee.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=[],Ad[r]=e,e.bytes=n;t<o;)i=Ee.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?Ac(n):Md(n);return l!=null?e.string=l:e.string=Tc(n)}var Cd=(n,r)=>{var e=Xe();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=Oc(e,t),e.read()},Ld=typeof self=="object"?self:global;Ct[0]=()=>{};Ct[0].noBuffer=!0;Ct[101]=()=>{let n=Xe();return(Ld[n[0]]||Error)(n[1])};Ct[105]=n=>{let r=Ee.getUint32(I-4);Kr||(Kr=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Kr.set(r,o);let i=Xe();return o.used?Object.assign(t,i):(o.target=i,i)};Ct[112]=n=>{let r=Ee.getUint32(I-4),e=Kr.get(r);return e.used=!0,e.target};Ct[115]=()=>new Set(Xe());var Cc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ct[116]=n=>{let r=n[0],e=Cc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Ld[e](Uint8Array.prototype.slice.call(n,1).buffer)};Ct[120]=()=>{let n=Xe();return new RegExp(n[0],n[1])};Ct[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,qt=[Xe(),Xe()],qt.position0=0,qt.position1=0;let t=I;I=e;try{return Xe()}finally{I=t}};Ct[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 Bd(n){let r=uo,e=I,t=_c,o=Qt,i=Nr,s=co,l=wc,c=Kr,d=qt,a=new Uint8Array(ne.slice(0,uo)),u=Ce,p=Ce.slice(0,Ce.length),f=Bt,m=yn,h=n();return uo=r,I=e,_c=t,Qt=o,Nr=i,co=s,wc=l,Kr=c,qt=d,ne=a,yn=m,Ce=u,Ce.splice(0,Ce.length,...p),Bt=f,Ee=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function wa(){ne=null,Kr=null,Ce=null}function Dd(n){n.unpack?Ct[n.type]=n.unpack:Ct[n.type]=n}var Ta=new Array(147);for(let n=0;n<256;n++)Ta[n]=+("1e"+Math.floor(45.15-n*.30103));var Pa=new Ir({useRecords:!1}),i0=Pa.unpack,s0=Pa.unpackMultiple,a0=Pa.unpack,Oa={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},l0=new Float32Array(1),rO=new Uint8Array(l0.buffer,0,4);var Aa;try{Aa=new TextEncoder}catch{}var Ca,Ic,Na=typeof Buffer<"u",Nc=Na?Buffer.allocUnsafeSlow:Uint8Array,zd=Na?Buffer:Uint8Array,Gd=Na?4294967296:2144337920,z,et,E=0,Mr,Er=null,c0=/[\u0080-\uFFFF]/,ss=Symbol("record-id"),Do=class extends Ir{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,d=zd.prototype.utf8Write?function(x,N,P){return z.utf8Write(x,N,P)}:Aa&&Aa.encodeInto?function(x,N){return Aa.encodeInto(x,z.subarray(N)).written}:!1,a=this;r||(r={});let u=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),u&&!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,N){if(z||(z=new Nc(8192),et=new DataView(z.buffer,0,8192),E=0),Mr=z.length-10,Mr-E<2048?(z=new Nc(z.length),et=new DataView(z.buffer,0,z.length),Mr=z.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(Er=["",""],z[E++]=214,z[E++]=98,Er.position=E-t,E+=4):Er=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>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<P;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let k=0,$=O.length;k<$;k++){let te=O[k];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[ss]=C+64}c=P}u||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),Er){et.setUint32(Er.position+t,E-Er.position-t);let P=Er;Er=null,S(P[0]),S(P[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>Mr&&_(E),a.offset=E;let P=d0(z.subarray(t,E),l.idsToInsert);return l=null,P}return N&jd?(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&&!u){for(let P=0,C=v.length;P<C;P++)v[P][ss]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let C=z.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,C)}}N&x0&&(E=t)}};let S=x=>{E>Mr&&(z=_(E));var N=typeof x,P;if(N==="string"){let C=x.length;if(Er&&C>=8&&C<4096){let R=c0.test(x);Er[R?0:1]+=x,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>Mr&&(z=_(E+A)),C<64||!d){let R,k,$,te=E+O;for(R=0;R<C;R++)k=x.charCodeAt(R),k<128?z[te++]=k:k<2048?(z[te++]=k>>6|192,z[te++]=k&63|128):(k&64512)===55296&&(($=x.charCodeAt(R+1))&64512)===56320?(k=65536+((k&1023)<<10)+($&1023),R++,z[te++]=k>>18|240,z[te++]=k>>12&63|128,z[te++]=k>>6&63|128,z[te++]=k&63|128):(z[te++]=k>>12|224,z[te++]=k>>6&63|128,z[te++]=k&63|128);P=te-E-O}else P=d(x,E+O,A);P<32?z[E++]=160|P:P<256?(O<2&&z.copyWithin(E+2,E+1,E+1+P),z[E++]=217,z[E++]=P):P<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+P),z[E++]=218,z[E++]=P>>8,z[E++]=P&255):(O<5&&z.copyWithin(E+5,E+3,E+3+P),z[E++]=219,et.setUint32(E,P),E+=4),E+=P}else if(N==="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,et.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,et.setInt16(E,x),E+=2):(z[E++]=210,et.setInt32(E,x),E+=4);else{let C;if((C=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){z[E++]=202,et.setFloat32(E,x);let O;if(C<4||(O=x*Ta[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,et.setFloat64(E,x),E+=8}else if(N==="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,et.setUint32(E,O.id),E+=4;return}else l.set(x,{offset:E-t})}let C=x.constructor;if(C===Object)T(x,!0);else if(C===Array){P=x.length,P<16?z[E++]=144|P:P<65536?(z[E++]=220,z[E++]=P>>8,z[E++]=P&255):(z[E++]=221,et.setUint32(E,P),E+=4);for(let O=0;O<P;O++)S(x[O])}else if(C===Map){P=x.size,P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,et.setUint32(E,P),E+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Ca.length;O<A;O++){let R=Ic[O];if(x instanceof R){let k=Ca[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,te=et,X=E;z=null;let q;try{q=k.pack.call(this,x,H=>(z=$,$=null,E+=H,E>Mr&&_(E),{target:z,targetView:et,position:E-H}),S)}finally{$&&(z=$,et=te,E=X,Mr=z.length-10)}q&&(q.length+E>Mr&&_(q.length+E),E=u0(q,z,E,k.type));return}}T(x,!x.hasOwnProperty)}}else if(N==="boolean")z[E++]=x?195:194;else if(N==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))z[E++]=211,et.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)z[E++]=207,et.setBigUint64(E,x);else if(this.largeBigIntToFloat)z[E++]=203,et.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(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)},T=this.useRecords===!1?this.variableMapSize?x=>{let N=Object.keys(x),P=N.length;P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,et.setUint32(E,P),E+=4);let C;for(let O=0;O<P;O++)S(C=N[O]),S(x[C])}:(x,N)=>{z[E++]=222;let P=E-t;E+=2;let C=0;for(let O in x)(N||x.hasOwnProperty(O))&&(S(O),S(x[O]),C++);z[P+++t]=C>>8,z[P+t]=C&255}:x=>{let N=Object.keys(x),P,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,k=N.length;R<k;R++){let $=N[R];P=C[$],P||(P=C[$]=Object.create(null),O++),C=P}let A=C[ss];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[ss]=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),v.length>=m&&(v.shift()[ss]=0),v.push(C),S(N))}for(let R=0,k=N.length;R<k;R++)S(x[N[R]])},_=x=>{let N;if(x>16777216){if(x-t>Gd)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(Gd,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(x-t<<2,z.length-1)>>12)+1<<12;let P=new Nc(N);return et=new DataView(P.buffer,0,N),z.copy?z.copy(P,0,t,x):P.set(z.slice(t,x)),E-=t,t=0,Mr=P.length-10,z=P}}useBuffer(r){z=r,et=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};Ic=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,is];Ca=[{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?Rd(n,16,r):Vd(Na?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==zd&&this.structuredClone?Rd(n,Cc.indexOf(e.name),r):Vd(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Rd(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 Vd(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 u0(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 d0(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 po(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)");Ic.unshift(n.Class),Ca.unshift(n)}Dd(n)}var Fd=new Do({useRecords:!1}),p0=Fd.pack,f0=Fd.pack;var{NEVER:m0,ALWAYS:h0,DECIMAL_ROUND:y0,DECIMAL_FIT:g0}=Oa,jd=512,x0=1024;var kd=new Do({structuredClone:!0});po({Class:Re.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Re.prototype),n}});po({Class:ge.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ge.prototype),n}});po({Class:ot.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ot.prototype),n}});po({Class:os.prototype.constructor,type:4,write(n){return n.id},read(n){return new os(n)}});po({Class:ns.prototype.constructor,type:5,write(n){return n.data},read(n){return new ns(n)}});po({Class:Ue.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ue.prototype),n}});function v0(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 Mc(n){if(un(n))return n;if(Array.isArray(n))return n.map(Mc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Mc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Ia;(t=>{function n(o){return kd.pack(o)}t.serialize=n;function r(o){return kd.unpack(o)}t.deserialize=r;function e(o){return v0(n(Mc(o))).toString()}t.checksum=e})(Ia||(Ia={}));var Ud;(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})(Ud||(Ud={}));var fo;(l=>{function n(c,d){return c[0]===d[0]&&c[1]===d[1]&&c[2]===d[2]}l.isEqual=n;function r(c,d){return[c[0]+d[0],c[1]+d[1],c[2]+d[2]]}l.add=r;function e(c,d){return[c[0]-d[0],c[1]-d[1],c[2]-d[2]]}l.sub=e;function t(c,d){return[c[0]/d[0],c[1]/d[1],c[2]/d[2]]}l.div=t;function o(c,d){return[c[0]*d[0],c[1]*d[1],c[2]*d[2]]}l.mul=o;function i(c,d){return Math.hypot(c[0]-d[0],c[1]-d[1],c[2]-d[2])}l.dist=i;function s(c,d,a){return[c[0]+(d[0]-c[0])*a,c[1]+(d[1]-c[1])*a,c[2]+(d[2]-c[2])*a]}l.lerp=s})(fo||(fo={}));var Hd;(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})(Hd||(Hd={}));var mo;(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,d=s.length;c<d;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})(mo||(mo={}));var Pt;(d=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}d.isRGB=n,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}d.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}d.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}d.fromHex=s;function l(a,u){return a.r===u.r&&a.g===u.g&&a.b===u.b}d.equals=l;function c(a,u,p){return{r:a.r+(u.r-a.r)*p,g:a.g+(u.g-a.g)*p,b:a.b+(u.b-a.b)*p}}d.lerp=c})(Pt||(Pt={}));var ur;(l=>{l.white={...Pt.white,a:1},l.transparent={...Pt.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,d){return{...Pt.fromHex(c),a:d}}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,d){return Pt.equals(c,d)&&c.a===d.a}l.equals=i;function s(c,d,a){return{r:c.r+(d.r-c.r)*a,g:c.g+(d.g-c.g)*a,b:c.b+(d.b-c.b)*a,a:c.a+(d.a-c.a)*a}}l.lerp=s})(ur||(ur={}));var Ma;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ma||(Ma={}));var Wd;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Wd||(Wd={}));var qd;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(qd||(qd={}));var dr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(dr||(dr={}));var Go;(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})(Go||(Go={}));var Lr;(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(b0.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;S0.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;w0.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;_0.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;T0.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;P0.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(Lr||(Lr={}));var Ea;(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})(Ea||(Ea={}));var b0=["count"],S0=["radius","start","end","position","scale","rotation"],w0=["position","scale","rotation"],_0=["count","size"],T0=["count","position","scale","rotation"],P0=["strength","scale","rotation","position","movement","seed","freqScale"];var La;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(La||(La={}));var Ba;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:ur.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:ur.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:ur.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ba||(Ba={}));var Ec;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Ec||(Ec={}));var Lc;(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})(Lc||(Lc={}));var Da;(r=>r.defaultData={...Lc.defaultData,...Ec.defaultData})(Da||(Da={}));var gn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(gn||(gn={}));var $d;(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})($d||($d={}));function Yd(n){return n.type!=="displace"}var Xd;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Xd||(Xd={}));var Kd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Zd=["wrapping","image","video"],Nt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let d=i.texture;d&&Object.assign(d,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",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};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1}}}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:gn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:Pt.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:{...Pt.fromHex(6710886),a:1},colorB:{...Pt.fromHex(6710886),a:1},colorC:{...Pt.fromHex(16777215),a:1},colorD:{...Pt.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:ur.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:ur.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:ur.fromHexAndA(0,1),contourColor:ur.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:{...Pt.fromHex(0),a:1},colorB:{...Pt.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}}}})(Nt||(Nt={}));var Dt;(c=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}c.isMergable=n;function r(d){let a="";return d.layers.forEach(u=>{Object.entries(u.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 ge}}c.defaultEmptyData=e;function t(d="layer1",a="layer2"){return i("phong",d,a)}c.defaultData=t;function o(d,a){return{...d,name:a}}c.withName=o;function i(d,a="layer1",u="layer2"){let p=new ge;return p.push({fi:0,data:Nt.defaultData("light",d),id:a}),p.push({fi:1,data:Nt.defaultData("color"),id:u}),{layers:p}}c.defaultTwoLayerData=i;function s(d,a="phong",u="layer1",p="layer2"){let f=Nt.defaultData("texture");Object.assign(f.texture,{image:d});let m=new ge;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:Nt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(d,a="phong",u="layer1",p="layer2"){let f=Nt.defaultData("video");Object.assign(f.texture,{video:d});let m=new ge;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:Nt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Dt||(Dt={}));var xn;(r=>{function n(){return{points:new ge,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(xn||(xn={}));var vn;(r=>{function n(){return{points:new ge,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(vn||(vn={}));var Bc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var Ga;(r=>{function n(e,t){let o={...e};return O0.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Ga||(Ga={}));var Ra={shape:Bc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},O0=["depth","offset","angle","twist","startScale","endScale"];var as;(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})(as||(as={}));var Va;(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,Ga.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Va||(Va={}));var ho;(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:vn.defaultData(),extrusion:Ra};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:xn.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})(ho||(ho={}));function Qd(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Zr(n,r){return Object.setPrototypeOf(n,r),n}function za(n){return Array.isArray(n)?n:[n]}function Jd(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 A0=typeof global=="object"&&global&&global.Object===Object&&global,Fa=A0;var C0=typeof self=="object"&&self&&self.Object===Object&&self,N0=Fa||C0||Function("return this")(),nt=N0;var I0=nt.Symbol,pt=I0;var ep=Object.prototype,M0=ep.hasOwnProperty,E0=ep.toString,ls=pt?pt.toStringTag:void 0;function L0(n){var r=M0.call(n,ls),e=n[ls];try{n[ls]=void 0;var t=!0}catch{}var o=E0.call(n);return t&&(r?n[ls]=e:delete n[ls]),o}var tp=L0;var B0=Object.prototype,D0=B0.toString;function G0(n){return D0.call(n)}var rp=G0;var R0="[object Null]",V0="[object Undefined]",op=pt?pt.toStringTag:void 0;function z0(n){return n==null?n===void 0?V0:R0:op&&op in Object(n)?tp(n):rp(n)}var $t=z0;function F0(n){return n!=null&&typeof n=="object"}var vt=F0;var j0="[object Symbol]";function k0(n){return typeof n=="symbol"||vt(n)&&$t(n)==j0}var bn=k0;function U0(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 ja=U0;var H0=Array.isArray,Ye=H0;var W0=1/0,np=pt?pt.prototype:void 0,ip=np?np.toString:void 0;function sp(n){if(typeof n=="string")return n;if(Ye(n))return ja(n,sp)+"";if(bn(n))return ip?ip.call(n):"";var r=n+"";return r=="0"&&1/n==-W0?"-0":r}var ap=sp;function q0(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Xt=q0;function $0(n){return n}var lp=$0;var X0="[object AsyncFunction]",Y0="[object Function]",K0="[object GeneratorFunction]",Z0="[object Proxy]";function Q0(n){if(!Xt(n))return!1;var r=$t(n);return r==Y0||r==K0||r==X0||r==Z0}var ka=Q0;var J0=nt["__core-js_shared__"],Ua=J0;var cp=function(){var n=/[^.]+$/.exec(Ua&&Ua.keys&&Ua.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function ex(n){return!!cp&&cp in n}var up=ex;var tx=Function.prototype,rx=tx.toString;function ox(n){if(n!=null){try{return rx.call(n)}catch{}try{return n+""}catch{}}return""}var Qr=ox;var nx=/[\\^$.*+?()[\]{}|]/g,ix=/^\[object .+?Constructor\]$/,sx=Function.prototype,ax=Object.prototype,lx=sx.toString,cx=ax.hasOwnProperty,ux=RegExp("^"+lx.call(cx).replace(nx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function dx(n){if(!Xt(n)||up(n))return!1;var r=ka(n)?ux:ix;return r.test(Qr(n))}var dp=dx;function px(n,r){return n?.[r]}var pp=px;function fx(n,r){var e=pp(n,r);return dp(e)?e:void 0}var Gt=fx;var mx=Gt(nt,"WeakMap"),Ha=mx;var fp=Object.create,hx=function(){function n(){}return function(r){if(!Xt(r))return{};if(fp)return fp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),mp=hx;function yx(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 hp=yx;function gx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var yp=gx;var xx=800,vx=16,bx=Date.now;function Sx(n){var r=0,e=0;return function(){var t=bx(),o=vx-(t-e);if(e=t,o>0){if(++r>=xx)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var gp=Sx;function wx(n){return function(){return n}}var xp=wx;var _x=function(){try{var n=Gt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Sn=_x;var Tx=Sn?function(n,r){return Sn(n,"toString",{configurable:!0,enumerable:!1,value:xp(r),writable:!0})}:lp,vp=Tx;var Px=gp(vp),bp=Px;function Ox(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Sp=Ox;var Ax=9007199254740991,Cx=/^(?:0|[1-9]\d*)$/;function Nx(n,r){var e=typeof n;return r=r??Ax,!!r&&(e=="number"||e!="symbol"&&Cx.test(n))&&n>-1&&n%1==0&&n<r}var wn=Nx;function Ix(n,r,e){r=="__proto__"&&Sn?Sn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Wa=Ix;function Mx(n,r){return n===r||n!==n&&r!==r}var _n=Mx;var Ex=Object.prototype,Lx=Ex.hasOwnProperty;function Bx(n,r,e){var t=n[r];(!(Lx.call(n,r)&&_n(t,e))||e===void 0&&!(r in n))&&Wa(n,r,e)}var Tn=Bx;function Dx(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):Tn(e,l,c)}return e}var Br=Dx;var wp=Math.max;function Gx(n,r,e){return r=wp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=wp(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),hp(n,this,l)}}var _p=Gx;var Rx=9007199254740991;function Vx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Rx}var Pn=Vx;function zx(n){return n!=null&&Pn(n.length)&&!ka(n)}var qa=zx;var Fx=Object.prototype;function jx(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Fx;return n===e}var On=jx;function kx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Tp=kx;var Ux="[object Arguments]";function Hx(n){return vt(n)&&$t(n)==Ux}var Dc=Hx;var Pp=Object.prototype,Wx=Pp.hasOwnProperty,qx=Pp.propertyIsEnumerable,$x=Dc(function(){return arguments}())?Dc:function(n){return vt(n)&&Wx.call(n,"callee")&&!qx.call(n,"callee")},An=$x;function Xx(){return!1}var Op=Xx;var Np=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ap=Np&&typeof module=="object"&&module&&!module.nodeType&&module,Yx=Ap&&Ap.exports===Np,Cp=Yx?nt.Buffer:void 0,Kx=Cp?Cp.isBuffer:void 0,Zx=Kx||Op,Ro=Zx;var Qx="[object Arguments]",Jx="[object Array]",ev="[object Boolean]",tv="[object Date]",rv="[object Error]",ov="[object Function]",nv="[object Map]",iv="[object Number]",sv="[object Object]",av="[object RegExp]",lv="[object Set]",cv="[object String]",uv="[object WeakMap]",dv="[object ArrayBuffer]",pv="[object DataView]",fv="[object Float32Array]",mv="[object Float64Array]",hv="[object Int8Array]",yv="[object Int16Array]",gv="[object Int32Array]",xv="[object Uint8Array]",vv="[object Uint8ClampedArray]",bv="[object Uint16Array]",Sv="[object Uint32Array]",je={};je[fv]=je[mv]=je[hv]=je[yv]=je[gv]=je[xv]=je[vv]=je[bv]=je[Sv]=!0;je[Qx]=je[Jx]=je[dv]=je[ev]=je[pv]=je[tv]=je[rv]=je[ov]=je[nv]=je[iv]=je[sv]=je[av]=je[lv]=je[cv]=je[uv]=!1;function wv(n){return vt(n)&&Pn(n.length)&&!!je[$t(n)]}var Ip=wv;function _v(n){return function(r){return n(r)}}var Cn=_v;var Mp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cs=Mp&&typeof module=="object"&&module&&!module.nodeType&&module,Tv=cs&&cs.exports===Mp,Gc=Tv&&Fa.process,Pv=function(){try{var n=cs&&cs.require&&cs.require("util").types;return n||Gc&&Gc.binding&&Gc.binding("util")}catch{}}(),Jr=Pv;var Ep=Jr&&Jr.isTypedArray,Ov=Ep?Cn(Ep):Ip,$a=Ov;var Av=Object.prototype,Cv=Av.hasOwnProperty;function Nv(n,r){var e=Ye(n),t=!e&&An(n),o=!e&&!t&&Ro(n),i=!e&&!t&&!o&&$a(n),s=e||t||o||i,l=s?Tp(n.length,String):[],c=l.length;for(var d in n)(r||Cv.call(n,d))&&!(s&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||wn(d,c)))&&l.push(d);return l}var Xa=Nv;function Iv(n,r){return function(e){return n(r(e))}}var Ya=Iv;var Mv=Ya(Object.keys,Object),Lp=Mv;var Ev=Object.prototype,Lv=Ev.hasOwnProperty;function Bv(n){if(!On(n))return Lp(n);var r=[];for(var e in Object(n))Lv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Bp=Bv;function Dv(n){return qa(n)?Xa(n):Bp(n)}var Nn=Dv;function Gv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Dp=Gv;var Rv=Object.prototype,Vv=Rv.hasOwnProperty;function zv(n){if(!Xt(n))return Dp(n);var r=On(n),e=[];for(var t in n)t=="constructor"&&(r||!Vv.call(n,t))||e.push(t);return e}var Gp=zv;function Fv(n){return qa(n)?Xa(n,!0):Gp(n)}var In=Fv;var jv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kv=/^\w*$/;function Uv(n,r){if(Ye(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||bn(n)?!0:kv.test(n)||!jv.test(n)||r!=null&&n in Object(r)}var Rp=Uv;var Hv=Gt(Object,"create"),eo=Hv;function Wv(){this.__data__=eo?eo(null):{},this.size=0}var Vp=Wv;function qv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var zp=qv;var $v="__lodash_hash_undefined__",Xv=Object.prototype,Yv=Xv.hasOwnProperty;function Kv(n){var r=this.__data__;if(eo){var e=r[n];return e===$v?void 0:e}return Yv.call(r,n)?r[n]:void 0}var Fp=Kv;var Zv=Object.prototype,Qv=Zv.hasOwnProperty;function Jv(n){var r=this.__data__;return eo?r[n]!==void 0:Qv.call(r,n)}var jp=Jv;var eb="__lodash_hash_undefined__";function tb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=eo&&r===void 0?eb:r,this}var kp=tb;function Mn(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])}}Mn.prototype.clear=Vp;Mn.prototype.delete=zp;Mn.prototype.get=Fp;Mn.prototype.has=jp;Mn.prototype.set=kp;var Rc=Mn;function rb(){this.__data__=[],this.size=0}var Up=rb;function ob(n,r){for(var e=n.length;e--;)if(_n(n[e][0],r))return e;return-1}var yo=ob;var nb=Array.prototype,ib=nb.splice;function sb(n){var r=this.__data__,e=yo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():ib.call(r,e,1),--this.size,!0}var Hp=sb;function ab(n){var r=this.__data__,e=yo(r,n);return e<0?void 0:r[e][1]}var Wp=ab;function lb(n){return yo(this.__data__,n)>-1}var qp=lb;function cb(n,r){var e=this.__data__,t=yo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var $p=cb;function En(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])}}En.prototype.clear=Up;En.prototype.delete=Hp;En.prototype.get=Wp;En.prototype.has=qp;En.prototype.set=$p;var go=En;var ub=Gt(nt,"Map"),xo=ub;function db(){this.size=0,this.__data__={hash:new Rc,map:new(xo||go),string:new Rc}}var Xp=db;function pb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Yp=pb;function fb(n,r){var e=n.__data__;return Yp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var vo=fb;function mb(n){var r=vo(this,n).delete(n);return this.size-=r?1:0,r}var Kp=mb;function hb(n){return vo(this,n).get(n)}var Zp=hb;function yb(n){return vo(this,n).has(n)}var Qp=yb;function gb(n,r){var e=vo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Jp=gb;function Ln(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])}}Ln.prototype.clear=Xp;Ln.prototype.delete=Kp;Ln.prototype.get=Zp;Ln.prototype.has=Qp;Ln.prototype.set=Jp;var Vo=Ln;var xb="Expected a function";function Vc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(xb);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(Vc.Cache||Vo),e}Vc.Cache=Vo;var ef=Vc;var vb=500;function bb(n){var r=ef(n,function(t){return e.size===vb&&e.clear(),t}),e=r.cache;return r}var tf=bb;var Sb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wb=/\\(\\)?/g,_b=tf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Sb,function(e,t,o,i){r.push(o?i.replace(wb,"$1"):t||e)}),r}),rf=_b;function Tb(n){return n==null?"":ap(n)}var of=Tb;function Pb(n,r){return Ye(n)?n:Rp(n,r)?[n]:rf(of(n))}var Jt=Pb;var Ob=1/0;function Ab(n){if(typeof n=="string"||bn(n))return n;var r=n+"";return r=="0"&&1/n==-Ob?"-0":r}var bo=Ab;function Cb(n,r){r=Jt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[bo(r[e++])];return e&&e==t?n:void 0}var Ka=Cb;function Nb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Bn=Nb;var nf=pt?pt.isConcatSpreadable:void 0;function Ib(n){return Ye(n)||An(n)||!!(nf&&n&&n[nf])}var sf=Ib;function af(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=sf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?af(l,r-1,e,t,o):Bn(o,l):t||(o[o.length]=l)}return o}var lf=af;function Mb(n){var r=n==null?0:n.length;return r?lf(n,1):[]}var cf=Mb;function Eb(n){return bp(_p(n,void 0,cf),n+"")}var Za=Eb;var Lb=Ya(Object.getPrototypeOf,Object),Dn=Lb;var Bb="[object Object]",Db=Function.prototype,Gb=Object.prototype,uf=Db.toString,Rb=Gb.hasOwnProperty,Vb=uf.call(Object);function zb(n){if(!vt(n)||$t(n)!=Bb)return!1;var r=Dn(n);if(r===null)return!0;var e=Rb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&uf.call(e)==Vb}var df=zb;function Fb(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 pf=Fb;function jb(){this.__data__=new go,this.size=0}var ff=jb;function kb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var mf=kb;function Ub(n){return this.__data__.get(n)}var hf=Ub;function Hb(n){return this.__data__.has(n)}var yf=Hb;var Wb=200;function qb(n,r){var e=this.__data__;if(e instanceof go){var t=e.__data__;if(!xo||t.length<Wb-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 gf=qb;function Gn(n){var r=this.__data__=new go(n);this.size=r.size}Gn.prototype.clear=ff;Gn.prototype.delete=mf;Gn.prototype.get=hf;Gn.prototype.has=yf;Gn.prototype.set=gf;var Rn=Gn;function $b(n,r){return n&&Br(r,Nn(r),n)}var xf=$b;function Xb(n,r){return n&&Br(r,In(r),n)}var vf=Xb;var _f=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bf=_f&&typeof module=="object"&&module&&!module.nodeType&&module,Yb=bf&&bf.exports===_f,Sf=Yb?nt.Buffer:void 0,wf=Sf?Sf.allocUnsafe:void 0;function Kb(n,r){if(r)return n.slice();var e=n.length,t=wf?wf(e):new n.constructor(e);return n.copy(t),t}var Tf=Kb;function Zb(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 Pf=Zb;function Qb(){return[]}var Qa=Qb;var Jb=Object.prototype,eS=Jb.propertyIsEnumerable,Of=Object.getOwnPropertySymbols,tS=Of?function(n){return n==null?[]:(n=Object(n),Pf(Of(n),function(r){return eS.call(n,r)}))}:Qa,Vn=tS;function rS(n,r){return Br(n,Vn(n),r)}var Af=rS;var oS=Object.getOwnPropertySymbols,nS=oS?function(n){for(var r=[];n;)Bn(r,Vn(n)),n=Dn(n);return r}:Qa,Ja=nS;function iS(n,r){return Br(n,Ja(n),r)}var Cf=iS;function sS(n,r,e){var t=r(n);return Ye(n)?t:Bn(t,e(n))}var el=sS;function aS(n){return el(n,Nn,Vn)}var us=aS;function lS(n){return el(n,In,Ja)}var tl=lS;var cS=Gt(nt,"DataView"),rl=cS;var uS=Gt(nt,"Promise"),ol=uS;var dS=Gt(nt,"Set"),nl=dS;var Nf="[object Map]",pS="[object Object]",If="[object Promise]",Mf="[object Set]",Ef="[object WeakMap]",Lf="[object DataView]",fS=Qr(rl),mS=Qr(xo),hS=Qr(ol),yS=Qr(nl),gS=Qr(Ha),zo=$t;(rl&&zo(new rl(new ArrayBuffer(1)))!=Lf||xo&&zo(new xo)!=Nf||ol&&zo(ol.resolve())!=If||nl&&zo(new nl)!=Mf||Ha&&zo(new Ha)!=Ef)&&(zo=function(n){var r=$t(n),e=r==pS?n.constructor:void 0,t=e?Qr(e):"";if(t)switch(t){case fS:return Lf;case mS:return Nf;case hS:return If;case yS:return Mf;case gS:return Ef}return r});var to=zo;var xS=Object.prototype,vS=xS.hasOwnProperty;function bS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&vS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Bf=bS;var SS=nt.Uint8Array,zn=SS;function wS(n){var r=new n.constructor(n.byteLength);return new zn(r).set(new zn(n)),r}var Fn=wS;function _S(n,r){var e=r?Fn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Df=_S;var TS=/\w*$/;function PS(n){var r=new n.constructor(n.source,TS.exec(n));return r.lastIndex=n.lastIndex,r}var Gf=PS;var Rf=pt?pt.prototype:void 0,Vf=Rf?Rf.valueOf:void 0;function OS(n){return Vf?Object(Vf.call(n)):{}}var zf=OS;function AS(n,r){var e=r?Fn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ff=AS;var CS="[object Boolean]",NS="[object Date]",IS="[object Map]",MS="[object Number]",ES="[object RegExp]",LS="[object Set]",BS="[object String]",DS="[object Symbol]",GS="[object ArrayBuffer]",RS="[object DataView]",VS="[object Float32Array]",zS="[object Float64Array]",FS="[object Int8Array]",jS="[object Int16Array]",kS="[object Int32Array]",US="[object Uint8Array]",HS="[object Uint8ClampedArray]",WS="[object Uint16Array]",qS="[object Uint32Array]";function $S(n,r,e){var t=n.constructor;switch(r){case GS:return Fn(n);case CS:case NS:return new t(+n);case RS:return Df(n,e);case VS:case zS:case FS:case jS:case kS:case US:case HS:case WS:case qS:return Ff(n,e);case IS:return new t;case MS:case BS:return new t(n);case ES:return Gf(n);case LS:return new t;case DS:return zf(n)}}var jf=$S;function XS(n){return typeof n.constructor=="function"&&!On(n)?mp(Dn(n)):{}}var kf=XS;var YS="[object Map]";function KS(n){return vt(n)&&to(n)==YS}var Uf=KS;var Hf=Jr&&Jr.isMap,ZS=Hf?Cn(Hf):Uf,Wf=ZS;var QS="[object Set]";function JS(n){return vt(n)&&to(n)==QS}var qf=JS;var $f=Jr&&Jr.isSet,e1=$f?Cn($f):qf,Xf=e1;var t1=1,r1=2,o1=4,Yf="[object Arguments]",n1="[object Array]",i1="[object Boolean]",s1="[object Date]",a1="[object Error]",Kf="[object Function]",l1="[object GeneratorFunction]",c1="[object Map]",u1="[object Number]",Zf="[object Object]",d1="[object RegExp]",p1="[object Set]",f1="[object String]",m1="[object Symbol]",h1="[object WeakMap]",y1="[object ArrayBuffer]",g1="[object DataView]",x1="[object Float32Array]",v1="[object Float64Array]",b1="[object Int8Array]",S1="[object Int16Array]",w1="[object Int32Array]",_1="[object Uint8Array]",T1="[object Uint8ClampedArray]",P1="[object Uint16Array]",O1="[object Uint32Array]",ze={};ze[Yf]=ze[n1]=ze[y1]=ze[g1]=ze[i1]=ze[s1]=ze[x1]=ze[v1]=ze[b1]=ze[S1]=ze[w1]=ze[c1]=ze[u1]=ze[Zf]=ze[d1]=ze[p1]=ze[f1]=ze[m1]=ze[_1]=ze[T1]=ze[P1]=ze[O1]=!0;ze[a1]=ze[Kf]=ze[h1]=!1;function il(n,r,e,t,o,i){var s,l=r&t1,c=r&r1,d=r&o1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Xt(n))return n;var a=Ye(n);if(a){if(s=Bf(n),!l)return yp(n,s)}else{var u=to(n),p=u==Kf||u==l1;if(Ro(n))return Tf(n,l);if(u==Zf||u==Yf||p&&!o){if(s=c||p?{}:kf(n),!l)return c?Cf(n,vf(s,n)):Af(n,xf(s,n))}else{if(!ze[u])return o?n:{};s=jf(n,u,l)}}i||(i=new Rn);var f=i.get(n);if(f)return f;i.set(n,s),Xf(n)?n.forEach(function(y){s.add(il(y,r,e,y,n,i))}):Wf(n)&&n.forEach(function(y,g){s.set(g,il(y,r,e,g,n,i))});var m=d?c?tl:us:c?In:Nn,h=a?void 0:m(n);return Sp(h||n,function(y,g){h&&(g=y,y=n[g]),Tn(s,g,il(y,r,e,g,n,i))}),s}var sl=il;var A1=1,C1=4;function N1(n){return sl(n,A1|C1)}var ro=N1;var I1="__lodash_hash_undefined__";function M1(n){return this.__data__.set(n,I1),this}var Qf=M1;function E1(n){return this.__data__.has(n)}var Jf=E1;function al(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Vo;++r<e;)this.add(n[r])}al.prototype.add=al.prototype.push=Qf;al.prototype.has=Jf;var em=al;function L1(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 tm=L1;function B1(n,r){return n.has(r)}var rm=B1;var D1=1,G1=2;function R1(n,r,e,t,o,i){var s=e&D1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var d=i.get(n),a=i.get(r);if(d&&a)return d==r&&a==n;var u=-1,p=!0,f=e&G1?new em:void 0;for(i.set(n,r),i.set(r,n);++u<l;){var m=n[u],h=r[u];if(t)var y=s?t(h,m,u,r,n,i):t(m,h,u,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!tm(r,function(g,v){if(!rm(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 ll=R1;function V1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var om=V1;function z1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var nm=z1;var F1=1,j1=2,k1="[object Boolean]",U1="[object Date]",H1="[object Error]",W1="[object Map]",q1="[object Number]",$1="[object RegExp]",X1="[object Set]",Y1="[object String]",K1="[object Symbol]",Z1="[object ArrayBuffer]",Q1="[object DataView]",im=pt?pt.prototype:void 0,zc=im?im.valueOf:void 0;function J1(n,r,e,t,o,i,s){switch(e){case Q1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Z1:return!(n.byteLength!=r.byteLength||!i(new zn(n),new zn(r)));case k1:case U1:case q1:return _n(+n,+r);case H1:return n.name==r.name&&n.message==r.message;case $1:case Y1:return n==r+"";case W1:var l=om;case X1:var c=t&F1;if(l||(l=nm),n.size!=r.size&&!c)return!1;var d=s.get(n);if(d)return d==r;t|=j1,s.set(n,r);var a=ll(l(n),l(r),t,o,i,s);return s.delete(n),a;case K1:if(zc)return zc.call(n)==zc.call(r)}return!1}var sm=J1;var ew=1,tw=Object.prototype,rw=tw.hasOwnProperty;function ow(n,r,e,t,o,i){var s=e&ew,l=us(n),c=l.length,d=us(r),a=d.length;if(c!=a&&!s)return!1;for(var u=c;u--;){var p=l[u];if(!(s?p in r:rw.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;++u<c;){p=l[u];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 am=ow;var nw=1,lm="[object Arguments]",cm="[object Array]",cl="[object Object]",iw=Object.prototype,um=iw.hasOwnProperty;function sw(n,r,e,t,o,i){var s=Ye(n),l=Ye(r),c=s?cm:to(n),d=l?cm:to(r);c=c==lm?cl:c,d=d==lm?cl:d;var a=c==cl,u=d==cl,p=c==d;if(p&&Ro(n)){if(!Ro(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Rn),s||$a(n)?ll(n,r,e,t,o,i):sm(n,r,c,e,t,o,i);if(!(e&nw)){var f=a&&um.call(n,"__wrapped__"),m=u&&um.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Rn),o(h,y,e,t,i)}}return p?(i||(i=new Rn),am(n,r,e,t,o,i)):!1}var dm=sw;function pm(n,r,e,t,o){return n===r?!0:n==null||r==null||!vt(n)&&!vt(r)?n!==n&&r!==r:dm(n,r,e,t,pm,o)}var fm=pm;function aw(n,r){return n!=null&&r in Object(n)}var mm=aw;function lw(n,r,e){r=Jt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=bo(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&&Pn(o)&&wn(s,o)&&(Ye(n)||An(n)))}var hm=lw;function cw(n,r){return n!=null&&hm(n,r,mm)}var ym=cw;function uw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var gm=uw;function dw(n,r){return r.length<2?n:Ka(n,pf(r,0,-1))}var xm=dw;function pw(n,r){return fm(n,r)}var ds=pw;function fw(n,r){return r=Jt(r,n),n=xm(n,r),n==null||delete n[bo(gm(r))]}var vm=fw;function mw(n){return df(n)?void 0:n}var bm=mw;var hw=1,yw=2,gw=4,xw=Za(function(n,r){var e={};if(n==null)return e;var t=!1;r=ja(r,function(i){return i=Jt(i,n),t||(t=i.length>1),i}),Br(n,tl(n),e),t&&(e=sl(e,hw|yw|gw,bm));for(var o=r.length;o--;)vm(e,r[o]);return e}),jn=xw;function vw(n,r,e,t){if(!Xt(n))return n;r=Jt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=bo(r[o]),d=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];d=t?t(a,c,l):void 0,d===void 0&&(d=Xt(a)?a:wn(r[o+1])?[]:{})}Tn(l,c,d),l=l[c]}return n}var Sm=vw;function bw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Ka(n,s);e(l,s)&&Sm(i,Jt(s,n),l)}return i}var wm=bw;function Sw(n,r){return wm(n,r,function(e,t){return ym(n,t)})}var _m=Sw;var ww=Za(function(n,r){return n==null?{}:_m(n,r)}),kn=ww;var Tm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Tm||(Tm={}));var Un;(o=>{o.identity={...Ma.identity,hiddenMatrix:mo.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 Qd({position:fo.isEqual(i.position,s.position)?void 0:s.position,rotation:fo.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:fo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:mo.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Un||(Un={}));var Pm;(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]})(Pm||(Pm={}));var Yt;(r=>r.defaultData={states:new ge,events:new ge,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Un.identity,cloner:null})(Yt||(Yt={}));var Om;(r=>r.defaultData={type:"Empty",...Yt.defaultData})(Om||(Om={}));var Am;(r=>r.defaultData={type:"Component",...Yt.defaultData})(Am||(Am={}));var Fo;(r=>r.defaultData={type:"Mesh",...Yt.defaultData,...Da.defaultData})(Fo||(Fo={}));var Hn;(r=>r.defaultData={...Yt.defaultData,...Un.identity,...Go.defaultData})(Hn||(Hn={}));var Cm;(r=>{function n(e){return{...Yt.defaultData,...Ba.defaultData(e)}}r.defaultData=n})(Cm||(Cm={}));var Wn;(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})(Wn||(Wn={}));var So;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Yt.defaultData,...l,component:s,overrides:new Ue,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Un.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(So||(So={}));var Nm;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:mo.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new ge,events:new ge,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Go.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",...Yt.defaultData,...Fo.defaultData,geometry:ho.defaultData("RectangleGeometry"),material:Dt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Yt.defaultData,...Fo.defaultData,geometry:ho.defaultData("BooleanGeometry"),material:Dt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Yt.defaultData,...Fo.defaultData,geometry:ho.defaultData("TextGeometry"),material:Dt.defaultTwoLayerData("phong","layer1","layer2")}))(Nm||(Nm={}));var jo;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Ue}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Ue})))):dr.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=hn(l.material,c=>{if(typeof c!="string")for(let[d,a]of Object.entries(s.material.layers)){let u=c.layers.data(d);u&&Nt.patch(u,a)}}).data),l.materials&&s.materials&&(l.materials=hn(l.materials,c=>{for(let d=0;d<l.materials.length;d++){let a=s.materials[d];if(typeof a!="string")for(let[u,p]of Object.entries(a.layers)){let f=c[d]?.layers?.data(u);f&&Nt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],d={orthographic:0,perspective:0,geometry:0};function a(u,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:[...u,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};c.push(g)}}}for(let[u,p]of Object.entries(s))if(u!=="name")if(u==="cloner")c.push(...Ea.toOps(p,["cloner"]));else if(u==="pathSnapping")c.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")a(["material"],p);else if(u==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,Un.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})}),dr.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:Va.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Lr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:Lr.merge(l.cloner,s.cloner)});else if(La.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=Pt.clone(c.color))}return l}o.patch=t})(jo||(jo={}));var qn;(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})(qn||(qn={}));var ul;(r=>r.defaultData={orbitControls:qn.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})(ul||(ul={}));var $n;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})($n||($n={}));var dl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Zr(o,Re.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...$n.emptyImage,name:"AI generated image"}),Zr(i,Re.prototype)}t.defaultImages=r;function e(){return{materials:new Re,images:new Re,videos:new Re,colors:new Re,audios:new Re,fonts:new Re,penumbraSize:[2,2,2]}}t.emptyData=e})(dl||(dl={}));var hs=require("three");function Im(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={...kn(ut(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={...ut(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function fs(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function ms(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 _w(n){Object.assign(n.scene.publish,{orbitControls:{...qn.defaultData,...ut(n.scene.publish.orbitControls)}})}function Tw(n){Object.assign(n.scene.publish.settings,{video:{...ul.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function Pw(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((Kd.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Zd.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 Ow(n){n.scene.publish.withBackground=!0}function Aw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Cw(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 Nw(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 Iw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=ut(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=ut(e).booleanExclude!==!0)}})}function Mw(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 Ew(n){function r(t){Object.setPrototypeOf(t,Ue.prototype),t.texture&&Object.setPrototypeOf(t.texture,Ue.prototype)}function e(t){Object.setPrototypeOf(t,Ue.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=ut(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],d=ut(c).layers;e(d),c.layers=d}})})}function Mm(n){n.layers===void 0&&Object.assign(n,Dt.defaultTwoLayerData("lambert"))}function Fc(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={...ut(r),colors:e,steps:t};Object.assign(r,o)}})}function Lw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Em(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Fc(t)}):"material"in e&&typeof e.material!="string"&&Fc(e.material)}),Object.values(n.shared.materials).forEach(r=>Fc(r))}function Bw(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 Dw(n){n.shared.audios=Zr({},Re.prototype)}function Gw(n){n.shared.videos=Zr({},Re.prototype)}function Rw(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 Vw(n){Object.entries(ut(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(ut(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function zw(n){n.scene.publish.settings.web.preload=!1}function Lm(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 Bm(n){n.layers&&n.layers.forEach(r=>{Yd(r)&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle=0,r.highCut=1,r.lowCut=0,r.smoothness=.3,r.seed=0,r.quality=1)})}function Fw(n){n.shared.fonts=Zr({},Re.prototype)}function jw(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 kw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Dt.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=jw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Yt.defaultData,...Fo.defaultData,flatShading:!1,wireframe:!1,geometry:{...ho.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:ut(o.states),events:ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function Uw(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 ge,move:new ge,jump:new ge}});else{let i=new ge;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:hs.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let d={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,kn(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let u={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,...u,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ge({fi:0,id:hs.MathUtils.generateUUID(),data:d},{fi:1,id:hs.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Hw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ge,l=[];if(e.events.forEach((c,d,a)=>{if(c.type==="Audio"&&c.trigger===i){let u;l.push(d),c.interaction==="play"?u={...kn(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")&&(u={...kn(c,"interaction","delay","object","playAudio"),type:"Audio"}),u&&s.push({fi:a,id:d,data:u})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(d=>d.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:hs.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Dm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Nt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Gm(n){fs(n,Dm),ms(n,Dm)}function Ww(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function qw(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 $w(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Dt.defaultTwoLayerData("phong"))})}function Xw(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 Yw(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 Kw(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 Zw(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function Qw(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function Jw(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Rm=38;function Vm(n){let r=n.schema??0;r!==Rm&&(console.warn("updating from ",r,"to ",Rm),r<1&&(ms(n,Im),fs(n,Im),n.schema=1),r<2&&(_w(n),n.schema=2),r<3&&(Pw(n),n.schema=3),r<4&&(Ow(n),n.schema=4),r<5&&(Aw(n),n.schema=5),r<6&&(Cw(n),n.schema=6),r<7&&(Nw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Em(n),n.schema=9),r<10&&(Lw(n),n.schema=10),r<11&&(Bw(n),n.schema=11),r<12&&(Em(n),n.schema=12),r<13&&(Dw(n),n.schema=13),r<14&&(Rw(n),n.schema=14),r<15&&(Vw(n),n.schema=15),r<16&&(zw(n),n.schema=16),r<17&&(ms(n,Lm),fs(n,Lm),n.schema=17),r<18&&(ms(n,Mm),fs(n,Mm),n.schema=18),r<19&&(Tw(n),n.schema=19),r<20&&(Fw(n),kw(n),n.schema=20),r<21&&(Uw(n),Hw(n),n.schema=21),r<22&&(Gm(n),n.schema=22),r<23&&(Ww(n),n.schema=23),r<24&&(qw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Gw(n),r<25&&(n.schema=25)),r<26&&(Iw(n),n.schema=26),r<27&&(Mw(n),n.schema=27),r<28&&(Gm(n),n.schema=28),r<29&&(Ew(n),n.schema=29),r<30&&($w(n),n.schema=30),r<31&&(Xw(n),n.schema=31),r<33&&(Yw(n),n.schema=33),r<34&&(Kw(n),n.schema=34),r<35&&(Zw(n),n.schema=35),r<36&&(Qw(n),n.schema=36),r<37&&(Jw(n),n.schema=37),r<38&&(ms(n,Bm),fs(n,Bm),n.schema=38))}var Me=require("three"),Hi=ln(Fm());var e_=.5*(Math.sqrt(3)-1),gs=(3-Math.sqrt(3))/6,t_=1/3,Dr=1/6,CB=(Math.sqrt(5)-1)/4,NB=(5-Math.sqrt(5))/20,xs=n=>Math.floor(n)|0,jm=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 pl(n=Math.random){let r=Um(n),e=new Float64Array(r).map(o=>jm[o%12*2]),t=new Float64Array(r).map(o=>jm[o%12*2+1]);return function(i,s){let l=0,c=0,d=0,a=(i+s)*e_,u=xs(i+a),p=xs(s+a),f=(u+p)*gs,m=u-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+gs,S=g-b+gs,T=y-1+2*gs,_=g-1+2*gs,x=u&255,N=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[N],R=e[A],k=t[A];P*=P,l=P*P*(R*y+k*g)}let C=.5-w*w-S*S;if(C>=0){let A=x+v+r[N+b],R=e[A],k=t[A];C*=C,c=C*C*(R*w+k*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[N+1],R=e[A],k=t[A];O*=O,d=O*O*(R*T+k*_)}return 70*(l+c+d)}}function km(n=Math.random){let r=Um(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 d,a,u,p,f=(s+l+c)*t_,m=xs(s+f),h=xs(l+f),y=xs(c+f),g=(m+h+y)*Dr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,N,P,C,O,A;S>=T?T>=_?(x=1,N=0,P=0,C=1,O=1,A=0):S>=_?(x=1,N=0,P=0,C=1,O=0,A=1):(x=0,N=0,P=1,C=1,O=0,A=1):T<_?(x=0,N=0,P=1,C=0,O=1,A=1):S<_?(x=0,N=1,P=0,C=0,O=1,A=1):(x=0,N=1,P=0,C=1,O=1,A=0);let R=S-x+Dr,k=T-N+Dr,$=_-P+Dr,te=S-C+2*Dr,X=T-O+2*Dr,q=_-A+2*Dr,H=S-1+3*Dr,V=T-1+3*Dr,G=_-1+3*Dr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)d=0;else{let M=B+r[L+r[D]];Y*=Y,d=Y*Y*(e[M]*S+t[M]*T+o[M]*_)}let W=.6-R*R-k*k-$*$;if(W<0)a=0;else{let M=B+x+r[L+N+r[D+P]];W*=W,a=W*W*(e[M]*R+t[M]*k+o[M]*$)}let F=.6-te*te-X*X-q*q;if(F<0)u=0;else{let M=B+C+r[L+O+r[D+A]];F*=F,u=F*F*(e[M]*te+t[M]*X+o[M]*q)}let j=.6-H*H-V*V-G*G;if(j<0)p=0;else{let M=B+1+r[L+1+r[D+1]];j*=j,p=j*j*(e[M]*H+t[M]*V+o[M]*G)}return 32*(d+a+u+p)}}function Um(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 Hm=require("three"),fr=new Hm.Triangle,fl=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;fr.a.fromBufferAttribute(r,o),fr.b.fromBufferAttribute(r,o+1),fr.c.fromBufferAttribute(r,o+2),i*=fr.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),fr.a.fromBufferAttribute(this.positionAttribute,r*3),fr.b.fromBufferAttribute(this.positionAttribute,r*3+1),fr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(fr.a,o).addScaledVector(fr.b,i).addScaledVector(fr.c,1-(o+i)),fr.getNormal(t),this}};var Xm=require("three");var er=require("three"),$m=ln(qm()),r_=new er.Matrix4,o_=new er.Matrix4,n_=new er.Matrix4,vs;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(vs||(vs={}));var Xn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new er.Matrix4;this.matrixWorldRigid=new er.Matrix4;this.shearScale=new er.Matrix4;this.shearScaleInv=new er.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof er.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)vs.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,$m.SVD)(o),c=r_.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),d=o_.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=n_.copy(d).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(u=>Math.abs(l[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new er.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 er.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}};var Uc=class extends Xn(Xm.Object3D){},i_=n=>n.type==="Mesh",oo=class extends Uc{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 oo(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 i_(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 mi=require("three");var El=require("three");var no=require("three");var Ke=require("three"),ko=new Ke.Vector3,Uo=new Ke.Vector3,Yn=new Ke.Matrix4,Km=[new Ke.Vector3(-1,1,1),new Ke.Vector3(-1,-1,1),new Ke.Vector3(1,-1,1),new Ke.Vector3(1,1,1),new Ke.Vector3(-1,1,-1),new Ke.Vector3(-1,-1,-1),new Ke.Vector3(1,-1,-1),new Ke.Vector3(1,1,-1)],s_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],a_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Ym=(n,r,e)=>{n.updateEntityBoxSize(ko,Uo),Yn.copy(r).multiply(n.matrixWorld),Uo.x===0&&Uo.y===0&&Uo.z===0?e.push(new Ke.Vector3(ko.x,ko.y,ko.z).applyMatrix4(Yn)):Km.forEach(t=>{e.push(t.clone().multiply(Uo).add(ko).applyMatrix4(Yn))})},bs=class extends Ke.Box3{constructor(){super(...arguments);this.matrix=new Ke.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 Ke.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 Ke.Vector3);return}Ym(s,t,i)}}):Ym(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(Yn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Uo).multiplyScalar(.5),this.getCenter(ko),Yn.copy(this.matrix).setPosition(ko),this.vertices=Km.map(e=>e.clone().multiply(Uo).applyMatrix4(Yn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=s_.map(([e,t])=>new Ke.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ke.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=a_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var mr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var ft=require("three"),Wc=class extends ft.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 d=c[l],a=l===0?o[l]:o[l]-o[l-1],u=Math.ceil(r*a/s),p=d.getPoints(u);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 qc=.001;function $c(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=qc}function Hc(n,r){let e=new ft.Vector3(...n.position),t=new ft.Vector3(...n.controlNext.position),o=new ft.Vector3(...r.controlPrevious.position),i=new ft.Vector3(...r.position);return $c(e,t,i)&&$c(e,o,i)}function hl(n){let r=n.points.map(a=>new ft.Vector3(...a.data.position)),e=[n.points[0]],t=new ft.Vector3(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)$c(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 u=e[a].data,p=new ft.Vector3(...u.position),f=new ft.Vector3(...u.controlPrevious.position),m=new ft.Vector3(...u.controlNext.position),h={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:m};if(u.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 ft.Vector3(...v.position),S=new ft.Vector3(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Hc(v,u),N=Hc(u,b);if(!x||!N)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),C=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:C,removedLength:u.roundness/C}}}for(let a=0;a<i;a++){let u=a,p=o&&a===s-1?0:a+1,f=l[u],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 u=a,p=o&&a===s-1?0:a+1,f=l[u],m=l[p],h=null;if(!Hc(e[u].data,e[p].data))f.position.distanceTo(m.position)>qc&&(h=new ft.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)>qc&&(h=new ft.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 u=l[a];if(u.removedLength===0){c[2*a]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),m=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),h=u.tan*u.removedLength,y=u.prevDir.clone().add(u.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),T=u.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),N=m.clone().lerp(_,4/3);c[2*a]=new ft.CubicBezierCurve3(f,x,N,m)}let d=new Wc;return c.forEach(a=>{a&&d.add(a)}),d}var De;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(De||(De={}));var Ss=n=>De.is(n),l_={type:"completeState",isfromEntity:!0},yl=n=>class extends Xn(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 bs;this._recursiveBBox=new bs;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(De.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(De.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)jo.toOps(this.data,s.data).forEach(c=>{let d=ya.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=jo.patch(this.data,s),jo.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=>{Ss(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(De.is(o[i]))return o[i];if(De.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&De.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)Ss(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{De.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ss(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ss(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=>Ss(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 jn(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??mo.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)De.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{De.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return jn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,d=cr(t.path,["states","*"]);if(d!==null){if(t.type===0){let[a]=d;if(this?.stateSelection===a){let u={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=At.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(u[m]=f[m])}}c={...t,props:u,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 u=At.removeOverridden(t.path,t.props,a);c={...t,props:u}}}if(this.updateByPatchedOpBase(c,jo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),cr(t.path,["overrides"])){let a=[],u=[...t.path];for(a.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)a.push(u[1]),u.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(Yr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=At.zoom(p.component.data,u);if(t={...t,path:u},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=Wn.resolve(o.overrides,a),p.updateByOp(t,xt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let u;for(let p of So.rootOverrideProps)p in t.props&&(u===void 0&&(u={}),u[p]=t.props[p]);u&&(a={...t,props:u})}else for(let u of So.rootOverrideProps)if(cr(t.path,[u])){a=t;break}a!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Yr.filterOp(u.overrideData,a);p&&u.updateByOp(p,xt.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Yr.filterOp(u.overrideData,t);if(p){let f;l===u.data&&t===p?f=o:f=xt.applySimple(u.data,p),u.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&&!dr.is(t.props.type)&&mr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){mr.changeEntityProptotype(this,o,i);for(let s of this.children)De.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),cr(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),cr(t.path,["cloner"])!==null){let s=xt.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 d=c.data,a=hl(d.geometry.path),u=(i+s)%1;i+s===1&&u===0&&(u=1);let p=a.getPointAt(u),f=this.parent?this.parent?.matrixWorld:new no.Matrix4;c.updateMatrixWorld();let m=new no.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:d.rotation};if(l==="tangential"){let y=new no.Matrix4().extractRotation(c.matrixWorld),g=a.getTangentAt(u).applyMatrix4(y).add(p),v=new no.Matrix4().lookAt(p,g,new no.Vector3(0,1,0)),b=new no.Euler().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(l_)})}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 mr.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 mr.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 Jm=require("three");var ke=require("three"),Qm=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:d,radiusBottom:a,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,m;return u||f?m=new ws(d,a,t,o,i,s,l,c*Math.PI/180,u,u,p,f):m=new ke.CylinderGeometry(d,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function wo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Zm(n){return new ke.Vector2(n.y,-n.x)}var ws=class extends ke.BufferGeometry{constructor(r,e,t,o,i,s,l,c,d,a,u,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&&(d=0,a=0);let m=[],h=[],y=[],g=[],v=0,b=t/2,w=new ke.Vector3,S=new ke.Vector3;f&&r==0&&(r=d),f&&e==0&&(e=a);let T=new ke.Vector2(r,b),_=new ke.Vector2(e,-b),x=null,N=null,P=null,C=null,O=T.clone().sub(_),A=0,R=0,k=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,k=e-A);let $=T.clone();$.x-=A;let te=Math.PI-O.angle(),X=O.angle(),q=Math.tan(X/2),H=Math.tan(te/2),V=q+H,G=p?V:H,B=p?V:q;if(d=Math.min(d,(r-R)/G,O.length()/V),a=Math.min(a,(e-k)/B,O.length()/V),d>0){let j=d/q;x=T.clone().sub(new ke.Vector2(j,d)),p&&(P=x.clone(),P.x-=A-V*d),T.sub(O.clone().setLength(j))}if(a>0){let j=a/H;N=_.clone().sub(new ke.Vector2(j,-a)),_.add(O.clone().setLength(j)),p&&(C=N.clone(),C.x-=A-V*a,$.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let j=0;j<=o;j++){let M=[],Q=j/o,re=Q*c+l,oe=new ke.Vector2(Math.sin(re),Math.cos(re));C&&N?(Y(M,Q,oe,te,a,C,-1,!0),Y(M,Q,oe,X,a,N,-1,!1)):N?(W(M,oe,N.x,0,-1),Y(M,Q,oe,X,a,N,-1,!1)):s||W(M,oe,e,k,-1);let K=Zm(O).normalize();if(wo(K,oe,w),!L)for(let ee=0;ee<=i;ee++){let J=ee/i,se=O.clone().multiplyScalar(J).add(_);wo(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(P&&x?(Y(M,Q,oe,te,d,x,1,!1),Y(M,Q,oe,X,d,P,1,!0)):x?(Y(M,Q,oe,te,d,x,1,!1),W(M,oe,x.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let ee=Zm(O).multiplyScalar(-1).normalize();wo(ee,oe,w);for(let J=0;J<=i;J++){let se=J/i,ue=O.clone().multiplyScalar(-se).add($);wo(ue,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 j=0;j<D.length-1;j++)for(let M=0;M<D[0].length-1;M++){if(s&&p&&M==i)continue;let Q=D[j][M],re=D[j+1][M],oe=D[j+1][M+1],K=D[j][M+1],ee=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(ee!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new ke.Float32BufferAttribute(h,3)),this.setAttribute("normal",new ke.Float32BufferAttribute(y,3)),this.setAttribute("uv",new ke.Float32BufferAttribute(g,2));function Y(j,M,Q,re,oe,K,ee,J){for(let se=0;se<u+1;se++){let ue=se/u,ae=ee<0?ue:1-ue;J&&(ae-=1),ae*=re;let me=new ke.Vector2(Math.sin(ae),Math.cos(ae)*ee),$e=me.clone().multiplyScalar(oe).add(K);wo($e,Q,S),h.push(S.x,S.y,S.z),wo(me,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),j.push(v++)}}function W(j,M,Q,re,oe){let K=new ke.Vector3,ee=new ke.Vector2,J=[Q,re];oe<0&&J.reverse();for(let se of J)ee.set(se,b*oe),wo(ee,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),j.push(v++)}function F(j,M,Q){let re=new ke.Vector2(Math.sin(Q),Math.cos(Q)),oe=new ke.Vector2(-Math.cos(Q),Math.sin(Q)),K=new ke.Vector3,ee=j<0?(ue,ae,me)=>m.push(ue,ae,me):(ue,ae,me)=>m.push(ue,me,ae),J=new ke.Vector2((r+e+R+k)/4,0);wo(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 ue of M){let ae=h.slice(ue*3,ue*3+3);h.push(...ae),y.push(oe.x,0,oe.y);let me=g.slice(ue*2,ue*2+2);g.push(...me),v++}for(let ue=se+1;ue<v-1;ue++)ee(se,ue,ue+1);ee(se,v-1,se+1)}}};var eh=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:d,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,p;return d>0||a>0||c<360?p=new ws(0,r/2,t,o,i,s,l,c*Math.PI/180,d,a,u,0,!0):p=new Jm.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Rt=require("three"),th=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,d;return l==0?d=new Rt.BoxGeometry(r,e,t,o,i,s):d=new Yc(r,e,t,o,i,s,l,c),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},Xc=Math.PI/2,Yc=class extends Rt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let d=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=[],u=[],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 Rt.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Rt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Rt.Float32BufferAttribute(f,2));function y(b,w,S,T,_,x,N,P,C,O,A){let R=(x-2*l)/C,k=(N-2*l)/O,$=x/2-l,te=N/2-l,X=P/2,q=C+1,H=O+1,V=0,G=0,B=new Rt.Vector3;for(let L=0;L<H;L++){let D=L*k-te;for(let Y=0;Y<q;Y++){let W=Y*R-$;B[b]=W*T,B[w]=D*_,B[S]=X,u.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(Y/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<C;D++){let Y=m+D+q*L,W=m+D+q*(L+1),F=m+(D+1)+q*(L+1),j=m+(D+1)+q*L;a.push(Y,W,j),a.push(W,F,j),G+=6}d.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,N,P,C,O,A){let R=(N-2*l)/O,k=N/2-l,$=P/2-l,te=C/2,X=O+1,q=0,H=0,V=new Rt.Vector3,G=new Rt.Vector3;for(let B=0;B<c+1;B++){let L=B/c*Xc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,W=Math.sin(L),F=Math.cos(L);V[w]=($+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let j=0;j<X;j++){let M=j*R-k;V[b]=M*T,u.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(j/O),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+X*B,Y=m+L+X*(B+1),W=m+(L+1)+X*(B+1),F=m+(L+1)+X*B;a.push(D,Y,F),a.push(Y,W,F),H+=6}d.addGroup(h,H,A),h+=H,m+=q}function v(b,w,S){let T=new Rt.Vector3,_=new Rt.Vector3(r/2,e/2,t/2);_.subScalar(l);let x=[],N=b*w*S>0?(C,O,A)=>a.push(C,O,A):(C,O,A)=>a.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=Xc*(1-C/c),R=Math.cos(A),k=Math.sin(A),$=0;for(let te=0;te<=C;te++){let X=Math.cos($),q=Math.sin($);T.x=R*X,T.y=k,T.z=R*q;let H=_.clone().addScaledVector(T,l);u.push(b*H.x,w*H.y,S*H.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),$+=Xc/C}x.push(O)}let P=x.length-1;for(let C=0;C<P;C++){let O=x[C],A=x[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let k=1;k<=R;k++)N(O[k-1],O[k],A[k]),N(O[k],A[k+1],A[k])}}}};var Ze=require("three"),_o=class extends Ze.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],d=[];a(),u(),this.setAttribute("position",new Ze.Float32BufferAttribute(l,3)),this.setAttribute("normal",new Ze.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Ze.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 Ze.Vector3,h=m.clone(),y=new Ze.Triangle,g=i*o,v=o-g,b=s+1,w=new Ze.Vector3,S=(q,H)=>w.subVectors(q,H).normalize(),T=(q,H)=>Array(q).fill(void 0).map(H),_=T(r.length/3,(q,H)=>new Ze.Vector3().fromArray(r,H*3).setLength(o)),x=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(q,Y+1))!=-1;){let M=Y-Y%3;G=e[M+(Y+1)%3],B=e[M+(Y+2)%3],L=H.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let W=[],F=0,j=V.length;for(let M=0;M<j;M++){[G,B,L]=V[F];let Q=x[G]?.includes(q)==!0;L<=D&&W.push(G+ +Q*N),F=V.findIndex(re=>re[0]==B)}x.push(W)}let P=[];{let q=0,H=0,V,G,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[q,H]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[H,V]:[q,G],H,q),[V,G]=[q,H];P.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),k=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(v);let H=x[q];for(let W=0;W<H.length;W++){let F=H[W],j=H[(W+1)%f];y.setFromPointsAndIndices(_,q,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,te[q][W])}let V=[],G=[],B=[],L=new Ze.Vector3;s==0&&[...te[q]].reduce((W,F)=>W.add(F),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let F=[],j=(W-1+f)%f,M=te[q][j],Q=te[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(v+K),G.push(K);let ee=[O,M,Q];for(let J=0;J<2;J++){let se=ee[J],ue=ee[J+1];R.subVectors(se,C),k.subVectors(ue,C),A.crossVectors(R,k).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),F.push([ae==0?se:m.clone(),w.clone()]))}J&&(S(ue,C),F.push([ue,w.clone()]))}B.push(F)}$.push(B);let D=2*b,Y=2;for(let W=0;W<f;W++){let F=D*W,j=D*((W+1)%f),M=[V[F]];for(let re=1;re<b;re++){R=V[F+re],k=V[j+re],M.push(R);for(let oe=1,K=re-Y+1;oe<=K;oe++)m.lerpVectors(R,k,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(k)}for(let re=0;re<b;re++)M.push(V[re+b+F]);M.push(V[j+b]);let Q=P.map(re=>M[re]);l.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),d.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let X=[];for(let q=0;q<x.length;q++)for(let H=0;H<f;H++){let V=x[q][H];if(V<N){let G=x[V].findIndex(D=>D%N==q),B=$[q][H],L=$[V][G];for(let D=0;D<b;D++){let Y=B[D],W=L[b-D],F=B[D+1],j=L[b-(D+1)];[Y,W,F,F,W,j].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),d.push(M[1].x,M[1].y,M[1].z)})}X.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;X.length;){let q,H,V,G;[q,H]=X.splice(0,2);let B=[q];for(;q!=H;)B.push(H),V=X.indexOf(H),G=V%2,H=X.splice(V-G,2)[1-G];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(Y=>{l.push(Y.x,Y.y,Y.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new Ze.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,N=T(p)/Math.PI+.5;c.push(x,1-N)}let f=new Ze.Vector3,m=new Ze.Vector3,h=new Ze.Vector3,y=new Ze.Vector3,g=new Ze.Vector2,v=new Ze.Vector2,b=new Ze.Vector2,w=(_,x,N,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),N.x===0&&N.z===0&&(c[x]=P/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 N=S(y);w(g,x+0,f,N),w(v,x+2,m,N),w(b,x+4,h,N)}for(let _=0;_<c.length;_+=6){let x=c[_+0],N=c[_+2],P=c[_+4],C=Math.max(x,N,P),O=Math.min(x,N,P);C>.9&&O<.1&&(x<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new _o(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var rh=require("three"),oh=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 _s(r*.5,i,s):new rh.DodecahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},_s=class extends _o{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 _s(r.radius,r.corner,r.cornerSides)}};var Oe=require("three");var ye=require("three"),Ts=1e-12,Kn=class{constructor(r){this.position=new ye.Vector2;this.startPosition=new ye.Vector2;this.uuid=ye.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 Kn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Zn=class extends Kn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Zn(this.parent).copy(this)}},hr=class extends Kn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Zn(this),new Zn(this))}static create(e,t){let o=new hr(e,new ye.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 hr(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 ye.Vector2,t=new ye.Vector2){let[o,i]=this.computeTangents();return o&&i&&(nh(o,e),nh(i,t)),[e,t]}computeTangent(e=new ye.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ye.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function nh(n,r=new ye.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Zc=n=>n,Qn=new ye.Vector2,gl=new ye.Vector2,c_=new ye.Vector2,u_=new ye.Vector2,d_=new ye.Vector2,p_=new ye.Vector2,sh=new ye.Vector3,ah=new ye.Vector3;function lh(n){let r=new ye.Vector2;r.addVectors(n.v0,Qn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ye.Vector2;return e.addVectors(n.v2,gl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ye.CubicBezierCurve(n.v0,r,e,n.v2)}function Ps(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function f_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function m_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Qc(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 ch(n,r,e){return ih(n,r)&&ih(r,e)&&Kc(n.position,r.position,e.position)}function Kc(n,r,e){return Qn.copy(r).sub(n).cross(gl.copy(e).sub(n))===0}function uh(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,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+d),o.set(l-c,s-d),[t,o]}function dh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function ph(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,d=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+d)*(l+d)),u;return Qc(r,n,e)>Math.PI&&(a*=-1),Ps(d,l)?u=(l+d)*(t/a-.5)*8/3/(s-c):u=(s+c)*(t/a-.5)*8/3/(d-l),o.set(r.x-u*l,r.y+u*s),i.set(e.x+u*d,e.y-u*c),[o,i]}function Jc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function ih(n,r){return Kc(n.position,n.controls[1].position,r.position)&&Kc(n.position,r.controls[0].position,r.position)}function fh(n,r,e,t,o=.5){let i=Qn.subVectors(r,n).multiplyScalar(o).add(n),s=gl.subVectors(e,r).multiplyScalar(o).add(r),l=c_.subVectors(t,e).multiplyScalar(o).add(e),c=i,d=u_.subVectors(s,i).multiplyScalar(o).add(i),a=d_.subVectors(l,s).multiplyScalar(o).add(s),u=l,p=p_.subVectors(a,d).multiplyScalar(o).add(d);return[n.x,n.y,c.x,c.y,d.x,d.y,p.x,p.y,a.x,a.y,u.x,u.y,t.x,t.y]}function mh(n,r,e=12,t=!0){let o=ah.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let d=Zc(r[c]),a=Qn,u=To(d,e);l.push(u);for(let p=0;p<=u;p++)if(d instanceof ye.CubicBezierCurve||d instanceof ye.QuadraticBezierCurve||d instanceof ye.LineCurve){if(d.getPoint(p/u,a),o.set(a.x,a.y,0),i!==void 0&&m_(i,o))continue;i===void 0&&(i=sh),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 hh(n,r,e,t=12,o=!0){let i=ah.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let d,a=Zc(r[c]),u=Qn,p=To(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof ye.CubicBezierCurve||a instanceof ye.QuadraticBezierCurve||a instanceof ye.LineCurve){if(a.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=sh:(n.setXYZ(s,d.x,d.y,d.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),d.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 eu(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=To(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=To(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=To(n[0].roundedCurveCorner,r)*.5),t}function To(n,r=12){return n&&n instanceof ye.EllipseCurve?r*2:n&&(n instanceof ye.LineCurve||n instanceof ye.LineCurve3)?1:n&&n instanceof ye.SplineCurve?r*n.points.length:r}function yh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Zc(r[s]),c=To(l,e),d=Qn;for(let a=0;a<=c;a++)if(l instanceof ye.CubicBezierCurve||l instanceof ye.QuadraticBezierCurve||l instanceof ye.LineCurve){if(l.getPoint(a/c,d),o!==void 0&&f_(o,d,Ts))continue;o===void 0&&(o=gl),o.copy(d),n.push(d.x,d.y),i++}}return Ps(n[0],n[n.length-2],Ts)&&Ps(n[1],n[n.length-1],Ts)&&(n.pop(),n.pop()),t&&i>1&&!(Ps(n[i-1],n[1],Ts)&&Ps(n[i-2],n[0],Ts))&&(n.push(n[0],n[1]),i++),n}var tu=new Oe.Vector2,h_=new Oe.Vector2,y_=new Oe.Vector2,g_=new Oe.Vector2,x_=new Oe.Vector2,v_=new Oe.Vector2,Pe=class extends Oe.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Oe.Plane(new Oe.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=Oe.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Pe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>hr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Pe.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],d=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=d;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=tu.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=Oe.MathUtils.generateUUID()){let i;e instanceof Oe.Vector2?i=e:i=new Oe.Vector2(e,t);let s=new hr(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 mh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=eu(this.points,e,!1),this.roundedCurveDivisions=eu(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return hh(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),yh(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=To(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,d)=>c+d,0));for(let c=0,d=i.length;c<d;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(Jc(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(tu.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=l[u];return(t-d)/c}dispose(){}_applyCurveForPoint(e,t){Jc(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],d=s.roundness,a=l&&c&&ch(l,s,c);if(!s.controlsMoved()&&d>0&&!a){let u=s.curveBefore,p=s.curveAfter;if(u===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=u.getLength(),y=p.getLength(),g=Math.min(d,h*.499),v=Math.min(d,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,T=u.getPointAt(w,tu),_=p.getPointAt(S,h_);this._subSplitCurve(u,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let N=Qc(T,s.position,_)/2,P=Math.tan(N)*T.distanceTo(s.position),[C,O]=uh(T,_,P,y_,g_),A=dh(C,O,s.position),[R,k]=ph(A,T,_,P,x_,v_);x=new Oe.CubicBezierCurve(T.clone(),R.clone(),k.clone(),_.clone())}else x=new Oe.QuadraticBezierCurve(T.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 Oe.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,d=l.getUtoTmapping(o,0),a=fh(l.v0,l.v1,l.v2,l.v3,d);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 Pe(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],d=e.points[i+3],a=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new hr(Oe.MathUtils.generateUUID(),new Oe.Vector2(s,l));f.controls[0].position.set(c,d),f.controls[1].position.set(a,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Pe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Oe.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 Oe.QuadraticBezierCurve&&(i[l]=lh(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],p=l>0?i[l-1]:null,f;u instanceof Oe.CubicBezierCurve?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Oe.LineCurve&&(f=this.createPoint(u.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let d=i[i.length-1],a=!1;return d instanceof Oe.CubicBezierCurve?d.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(d.v2),a=!0):d instanceof Oe.LineCurve&&d.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Oe.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Pe;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 ou=Math.PI*2;function ru({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function b_(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 gh(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 S_(n,r,e,t,o,i,s,l,c,d){let a=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*p;m<0&&(m=0),m/=a*f+u*p,m=Math.sqrt(m)*(c===d?-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,T=(-l-y)/i,_=gh(1,0,b,w),x=gh(b,w,S,T);return!d&&x>0&&(x-=ou),d&&x<0&&(x+=ou),{centerx:g,centery:v,ang1:_,ang2:x}}function xh({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 d=(n-e)/2,a=(r-t)/2;if(d===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=S_(n,r,e,t,o,i,d,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ou/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(b_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=ru(b[0],o,i,h,y),{x:T,y:_}=ru(b[1],o,i,h,y),{x,y:N}=ru(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:N}})}var Wo=require("three");var _e;(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"})(_e||(_e={}));var qe;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(qe||(qe={}));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}(),Os=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}(),xl=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}(),Jn=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}(),vh=function(){function n(){var r=new Jn,e=new Os,t=new xl(0),o=new xl(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 xl(0),t=new xl(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 Jn,e=new Jn,t=new Os,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 Jn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Os;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 Os;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 Jn;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 Os;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,d;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),d=t,d=t;(c=d.next)!==t;d=c)pe(c.Sym.next===d.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===d.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),bh=function(){function n(){this.handle=null}return n}(),Sh=function(){function n(){this.key=null,this.node=0}return n}(),w_=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 bh,this.handles[t]=new Sh;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 bh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Sh}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}(),nu=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}(),wh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),__=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new wh,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 wh;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}(),T_=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 nu;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 _e.ODD:return(e&1)!==0;case _e.NONZERO:return e!==0;case _e.POSITIVE:return e>0;case _e.NEGATIVE:return e<0;case _e.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,d,a,u=!0;d=t;do pe(ce.vertLeq(d.Org,d.Dst)),n.addRegionBelow(r,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),d=l.eUp.Sym,d.Org===a.Org;)d.Onext!==a&&(r.mesh.splice(d.Oprev,d),r.mesh.splice(a.Oprev,d)),l.windingNumber=c.windingNumber-d.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(r,c)&&(n.addWinding(d,a),n.deleteRegion(r,c),r.mesh.delete(a)),u=!1,c=l,a=d;c.dirty=!0,pe(c.windingNumber-d.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,d=i.Dst,a,u,p=new Jn,f,m;if(pe(!ce.vertEq(d,c)),pe(ce.edgeSign(c,r.event,s)<=0),pe(ce.edgeSign(d,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),u=Math.max(l.t,d.t),a>u))return!1;if(ce.vertLeq(s,l)){if(ce.edgeSign(d,s,l)>0)return!1}else if(ce.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ce.intersect(c,s,d,l,p),pe(Math.min(s.t,c.t)<=p.t),pe(p.t<=Math.max(l.t,d.t)),pe(Math.min(d.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(d,r.event)&&ce.edgeSign(d,r.event,p)<=0?d===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(d,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,d),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,d=!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),d=!0),ce.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),d=!0),d){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,d=new nu;if(d.eUp=e.anEdge.Sym,t=r.dict.search(d).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 nu,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 __(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 w_(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}(),P_=function(){function n(){this.mesh=new vh,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=_e.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],d=[0,0,0],a=[0,0,0],u=[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],d[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<d[g]&&(d[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-d[1]>c[0]-d[0]&&(v=1),c[2]-d[2]>c[v]-d[v]&&(v=2),d[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)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],p[0]=a[1]*u[2]-a[2]*u[1],p[1]=a[2]*u[0]-a[0]*u[2],p[2]=a[0]*u[1]-a[1]*u[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,d=r.next;d!==r;d=d.next)c?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,c=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.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 d=r.vHead.next;d!==r.vHead;d=d.next)d.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 d=i.Org;d.n===-1&&(d.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===qe.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 d=r.vHead.next;d!==r.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.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 d=i.Org;this.elements[p++]=d.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===qe.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,d=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[d++]=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 vh),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=_e.ODD),e===void 0&&(e=qe.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_(),T_.computeInterior(this,s);var l=this.mesh;return e===qe.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===qe.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function yr(n){var r=n.windingRule,e=r===void 0?_e.ODD:r,t=n.elementType,o=t===void 0?qe.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,d=n.normal,a=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,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 P_;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 RD=_e.ODD,VD=_e.NONZERO,zD=_e.POSITIVE,FD=_e.NEGATIVE,jD=_e.ABS_GEQ_TWO,kD=qe.POLYGONS,UD=qe.CONNECTED_POLYGONS,HD=qe.BOUNDARY_CONTOURS;var Ho=require("three");var vl=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*vl.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*vl.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 d=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)),d.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=d,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)}},As=vl;As.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Cs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},su={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},au={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},iu=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),ei=class extends Ho.BufferGeometry{constructor(e,t,o=0,i=12,s=3,l=_e.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),d=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),N=[];for(let P=x.length-1;P>=1;P-=2){let C=x[P-1],O=x[P-0];N.push(C,O)}return N}),a;try{a=yr({windingRule:l,elementType:qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=Cs}let u;try{u=yr({windingRule:_e.ODD,elementType:qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...d]})}catch{u=su}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(u){a.elementCount+=u.elementCount;for(let _=0;_<u.elements.length;_++){let x=u.elements[_],N=_%2===0?a.vertexCount:0;a.elements.push(x+N)}for(let _=0;_<u.vertexIndices.length;_++){let x=u.vertexIndices[_],N=a.vertexCount;a.vertexIndices.push(x+N)}for(let _=0;_<u.vertices.length;_++){let x=u.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 N=_*2,P=a.vertices[N+0],C=a.vertices[N+1];P<f&&(f=P),P>m&&(m=P),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 As(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,N=_*2,P=a.elements[N+0],C=a.elements[N+1],O=P+C,A={start:P,count:C,normals:[],continuous:[],concave:[]},R=P,k=O-1,$=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[k*2+0],B=a.vertices[k*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[$*2+0],W=a.vertices[$*2+1],F=L-G,j=D-B,M=Math.sqrt(F*F+j*j);F/=M,j/=M;let Q=L-Y,re=D-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]=F*re-j*Q>0;let K=a.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[ee,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let se=J===1?ee+1:ee-1;se=(se+te)%te;let ue=J===1?0:1,ae=this._shape.roundedCurves[ee].getTangent(J),me=this._shape.roundedCurves[se].getTangent(ue);A.continuous[V]=ae.dot(me)>.95}}x&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[k,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==P+1);let X=[];X.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*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:a.vertices.slice(P*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(G))*this._bevelSize,L=[],D=[],Y=[],W=[],F=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=a.vertices[A.start*2+Q+0],K=a.vertices[A.start*2+Q+1],ee=-A.normals[re+0]*B,J=-A.normals[re+1]*B,se=-A.normals[Q+0]*B,ue=-A.normals[Q+1]*B;if(A.concave[M]||!A.concave[M]&&x){let ae=Math.atan2(J,ee),me=Math.atan2(ue,se);me>ae&&(me-=Math.PI*2);let $e=me-ae;if(A.continuous[M]||x){let xe=ae+$e/2,rt=Math.cos(xe)*B,Ne=Math.sin(xe)*B;L[2*F+0]=oe+rt*(x?-1:1),L[2*F+1]=K+Ne*(x?-1:1),W[F]=M,F++}else{let xe=Math.max(1,Math.floor(i/4*Math.abs($e)/Math.PI));for(let rt=0;rt<=xe;rt++){let Ne=ae+$e*(rt/xe),Et=Math.cos(Ne)*B,Zt=Math.sin(Ne)*B;L[2*F+0]=oe+Et,L[2*F+1]=K+Zt,W[F]=M,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=K+J,W[F]=M,D[M]=F,F++,L[2*F+0]=oe,L[2*F+1]=K,W[F]=M,F++,L[2*F+0]=oe+se,L[2*F+1]=K+ue,W[F]=M,Y[M]=F,F++}let j=yr({windingRule:_e.POSITIVE,elementType:qe.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(!j)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!j.vertexCount)break;for(let M=0;M<j.vertexIndices.length;M++){let[Q,re]=j.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let ee=K%C,J=(K+1)%C;if(!A.continuous[ee]||!A.continuous[J]){j.vertexIndices[M]=[Q,ee],j.vertexIndices.splice(M+1,0,[J,re]),j.vertices.splice((M+1)*2,0,j.vertices[M*2],j.vertices[M*2+1]);break}}}X.push({bevelI:V,angle:G,size:B,boundary:j,reverseMap:W,insetPoints:L})}let q=(V,G,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[G]);)G=(G+1)%D,L++;return L},H=g.length;for(let V=1;V<X.length;V++){let G=X[V-1],B=X[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,W=0,F=iu(W,C);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)W++,F=iu(W,C);let j=G.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do j=(j+1)%L;while(F(G.boundary.vertexIndices[j]));do M=(M+1)%D;while(F(B.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(j-1+L)%L),oe=this._buildBevelVert(A,B,(M-1+D)%D),K=re,ee=oe,J,se,ue=!1;do{F=iu(W,C);let ae=q(G,j,F),me=q(B,M,F),$e=ue;if(ue=!1,ae&&!me){for(let xe=0;xe<ae;xe++)J=this._buildBevelVert(A,G,(j+xe)%L,xe/(ae-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J;ue=!0}else if(!ae&&me)for(let xe=0;xe<me;xe++)se=this._buildBevelVert(A,B,(M+xe)%D,xe/(me-1)),g.push(ee.topN,K.topP,se.topP),g.push(K.bottomP,ee.bottomN,se.bottomP),ee=se;else if(ae&&me)if(J=this._buildBevelVert(A,G,j,0),se=this._buildBevelVert(A,B,M,0),$e?(g.push(K.topN,se.topP,ee.topN),g.push(K.topN,J.topP,se.topP),g.push(se.bottomP,K.bottomN,ee.bottomN),g.push(se.bottomP,J.bottomP,K.bottomN)):(g.push(ee.topN,K.topN,J.topP),g.push(ee.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,se.bottomP)),K=J,ee=se,ae===me)for(let xe=1;xe<ae;xe++)J=this._buildBevelVert(A,G,(j+xe)%L,xe/(ae-1)),se=this._buildBevelVert(A,B,(M+xe)%D,xe/(me-1)),g.push(K.topN,J.topP,ee.topN),g.push(ee.topN,J.topP,se.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,se.bottomP),K=J,ee=se;else if(ae>me){let xe=ae/me,rt=0;for(let Ne=1;Ne<ae;Ne++)J=this._buildBevelVert(A,G,(j+Ne)%L,Ne/(ae-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J,Ne>(rt+1)*xe&&(rt++,se=this._buildBevelVert(A,B,(M+rt)%D,rt/(me-1)),g.push(ee.topN,J.topP,se.topP),g.push(J.bottomP,ee.bottomN,se.bottomP),ee=se)}else{let xe=me/ae,rt=0;for(let Ne=1;Ne<me;Ne++)se=this._buildBevelVert(A,B,(M+Ne)%D,Ne/(me-1)),g.push(ee.topN,J.topP,se.topP),g.push(J.bottomP,ee.bottomN,se.bottomP),ee=se,Ne>(rt+1)*xe&&(rt++,J=this._buildBevelVert(A,G,(j+rt)%L,rt/(ae-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J)}j=(j+ae)%L,M=(M+me)%D,W=(W+1)%Y}while(W!==Q)}if(this._buildWall(X,A,g),x){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(H,g.length-H,...V)}if(x){let V=[];for(let G=X[X.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=X[X.length-1].boundary.vertices[G-1],L=X[X.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=X[X.length-1],G;try{G=yr({windingRule:X.length>1?_e.POSITIVE:_e.ODD,elementType:qe.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=au}if(!G)throw new Error("Error generating geometry for surface");d.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<G.elementCount*3;B+=3){let L=this._buildSurfaceVert(G,G.elements[B+0]),D=this._buildSurfaceVert(G,G.elements[B+1]),Y=this._buildSurfaceVert(G,G.elements[B+2]);g.push(L.top,D.top,Y.top),g.push(Y.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Ho.BufferAttribute(Uint32Array.from(g),1),w=new Ho.BufferAttribute(this._buffer.positions,3),S=new Ho.BufferAttribute(this._buffer.normals,3),T=new Ho.BufferAttribute(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),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),d=this._buildBevelVert(t,i,(s+1)%l);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.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,d=this._buffer.get(2),a=d*3,u=d*2,p={top:d+0,bottom:d+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[u+0]=l,this._buffer.uvs[u+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[u+2]=l,this._buffer.uvs[u+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],d,a,u,p;l!==c?(a=l,d=c,p=!1,u=e.continuous[a]&&e.continuous[d]):(d=l,a=(d-1+e.count)%e.count,p=e.concave[d]&&t.bevelI>0,u=e.continuous[d]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=d*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,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],N=e.normals[g+0],P=e.normals[g+1];if(p){let k=N-_,$=P-x;_=_+k*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let C=this._buffer.get(u?2:4),O=C*3,A=C*2,R={i:o,fi:d,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+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]=T,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]=T,this._buffer.uvs[A+3]=S,u||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+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]=N*f,this._buffer.normals[O+1]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new ei(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ro(this.userData),e}};var ti=class extends Wo.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=_e.ODD;this.elementType=qe.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:_e.ODD,elementType:qe.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,d=!0,a,u;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),u!==void 0&&v!==u&&(d=!1),a=g,u=v,!c&&!d)break}if(!c&&!d)try{l=yr({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=Cs}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Wo.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new Wo.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new Wo.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new Wo.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 T=w*2,_=l.vertices[T+0],x=l.vertices[T+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 T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],N=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],N=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,N)}}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 ti(this._shape,this._curveSegments);return e.userData=ro(this.userData),e}};var ri=class extends ei{constructor(e,t,o=0,i=12,s=3,l=_e.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),d=this._buildBevelVert(t,i,(s+1)%l);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.bottomP)}}clone(){let e=new ri(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ro(this.userData),e}};var Vt=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:_e.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 Pe?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Pe(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Pe(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 ti(n.shape,o,{windingRule:s}):l=new ri(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};var ni=require("three"),Th=Math.PI*2,ii=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 Pe?n.shape:new Pe,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,d=n.shape,a=r*.5,u=e*.5,p=O_(d,a,u,o*Math.PI/180,t,i);d.isClosed=!0,d.update();let f=Vt.create({shape:d,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function O_(n,r,e,t,o,i){if(t>=Th)return o>30||o%4===0?(C_(n,r,e,i),Math.round(o/4)):_h(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},d=xh({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%d.length===0?A_(n,s.x,s.y,d,o,r,e,i):_h(n,t,o,r,e,i)}function A_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(oi(r,e));for(let d=0,a=t.length;d<a;d++){let u=t[d],p=n.points[d],f=oi(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?Ph(n,i,s,l):n.addPoint(oi(0,0)),c}function _h(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,d=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(oi(d,a))}return r<Th?i>0?Ph(n,t,o,i):n.addPoint(oi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Oh(n,t,o,i)),1}function C_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(bl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(bl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(bl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(bl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Oh(n,r,e,t)}function oi(n,r){return new hr(ni.MathUtils.generateUUID(),new ni.Vector2(n,r))}function bl(n,r,e,t,o,i){let s=oi(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Ph(n,r,e,t){Ah(n,r,e,t).forEach(i=>n.addPoint(i))}function Oh(n,r,e,t){let o=Ah(n,r,e,t),i=new Pe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Ah(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new ni.Vector2(o/r,i/e),l=n.points.map(c=>{let d=c.clone();return d.uuid=ni.MathUtils.generateUUID(),d}).reverse();return l.forEach(c=>{c.position.multiply(s);let d=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(d)}),l}var gr=require("three"),Ch=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:d,cornerRadius:a,cornerSegments:u}=n.parameters,p=new Ns(!1,r,e,t,o,i,s,l,c,d,a,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},lu=new gr.Uint32BufferAttribute([0,0,0],1),Ns=class extends gr.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,d=1,a=1,u=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let m=()=>new gr.Vector3,h=new gr.Vector3,y=m(),g=m(),v=m(),b,w,S,T,_,x,N,P,C=m(),O=m(),A=m(),R=m(),k=m(),$=m(),te=m(),X=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(l*s),G=V+1,B=q/V,L=-q/2,D=a+1,Y=2*Math.PI/a,W=Math.PI/2/p,F=.01,j=Math.min((1-u/100)*c,c-F),M=c-j,Q=0,re=2,oe=p*re+re,K=D*oe/re,ee=K+D*G,J=D*(G+oe),[se,ue,ae]=[3,3,2].map(Je=>Array(J*Je).fill(0)),me=[],$e=i-c;function xe(Je,Wt){let Ar=Math.PI/2;x=Wt*B,P=2*Math.PI*(x%H)/H+Ar,x+=L,N=Math.sin(P)*$e,_=Math.cos(P)*$e,r?Je.set(_,N,x):Je.set(_,x,N)}xe(h,-1e-10),xe(y,0),C.copy(h),xe(h,1);let rt=h.distanceTo(y),Ne=f?0:M+j,Et=rt*V+2*Ne,Zt=j,an=Et-Ne;for(let Je=0;Je<=V;Je++){xe(g,Je),X.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors(X,$).normalize();let Wt=Je===0,Ar=Je===V,Gg=Wt?3*Math.PI/2:W,Rg=Wt?Zt:an,Vg=Wt?D:ee,zg=Wt?0:J-D,Fg=X.clone().multiplyScalar(Wt?-M:M).add(g),jg=X.clone().multiplyScalar(Wt?-1:1).normalize();for(let Xr=0;Xr<D;Xr++){let ud=Xr*Y;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(ud)),y.copy(te).multiplyScalar(c*Math.sin(ud))),A.copy(O).normalize(),Wt||Ar){f||(Q=zg+Xr,[0,1,2].forEach(Lt=>{se[Q*3+Lt]=Fg.getComponent(Lt),ue[Q*3+Lt]=jg.getComponent(Lt)}),ae[Q*2]=+Ar,ae[Q*2+1]=Xr/a),y.copy(A).multiplyScalar(j),v.addVectors(g,y);for(let Lt=0;Lt<p;Lt++){let pc=Lt*W+Gg;R.addVectors(h.copy(X).multiplyScalar(M*Math.sin(pc)),y.copy(A).multiplyScalar(M*Math.cos(pc))),k.copy(R).normalize(),y.addVectors(v,R),R.normalize(),Q=Vg+Lt*D+Xr,[0,1,2].forEach(ua=>{se[Q*3+ua]=y.getComponent(ua),ue[Q*3+ua]=k.getComponent(ua)});let kg=+Wt+Math.sin(pc);ae[Q*2]=(Rg+M*kg)/Et,ae[Q*2+1]=Xr/a}}y.addVectors(g,O),Q=K+Je*D+Xr,[0,1,2].forEach(Lt=>{se[Q*3+Lt]=y.getComponent(Lt),ue[Q*3+Lt]=A.getComponent(Lt)}),ae[Q*2]=(Ne+Je*rt)/Et,ae[Q*2+1]=Xr/a}}let Ht=G+2*p+re,aa=1,[la,ca]=[+f,Ht-1];for(let Je=la;Je<=ca-1;Je++){let Wt=f&&Je===ca-1;for(let Ar=0;Ar<D-1;Ar++)b=Je*D+Ar,w=b+1,S=(Wt?Ar:b)+D,T=(Wt?Ar+1:w)+D,Je===0?me.push(w,T,S):Je===Ht-2?me.push(b,w,S):me.push(b,w,S,w,T,S)}this.setIndex(me),this.setAttribute("position",new gr.Float32BufferAttribute(se,3)),this.setAttribute("normal",new gr.Float32BufferAttribute(ue,3)),this.setAttribute("uv",new gr.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,d=6*(e-1)*r.radialSegments,a=e,u=a===e;for(let p=0;p<r.radialSegments;p++)i=a*t+p,s=i+1,l=(u?p:i)+t,c=(u?p+1:s)+t,o[d++]=i,o[d++]=s,o[d++]=l,o[d++]=s,o[d++]=c,o[d++]=l;return o.length=d,lu.array=o,lu.count=o.length,lu}};var Nh=require("three");var Ih=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 Is(r*.5,i,s):new Nh.IcosahedronGeometry(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Is=class extends _o{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 Is(r.radius,r.corner,r.cornerSides)}};var Sl=require("three"),Mh=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 Sl.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 Sl.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Rr=require("three");var io=require("three");var ie=require("three"),Gr=new ie.Matrix4,cu=new ie.Object3D,wl=new ie.Vector3,Po=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 Gr.makeRotationX(r),this.applyMatrix4(Gr),this}rotateY(r){return Gr.makeRotationY(r),this.applyMatrix4(Gr),this}rotateZ(r){return Gr.makeRotationZ(r),this.applyMatrix4(Gr),this}translate(r,e,t){return Gr.makeTranslation(r,e,t),this.applyMatrix4(Gr),this}scale(r,e,t){return Gr.makeScale(r,e,t),this.applyMatrix4(Gr),this}lookAt(r){return cu.lookAt(r),cu.updateMatrix(),this.applyMatrix4(cu.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,d=o.uv2;d!==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 si(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)]),d!==void 0&&e.faceVertexUvs[1].push([new ie.Vector2().fromBufferAttribute(d,p),new ie.Vector2().fromBufferAttribute(d,f),new ie.Vector2().fromBufferAttribute(d,m)])}let u=r.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[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(wl).negate(),this.translate(wl.x,wl.y,wl.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],d=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,d),o.subVectors(c,d),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 Po;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 d=new ie.Vector3,a={a:new ie.Vector3,b:new ie.Vector3,c:new ie.Vector3};i.push(d),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],d=o.vertexNormals[i];c.copy(l.normal),d.a.copy(l.vertexNormals[0]),d.b.copy(l.vertexNormals[1]),d.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,d=r.faces,a=this.colors,u=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=u.length;p<f;p++)a.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let m=d[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new si(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,d=this.vertices.length;c<d;c++){let a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[u]===void 0?(e[u]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,d=this.faces.length;c<d;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let d=s[c];this.faces.splice(d,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(d,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,d){return c.materialIndex-d.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 d=r[c]._id;s&&s.push(o[d]),l&&l.push(i[d])}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=[],d={};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,T=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,T),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(u(h.normal)),w){let x=h.vertexNormals;t.push(u(x[0]),u(x[1]),u(x[2]))}if(S&&t.push(p(h.color)),T){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 u(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 d[h]!==void 0||(d[h]=c.length/2,c.push(m.x,m.y)),d[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 Po().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 d=r.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=r.boundingSphere;return u!==null&&(this.boundingSphere=u.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 uu().fromGeometry(this),e=new ie.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",_l.call(new ie.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",_l.call(new ie.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Eh.call(new ie.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Lh.call(new ie.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Lh.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 d=s[l],a=new ie.Float32BufferAttribute(d.data.length*3,3);a.name=d.name,i.push(_l.call(a,d.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ie.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Bh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ie.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Bh.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",_l.call(o,t.vertices)),e.setAttribute("color",Eh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ie.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",N_.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}};Po.prototype.isGeometry=!0;var uu=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,d;if(c>0){d=[];for(let g=0;g<c;g++)d[g]={name:l[g].name,data:[]};this.morphTargets.position=d}let a=r.morphNormals,u=a.length,p;if(u>0){p=[];for(let g=0;g<u;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 T=l[S].vertices;d[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<u;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.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}},si=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 N_(n){return this.array.set(n),this}function Eh(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 Lh(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 _l(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 Bh(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 I_=["a","b","c"];function M_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function du(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function pu(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,d;if(t.has(c))d=t.get(c);else{let a=e[s],u=e[l];d={a,b:u,newEdge:null,faces:[]},t.set(c,d)}d.faces.push(o),i[n].edges.push(d),i[r].edges.push(d)}function E_(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],pu(s.a,s.b,n,t,s,e),pu(s.b,s.c,n,t,s,e),pu(s.c,s.a,n,t,s,e)}function Tl(n,r,e,t,o){n.push(new si(r,e,t,void 0,void 0,o))}function ai(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Pl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ol=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof io.BufferGeometry?r=new Po().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 io.Vector3,t,o,i,s,l,c=r.vertices,d=r.faces,a=r.faceVertexUvs[0],u=a!==void 0&&a.length>0,p=[],f=new Map;E_(c,d,p,f);let m=[],h,y,g,v,b,w,S;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new io.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[M_(v,I_[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 T,_,x,N,P,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=P[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),k=A.length,$,te,X,q=[],H=[],V,G,B,L,D=new io.Vector2,Y=new io.Vector2,W=new io.Vector2;for(o=0,i=d.length;o<i;o++)v=d[o],$=Number(du(v.a,v.b,f).newEdge)+k,te=Number(du(v.b,v.c,f).newEdge)+k,X=Number(du(v.c,v.a,f).newEdge)+k,Tl(q,$,te,X,v.materialIndex),Tl(q,v.a,$,X,v.materialIndex),Tl(q,v.b,te,$,v.materialIndex),Tl(q,v.c,X,te,v.materialIndex),u&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set(ai(G.x,B.x),ai(G.y,B.y)),Y.set(ai(B.x,L.x),ai(B.y,L.y)),W.set(ai(G.x,L.x),ai(G.y,L.y)),Pl(H,D,Y,W),Pl(H,G,D,W),Pl(H,B,Y,D),Pl(H,L,W,Y));r.vertices=R,r.faces=q,u&&(r.faceVertexUvs[0]=H)}};var it=new Rr.Vector3,Dh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Rr.BufferGeometry().copy(new Rr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),t={width:it.x,height:it.y,depth:it.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 Rr.BufferGeometry().copy(new Rr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(r!==it.x||e!==it.y||t!==it.z)&&i.scale(it.x===0?1:r/it.x,it.y===0?1:e/it.y,it.z===0?1:t/it.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Ol(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 Rr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(i.parameters,{width:100,height:it.y*s,depth:it.z*s}),r(this.build(i))})}};var Al=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 Pe?n.shape:new Pe,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,d=r*.5,a=e*.5,u=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=u+Math.sin(y)*d,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=Vt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var we=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,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,d=new mu(r*.5,e,o,i,s,l,c);return d.scale(1,1,t/r),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function Ms(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function fu(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 d=s.add(l).normalize();i.copy(n).addScaledVector(d,t/Math.sin(c/2))}else{let d=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(d)),i.addScaledVector(l,t/Math.sin(d))}}function L_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var mu=class extends we.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=[],d=[],a=[],u=[],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 we.Vector3(0,-f,0),w=new we.Vector3(0,f,0),S=new we.Vector2(r,-f),T=new we.Vector2(h,-f),_=new we.Vector2(0,w.y).sub(T),x=new we.Vector2(0,w.y).sub(S),N=new we.Vector2(_.y,-_.x).normalize(),P=new we.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 we.Vector3(N.x,N.y,0),V=new we.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),k=s/Math.tan((Math.PI-A)/2),$=new we.Vector3;if(!i){d.push(b.x,b.y,b.z),a.push(0,-1,0),u.push(0,0);let H=p++,V=[],G=S.clone(),B=R/Math.cos(Math.PI/t);G.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,Y=new we.Vector2(Math.sin(D),Math.cos(D));Ms(G,Y,$),d.push($.x,$.y,$.z),a.push(0,-1,0),u.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 te=[];{let H=new we.Vector3,V=new we.Vector3,G=new we.Vector3,B=new we.Vector3,L=new we.Vector3,D=new we.Vector3;for(let Y=0;Y<t;Y++){let W=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,j=(Y+1)/t*Math.PI*2+m,M=new we.Vector2(Math.sin(W),Math.cos(W)),Q=new we.Vector2(Math.sin(F),Math.cos(F)),re=new we.Vector2(Math.sin(j),Math.cos(j));Ms(S,M,V),Ms(S,re,G),Ms(N,Q,H),fu(w,V,G,k,k,B),d.push(B.x,B.y,B.z),fu(V,w,G,k,R,L),d.push(L.x,L.y,L.z),fu(G,V,w,R,k,D),d.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),u.push(0,0),u.push(0,0),u.push(0,0);let oe=p++,K=p++,ee=p++;if(c.push(oe,K,ee),s>0){{let ue=V.clone().add(G).multiplyScalar(.5),ae=w.clone().sub(ue).normalize(),$e=b.clone().sub(ue).normalize().add(ae).normalize().multiplyScalar(-1),xe=D.clone().sub(L);X(ue,xe,$e,_.angle())}let J,se;{let ue=new we.Vector3;Ms(P,re,ue);let ae=D.clone().add(B).multiplyScalar(.5);ae=L_(ae,G,w);let me=D.clone().sub(B);[J,se]=X(ae,me,ue,A,B.y)}{let ue=J,ae=ue.clone().setY(0).normalize(),me=new we.Vector3(0,-1,0),$e=ae.clone().cross(me);q(ue,ae,me,$e)}te.concat(se);{let ue=_.angle(),ae=Math.PI-ue,me=w.clone();me.y-=s/Math.sin(ue-Math.PI/2);let $e=new we.Vector3,xe=[];for(let Ne=0;Ne<l;Ne++){let Et=[],Zt=Math.PI/2-ae*Ne/l,an=Math.cos(Zt),Ht=Math.sin(Zt),aa=F;for(let la=0;la<=Ne;la++){let ca=Math.cos(aa),Je=Math.sin(aa);H.x=an*Je,H.y=Ht,H.z=an*ca,$e.copy(me).addScaledVector(H,s),d.push($e.x,$e.y,$e.z),a.push(H.x,H.y,H.z),u.push(0,0),Et.push(p++),aa+=Math.PI*2/Ne/t}xe.push(Et)}se.reverse(),xe.push(se);let rt=xe.length-1;for(let Ne=0;Ne<rt;Ne++){let Et=xe[Ne],Zt=xe[Ne+1],an=Et.length-1;c.push(Zt[1],Et[0],Zt[0]);for(let Ht=1;Ht<=an;Ht++)c.push(Et[Ht],Et[Ht-1],Zt[Ht]),c.push(Zt[Ht+1],Et[Ht],Zt[Ht])}}}}}this.setIndex(c),this.setAttribute("position",new we.Float32BufferAttribute(d,3)),this.setAttribute("normal",new we.Float32BufferAttribute(a,3)),this.setAttribute("uv",new we.Float32BufferAttribute(u,2));function X(H,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(Y));let F=new we.Vector3,j=new we.Vector3,M=1,Q=p,re=[];for(let oe=0;oe<=l;oe++){let K=D+oe/l*B;j.set(0,0,0),j.addScaledVector(W,Math.sin(K)),j.addScaledVector(G,Math.cos(K));for(let ee=0;ee<=M;ee++){let J=ee/M-.5;if(F.copy(H),F.addScaledVector(V,J),F.addScaledVector(j,s),L!=null){let se=Math.max(0,F.y-L);F.addScaledVector(V,-se/V.y)}d.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),u.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let K=0;K<M;K++){let ee=Q+K+(M+1)*oe,J=ee+(M+1),se=J+1,ue=ee+1;c.push(ee,J,ue),c.push(J,se,ue)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],W=new we.Vector3,F=new we.Vector3;for(let M=0;M<=l;M++){let Q=[],re=M/l;for(let oe=0;oe<=M;oe++){let ee=((M?oe/M:0)-.5)*v,J=Math.cos(ee),se=Math.sin(ee),ue=Math.atan(Math.tan(D)*J),ae=(L+ue)*re,me=Math.cos(ae),$e=Math.sin(ae);W.set(0,0,0),W.addScaledVector(V,$e*J),W.addScaledVector(G,me),W.addScaledVector(B,$e*se),F.copy(H).addScaledVector(W,s),d.push(F.x,F.y,F.z),a.push(W.x,W.y,W.z),u.push(0,0),Q.push(p++)}Y.push(Q)}let j=Y.length-1;for(let M=0;M<j;M++){let Q=Y[M],re=Y[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 Cl=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 Pe?n.shape:new Pe,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,d={x:e*.5,y:t*.5},a={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,S,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T: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=u.x,y=u.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=Vt.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};var Rh=require("three"),Vh=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:d}=n.parameters,a=new Rh.SphereGeometry(.5*r,o,i,s,l,c,d);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};var zh=require("three"),Fh=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 zh.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var Oo=require("three"),jh=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 hu(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},hu=class extends Oo.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],d=[],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 u=[],p=Math.PI/2,f=(F=0,j=0,M=0)=>new Oo.Vector3(F,j,M),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,C=S.z-a;o<=p?(_.z=Math.min(P,C),_.z==C&&(_.y-=(P-C)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),k=m.clone().normalize().add(h.normalize()).setLength(R).add(T);m.set(0,x(o,!0),N(o,!0)),u.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let F=0;F<=s;F++){let j=p+o+F*$;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(k),h.set(0,x(j),N(j)),u.push([m.clone(),h.clone()])}u.push([S,f(0,1,0)]);let te=Math.sin($/2)*A*2,X=u.length-1,q=u[0][0].distanceTo(u[1][0]),H=u[X-1][0].distanceTo(u[X][0]),V=q+te*s+H;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(q+F*te)/V);u[X].push(0);let[G,B,L]=u[0],D,Y,W;for(let F=1;F<u.length;F++)[D,Y,W]=u[F],l.push(b,G.y,G.z,b,D.y,D.z,w,G.y,G.z,w,G.y,G.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),d.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,B,L]=[D,Y,W];this.setAttribute("position",new Oo.Float32BufferAttribute(l,3)),this.setAttribute("normal",new Oo.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Oo.Float32BufferAttribute(d,2))}};var Nl=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 Pe?n.shape:new Pe,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:d}=n.parameters,a=n.shape,u=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*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,T=f+Math.sin(S)*u,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*u,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),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=Vt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:d}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};var kh=require("three"),Uh=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 kh.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Hh=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,d=B_(r,e,t,r*.5,s,i,0,0,o,l,c);return d.scale(1,e/r,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function B_(n,r,e,t,o,i,s,l,c,d,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(d=0),new Ns(!0,n,r,e,t,o,i,s,l,c,d,a)}var Wh=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,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 Wh.TorusKnotGeometry(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var $h=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 Pe?n.shape:new Pe,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,d=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-d,a)),c.addPoint(c.createPoint(d,-a)),c.addPoint(c.createPoint(-d,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(d,-a)),c.addPoint(c.createPoint(-d,-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 u=Vt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var ve=require("three");function Xh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function D_(n,r,e){let t=[new ve.Vector3,new ve.Vector3,new ve.Vector3],o=[new ve.Vector3,new ve.Vector3,new ve.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=ve.MathUtils.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new ve.Matrix4().makeBasis(t[0],t[1],t[2])}var Yh=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??ii.create({parameters:Bc}).userData.shape;return{path:n.path??vn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Ra,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new yu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ve.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},yu=class extends ve.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)||!Xh(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),d=Math.min(Math.max(2,c-l+1),s+2),a=[],u=[];for(let O=0;O<d;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),u.push(t[A].clone())}let p=(O,A,R)=>{a[O]=a[O].clone().lerp(a[A],R),u[O]=D_(u[O],u[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(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),u[O].copy(u[0])}this._applyPathModifiers(u,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,R,k)=>A+(k===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*d,_,x=0;if(this._isOpenEnded()){try{_=yr({windingRule:_e.ODD,elementType:qe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=au}x=_.vertexCount}let N=T+2*x,P={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];v.forEach(O=>{this._extrudeRegion(O,b,u,a,P,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,C,P,u[0],a[0],!1),this._closeEnd(_,T+x,C,P,u[u.length-1],a[a.length-1],!0)),this.setAttribute("position",new ve.BufferAttribute(P.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(P.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(P.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=hl(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 ve.Vector3,l=new ve.Vector3,c=new ve.Vector3,d=new ve.Vector3,a=new ve.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(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),d.copy(_),y===0&&(s.copy(x),l.copy(T));let N=new ve.Matrix4().makeBasis(_,x,T);t.push(N)}let u=i?l:c,p=i?s:new ve.Vector3(0,1,0),f=u.clone().cross(d).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);u.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ve.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:d}=this.inputs.parameters.extrusion,a=new ve.Matrix4,u=new ve.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(ve.MathUtils.lerp(s,s+l,m));let h=ve.MathUtils.lerp(c,d,m);u.makeScale(h,h,h),p.multiply(a).multiply(u)}),e}_computeShapePoints(e=12,t=_e.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=yr({windingRule:t,elementType:qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=Cs}let c;try{c=yr({windingRule:_e.ODD,elementType:qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=su}if(!l)throw new Error("error generating geometry");let d=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,u=-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>u&&(u=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=d,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 T=v,_=w-1,x=v+1,N=o.roundedCurves.length;do{let P=T-v,C=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],k=l.vertices[x*2+0],$=l.vertices[x*2+1],te=A-C,X=R-O,q=Math.sqrt(te*te+X*X);te/=q,X/=q;let H=A-k,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=H;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[P]=!0;else{let Y=D===1?L+1:L-1;Y=(Y+N)%N;let W=D===1?0:1,F=o.roundedCurves[L].getTangent(D),j=o.roundedCurves[Y].getTangent(W);S.continuous[P]=F.dot(j)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,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 d=new ve.Vector3,a=new ve.Vector3,u=new ve.Vector3,p=new ve.Vector3,f=new ve.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(d.set(t[w+0],t[w+1],0),u.copy(d).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(d).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,u,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(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,u,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,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let d=e.vertexCount,a=new ve.Vector3(0,0,c?-1:1).applyMatrix4(s),u=new ve.Vector3,p=new ve.Vector2;for(let m=0;m<d;m++){let h=2*m;u.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,u,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 qo=require("three"),Kh=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Zh(){let n=new qo.BufferGeometry;return n.setAttribute("position",new qo.BufferAttribute(new Float32Array([]),3)),n.setIndex(new qo.BufferAttribute(new Uint16Array([]),1)),n}var G_=Zh().attributes,R_=12,V_=1,li=class extends qo.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,G_),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:d,textTransform:a}=e,u=a===2?d.toUpperCase():a===3?d.toLowerCase():d,p=z_(e,t,u),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Pe().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Vt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?_e.NONZERO:_e.ODD,subdivisions:this.isLowResolution&&s>0?V_:R_}})),w=b.length?(0,Kh.mergeBufferGeometries)(b):Zh();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,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Zr(new qo.BufferGeometry,li.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 z_(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 De=require("three");var qh,ai=new Promise(n=>{qh=n}),Wh=!1;async function $h(){if(Wh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.345/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});qh(i),Wh=!0}var Yh=require("three");function Wo(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=Pe.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 Yh.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new Je(n,e);if(n.type==="TextGeometry")return new ii(n,r)}let o;try{o=pd(t)}catch(i){console.error(i)}if(!o){let i=Pe.createFromState(hn.defaultData(),100,100);t.shape=i,o=pd(t)}return o}var Xh=require("three"),L_=new Xh.Matrix4;function ms(n,r,e,t){let o=n.position.array,i=n.normal.array,s=L_.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 Pl=new De.Box3,li=new De.Vector3,ue;ai.then(n=>{ue=n});var Kh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Zh=new Uint32Array([0,1,2,3]),Qh=new Uint8Array([4]),Je=class extends De.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&&ms(this.subdividedGeometry.attributes,...i),this.originalGeometry&&ms(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(li.fromArray(i));let l=li.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}=Je.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new De.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&&(Je.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new De.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Pl.setFromBufferAttribute(t),Pl.getCenter(o),e.boundingSphere.radius=o.distanceTo(Pl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Pl.getSize(li);let i={width:li.x,height:li.y,depth:li.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=Je.allocate(e,i)}catch(a){console.error(a,e),s=Je.allocate({positionWASM:Kh,indexWASM:Zh,verticesPerFaceWASM:Qh},i)}if(ue.set_destination_refinement_level(s,0),l=Je.buildLevel(s,!0,u),e.subdivisions>0)try{ue.set_destination_refinement_level(s,e.subdivisions),c=Je.buildLevel(s,!1,u)}catch{try{ue.set_destination_refinement_level(s,e.subdivisions-1),c=Je.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:Wo(e,o,!1),s,l,c,u;({positions:s,triIndices:u}=yd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=gd(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}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=Kh,i=Zh,s=Qh);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(T=>T!==1)&&(w=new De.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 De.BufferGeometry;if(w.setIndex(new De.Uint32BufferAttribute(b,1)),w.setAttribute("position",new De.Float32BufferAttribute(f,3)),w.setAttribute("normal",new De.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new De.Uint32BufferAttribute(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new De.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 De.BufferGeometry;m.setAttribute("position",new De.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 De.BufferAttribute(h,3)),m.setIndex(new De.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 Jh=["getX","getY","getZ"];function yd(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[Jh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[Jh[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 Ol=new De.Vector3,fd=new De.Vector3,md=new De.Vector3,hd=new De.Vector3;function gd(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]){Ol.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),fd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),md.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),hd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),fd.sub(Ol).normalize(),md.sub(Ol).normalize(),hd.sub(Ol).normalize();let c=fd.cross(md).dot(hd);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 hr={};su(hr,{calcBoolean:()=>R_,calcBooleanTopological:()=>G_,freeMeshSet:()=>F_,getMeshSet:()=>V_,transformMeshSet:()=>j_});var B_,ey=new Promise(n=>{B_=n});var hs=require("three");var be,ci;ey.then(n=>be=n);function D_(n,r,e){let t,{positions:o,triIndices:i}=yd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=gd(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function ty(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=be._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(be.HEAPU32.buffer,i,r):new Float32Array(be.HEAPF32.buffer,i,r)).set(n,0),i}function ry(n){switch(n){case 0:return be.OP.UNION;case 1:return be.OP.INTERSECTION;case 2:return be.OP.A_MINUS_B;case 3:return be.OP.B_MINUS_A;case 4:return be.OP.SYMMETRIC_DIFFERENCE;case 5:return be.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function G_(n,r){ci===void 0&&(ci=be.init_csg());let e=ty(n),t=be.csg_calc_topological(ci,e,n.length,ry(r));be._free(e);let o=6,i=be.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=be.HEAPU32[i[l]>>2],u=new Float32Array(be.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=be.HEAPU32[i[l]>>2],d=new Uint32Array(be.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=be.HEAPU32[i[l]>>2],f=new Uint8Array(be.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return be.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function R_(n,r,e,t){ci===void 0&&(ci=be.init_csg());let o=ty(n),i=be.csg_calc(ci,o,n.length,t,ry(r));be._free(o);let s=5,l=be.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=be.HEAPU32[l[u]>>2],d=be.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=be.HEAPU32[l[u]>>2],f=be.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new hs.Float32BufferAttribute(d,3)),e.setAttribute("normal",new hs.Float32BufferAttribute(f,3));let h=be.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hs.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},be.free_mesh_data(i),m}function V_(n,r,e){if(be===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}=D_(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=be._malloc(a),m=new Float32Array(be.HEAPF32.buffer,f,c),h=new Uint32Array(be.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),be.get_csg_mesh(f,s,f+d,l,i)}function j_(n,r){be.transform_csg_mesh(n,r.elements)}function F_(n){be.free_csg_mesh(n)}var z_={ConeGeometry:$m,CubeGeometry:Ym,CylinderGeometry:Wm,DodecahedronGeometry:Km,EllipseGeometry:ri,HelixGeometry:Sh,IcosahedronGeometry:_h,LatheGeometry:Th,NonParametricGeometry:Ih,PolygonGeometry:wl,PyramidGeometry:Ch,RectangleGeometry:_l,SphereGeometry:Eh,PlaneGeometry:Lh,BackdropGeometry:Bh,StarGeometry:Tl,TextFrameGeometry:Gh,TorusGeometry:Rh,TorusKnotGeometry:jh,TriangleGeometry:Fh,PathGeometry:Uh,VectorGeometry:Rt},pd=n=>z_[n.type].create(n);function ys(n){return n!==null&&"booleanOp"in n}var di=class extends ul(Al.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Al.Matrix4}updateVisible(){super.updateVisible(),this.visible=!ys(this.parent)&&this.visible,ys(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(hr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ys(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof di&&(e.freeBooleanPointer(),ys(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&ys(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var Il=new ui.Box3;function gs(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)}Il.min.set(i,s,l),Il.max.set(c,u,a),Il.getCenter(t),Il.getSize(o).multiplyScalar(.5)}var U_=new ui.BufferGeometry,k_=new ui.MeshBasicMaterial,gt=class extends di{constructor(r,e){super(U_,k_),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?gs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var oo=require("three");var Xt=require("three");var vy=require("three");var gr=require("three");var xs=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 oy=require("three"),pt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=oy.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 pt&&(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 xd=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}},it=new xd;var vd=require("three");var ny=require("three"),ce=class extends pt{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=ny.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 Re=class extends ce{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 ft=class extends Re{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof vd.Vector2?e:new vd.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 bd=require("three");var xt=class extends Re{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof bd.Vector3?e:new bd.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 iy=require("three"),st=class extends iy.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 er=class extends Re{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof st?e:new st(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 H_=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,sy=/[a-z_0-9]+/gi,Q=class extends ce{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=sy.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&&it.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=it.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||it.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&&it.contains(h)&&e.include(it.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=H_.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(sy);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 W_=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Sd=class extends ce{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Sd.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=W_.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=Sd;Te.PI="PI",Te.PI2="PI2",Te.RECIPROCAL_PI="RECIPROCAL_PI",Te.RECIPROCAL_PI2="RECIPROCAL_PI2",Te.LOG2="LOG2",Te.EPSILON="EPSILON";var q_=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
-
)*?)}`,"gim")
|
|
5
|
-
`)),sRGBToLinear:new
|
|
6
|
-
`)),LinearTosRGB:new
|
|
7
|
-
`))},
|
|
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 Ge=require("three");var Jh,ui=new Promise(n=>{Jh=n}),Qh=!1;async function ey(){if(Qh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.347/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});Jh(i),Qh=!0}var ty=require("three");function $o(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=Pe.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 ty.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new tt(n,e);if(n.type==="TextGeometry")return new li(n,r)}let o;try{o=gu(t)}catch(i){console.error(i)}if(!o){let i=Pe.createFromState(xn.defaultData(),100,100);t.shape=i,o=gu(t)}return o}var ry=require("three"),F_=new ry.Matrix4;function Es(n,r,e,t){let o=n.position.array,i=n.normal.array,s=F_.makeScale(r,e,t).invert().elements,l,c,d;for(var a=0,u=o.length;a<u;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],d=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*d,i[a+1]=s[1]*l+s[5]*c+s[9]*d,i[a+2]=s[2]*l+s[6]*c+s[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Il=new Ge.Box3,di=new Ge.Vector3,de;ui.then(n=>{de=n});var oy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ny=new Uint32Array([0,1,2,3]),iy=new Uint8Array([4]),tt=class extends Ge.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=fo.div(t,o);this.subdividedGeometry&&Es(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Es(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(di.fromArray(i));let l=di.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}=tt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new Ge.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&&(tt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ge.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Il.setFromBufferAttribute(t),Il.getCenter(o),e.boundingSphere.radius=o.distanceTo(Il.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Il.getSize(di);let i={width:di.x,height:di.y,depth:di.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,d=e?.phongAngle??35;o===!1&&(d=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=tt.allocate(e,i)}catch(a){console.error(a,e),s=tt.allocate({positionWASM:oy,indexWASM:ny,verticesPerFaceWASM:iy},i)}if(de.set_destination_refinement_level(s,0),l=tt.buildLevel(s,!0,d),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=tt.buildLevel(s,!1,d)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=tt.buildLevel(s,!1,d)}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:$o(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let l,c,d,a;({positions:l,triIndices:a}=Su(i.getAttribute("position"),s));let u;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;u=[p,f]}return{indices:c,verticesPerFace:d}=wu(l,a,i,u),{positions:l,indices:c,verticesPerFace:d}}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=oy,i=ny,s=iy);let d=o.length,a=i.length,u=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=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.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(T=>T!==1)&&(w=new Ge.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,d,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):de.alloc_subdivision_surface(g,d,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return de._free(g),S}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,d=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=d.subarray(4,4+4),u=0,p=de.HEAPU32[d[u]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[u]);u++;let m=de.HEAPU32[d[u]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[u]);u++;let y=de.HEAPU32[d[u]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[u]);u++;let v=de.HEAPU32[d[u]>>2],b=de.HEAPU32.subarray(v>>2,(v>>2)+a[u]);if(u++,i===void 0){let w=new Ge.BufferGeometry;if(w.setIndex(new Ge.Uint32BufferAttribute(b,1)),w.setAttribute("position",new Ge.Float32BufferAttribute(f,3)),w.setAttribute("normal",new Ge.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new Ge.Uint32BufferAttribute(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new Ge.BufferAttribute(S,4))}return de.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,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),d=0,a=de.HEAPU32[l[d]>>2],u=de.HEAPF32.subarray(a>>2,(a>>2)+c[d]);d++;let p=de.HEAPU32[l[d]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[d]);if(t===void 0){let m=new Ge.BufferGeometry;m.setAttribute("position",new Ge.Float32BufferAttribute(u,3));let h=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new Ge.BufferAttribute(h,3)),m.setIndex(new Ge.Uint32BufferAttribute(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),d=c.subarray(3,3+3),a=0,u=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(u>>2,(u>>2)+d[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+d[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+d[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var sy=["getX","getY","getZ"];function Su(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let d=0;d<t;d++){let a=r?r.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[sy[p]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)s.push(n[sy[p]](a));e[u]=o,i.push(o),o++}}let c=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||c.push(i[d],i[d+1],i[d+2]);return{positions:s,triIndices:c}}var Ml=new Ge.Vector3,xu=new Ge.Vector3,vu=new Ge.Vector3,bu=new Ge.Vector3;function wu(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((u,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 d=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(d++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(d++);return i.push(d),{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]){Ml.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),xu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),vu.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),bu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),xu.sub(Ml).normalize(),vu.sub(Ml).normalize(),bu.sub(Ml).normalize();let c=xu.cross(vu).dot(bu);Math.abs(c)>.005||t&&t.some((d,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,d=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,u=0;a<n.length;a+=3,u++)n[a+2]===0&&(s.push(u),c++),n[a+2]===d&&l.push(u);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 xr={};dd(xr,{calcBoolean:()=>H_,calcBooleanTopological:()=>U_,freeMeshSet:()=>$_,getMeshSet:()=>W_,transformMeshSet:()=>q_});var j_,ay=new Promise(n=>{j_=n});var Ls=require("three");var be,pi;ay.then(n=>be=n);function k_(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}=Su(n.getAttribute("position"),o),l;if(r&&e){let{indices:c,verticesPerFace:d}=wu(i,s,n);l=d.length,t=[];for(let a=0,u=0;a<l;a++){t.push(d[a]);for(let p=0;p<d[a];p++)t.push(c[u++])}}else{let c=s.length;t=Array(c+c/3),l=0;for(let d=0,a=0;a<t.length;)t[a++]=3,l++,t[a++]=s[d++],t[a++]=s[d++],t[a++]=s[d++]}return{positions:i,faceIndices:t,nFaces:l}}function ly(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=be._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(be.HEAPU32.buffer,i,r):new Float32Array(be.HEAPF32.buffer,i,r)).set(n,0),i}function cy(n){switch(n){case 0:return be.OP.UNION;case 1:return be.OP.INTERSECTION;case 2:return be.OP.A_MINUS_B;case 3:return be.OP.B_MINUS_A;case 4:return be.OP.SYMMETRIC_DIFFERENCE;case 5:return be.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function U_(n,r){pi===void 0&&(pi=be.init_csg());let e=ly(n),t=be.csg_calc_topological(pi,e,n.length,cy(r));be._free(e);let o=6,i=be.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=be.HEAPU32[i[l]>>2],d=new Float32Array(be.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=be.HEAPU32[i[l]>>2],u=new Uint32Array(be.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=be.HEAPU32[i[l]>>2],f=new Uint8Array(be.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return be.free_mesh_data(t),{positions:d,indices:u,verticesPerFace:f}}function H_(n,r,e,t){pi===void 0&&(pi=be.init_csg());let o=ly(n),i=be.csg_calc(pi,o,n.length,t,cy(r));be._free(o);let s=5,l=be.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),d=0,a=be.HEAPU32[l[d]>>2],u=be.HEAPF32.subarray(a>>2,(a>>2)+c[d]);d++;let p=be.HEAPU32[l[d]>>2],f=be.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let m=c[d];e.setAttribute("position",new Ls.Float32BufferAttribute(u,3)),e.setAttribute("normal",new Ls.Float32BufferAttribute(f,3));let h=be.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ls.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},be.free_mesh_data(i),m}function W_(n,r,e){if(be===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}=k_(n,r,e));let s=t.length,l=o.length,c=t.length,d=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=be._malloc(a),m=new Float32Array(be.HEAPF32.buffer,f,c),h=new Uint32Array(be.HEAPU32.buffer,f+u,d);return m.set(t,0),h.set(o,0),be.get_csg_mesh(f,s,f+u,l,i)}function q_(n,r){be.transform_csg_mesh(n,r.elements)}function $_(n){be.free_csg_mesh(n)}var X_={ConeGeometry:eh,CubeGeometry:th,CylinderGeometry:Qm,DodecahedronGeometry:oh,EllipseGeometry:ii,HelixGeometry:Ch,IcosahedronGeometry:Ih,LatheGeometry:Mh,NonParametricGeometry:Dh,PolygonGeometry:Al,PyramidGeometry:Gh,RectangleGeometry:Cl,SphereGeometry:Vh,PlaneGeometry:Fh,BackdropGeometry:jh,StarGeometry:Nl,TextFrameGeometry:Uh,TorusGeometry:Hh,TorusKnotGeometry:qh,TriangleGeometry:$h,PathGeometry:Yh,VectorGeometry:Vt},gu=n=>X_[n.type].create(n);function Bs(n){return n!==null&&"booleanOp"in n}var fi=class extends yl(El.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new El.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Bs(this.parent)&&this.visible,Bs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(xr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Bs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof fi&&(e.freeBooleanPointer(),Bs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Bs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var Ll=new mi.Box3;function Ds(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,d=-1/0,a=-1/0;for(let u=r;u<e;u++){let p=n.getX(u),f=n.getY(u),m=n.getZ(u);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>d&&(d=f),m>a&&(a=m)}Ll.min.set(i,s,l),Ll.max.set(c,d,a),Ll.getCenter(t),Ll.getSize(o).multiplyScalar(.5)}var Y_=new mi.BufferGeometry,K_=new mi.MeshBasicMaterial,bt=class extends fi{constructor(r,e){super(Y_,K_),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?Ds(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var so=require("three");var Kt=require("three");var Oy=require("three");var br=require("three");var Gs=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 uy=require("three"),mt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=uy.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 mt&&(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 _u=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}},st=new _u;var Tu=require("three");var dy=require("three"),le=class extends mt{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=dy.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 d=this.getTemp(e,o);if(d)return e.format(d,c,t);{d=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(d+" = "+a+";"),e.format(d,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 Ve=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 Qe=class extends Ve{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Tu.Vector2?e:new Tu.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 Pu=require("three");var St=class extends Ve{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Pu.Vector3?e:new Pu.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 py=require("three"),at=class extends py.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 zt=class extends Ve{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof at?e:new at(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 Z_=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,fy=/[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,d=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let a=[];for(;l=fy.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let p=a[u],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&st.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=st.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||st.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&d[p.index+c-1]!=="."&&(d=d.substring(0,p.index+c)+h+d.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&st.contains(h)&&e.include(st.get(h))}return t==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",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=Z_.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(fy);if(l){let c=0;for(;c<l.length;){let d=l[c++],a;d==="in"||d==="out"||d==="inout"?a=l[c++]:(a=d,d="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var Q_=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ou=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ou.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,d="",a=Q_.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],d=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=d}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=Ou;Te.PI="PI",Te.PI2="PI2",Te.RECIPROCAL_PI="RECIPROCAL_PI",Te.RECIPROCAL_PI2="RECIPROCAL_PI2",Te.LOG2="LOG2",Te.EPSILON="EPSILON";var J_=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
+
)*?)}`,"gim"),eT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),hi=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=J_.exec(e);if(t){let o=t[2],i;for(;i=eT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var yi=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)}};st.addKeyword("uv",function(){return new yi});st.addKeyword("uv2",function(){return new yi(1)});var Bl=require("three");var Xo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Xo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Bl.LinearEncoding:return["Linear"];case Bl.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Xo.Nodes[this.method],l=e.include(s);if(l===Xo.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=Xo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Xo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},It=Xo;It.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
|
+
`))},It.LINEAR_TO_LINEAR="LinearToLinear",It.SRGB_TO_LINEAR="sRGBToLinear",It.LINEAR_TO_SRGB="LinearTosRGB";var Ae=class extends U{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var my=require("three"),Ft=class extends Ve{constructor(e=new my.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new yi,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 d={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new It(new Ae("",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 Ve{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 Rs=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)+"( ",d=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],p=this.inputs[a]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}c+=d.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)}},ht=Au;ht.ADD="+",ht.SUB="-",ht.MUL="*",ht.DIV="/";var Le=class extends le{constructor(e,t=Le.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 Le.MIX:case Le.CLAMP:case Le.REFRACT:case Le.SMOOTHSTEP:case Le.FACEFORWARD:return 3;case Le.MIN:case Le.MAX:case Le.MOD:case Le.STEP:case Le.REFLECT:case Le.DISTANCE:case Le.DOT:case Le.CROSS:case Le.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 Le.LENGTH:case Le.DISTANCE:case Le.DOT:return"f";case Le.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,d=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Le.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Le.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Le.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Le.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Le.MIN:case Le.MAX:case Le.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Le.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Le.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,d===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(", ")+" )",u,t)}},fe=Le;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 Rs(gi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new It(new Ae("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new It(new Ae("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new It(new Ae("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new It(new Ae("","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 Ae(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ae(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ae(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ae(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Ae("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 Rs(gi.Nodes.roughnessToMip,[i]),l=new fe(s,gi.Nodes.m0,gi.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(l,fe.FLOOR),d=new fe(l,fe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new ht(c,new Z(1).setReadonly(!0),ht.ADD)),p=new fe(a,u,d,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)}},xi=gi;xi.Nodes=function(){let e=new hi(`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
|
|
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) {
|
|
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
|
|
28
|
+
}`);l.useKeywords=!1;let c=new U(`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
|
|
44
|
+
}`);c.useKeywords=!1;let d=new U(`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]);
|
|
72
|
+
}`,[e,l,c,t,o,i,s]);d.useKeywords=!1;let a=new Te("float r0 1.0",!0),u=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),T=new Te("float r6 0.21",!0),_=new Te("float v6 0.0038",!0),x=new Te("float m6 4.0",!0),N=[a,u,p,f,m,h,y,g,v,b,w,S,T,_,x],P=new U(`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
|
-
}`,
|
|
86
|
+
}`,N);return{bilinearCubeUV:d,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Yo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Yo.VIEW}getShared(){return this.scope===Yo.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 Yo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Yo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Yo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},yt=Yo;yt.LOCAL="local",yt.WORLD="world",yt.VIEW="view",yt.NORMAL="normal";st.addKeyword("viewNormal",function(){return new yt(yt.VIEW)});st.addKeyword("localNormal",function(){return new yt(yt.NORMAL)});st.addKeyword("worldNormal",function(){return new yt(yt.WORLD)});var Vr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Vr.LOCAL}getType(){switch(this.scope){case Vr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Vr.LOCAL:case Vr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case Vr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case Vr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case Vr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Vr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},jt=Vr;jt.LOCAL="local",jt.WORLD="world",jt.VIEW="view",jt.PROJECTION="projection";st.addKeyword("position",function(){return new jt});st.addKeyword("worldPosition",function(){return new jt(jt.WORLD)});st.addKeyword("viewPosition",function(){return new jt(jt.VIEW)});var vr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??vr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case vr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case vr.VECTOR:{let s=new yt(yt.VIEW),l=e.context.roughness,c=s.build(e,"v3"),d=new jt(jt.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${c} )`;a&&(u=`normalize( mix( ${u}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case vr.CUBE:{let s=new vr(vr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case vr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new vr(vr.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)}},zr=vr;zr.CUBE="cube",zr.SPHERE="sphere",zr.VECTOR="vector";var Dl=class extends le{constructor(e=new Ft,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new xi(this.value,t??new zr(zr.VECTOR),o),this.irradianceNode=new xi(this.value,new yt(yt.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 hy=require("three");var Gl=class extends Ve{constructor(e=new hy.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new zr,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},d=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new It(new Ae("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,d),e.removeContext(),e.format(l,d,t)}};var yy=["x","y","z","w"],tT=["float","vec2","vec3","vec4"],rT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},oT={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[]"},Rl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
|
|
87
87
|
`);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",`
|
|
88
88
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
89
89
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -125,10 +125,10 @@
|
|
|
125
125
|
`}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
|
|
126
126
|
`}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+`
|
|
127
127
|
`}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
|
|
128
|
-
`}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
|
|
129
|
-
`)}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,
|
|
128
|
+
`}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 d=l.length;c={name:t||"node"+i+d+(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(`
|
|
129
|
+
`)}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,d=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+`[${d}];
|
|
130
130
|
`:t+=e+" "+a+" "+c+`;
|
|
131
|
-
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof
|
|
131
|
+
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof mt?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,d=new Gs({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(d),l[r].push(d),l[r][d.name]=d,this.uniforms[d.name]=d,d}else{let l=this.inputs.uniforms,c=l.list.length,d=new Gs({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(d),l[r].push(d),l[r][d.name]=d,this.uniforms[d.name]=d,d}}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"?st.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 hi&&(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 tT[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 br.CubeReflectionMapping:case br.CubeRefractionMapping:return new Gl(t);case br.CubeUVReflectionMapping:return new Dl(new Ft(t));default:return new Ft(t)}else{if(t.isVector2)return new Qe(t);if(t.isVector3)return new St(t);if(t.isVector4)return new zt(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 rT[r]||r}getFormatByType(r){return oT[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return yy[r]}getIndexByElement(r){return yy.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=br.LinearEncoding,e===br.LinearEncoding&&this.context.gamma&&(e=br.sRGBEncoding),e}};var Be=require("three");var Ie=class extends Ve{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof at?e:new at(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),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return d?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 Se=class extends Ve{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 Vl=require("three");var Ko=class extends mt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ie(5526619),this.shadingAlpha=new Z(1),this.shadingBlend=new Se(0)}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(Vl.UniformsUtils.merge([Vl.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
132
132
|
`));let i=["#include <beginnormal_vertex>",`
|
|
133
133
|
#if !defined( USE_LAYER_DISPLACE )
|
|
134
134
|
#include <defaultnormal_vertex>
|
|
@@ -146,238 +146,309 @@
|
|
|
146
146
|
#include <begin_vertex>
|
|
147
147
|
#endif /* !USE_LAYER_DISPLACE */
|
|
148
148
|
`];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(`
|
|
149
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
150
|
-
`));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};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
|
|
151
|
-
`)}return t}};var
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
#endif
|
|
149
|
+
`)}else{this.color===void 0&&(this.color=new Ie(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(`
|
|
150
|
+
`));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(`
|
|
151
|
+
`)}return t}};var Fs=require("three");var Sr=class extends Ve{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 wr=class extends Ve{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 gy=require("three");var Ao=class extends Ve{};var zl=class extends Ao{constructor(e){super("v3");this.image=e;this._value=new gy.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 Zo=class extends Ao{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var xy=require("three");var vi=class extends Ve{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new xy.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 by=require("three");function vy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Fl=class extends vi{constructor(e,t){super(new by.Matrix3);this.repeat=e;this.offset=t;vy(this.value,e,t)}updateMatrix(){vy(this.value,this.repeat,this.offset)}};var Cu=require("three");var _r=class extends Ve{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Cu.Vector4?new Array(e).fill(t):new Array(e).fill(new Cu.Vector4(0))}};var bi=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 Nu=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(Nu.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)}},Qo=Nu;Qo.Nodes=function(){return{customColor:new U(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
152
|
+
float lalpha = alpha * mask;
|
|
153
|
+
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
154
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
156
155
|
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
return color;
|
|
157
|
+
}`)}}();var Iu=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(Iu.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)}},Si=Iu;Si.Nodes=function(){return{customNormal:new U(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
158
|
+
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
159
|
+
normal *= step( vec3(0.5), cnormal );
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
#ifdef DOUBLE_SIDED
|
|
181
|
-
vLightBack = vec3( 0.0 );
|
|
182
|
-
vIndirectBack = vec3( 0.0 );
|
|
183
|
-
#endif
|
|
184
|
-
IncidentLight directLight;
|
|
185
|
-
float dotNL;
|
|
186
|
-
vec3 directLightColor_Diffuse;
|
|
187
|
-
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
188
|
-
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
189
|
-
#ifdef DOUBLE_SIDED
|
|
190
|
-
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
191
|
-
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
192
|
-
#endif
|
|
193
|
-
#if NUM_POINT_LIGHTS > 0
|
|
194
|
-
#pragma unroll_loop_start
|
|
195
|
-
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
196
|
-
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
197
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
198
|
-
directLightColor_Diffuse = directLight.color;
|
|
199
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
200
|
-
#ifdef DOUBLE_SIDED
|
|
201
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
202
|
-
#endif
|
|
203
|
-
}
|
|
204
|
-
#pragma unroll_loop_end
|
|
205
|
-
#endif
|
|
206
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
207
|
-
#pragma unroll_loop_start
|
|
208
|
-
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
209
|
-
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
210
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
211
|
-
directLightColor_Diffuse = directLight.color;
|
|
212
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
213
|
-
#ifdef DOUBLE_SIDED
|
|
214
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
215
|
-
#endif
|
|
216
|
-
}
|
|
217
|
-
#pragma unroll_loop_end
|
|
218
|
-
#endif
|
|
219
|
-
#if NUM_DIR_LIGHTS > 0
|
|
220
|
-
#pragma unroll_loop_start
|
|
221
|
-
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
222
|
-
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
223
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
224
|
-
directLightColor_Diffuse = directLight.color;
|
|
225
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
226
|
-
#ifdef DOUBLE_SIDED
|
|
227
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
228
|
-
#endif
|
|
229
|
-
}
|
|
230
|
-
#pragma unroll_loop_end
|
|
231
|
-
#endif
|
|
232
|
-
#if NUM_HEMI_LIGHTS > 0
|
|
233
|
-
#pragma unroll_loop_start
|
|
234
|
-
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
235
|
-
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
236
|
-
#ifdef DOUBLE_SIDED
|
|
237
|
-
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
238
|
-
#endif
|
|
239
|
-
}
|
|
240
|
-
#pragma unroll_loop_end
|
|
241
|
-
#endif
|
|
242
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
243
|
-
`)}else{e.mergeUniform({penumbraSize:vt.penumbraSize}),this.color===void 0&&(this.color=new Ne(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.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}];`,"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(`
|
|
244
|
-
`));let d=["#include <normal_fragment_begin>",`
|
|
245
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
246
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
247
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
248
|
-
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
249
|
-
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
250
|
-
`,"#include <clipping_planes_fragment>"];d.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&d.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),d.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&&d.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),d.push(`
|
|
251
|
-
if (outgoingLight != diffuseColor) {
|
|
252
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
253
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
254
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
161
|
+
float lalpha = alpha * mask;
|
|
162
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
163
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
164
|
+
|
|
165
|
+
return normal;
|
|
166
|
+
}`)}}();var wi=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,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=d,this.mat=a,this.alpha=u,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(wi.Nodes.cylindrical);break;case 2:i=e.include(wi.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(`
|
|
167
|
+
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) {
|
|
168
|
+
|
|
169
|
+
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
170
|
+
|
|
171
|
+
vec4 tmp = texture2D( tex, uvs );
|
|
172
|
+
|
|
173
|
+
vec3 col = tmp.rgb;
|
|
174
|
+
float lalpha = alpha * tmp.a;
|
|
175
|
+
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
|
|
176
|
+
|
|
177
|
+
if ( crop > 0.5 ) {
|
|
178
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
179
|
+
lalpha = 0.0;
|
|
180
|
+
}
|
|
255
181
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
`));let i=["#include <beginnormal_vertex>",`
|
|
259
|
-
#ifndef USE_LAYER_DISPLACE
|
|
260
|
-
#include <defaultnormal_vertex>
|
|
261
|
-
#endif
|
|
182
|
+
|
|
183
|
+
lalpha *= mask;
|
|
262
184
|
|
|
185
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
186
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
263
187
|
|
|
264
|
-
|
|
265
|
-
|
|
188
|
+
return col;
|
|
189
|
+
}`);i=e.include(c);break;case 4:i=e.include(wi.Nodes.triplanar);break;default:i=e.include(wi.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)}},_i=wi;_i.Nodes=function(){let e=new U(`
|
|
190
|
+
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) {
|
|
191
|
+
vec3 posN = normalize(position);
|
|
192
|
+
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
193
|
+
float scaledHeight = position.y / (size.y * 0.5);
|
|
194
|
+
float v = (scaledHeight / 2.) + .5;
|
|
266
195
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
196
|
+
vec2 calculatedUv = vec2(u,v);
|
|
197
|
+
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
198
|
+
|
|
199
|
+
vec2 df = fwidth(uvs);
|
|
200
|
+
if(df.x > 0.5) df.x = 0.;
|
|
201
|
+
|
|
202
|
+
#ifdef GL_EXT_shader_texture_lod
|
|
203
|
+
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
204
|
+
#else
|
|
205
|
+
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
274
206
|
#endif
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
283
|
-
normal *= -1.0;
|
|
284
|
-
}
|
|
285
|
-
`," BlinnPhongMaterial material;"];d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),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 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),d.push(`
|
|
286
|
-
if (outgoingLight != diffuseColor) {
|
|
287
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
288
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
289
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
207
|
+
|
|
208
|
+
vec3 col = tmp.rgb;
|
|
209
|
+
float lalpha = alpha * tmp.a;
|
|
210
|
+
if ( crop > 0.5 ) {
|
|
211
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
212
|
+
lalpha = 0.0;
|
|
213
|
+
}
|
|
290
214
|
}
|
|
291
|
-
`),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(`
|
|
292
|
-
`)}return t}};var yi=require("three");var _s=class extends pt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ne(5526619),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new Se(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(yi.UniformsUtils.merge([yi.UniformsLib.fog,yi.UniformsLib.lights])),yi.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(`
|
|
293
|
-
`));let i=["#include <beginnormal_vertex>",`
|
|
294
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
295
|
-
#include <defaultnormal_vertex>
|
|
296
|
-
#endif
|
|
297
215
|
|
|
298
|
-
|
|
299
|
-
|
|
216
|
+
lalpha *= mask;
|
|
217
|
+
|
|
218
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
219
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
300
220
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
221
|
+
return col;
|
|
222
|
+
}
|
|
223
|
+
`),t=new U(`
|
|
224
|
+
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) {
|
|
225
|
+
vec3 posN = normalize(vPosition);
|
|
226
|
+
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
227
|
+
float v = 0.5 + asin(posN.y) / 3.1415;
|
|
228
|
+
|
|
229
|
+
vec2 calculatedUv = vec2(u,v);
|
|
230
|
+
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
231
|
+
|
|
232
|
+
vec2 df = fwidth(uvs);
|
|
233
|
+
if(df.x > 0.5) df.x = 0.;
|
|
234
|
+
#ifdef GL_EXT_shader_texture_lod
|
|
235
|
+
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
236
|
+
#else
|
|
237
|
+
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
304
238
|
#endif
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
313
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
314
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
315
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
316
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
317
|
-
normal *= -1.0;
|
|
239
|
+
|
|
240
|
+
vec3 col = tmp.rgb;
|
|
241
|
+
float lalpha = alpha * tmp.a;
|
|
242
|
+
if ( crop > 0.5 ) {
|
|
243
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
244
|
+
lalpha = 0.0;
|
|
245
|
+
}
|
|
318
246
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
247
|
+
|
|
248
|
+
lalpha *= mask;
|
|
249
|
+
|
|
250
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
251
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
252
|
+
|
|
253
|
+
return col;
|
|
254
|
+
}
|
|
255
|
+
`),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) {
|
|
256
|
+
|
|
257
|
+
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
258
|
+
vec4 tmp = texture2D( tex, uvs );
|
|
259
|
+
|
|
260
|
+
vec3 col = tmp.rgb;
|
|
261
|
+
|
|
262
|
+
float lalpha = alpha * tmp.a;
|
|
263
|
+
if ( crop > 0.5 ) {
|
|
264
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
265
|
+
lalpha = 0.0;
|
|
266
|
+
}
|
|
324
267
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
`));let i=["#include <beginnormal_vertex>",`
|
|
328
|
-
#ifndef USE_LAYER_DISPLACE
|
|
329
|
-
#include <defaultnormal_vertex>
|
|
330
|
-
#endif
|
|
268
|
+
|
|
269
|
+
lalpha *= mask;
|
|
331
270
|
|
|
332
|
-
|
|
333
|
-
|
|
271
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
272
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
334
273
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
274
|
+
return col;
|
|
275
|
+
}`),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) {
|
|
276
|
+
vec3 p = position;
|
|
277
|
+
vec2 uv0 = (1.0 + p.xy) / 2.0;
|
|
278
|
+
vec2 uv1 = (1.0 + p.zy) / 2.0;
|
|
279
|
+
vec2 uv2 = (1.0 + p.xz) / 2.0;
|
|
280
|
+
|
|
281
|
+
uv0 = (mat * vec3((uv0 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
|
|
282
|
+
uv1 = (mat * vec3((uv1 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
|
|
283
|
+
uv2 = (mat * vec3((uv2 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
|
|
284
|
+
|
|
285
|
+
// Range from 3 to 128 seems to be good
|
|
286
|
+
float exponent = (1.0 - blending) * 125.0 + 3.0;
|
|
287
|
+
|
|
288
|
+
vec3 n = vObjectNormal;
|
|
289
|
+
vec3 weights = abs(normalize(n));
|
|
290
|
+
weights = pow(weights, vec3(exponent));
|
|
291
|
+
weights /= dot(weights, vec3(1.0));
|
|
292
|
+
|
|
293
|
+
// Derivatives for LOD
|
|
294
|
+
vec2 df0 = fwidth(uv0);
|
|
295
|
+
vec2 df1 = fwidth(uv1);
|
|
296
|
+
vec2 df2 = fwidth(uv2);
|
|
297
|
+
if (df0.x > 0.5) df0.x = 0.0;
|
|
298
|
+
if (df1.x > 0.5) df1.x = 0.0;
|
|
299
|
+
if (df2.x > 0.5) df2.x = 0.0;
|
|
300
|
+
|
|
301
|
+
#ifdef GL_EXT_shader_texture_lod
|
|
302
|
+
vec4 tmp =
|
|
303
|
+
texture2DLodEXT(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z +
|
|
304
|
+
texture2DLodEXT(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x +
|
|
305
|
+
texture2DLodEXT(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
|
|
306
|
+
#else
|
|
307
|
+
vec4 tmp =
|
|
308
|
+
textureLod(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z +
|
|
309
|
+
textureLod(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x +
|
|
310
|
+
textureLod(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
|
|
342
311
|
#endif
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
};
|
|
352
|
-
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
353
|
-
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
354
|
-
|
|
355
|
-
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
356
|
-
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
312
|
+
|
|
313
|
+
vec3 col = tmp.rgb;
|
|
314
|
+
float lalpha = alpha * tmp.a;
|
|
315
|
+
|
|
316
|
+
// Apply cropping across all 3 planes
|
|
317
|
+
if ( crop > 0.5 ) {
|
|
318
|
+
if ( uv0.x < 0.0 || uv0.x > 1.0 || uv0.y < 0.0 || uv0.y > 1.0 ) {
|
|
319
|
+
lalpha = 0.0;
|
|
357
320
|
}
|
|
358
|
-
|
|
359
|
-
|
|
321
|
+
if ( uv1.x < 0.0 || uv1.x > 1.0 || uv1.y < 0.0 || uv1.y > 1.0 ) {
|
|
322
|
+
lalpha = 0.0;
|
|
323
|
+
}
|
|
324
|
+
if ( uv2.x < 0.0 || uv2.x > 1.0 || uv2.y < 0.0 || uv2.y > 1.0 ) {
|
|
325
|
+
lalpha = 0.0;
|
|
360
326
|
}
|
|
361
|
-
#define RE_Direct RE_Direct_Toon
|
|
362
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
363
|
-
#define Material_LightProbeLOD( material ) (0)
|
|
364
|
-
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
365
|
-
`));let d=["#include <normal_fragment_begin>",`
|
|
366
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
367
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
368
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
369
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
370
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
371
|
-
normal *= -1.0;
|
|
372
327
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
328
|
+
|
|
329
|
+
lalpha *= mask;
|
|
330
|
+
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
331
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
332
|
+
|
|
333
|
+
return col;//n * 0.5 + 0.5;
|
|
334
|
+
}
|
|
335
|
+
`);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Ti=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,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=d,this.colors=a,this.steps=u,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) {
|
|
336
|
+
vec4 color = colors[0];
|
|
337
|
+
#ifdef ${o}_IS_VECTOR
|
|
338
|
+
#ifdef ${o}_LINEAR
|
|
339
|
+
#ifdef ${o}_WORLDSPACE
|
|
340
|
+
float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
|
|
341
|
+
#else
|
|
342
|
+
float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
|
|
343
|
+
#endif
|
|
344
|
+
#else
|
|
345
|
+
#ifdef ${o}_WORLDSPACE
|
|
346
|
+
float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
|
|
347
|
+
#else
|
|
348
|
+
float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
|
|
349
|
+
#endif
|
|
350
|
+
#endif
|
|
351
|
+
#else
|
|
352
|
+
float dist = length(vWPosition - cameraPosition);
|
|
353
|
+
float depth = ( dist - near ) / ( far - near );
|
|
354
|
+
#endif
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
float p;
|
|
358
|
+
#ifdef ${o}_SMOOTH
|
|
359
|
+
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
360
|
+
p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
361
|
+
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
362
|
+
}
|
|
363
|
+
#else
|
|
364
|
+
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
365
|
+
p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
|
|
366
|
+
color = mix(color, colors[i], p);
|
|
367
|
+
}
|
|
368
|
+
#endif
|
|
369
|
+
|
|
370
|
+
float lalpha = alpha * color.a * mask;
|
|
371
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
372
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
373
|
+
|
|
374
|
+
return color.rgb;
|
|
375
|
+
}`,[Ti.Nodes.vectorLinearWorldSpaceDepth,Ti.Nodes.vectorLinearObjectSpaceDepth,Ti.Nodes.vectorSphericalObjectSpaceDepth,Ti.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)}},Pi=Ti;Pi.Nodes=function(){let e=new U(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
376
|
+
vec3 n = normalize(direction);
|
|
377
|
+
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
378
|
+
return ( dist - near ) / ( far - near );
|
|
379
|
+
}`),t=new U(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
380
|
+
vec3 n = normalize(direction);
|
|
381
|
+
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
382
|
+
return ( dist - near ) / ( far - near );
|
|
383
|
+
}`),o=new U(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
384
|
+
float dist = length(vWPosition - origin);
|
|
385
|
+
return ( dist - near ) / ( far - near );
|
|
386
|
+
}`),i=new U(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
387
|
+
float dist = length(position - origin);
|
|
388
|
+
return ( dist - near ) / ( far - near );
|
|
389
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Vs=class extends le{constructor(e,t,o,i,s,l,c,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=d,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) {
|
|
390
|
+
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
391
|
+
|
|
392
|
+
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
393
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
394
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
395
|
+
|
|
396
|
+
return color;
|
|
397
|
+
}`),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 Mu=class extends le{constructor(e,t,o,i,s,l,c,d,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=d,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(Mu.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)}},Oi=Mu;Oi.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) {
|
|
398
|
+
vec4 color = colors[0];
|
|
399
|
+
vec2 m = morph / vUv.xy;
|
|
400
|
+
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
401
|
+
vec2 dt = vec2(
|
|
402
|
+
cos( angle ) * rot.x - sin( angle ) * rot.y,
|
|
403
|
+
sin( angle ) * rot.x + cos( angle ) * rot.y
|
|
404
|
+
);
|
|
405
|
+
vec2 pt = ( vUv - 0.5 + offset ) / 2.0 + dt / 2.0;
|
|
406
|
+
float t = dot( pt, dt ) / dot( dt, dt );
|
|
407
|
+
if ( gradientType == 1 ) {
|
|
408
|
+
t = distance (
|
|
409
|
+
( vUv + morph ) * 3.0,
|
|
410
|
+
( vUv + offset ) + 1.0
|
|
411
|
+
) + angle;
|
|
412
|
+
} else if ( gradientType == 2 ) {
|
|
413
|
+
float polar = atan(
|
|
414
|
+
vUv.x + morph.x - 0.5 + offset.x,
|
|
415
|
+
vUv.y + morph.y - 0.5 + offset.y
|
|
416
|
+
) * -1.0;
|
|
417
|
+
t = fract( ( angle / PI / -2.0 ) + 0.5 * ( polar / PI ) );
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
float p;
|
|
421
|
+
if (smoothed) {
|
|
422
|
+
for ( int i = 1; i < GRAD_MAX; i++ ) {
|
|
423
|
+
p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
424
|
+
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
} else {
|
|
428
|
+
for ( int i = 1; i < GRAD_MAX; i++ ) {
|
|
429
|
+
p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
430
|
+
color = mix(color, colors[i], p);
|
|
431
|
+
}
|
|
378
432
|
}
|
|
379
|
-
|
|
380
|
-
|
|
433
|
+
|
|
434
|
+
float lalpha = alpha * color.a * mask;
|
|
435
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
436
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
437
|
+
|
|
438
|
+
return color.xyz;
|
|
439
|
+
}`)}}();var Eu=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(Eu.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)}},Ai=Eu;Ai.Nodes=function(){return{matcap:new U(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
440
|
+
vec3 viewDir = normalize( vViewPosition );
|
|
441
|
+
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
442
|
+
vec3 y = cross( viewDir, x );
|
|
443
|
+
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
|
|
444
|
+
vec4 matcapColor = texture2D( matcapTex, uv );
|
|
445
|
+
|
|
446
|
+
float lalpha = alpha * mask;
|
|
447
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
448
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
449
|
+
|
|
450
|
+
return matcapColor.rgb;
|
|
451
|
+
}`)}}();var zs=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(zs||{}),gt=function(){let r=new U(`vec3 random3(vec3 c) {
|
|
381
452
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
382
453
|
vec3 r;
|
|
383
454
|
r.z = fract(512.0*j);
|
|
@@ -386,7 +457,7 @@
|
|
|
386
457
|
j *= .125;
|
|
387
458
|
r.y = fract(512.0*j);
|
|
388
459
|
return r-0.5;
|
|
389
|
-
}`),e=new
|
|
460
|
+
}`),e=new U(`float simplex3d(vec3 p) {
|
|
390
461
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
391
462
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
392
463
|
|
|
@@ -417,7 +488,7 @@
|
|
|
417
488
|
d *= w;
|
|
418
489
|
|
|
419
490
|
return dot(d, vec4(52.0));
|
|
420
|
-
}`,[r]);e.keywords.F3=new Te("float F3 0.3333333"),e.keywords.G3=new Te("float G3 0.1666667");let t=new
|
|
491
|
+
}`,[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) {
|
|
421
492
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
422
493
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
423
494
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -425,7 +496,7 @@
|
|
|
425
496
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
426
497
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
427
498
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
428
|
-
}`,[e]),o=new
|
|
499
|
+
}`,[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) {
|
|
429
500
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
430
501
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
431
502
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -470,7 +541,7 @@
|
|
|
470
541
|
m = m * m;
|
|
471
542
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
472
543
|
dot(p2,x2), dot(p3,x3) ) );
|
|
473
|
-
}`,[o,i]),l=new
|
|
544
|
+
}`,[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]),d=new U(`float noise(vec3 p){
|
|
474
545
|
vec3 a = floor(p);
|
|
475
546
|
vec3 d = p - a;
|
|
476
547
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -485,7 +556,7 @@
|
|
|
485
556
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
486
557
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
487
558
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
488
|
-
}`,[c]),a=new
|
|
559
|
+
}`,[c]),a=new U(`float fbm(vec3 x) {
|
|
489
560
|
float v = 0.0;
|
|
490
561
|
float a = 0.5;
|
|
491
562
|
vec3 shift = vec3(100);
|
|
@@ -495,7 +566,7 @@
|
|
|
495
566
|
a *= 0.5;
|
|
496
567
|
}
|
|
497
568
|
return v;
|
|
498
|
-
}`,[
|
|
569
|
+
}`,[d]);a.keywords.NUM_OCTAVES=new Te(`int NUM_OCTAVES ${5}`);let u=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){
|
|
499
570
|
vec3 Pi0 = floor(P);
|
|
500
571
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
501
572
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -554,56 +625,220 @@
|
|
|
554
625
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
555
626
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
556
627
|
return 2.2 * n_xyz;
|
|
557
|
-
}`,[o,i,
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
628
|
+
}`,[o,i,u]),f=new U(`float hashwithoutsine13(vec3 p3)
|
|
629
|
+
{
|
|
630
|
+
p3 = fract(p3 * .1031);
|
|
631
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
632
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
633
|
+
}`),m=new U(`vec3 hashwithoutsine33(vec3 p3)
|
|
634
|
+
{
|
|
635
|
+
p3 = fract(p3 * vec3(.1031, .1030, .0973));
|
|
636
|
+
p3 += dot(p3, p3.yxz+33.33);
|
|
637
|
+
return fract((p3.xxy + p3.yxx)*p3.zyx);
|
|
638
|
+
}`),h=new U(`float metric(in vec3 p)
|
|
639
|
+
{
|
|
640
|
+
// L2
|
|
641
|
+
return length(p);
|
|
642
|
+
|
|
643
|
+
// Chebyshev
|
|
644
|
+
// vec3 a = abs(p);
|
|
645
|
+
// return max(a.x, max(a.y, a.z));
|
|
646
|
+
}`),y=new U(`float smin( float a, float b, float k )
|
|
647
|
+
{
|
|
648
|
+
float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
|
|
649
|
+
float correction = k * h * (1.0 - h);
|
|
650
|
+
return mix(b, a, h) - correction;
|
|
651
|
+
}`),g=new U(`float smax( float a, float b, float k )
|
|
652
|
+
{
|
|
653
|
+
float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
|
|
654
|
+
float correction = k * h * (1.0 - h);
|
|
655
|
+
return mix(a, b, h) + correction;
|
|
656
|
+
}`),v=new U(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
|
|
657
|
+
// Compute width of each interval
|
|
658
|
+
float input_width = input_max - input_min;
|
|
659
|
+
float output_width = output_max - output_min;
|
|
660
|
+
|
|
661
|
+
// Convert input range into a 0-1 range
|
|
662
|
+
float scaled = (value - input_min) / input_width;
|
|
663
|
+
|
|
664
|
+
// Convert the 0-1 range into a value in output range
|
|
665
|
+
return output_min + (scaled * output_width);
|
|
666
|
+
}`),b=new U(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
|
|
667
|
+
{
|
|
668
|
+
// Integer and fractional parts of this point's coordinates
|
|
669
|
+
ivec3 p = ivec3(floor(x));
|
|
670
|
+
vec3 f = fract(x);
|
|
671
|
+
|
|
672
|
+
// Different variables that we will use to construct noise:
|
|
673
|
+
//
|
|
674
|
+
// f1: distance to the closest feature point
|
|
675
|
+
// f2: distance to the second closest feature point
|
|
676
|
+
// e: distance to the closest edge (cell boundary)
|
|
677
|
+
//
|
|
678
|
+
// We also compute "smooth" versions of all of the above quantites, essentially
|
|
679
|
+
// replacing "hard" minimums with "smooth" minimums (described by IQ)
|
|
680
|
+
float f1_smooth = 8.0;
|
|
681
|
+
float f1 = 8.0;
|
|
682
|
+
float f2_smooth = 8.0;
|
|
683
|
+
float f2 = 8.0;
|
|
684
|
+
float e_smooth = 8.0;
|
|
685
|
+
float e = 8.0;
|
|
686
|
+
|
|
687
|
+
// Variables stored from closest cell
|
|
688
|
+
ivec3 mb;
|
|
689
|
+
vec3 mr;
|
|
690
|
+
|
|
691
|
+
int steps = quality;
|
|
692
|
+
|
|
693
|
+
for (int x = -steps; x <= steps; x++)
|
|
694
|
+
for (int y = -steps; y <= steps; y++)
|
|
695
|
+
for (int z = -steps; z <= steps; z++)
|
|
696
|
+
{
|
|
697
|
+
ivec3 b = ivec3(x, y, z);
|
|
698
|
+
vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
|
|
699
|
+
float d = length(r);
|
|
700
|
+
|
|
701
|
+
f1_smooth = smin(d, f1_smooth, smoothness);
|
|
579
702
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
vec3 st = position / noiseScale;
|
|
586
|
-
vec3 q = vec3(simplex3d(st),
|
|
587
|
-
simplex3d(st + vec3(1.0)),
|
|
588
|
-
simplex3d(st + vec3(1.0)));
|
|
703
|
+
// Store un-smoothed distances too
|
|
704
|
+
if (d < f1)
|
|
705
|
+
{
|
|
706
|
+
f2 = f1;
|
|
707
|
+
f1 = d;
|
|
589
708
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
709
|
+
mb = ivec3(x, y, z);
|
|
710
|
+
mr = r;
|
|
711
|
+
}
|
|
712
|
+
else if (d < f2)
|
|
713
|
+
{
|
|
714
|
+
f2 = d;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
float id = hashwithoutsine13(vec3(p + mb) + seed);
|
|
593
719
|
|
|
594
|
-
|
|
720
|
+
// Second pass for edge distance
|
|
721
|
+
for (int x = -steps; x <= steps; x++)
|
|
722
|
+
for (int y = -steps; y <= steps; y++)
|
|
723
|
+
for (int z = -steps; z <= steps; z++)
|
|
724
|
+
{
|
|
725
|
+
// Start search at the cell that contains the closest point to "x" (found in 1st pass)
|
|
726
|
+
ivec3 b = mb + ivec3(x, y, z);
|
|
727
|
+
vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
|
|
728
|
+
float d1 = dot(0.5 * (mr + r), (r - mr)); // IQ normalizes "r - mr" but that breaks things for the smooth version?
|
|
729
|
+
float d2 = dot(0.5 * (mr + r), normalize(r - mr));
|
|
595
730
|
|
|
596
|
-
|
|
597
|
-
}`,[wt.simplex]);return{rainbow:new Q(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
598
|
-
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
731
|
+
e_smooth = smin(d1, e_smooth, smoothness);
|
|
599
732
|
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
733
|
+
e = min(e, d2);
|
|
734
|
+
|
|
735
|
+
// Also compute a smooth version of F2 in this pass
|
|
736
|
+
{
|
|
737
|
+
ivec3 b = ivec3(x, y, z);
|
|
738
|
+
if (b != mb)
|
|
739
|
+
{
|
|
740
|
+
vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
|
|
741
|
+
float d = length(r);
|
|
742
|
+
|
|
743
|
+
f2_smooth = smin(d, f2_smooth, smoothness);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
// Different visualization modes
|
|
749
|
+
if (style == 0)
|
|
750
|
+
{
|
|
751
|
+
return f1_smooth;
|
|
752
|
+
}
|
|
753
|
+
if (style == 1)
|
|
754
|
+
{
|
|
755
|
+
return f2_smooth;
|
|
756
|
+
}
|
|
757
|
+
if (style == 2)
|
|
758
|
+
{
|
|
759
|
+
return f2_smooth - f1_smooth;
|
|
760
|
+
|
|
761
|
+
// "Pebbles" also cool
|
|
762
|
+
//return step(0.2, f2_smooth - f1_smooth);
|
|
763
|
+
}
|
|
764
|
+
if (style == 3)
|
|
765
|
+
{
|
|
766
|
+
// This one is really good for rock / stone effects
|
|
767
|
+
float a = f1;
|
|
768
|
+
float b = f2;
|
|
769
|
+
float k = 3.0;
|
|
770
|
+
float h = max(k - abs(a - b), 0.0) / k;
|
|
771
|
+
float final = min(a, b) - h * h * k * (1.0 / 4.0);
|
|
772
|
+
return final;
|
|
773
|
+
}
|
|
774
|
+
if (style == 4)
|
|
775
|
+
{
|
|
776
|
+
// Some random adjustments to make this style stand out more
|
|
777
|
+
return exp(5.0 * e_smooth);
|
|
778
|
+
}
|
|
779
|
+
if (style == 5)
|
|
780
|
+
{
|
|
781
|
+
return pow(f1_smooth, 3.0);
|
|
782
|
+
}
|
|
783
|
+
if (style == 6)
|
|
784
|
+
{
|
|
785
|
+
const float eps = 0.0125;
|
|
786
|
+
|
|
787
|
+
// Thicker lines as the user increases the smoothness slider
|
|
788
|
+
float thickness = smoothness * 0.25 + eps;
|
|
789
|
+
|
|
790
|
+
// Blurrier lines as the user increases the smoothness slider
|
|
791
|
+
float blur = pow(smoothness, 3.0) * 0.25 + eps;
|
|
792
|
+
|
|
793
|
+
return smoothstep(
|
|
794
|
+
thickness - thickness * blur,
|
|
795
|
+
thickness + thickness * blur,
|
|
796
|
+
e
|
|
797
|
+
);
|
|
798
|
+
}
|
|
799
|
+
if (style == 7)
|
|
800
|
+
{
|
|
801
|
+
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
`,[f,m,h,y,g,v]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p,voronoi:b}}();var Ci=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,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=d,this.colorC=a,this.colorD=u,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(zs)[this.noiseType.value],c=l=="voronoi"?`
|
|
805
|
+
float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
806
|
+
|
|
807
|
+
// Apply clipping to colors
|
|
808
|
+
v = remap(v, lowCut, highCut, 0.0, 1.0);
|
|
809
|
+
v = smax(v, 0.0, smoothness * 0.25);
|
|
810
|
+
v = smin(v, 1.0, smoothness * 0.25);
|
|
811
|
+
|
|
812
|
+
// Note that the voronoi mode only uses colors "A" and "C" from the UI
|
|
813
|
+
vec4 color = mix(colorA, colorC, v);
|
|
814
|
+
`:`
|
|
815
|
+
vec3 q = vec3(${l}(st),
|
|
816
|
+
${l}(st + vec3(1.0)),
|
|
817
|
+
${l}(st + vec3(1.0)));
|
|
818
|
+
vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
|
|
819
|
+
${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
|
|
820
|
+
${l}(st * q));
|
|
821
|
+
float f = ${l}(st + r);
|
|
822
|
+
vec4 color;
|
|
823
|
+
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
824
|
+
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
825
|
+
color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
|
|
826
|
+
`,d=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)
|
|
827
|
+
{
|
|
828
|
+
// Prevent scale of zero
|
|
829
|
+
scale = max(abs(scale), 0.001);
|
|
830
|
+
|
|
831
|
+
vec3 st = position / size;
|
|
832
|
+
st /= scale;
|
|
604
833
|
|
|
605
|
-
|
|
606
|
-
|
|
834
|
+
${c}
|
|
835
|
+
|
|
836
|
+
float lalpha = alpha * color.a * mask;
|
|
837
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
838
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
839
|
+
|
|
840
|
+
return clamp(color, 0.0, 1.0).rgb;
|
|
841
|
+
}`,[gt.simplex,gt.simplexFractal,gt.simplexAshima,gt.fbm,gt.perlin,gt.voronoi]),a=e.include(d),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.voronoiStyle.build(e,"i")),u.push(this.highCut.build(e,"f")),u.push(this.lowCut.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.seed.build(e,"f")),u.push(this.quality.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(a+"("+u.join(",")+")",this.getType(e),t)}};Ci.numOctaves=5;var Lu=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,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=d,this.contourDirection=a,this.positionalLines=u,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){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
607
842
|
vID = randomColor.r;
|
|
608
843
|
if (${s}) {
|
|
609
844
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -617,7 +852,7 @@
|
|
|
617
852
|
// if this offset is the biggest of all the potential offsets
|
|
618
853
|
gl_Position = ${c}_clipPosition;
|
|
619
854
|
}
|
|
620
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
855
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Lu.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ni=Lu;Ni.Nodes=function(){let e=new U(`
|
|
621
856
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
622
857
|
{
|
|
623
858
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -718,7 +953,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
718
953
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
719
954
|
return edgeNormal;
|
|
720
955
|
}
|
|
721
|
-
`);return{outline:new
|
|
956
|
+
`);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) {
|
|
722
957
|
vec3 result = outlineColor;
|
|
723
958
|
float resultAlpha = 0.0;
|
|
724
959
|
|
|
@@ -753,356 +988,293 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
753
988
|
}
|
|
754
989
|
}
|
|
755
990
|
|
|
756
|
-
float lalpha = alpha * resultAlpha;
|
|
991
|
+
float lalpha = alpha * resultAlpha * mask;
|
|
757
992
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
758
993
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
994
|
+
|
|
759
995
|
return result;
|
|
760
|
-
}`,[e])}}();var
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
996
|
+
}`,[e])}}();var Fr=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,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=d,this.size=a,this.variation=u,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)
|
|
997
|
+
{
|
|
998
|
+
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
999
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
1000
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
1001
|
+
}`),l=new U(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
|
|
1002
|
+
{
|
|
1003
|
+
const float mid = 0.5;
|
|
1004
|
+
float radians = a * (PI / 180.0);
|
|
1005
|
+
vec2 rotated = vec2(
|
|
1006
|
+
cos(radians) * (uv.x - mid) + sin(radians) * (uv.y - mid) + mid,
|
|
1007
|
+
cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
|
|
1008
|
+
);
|
|
1009
|
+
return repeat ? fract(rotated): rotated;
|
|
1010
|
+
}`),c="";if(this.projection.value===4){let p=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,m=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;c=`
|
|
1011
|
+
vec3 p = position;
|
|
1012
|
+
float factor = 0.0125;
|
|
1013
|
+
vec2 uv0 = fract(p.xy * factor);
|
|
1014
|
+
vec2 uv1 = fract(p.zy * factor);
|
|
1015
|
+
vec2 uv2 = fract(p.xz * factor);
|
|
1016
|
+
|
|
1017
|
+
uv0 = rotate_uv(uv0 + offset, rotation, true);
|
|
1018
|
+
uv1 = rotate_uv(uv1 + offset, rotation, true);
|
|
1019
|
+
uv2 = rotate_uv(uv2 + offset, rotation, true);
|
|
1020
|
+
|
|
1021
|
+
float d0 = ${p};
|
|
1022
|
+
float d1 = ${f};
|
|
1023
|
+
float d2 = ${m};
|
|
1024
|
+
|
|
1025
|
+
// Range from 3 to 128 seems to be good
|
|
1026
|
+
float exponent = (1.0 - blending) * 125.0 + 3.0;
|
|
1027
|
+
|
|
1028
|
+
vec3 n = vObjectNormal;
|
|
1029
|
+
vec3 weights = abs(normalize(n));
|
|
1030
|
+
weights = pow(weights, vec3(exponent));
|
|
1031
|
+
weights /= dot(weights, vec3(1.0));
|
|
1032
|
+
d0 *= weights.z;
|
|
1033
|
+
d1 *= weights.x;
|
|
1034
|
+
d2 *= weights.y;
|
|
1035
|
+
float draw = d0 + d1 + d2;
|
|
1036
|
+
|
|
1037
|
+
vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
|
|
1038
|
+
`}else{let p=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f="";this.axis.value===0?f=`float radius = length(p);
|
|
1039
|
+
float theta = atan(p.y, p.z);
|
|
1040
|
+
float phi = acos(p.x / radius);`:this.axis.value===1?f=`float radius = length(p);
|
|
1041
|
+
float theta = atan(p.x, p.z);
|
|
1042
|
+
float phi = acos(p.y / radius);`:(this.axis.value,f=`float radius = length(p);
|
|
1043
|
+
float theta = atan(p.y, p.x);
|
|
1044
|
+
float phi = acos(p.z / radius);`);let m="";switch(this.projection.value){case 0:m="custom_uv = vUv.st;";break;case 1:break;case 2:m=`
|
|
1045
|
+
vec3 p = position;
|
|
1046
|
+
${f}
|
|
1047
|
+
custom_uv = vec2(theta, phi);
|
|
1048
|
+
custom_uv /= PI;
|
|
1049
|
+
`;break;case 3:break;default:break}c=`
|
|
1050
|
+
vec2 custom_uv;
|
|
1051
|
+
${m}
|
|
1052
|
+
|
|
1053
|
+
custom_uv += offset;
|
|
1054
|
+
custom_uv = fract(custom_uv);
|
|
1055
|
+
custom_uv = rotate_uv(custom_uv, rotation, true);
|
|
1056
|
+
|
|
1057
|
+
float draw = ${p};
|
|
1058
|
+
`}let d=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) {
|
|
1059
|
+
const float TWO_PI = PI * 2.0;
|
|
1060
|
+
float smoothness_remapped = pow(smoothness, 5.0);
|
|
1061
|
+
|
|
1062
|
+
${c}
|
|
1063
|
+
|
|
1064
|
+
// Construct final output color
|
|
1065
|
+
vec4 color = mix(colorA, colorB, draw);
|
|
1066
|
+
color.a = clamp(color.a, 0.0, 1.0);
|
|
1067
|
+
|
|
1068
|
+
// Apply cuts
|
|
1069
|
+
color.a *=
|
|
1070
|
+
step(vertical.x, custom_uv.y) *
|
|
1071
|
+
step(custom_uv.y, vertical.y);
|
|
1072
|
+
color.a *=
|
|
1073
|
+
step(horizontal.x, abs(custom_uv.x)) *
|
|
1074
|
+
step(abs(custom_uv.x), horizontal.y);
|
|
1075
|
+
|
|
1076
|
+
// Accumulate alpha
|
|
1077
|
+
float lalpha = alpha * clamp(color.a, 0.0, 1.0) * mask;
|
|
1078
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
1079
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1080
|
+
|
|
1081
|
+
return clamp(color, 0.0, 1.0).rgb;
|
|
1082
|
+
}`,[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(d),u=[];return u.push("normal"),u.push(this.blending.build(e,"f")),u.push(this.style.build(e,"i")),u.push(this.offset.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.frequency.build(e,"v2")),u.push(this.size.build(e,"f")),u.push(this.variation.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.zigzag.build(e,"f")),u.push(this.rotation.build(e,"f")),u.push(this.vertical.build(e,"v2")),u.push(this.horizontal.build(e,"v2")),u.push(this.sides.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(a+"("+u.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)}},Ii=Fr;Ii.DrawFunctions=function(){let e=new U(`float hashwithoutsine12(vec2 p) {
|
|
1083
|
+
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1084
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
1085
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
1086
|
+
}`),t=new U(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
|
|
1087
|
+
// Create tiles in UV-space
|
|
1088
|
+
uv *= frequency;
|
|
1089
|
+
|
|
1090
|
+
// Integer coords
|
|
1091
|
+
vec2 i = floor(uv);
|
|
1092
|
+
|
|
1093
|
+
// Offset every other row based on zigzag param, then compute fractional coords
|
|
1094
|
+
float row_offset = mod(i.y, 2.0);
|
|
1095
|
+
uv.x += row_offset * zigzag;
|
|
1096
|
+
vec2 f = fract(uv);
|
|
1097
|
+
|
|
1098
|
+
// Rotate the tile itself:
|
|
1099
|
+
// const float mid = 0.5;
|
|
1100
|
+
// f = vec2(
|
|
1101
|
+
// cos(rotation) * (f.x - mid) + sin(rotation) * (f.y - mid) + mid,
|
|
1102
|
+
// cos(rotation) * (f.y - mid) - sin(rotation) * (f.x - mid) + mid
|
|
1103
|
+
// );
|
|
1104
|
+
// f = fract(f);
|
|
1105
|
+
|
|
1106
|
+
f = f * 2.0 - 1.0;
|
|
1107
|
+
|
|
1108
|
+
// Recompute integer coords after shifting - then, random value per tile
|
|
1109
|
+
i = floor(uv);
|
|
1110
|
+
float rand = (hashwithoutsine12(i) * 5.0 + 1.0);
|
|
1111
|
+
float jitter = mix(1.0, rand, variation);
|
|
1112
|
+
f *= jitter;
|
|
1113
|
+
|
|
1114
|
+
return f;
|
|
1115
|
+
}`,[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) {
|
|
1116
|
+
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1117
|
+
return smoothstep(
|
|
1118
|
+
-smoothness,
|
|
1119
|
+
smoothness,
|
|
1120
|
+
length(f) - size
|
|
1121
|
+
);
|
|
1122
|
+
}`,[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) {
|
|
1123
|
+
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1124
|
+
|
|
1125
|
+
float d = length(f);
|
|
1126
|
+
const float inner_width = 0.5;
|
|
1127
|
+
|
|
1128
|
+
float outer = smoothstep(-smoothness, smoothness, d - size);
|
|
1129
|
+
float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
|
|
1130
|
+
return outer + (1.0 - inner);
|
|
1131
|
+
}`,[t]),s=new U(`float sdf_ngon(in vec2 p, in float r, in int n) {
|
|
1132
|
+
float an = (PI * 2.0) / float(n);
|
|
1133
|
+
float he = r * tan(0.5 * an);
|
|
1134
|
+
|
|
1135
|
+
// Rotate to first sector
|
|
1136
|
+
p = -p.yx;
|
|
1137
|
+
float bn = an * floor((atan(p.y, p.x) + 0.5 * an) / an);
|
|
1138
|
+
vec2 cs = vec2(cos(bn), sin(bn));
|
|
1139
|
+
p = mat2(cs.x, -cs.y, cs.y, cs.x)*p;
|
|
1140
|
+
|
|
1141
|
+
// Side of polygon
|
|
1142
|
+
return length(p - vec2(r, clamp(p.y, -he, he))) * sign(p.x - r);
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
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) {
|
|
1146
|
+
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1147
|
+
return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
|
|
1148
|
+
}`,[t]),l=new U(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
|
|
1149
|
+
p = abs(p);
|
|
1150
|
+
p = (p.y > p.x) ? p.yx : p.xy;
|
|
1151
|
+
vec2 q = p - b;
|
|
1152
|
+
float k = max(q.y, q.x);
|
|
1153
|
+
vec2 w = (k > 0.0) ? q : vec2(b.y - p.x, -k);
|
|
1154
|
+
return sign(k) * length(max(w, 0.0)) + r;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
// Avoid namespace conflicts
|
|
1158
|
+
float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1159
|
+
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1160
|
+
return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
|
|
1161
|
+
}`,[t]),c=new U(`float ndot(vec2 a, vec2 b) {
|
|
1162
|
+
return a.x*b.x - a.y*b.y;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
float sdf_diamond(in vec2 p, in vec2 b) {
|
|
1166
|
+
p = abs(p);
|
|
1167
|
+
float h = clamp(ndot(b - 2.0 * p, b) / dot(b, b), -1.0, 1.0);
|
|
1168
|
+
float d = length(p - 0.5 * b * vec2(1.0 - h, 1.0 + h));
|
|
1169
|
+
return d * sign(p.x * b.y + p.y * b.x - b.x * b.y);
|
|
1170
|
+
}
|
|
768
1171
|
|
|
769
|
-
|
|
770
|
-
|
|
1172
|
+
float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1173
|
+
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1174
|
+
return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
|
|
1175
|
+
}`,[t]),d=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) {
|
|
1176
|
+
uv *= frequency;
|
|
1177
|
+
vec2 i = floor(uv);
|
|
771
1178
|
|
|
772
|
-
|
|
773
|
-
float a = 0.0;
|
|
774
|
-
const int s = NUM_SAMPLES/sLOD;
|
|
775
|
-
for ( int i = 0; i < s*s; i++ ) {
|
|
776
|
-
int modulo = (i)-((i)/(s))*(s);
|
|
777
|
-
vec2 d = vec2(float(modulo), float(i/s))*float(sLOD) - float(NUM_SAMPLES)/2.;
|
|
778
|
-
vec2 uv = U + (scale * aspectRatio) * d;
|
|
779
|
-
// What is the depth of the opaque object we're trying to sample
|
|
780
|
-
float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
|
|
781
|
-
if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
|
|
782
|
-
uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
|
|
783
|
-
lod = lod > 4.0 ? lod : lod / 2.0;
|
|
784
|
-
}
|
|
785
|
-
float gaussian = gaussian(d);
|
|
786
|
-
#ifdef TEXTURE_LOD_EXT
|
|
787
|
-
O += gaussian * texture2DLodEXT( sp, uv, lod).rgb;
|
|
788
|
-
#else
|
|
789
|
-
O += gaussian * textureLod( sp, uv, lod).rgb;
|
|
790
|
-
#endif
|
|
791
|
-
a += gaussian;
|
|
792
|
-
}
|
|
793
|
-
return O / a;
|
|
794
|
-
}`,[e]),o=new Q(`
|
|
795
|
-
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
796
|
-
// Direction of refracted light.
|
|
797
|
-
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
798
|
-
// Compute rotation-independant scaling of the model matrix.
|
|
799
|
-
vec3 modelScale;
|
|
800
|
-
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
801
|
-
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
802
|
-
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
803
|
-
// The thickness is specified in local space.
|
|
804
|
-
return normalize( refractionVector ) * thickness * modelScale;
|
|
805
|
-
}`),i=new Q(`
|
|
806
|
-
float applyIorToRoughness( float roughness, float ior ) {
|
|
807
|
-
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
808
|
-
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
809
|
-
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
810
|
-
} `),s=new Q(`
|
|
811
|
-
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
812
|
-
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
813
|
-
float lod = applyIorToRoughness(roughness, ior);
|
|
1179
|
+
float offset = mod(i.y, 2.0);
|
|
814
1180
|
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
1181
|
+
uv.x += offset + zigzag * offset;
|
|
1182
|
+
float x = floor(uv.x);
|
|
1183
|
+
|
|
1184
|
+
return mod(x, 2.0);
|
|
1185
|
+
}`),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) {
|
|
1186
|
+
vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
|
|
1187
|
+
|
|
1188
|
+
// Different approach for variation param here
|
|
1189
|
+
float row = floor(uv * frequency).y;
|
|
1190
|
+
float rand = hashwithoutsine12(vec2(row));
|
|
1191
|
+
float s = mix(size, size * rand, variation);
|
|
1192
|
+
|
|
1193
|
+
return smoothstep(
|
|
1194
|
+
s - smoothness,
|
|
1195
|
+
s + smoothness,
|
|
1196
|
+
abs(f.y)
|
|
1197
|
+
);
|
|
1198
|
+
}`,[t]),u=new U(`// Uses bisection
|
|
1199
|
+
float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
|
|
1200
|
+
// Convert all data to a primitive cosine wave
|
|
1201
|
+
p = c * (p - vec2(d, a));
|
|
1202
|
+
|
|
1203
|
+
const float TWO_PI = PI * 2.0;
|
|
820
1204
|
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
1205
|
+
// Reduce to principal half cycle
|
|
1206
|
+
p.x = mod(p.x, TWO_PI);
|
|
1207
|
+
if (p.x > PI) {
|
|
1208
|
+
p.x = TWO_PI - p.x;
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
// Find zero of derivative (minimize distance)
|
|
1212
|
+
float xa = 0.0;
|
|
1213
|
+
float xb = TWO_PI;
|
|
1214
|
+
|
|
1215
|
+
// 24 bit precision
|
|
1216
|
+
for (int i = 0; i < 24; i++) {
|
|
1217
|
+
float x = 0.5 * (xa + xb);
|
|
1218
|
+
float y = x - p.x + b * c * sin(x) * (p.y - b * c * cos(x));
|
|
1219
|
+
if (y < 0.0) xa = x;
|
|
1220
|
+
else xb = x;
|
|
1221
|
+
}
|
|
1222
|
+
float x = 0.5 * (xa + xb);
|
|
1223
|
+
|
|
1224
|
+
// Compute distance
|
|
1225
|
+
vec2 q = vec2(x, b * c * cos(x));
|
|
1226
|
+
return length(p - q) / c;
|
|
1227
|
+
}
|
|
826
1228
|
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
1229
|
+
float wave(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1230
|
+
float repeat = frequency.x;
|
|
1231
|
+
uv *= repeat;
|
|
1232
|
+
vec2 i = floor(uv);
|
|
1233
|
+
float row_offset = mod(i.y, 2.0);
|
|
1234
|
+
uv.x += row_offset * zigzag;
|
|
1235
|
+
vec2 f = vec2(uv.x, fract(uv.y));
|
|
1236
|
+
|
|
1237
|
+
// Generalized cosine: y(x) = a + b * cos(cx + d)
|
|
1238
|
+
const float amplitude = 0.125;
|
|
1239
|
+
float wave_frequency = frequency.y * 0.1;
|
|
1240
|
+
float distance_estimate = udf_cos(f, 0.50, amplitude, wave_frequency * (2.0 * PI), 0.0);
|
|
1241
|
+
|
|
1242
|
+
// Different approach for variation param here
|
|
1243
|
+
float rand = hashwithoutsine12(vec2(i.y));
|
|
1244
|
+
float s = mix(size, size * rand, variation);
|
|
1245
|
+
|
|
1246
|
+
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1247
|
+
}`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:l,diamond:c,checkerboard:d,line:a,wave:u}}();var Bu=class extends le{constructor(e,t,o,i,s,l,c,d){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=d,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(Bu.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)}},Mi=Bu;Mi.Nodes=function(){let e=new U(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1248
|
+
vec3 st = position / noiseScale;
|
|
1249
|
+
vec3 q = vec3(simplex3d(st),
|
|
1250
|
+
simplex3d(st + vec3(1.0)),
|
|
1251
|
+
simplex3d(st + vec3(1.0)));
|
|
831
1252
|
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
836
|
-
vec3 v = vec3(0.);
|
|
837
|
-
if (isOrthographic) {
|
|
838
|
-
v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
839
|
-
} else {
|
|
840
|
-
v = normalize(vWPosition - cameraPosition);
|
|
841
|
-
}
|
|
842
|
-
vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness, vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
|
|
843
|
-
float lalpha = alpha;
|
|
844
|
-
|
|
845
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
846
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
847
|
-
return transmission;
|
|
848
|
-
}`,[l])}}();var xi=class extends ce{constructor(e,t,o,i,s,l,c,u,a,d,p){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.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
849
|
-
vec4 color = colors[0];
|
|
850
|
-
#ifdef ${o}_IS_VECTOR
|
|
851
|
-
#ifdef ${o}_LINEAR
|
|
852
|
-
#ifdef ${o}_WORLDSPACE
|
|
853
|
-
float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
|
|
854
|
-
#else
|
|
855
|
-
float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
|
|
856
|
-
#endif
|
|
857
|
-
#else
|
|
858
|
-
#ifdef ${o}_WORLDSPACE
|
|
859
|
-
float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
|
|
860
|
-
#else
|
|
861
|
-
float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
|
|
862
|
-
#endif
|
|
863
|
-
#endif
|
|
864
|
-
#else
|
|
865
|
-
float dist = length(vWPosition - cameraPosition);
|
|
866
|
-
float depth = ( dist - near ) / ( far - near );
|
|
867
|
-
#endif
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
float p;
|
|
871
|
-
#ifdef ${o}_SMOOTH
|
|
872
|
-
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
873
|
-
p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
874
|
-
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
875
|
-
}
|
|
876
|
-
#else
|
|
877
|
-
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
878
|
-
p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
|
|
879
|
-
color = mix(color, colors[i], p);
|
|
880
|
-
}
|
|
881
|
-
#endif
|
|
882
|
-
|
|
883
|
-
float lalpha = alpha * color.a;
|
|
884
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
885
|
-
|
|
886
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
887
|
-
return color.rgb;
|
|
888
|
-
}`,[xi.Nodes.vectorLinearWorldSpaceDepth,xi.Nodes.vectorLinearObjectSpaceDepth,xi.Nodes.vectorSphericalObjectSpaceDepth,xi.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.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)}},Ms=xi;Ms.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
889
|
-
vec3 n = normalize(direction);
|
|
890
|
-
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
891
|
-
return ( dist - near ) / ( far - near );
|
|
892
|
-
}`),t=new Q(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
893
|
-
vec3 n = normalize(direction);
|
|
894
|
-
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
895
|
-
return ( dist - near ) / ( far - near );
|
|
896
|
-
}`),o=new Q(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
897
|
-
float dist = length(vWPosition - origin);
|
|
898
|
-
return ( dist - near ) / ( far - near );
|
|
899
|
-
}`),i=new Q(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
900
|
-
float dist = length(position - origin);
|
|
901
|
-
return ( dist - near ) / ( far - near );
|
|
902
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ls=class extends ce{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 Id=(e=>(e.NOISE="noise",e.MAP="map",e))(Id||{}),Cd=class extends ce{constructor(e,t,o,i,s){super("v3");this.displacementTypeIndex=new Se(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Id)[this.displacementTypeIndex.value]==="map"&&(this.mat=new gi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}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(Id)[this.displacementTypeIndex.value]){case"map":{o=e.include(Cd.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(Os)[this.noiseFunctionIndex.value],c=new Q(`vec3 orthogonal(vec3 v) {
|
|
903
|
-
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
904
|
-
}`),u=new Q(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
905
|
-
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
906
|
-
}`,[wt.simplex,wt.simplexFractal,wt.simplexAshima,wt.fbm,wt.perlin]),a=new Q(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
907
|
-
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
908
|
-
vec3 tangent1 = orthogonal(normal);
|
|
909
|
-
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
910
|
-
|
|
911
|
-
// TODO(Max): The distance to the neighbors was originally scaled by 0.1.
|
|
912
|
-
// This caused some small oval/circular visual artifacts in the lighting.
|
|
913
|
-
// For now, simply using neighbors further away betters the problem,
|
|
914
|
-
// but we should figure out the underlying cause when we have some time.
|
|
915
|
-
// Maybe its related to how we calculate the tangent and bitangent?
|
|
916
|
-
vec3 nearby1 = position + tangent1;
|
|
917
|
-
vec3 nearby2 = position + tangent2;
|
|
918
|
-
vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
919
|
-
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
920
|
-
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
921
|
-
return displaced_position;
|
|
922
|
-
}`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Bs=Cd;Bs.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
|
|
923
|
-
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
924
|
-
}`),t=new Q(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
925
|
-
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
926
|
-
vec4 tmp = texture2D(tex, uvs);
|
|
927
|
-
vec3 col = tmp.rgb;
|
|
928
|
-
if (crop > 0.5) {
|
|
929
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
930
|
-
return 0.0;
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
return col.r;
|
|
934
|
-
}`);return{map:new Q(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
935
|
-
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
936
|
-
vec3 tangent1 = normalize(orthogonal(normal));
|
|
937
|
-
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
938
|
-
vec3 nearby1 = position + tangent1 * 0.1;
|
|
939
|
-
vec3 nearby2 = position + tangent2 * 0.1;
|
|
940
|
-
vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
941
|
-
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
942
|
-
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
943
|
-
return displaced_position;
|
|
944
|
-
}`,[e,t])}}();var Nd=class extends ce{constructor(e,t,o,i,s,l,c,u){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.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(Nd.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ds=Nd;Ds.Nodes=function(){return{gradient:new Q(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
945
|
-
vec4 color = colors[0];
|
|
946
|
-
vec2 m = morph / vUv.xy;
|
|
947
|
-
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
948
|
-
vec2 dt = vec2(
|
|
949
|
-
cos( angle ) * rot.x - sin( angle ) * rot.y,
|
|
950
|
-
sin( angle ) * rot.x + cos( angle ) * rot.y
|
|
951
|
-
);
|
|
952
|
-
vec2 pt = ( vUv - 0.5 + offset ) / 2.0 + dt / 2.0;
|
|
953
|
-
float t = dot( pt, dt ) / dot( dt, dt );
|
|
954
|
-
if ( gradientType == 1 ) {
|
|
955
|
-
t = distance (
|
|
956
|
-
( vUv + morph ) * 3.0,
|
|
957
|
-
( vUv + offset ) + 1.0
|
|
958
|
-
) + angle;
|
|
959
|
-
} else if ( gradientType == 2 ) {
|
|
960
|
-
float polar = atan(
|
|
961
|
-
vUv.x + morph.x - 0.5 + offset.x,
|
|
962
|
-
vUv.y + morph.y - 0.5 + offset.y
|
|
963
|
-
) * -1.0;
|
|
964
|
-
t = fract( ( angle / PI / -2.0 ) + 0.5 * ( polar / PI ) );
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
float p;
|
|
968
|
-
if (smoothed) {
|
|
969
|
-
for ( int i = 1; i < GRAD_MAX; i++ ) {
|
|
970
|
-
p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
971
|
-
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
} else {
|
|
975
|
-
for ( int i = 1; i < GRAD_MAX; i++ ) {
|
|
976
|
-
p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
977
|
-
color = mix(color, colors[i], p);
|
|
978
|
-
}
|
|
979
|
-
}
|
|
980
|
-
|
|
981
|
-
float lalpha = alpha * color.a;
|
|
982
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
983
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
984
|
-
|
|
985
|
-
return color.xyz;
|
|
986
|
-
}`)}}();var Rs=class extends ce{constructor(e,t,o,i,s,l,c,u,a,d){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.mat=u,this.alpha=a,this.mode=d,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(Rs.Nodes.cylindrical);break;case 2:i=e.include(Rs.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 Q(`
|
|
987
|
-
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
988
|
-
|
|
989
|
-
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
990
|
-
|
|
991
|
-
vec4 tmp = texture2D( tex, uvs );
|
|
992
|
-
|
|
993
|
-
vec3 col = tmp.rgb;
|
|
994
|
-
float lalpha = alpha * tmp.a;
|
|
995
|
-
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
|
|
996
|
-
|
|
997
|
-
if ( crop > 0.5 ) {
|
|
998
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
999
|
-
lalpha = 0.0;
|
|
1000
|
-
}
|
|
1001
|
-
}
|
|
1002
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1003
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1004
|
-
return col;
|
|
1005
|
-
}`);i=e.include(c);break;default:i=e.include(Rs.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(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},Gs=Rs;Gs.Nodes=function(){let e=new Q(`
|
|
1006
|
-
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1007
|
-
vec3 posN = normalize(position);
|
|
1008
|
-
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
1009
|
-
float scaledHeight = position.y / (size.y * 0.5);
|
|
1010
|
-
float v = (scaledHeight / 2.) + .5;
|
|
1011
|
-
|
|
1012
|
-
vec2 calculatedUv = vec2(u,v);
|
|
1013
|
-
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1014
|
-
|
|
1015
|
-
vec2 df = fwidth(uvs);
|
|
1016
|
-
if(df.x > 0.5) df.x = 0.;
|
|
1017
|
-
|
|
1018
|
-
#ifdef GL_EXT_shader_texture_lod
|
|
1019
|
-
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1020
|
-
#else
|
|
1021
|
-
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1022
|
-
#endif
|
|
1023
|
-
|
|
1024
|
-
vec3 col = tmp.rgb;
|
|
1025
|
-
float lalpha = alpha * tmp.a;
|
|
1026
|
-
if ( crop > 0.5 ) {
|
|
1027
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1028
|
-
lalpha = 0.0;
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1032
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1033
|
-
return col;
|
|
1034
|
-
}
|
|
1035
|
-
`),t=new Q(`
|
|
1036
|
-
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1037
|
-
vec3 posN = normalize(vPosition);
|
|
1038
|
-
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
1039
|
-
float v = 0.5 + asin(posN.y) / 3.1415;
|
|
1040
|
-
|
|
1041
|
-
vec2 calculatedUv = vec2(u,v);
|
|
1042
|
-
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1043
|
-
|
|
1044
|
-
vec2 df = fwidth(uvs);
|
|
1045
|
-
if(df.x > 0.5) df.x = 0.;
|
|
1046
|
-
#ifdef GL_EXT_shader_texture_lod
|
|
1047
|
-
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1048
|
-
#else
|
|
1049
|
-
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1050
|
-
#endif
|
|
1051
|
-
|
|
1052
|
-
vec3 col = tmp.rgb;
|
|
1053
|
-
float lalpha = alpha * tmp.a;
|
|
1054
|
-
if ( crop > 0.5 ) {
|
|
1055
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1056
|
-
lalpha = 0.0;
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1060
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1061
|
-
return col;
|
|
1062
|
-
}
|
|
1063
|
-
`),o=new Q(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1253
|
+
vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
|
|
1254
|
+
simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
|
|
1255
|
+
simplex3d(st * q));
|
|
1064
1256
|
|
|
1065
|
-
|
|
1066
|
-
vec4 tmp = texture2D( tex, uvs );
|
|
1257
|
+
float noise = simplex3d(st + r);
|
|
1067
1258
|
|
|
1068
|
-
|
|
1259
|
+
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);
|
|
1260
|
+
}`,[gt.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) {
|
|
1261
|
+
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
1069
1262
|
|
|
1070
|
-
float
|
|
1071
|
-
if ( crop > 0.5 ) {
|
|
1072
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1073
|
-
lalpha = 0.0;
|
|
1074
|
-
}
|
|
1075
|
-
}
|
|
1076
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1077
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1078
|
-
return col;
|
|
1079
|
-
}`);return{cylindrical:e,spherical:t,uv:o}}();var Ed=class extends ce{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(Ed.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Vs=Ed;Vs.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
1080
|
-
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
1081
|
-
normal *= step( vec3(0.5), cnormal );
|
|
1263
|
+
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
1082
1264
|
|
|
1083
|
-
|
|
1265
|
+
float lalpha = alpha * rainbowContribution * mask;
|
|
1266
|
+
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
1267
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1084
1268
|
|
|
1085
|
-
return
|
|
1086
|
-
|
|
1087
|
-
vec3 viewDir = normalize( vViewPosition );
|
|
1088
|
-
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1089
|
-
vec3 y = cross( viewDir, x );
|
|
1090
|
-
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
|
|
1091
|
-
vec4 matcapColor = texture2D( matcapTex, uv );
|
|
1092
|
-
|
|
1093
|
-
calpha = alpha / clamp( alpha + accumAlpha, 0.00001, 1.0 );
|
|
1094
|
-
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1095
|
-
|
|
1096
|
-
return matcapColor.rgb;
|
|
1097
|
-
}
|
|
1098
|
-
`)}}();var Xo=class extends Oo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var hy=require("three");var jl=class extends Oo{constructor(e){super("v3");this.image=e;this._value=new hy.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 jd=class extends ce{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(jd.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Fs=jd;Fs.Nodes=function(){let e=new Q(`float rand(float n) {
|
|
1269
|
+
return res;
|
|
1270
|
+
}`,[e])}}();var Du=class extends le{constructor(e,t,o,i,s,l,c,d,a,u){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=d,this.offset=a,this.alpha=u,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(Du.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)}},Ei=Du;Ei.Nodes=function(){let e=new U(`float rand(float n) {
|
|
1099
1271
|
return fract(sin(n) * 43758.5453123);
|
|
1100
|
-
}`),t=new
|
|
1272
|
+
}`),t=new U(`float hash1(float p) {
|
|
1101
1273
|
p = fract(p * 0.011);
|
|
1102
1274
|
p *= p + 7.5;
|
|
1103
1275
|
p *= p + p;
|
|
1104
1276
|
return fract(p);
|
|
1105
|
-
}`),o=new
|
|
1277
|
+
}`),o=new U(`float valueNoise(vec3 x) {
|
|
1106
1278
|
const vec3 step = vec3(110, 241, 171);
|
|
1107
1279
|
|
|
1108
1280
|
vec3 i = floor(x);
|
|
@@ -1117,13 +1289,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1117
1289
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1118
1290
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1119
1291
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1120
|
-
}`,[t]),i=new
|
|
1292
|
+
}`,[t]),i=new U(`vec3 hash3(vec3 x) {
|
|
1121
1293
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1122
1294
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1123
1295
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1124
1296
|
|
|
1125
1297
|
return fract(sin(x)*43758.5453123);
|
|
1126
|
-
}`),s=new
|
|
1298
|
+
}`),s=new U(`vec3 voronoiNoise(in vec3 x)
|
|
1127
1299
|
{
|
|
1128
1300
|
vec3 p = floor(x);
|
|
1129
1301
|
vec3 f = fract(x);
|
|
@@ -1154,7 +1326,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1154
1326
|
|
|
1155
1327
|
return vec3(sqrt(res), abs(id));
|
|
1156
1328
|
}
|
|
1157
|
-
`,[i]);return{toon:new
|
|
1329
|
+
`,[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) {
|
|
1158
1330
|
float t = 0.0;
|
|
1159
1331
|
float shadow = 1.0;
|
|
1160
1332
|
|
|
@@ -1325,14 +1497,391 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1325
1497
|
}
|
|
1326
1498
|
|
|
1327
1499
|
// Accumulate alpha as usual
|
|
1328
|
-
float lalpha = alpha * color.a;
|
|
1500
|
+
float lalpha = alpha * color.a * mask;
|
|
1329
1501
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
1330
1502
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
1331
1503
|
|
|
1332
1504
|
return color.xyz;
|
|
1333
1505
|
|
|
1334
|
-
}`,[wt.simplex,e,o,s])}}();var gy=require("three");function yy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Fl=class extends gi{constructor(e,t){super(new gy.Matrix3);this.repeat=e;this.offset=t;yy(this.value,e,t)}updateMatrix(){yy(this.value,this.repeat,this.offset)}};var Gr=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)Rd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Rr.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 Xo(i,t.texture.wrapping),l=new jl(i),c=new Fl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new Se(t.projection??0),d=new Se(["x","y","z"].indexOf(t.axis)??0),p=new Se(t.side??0),f=new ft(t.size?new je.Vector2(t.size[0],t.size[1]):new je.Vector2(100,100)),m=new J(t.alpha??1),h=new Se(t.mode??0),y=new Gs(s,l,u,a,d,p,f,c,m,h),g=new Ie(y.calpha,"f");return new ot(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Xo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new Se(t.mode??0),u=new js(s,l,c),a=new Ie(u.calpha,"f");return new ot(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new xt(new je.Vector3(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new Se(t.noiseType??0),a=new Bs(l,c,i,s,u);return new zs(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return uT(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):my(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Gd(o.props,t.shared,this):!0;return!1}dispose(){if(cT(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof tr||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}},ot=class extends Gr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},zs=class extends Gr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Rr=class extends Gr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new Se(o.mode),u;if(!o.visible)s=new Yo,u={};else if(o.category==="lambert"){s=new Ss;let a=new Ne(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Ps;let a=new J(o.shininess??30),d=new Ne(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 J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new Bl;let a=new J(o.shininess??30),d=new Ne(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Rr(e,t,o,s,u)}get category(){return this.node.category}};function cT(n){let r=n instanceof Gr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function dT(n,r,e,t){switch(n.type){case"color":{let o=new Ne(t.color??5526619),i=new J(t.alpha??1),s=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new Se(t.mode??0);return o.alpha=i,new ot(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Ne(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new Se(t.mode??0),d=new Is(o,i,s,l,c,u,a),p=new Ie(d.calpha,"f");return new ot(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new xt(t.wavelengths??new je.Vector3(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new xt(t.offset??new je.Vector3(0,0,0)),a=new J(t.alpha??1),d=new Cs(o,i,s,l,c,u,a),p=new Ie(d.calpha,"f"),f=new Se(t.mode??0);return new ot(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=vt.transmissionSize,c=vt.transmissionRenderTarget,u=vt.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new ft(d/a,1):new ft(1,a/d),f=new J(t.alpha??1),m=new Es(o,i,s,l,c,u,p,f),h=new Ie(m.calpha,"f"),y=new Se(t.mode??0);return new ot(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new Se(t.positioning??0),i;t.colors?i=new vr(t.colors.length,t.colors):(i=new vr(10,new je.Vector4(0,0,0,1)),i.value[1]=new je.Vector4(1,1,1,1));let s;t.steps?s=new xr(t.steps.length,t.steps):(s=new xr(10,1),s.value[0]=0);let l=new xt(t.source??new je.Vector3(0,0,0)),c=new To(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new er(t.shadowColor),p=new xt(t.offset??new je.Vector3(0,0,0)),f=new J(t.alpha??1),m=new Fs(o,i,s,l,c,u,a,d,p,f),h=new Ie(m.calpha,"f"),y=new Se(t.mode??0);return new ot(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Ne(t.outlineColor??16777215),i=new Ne(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new xt(t.contourDirection??new je.Vector3(0,1,0)),f=new To(t.positionalLines??!1),m=new To(t.compensation??!0),h=vt.normalRenderTarget,y=vt.normalRenderTargetDepth,g=vt.pixelRatioNode,v=vt.resolution,b=new J(t.alpha??1),w=new Ns(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b),S=new Ie(w.calpha,"f"),T=new Se(t.mode??0);return new ot(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,alpha:b,mode:T},w,T,S)}case"depth":{let o=new Se(t.gradientType??0),i=new To(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new xt(t.origin??new je.Vector3),d=new xt(t.direction??new je.Vector3),p;t.colors?p=new vr(t.colors.length,t.colors):(p=new vr(2,new je.Vector4(0,0,0,1)),p.value[1]=new je.Vector4(1,1,1,1));let f;t.steps?f=new xr(t.steps.length,t.steps):(f=new xr(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new Se(t.mode??0),y=new Ms(o,i,s,l,c,u,a,d,p,f,m),g=new Ie(y.calpha,"f");return new ot(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new xt(t.size??new je.Vector3(100,100,100)),s=new J(t.move??1),l=new ft(t.fA??new je.Vector2(1.7,9.2)),c=new ft(t.fB??new je.Vector2(8.3,2.8)),u=new ft(t.distortion??new je.Vector2(1,1)),a=new er(t.colorA),d=new er(t.colorB),p=new er(t.colorC),f=new er(t.colorD),m=new J(t.alpha??1),h=new Se(t.mode??0),y=new Se(t.noiseType??0),g=new As(o,i,s,l,c,u,a,d,p,f,m,y),v=new Ie(g.calpha,"f");return new ot(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new xt(t.cnormal??new je.Vector3(1,1,1)),i=new J(t.alpha??1),s=new Se(t.mode??0),l=new Vs(o,i),c=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ot(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new Se(t.gradientType??0),i=new To(t.smooth??!1),s;t.colors?s=new vr(t.colors.length,t.colors):(s=new vr(10,new je.Vector4(0,0,0,1)),s.value[1]=new je.Vector4(1,1,1,1));let l;t.steps?l=new xr(t.steps.length,t.steps):(l=new xr(10,1),l.value[0]=0);let c=new ft(t.offset??new je.Vector2(0,0)),u=new ft(t.morph??new je.Vector2(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new Se(t.mode??0),f=new Ds(o,i,s,l,c,u,a,d),m=new Ie(f.calpha,"f");return new ot(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Ne(1,0,0,1),i=new J(1),s=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new Se(0);return o.alpha=i,new ot(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function uT(n,r,e,t){let o=uy(e,t);return dT(e,n,r,o)}function Rd(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 xy(n,r){let e=0;for(let t of n.layers)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"){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 zt=class extends vy.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Fd=class extends zt{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}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()}},bi=class extends zt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];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 Fd(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}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??Bt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Gr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=xy(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 Rr),this.lightLayer===void 0&&(this.lightLayer=new Rr(0,"",{...Ot.defaultData("light","phong"),visible:!1},new Yo,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=xy(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=Gr.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{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=Gr.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)}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),t=this.layers.findIndex(o=>o instanceof Rr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof ot&&(o=new Ls(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ie("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Rr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ot&&(e=new Ls(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 zs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new jt(t,e[o].position,jt.ADD),t=new jt(t,new J(.5).setReadonly(!0),jt.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=(Bd[t.type]??[]).map(l=>t[l]),i=(Dd[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}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 Ml;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 ot){let t=e.params.texture;if(t instanceof Xo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(zt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Ko=class extends bi{};var _y=nn(by());var Sy=new Map;function wy(n){if(typeof n=="string")return n;let r=Sy.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Sy.set(n,r)),r.url}var Zo=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:wy(r),format:"wav"},this.sound=new _y.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 at=require("three"),Ul=class{constructor(){this.type="ShapePath";this.color=new at.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new at.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,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-S)*(_-C)-(P-C)*(b-S),O=(w-b)*(_-C)-(x-_)*(b-S),A=(P-C)*(w-b)-(T-S)*(x-_),R=I/A,U=O/A;if(A===0&&I!==0||R<=0||R>=1||U<0||U>1)return null;if(I===0&&A===0){for(let q=0;q<2;q++)if(i(q===0?g:v,h,y),t.loc===e.ORIGIN){let te=q===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),$=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:$,t:t.t}}return null}else{for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let W=$===0?g:v;return{x:W.x,y:W.y,t:t.t}}let q=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:q,y:te,t:R}}}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,T=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(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>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 T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(w,S,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new at.Vector2(C.x,C.y)))}}return v}function l(h,y,g){let v=new at.Vector2;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),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 at.Vector2;h.boundingBox.getCenter(w);let S=[new at.Vector2(g,w.y),new at.Vector2(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.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<P.length;U++){let q=P[U];y[q]&&(O?(R=y[q].isCW,O=!1,A=q):R!==y[q].isCW&&(R=y[q].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 T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}d<=b&&(d=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:at.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new at.Box2(new at.Vector2(w,v),new at.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 at.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 at.Path;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Py,zd=new Promise(n=>{Py=n}),Ty=!1;async function Oy(){if(Ty)return;let n=await import("./opentype.js");Py(n),Ty=!0}var Us=class{async load(r,e,t=()=>{}){let{load:o}=await zd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await zd;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 pT(n){return await(await fetch(n)).arrayBuffer()}var fT=new Us;async function Ud(n){let r,e,t=!1;if(n.url?(r=await pT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await fT.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var Si=require("three");function mT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var kl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Ud(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=Ud(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(mT(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(`
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
`)>=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 Ul,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=hT(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 hT(n){if(n.length){let r=n[0];if(r instanceof Si.LineCurve)return r.v1;if(r instanceof Si.CubicBezierCurve||r instanceof Si.QuadraticBezierCurve)return r.v0}}var kd=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()}},ks=class extends kd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Wo(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Ay={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Hd=class extends Rl{constructor(e){super();this.shared=e}create(e){return new vi(e,this.shared)}},Qo=class{constructor(r,e={}){this.geometryCache=new ks(!0);this.geometryCache2=new ks(!1);this.imageHolderCache=new Hd(this);this.thisContext={scene:Ay,shared:this};this.deletedMaterial=new Ko(Bt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new tr(Hn.emptyImage,this);this.deletedVideo=new tr(mn.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 Ko(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]=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 bi(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 tr(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 tr(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 Po(e.r,e.g,e.b,e.a):this.colors[r]=new Po(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 st(0,0,0,0))}else return"a"in r?new st(r.r,r.g,r.b,r.a):new st(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 Zo)return e;{let t=new Zo({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Zo&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new kl(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 Zo&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Iy=new Qo(nl.emptyData());var br=class extends gt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),yu(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(ar(e.path,["material"])&&this.material instanceof zt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(ht.drop(e,1),t.material,o);else if(ar(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(ht.drop(e,2),s,o)}}}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&&Ma(this.material).forEach(e=>{e instanceof zt&&(e instanceof Ko||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Cy=require("three");var bt=class extends br{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Cy.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Qo){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 Wi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Wi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),ar(e.path,["geometry"])&&this.updateByPatchedOpGeometry(ht.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=Wo(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&&ms(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=Wo(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&&Xi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Je&&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 yT(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 Xt.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 Xt.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 Xt.Float32BufferAttribute(i,3))}function gT(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 Xt.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 Xt.Float32BufferAttribute(t,3))}function wi(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof zt)||n.material.getLayersOfType("outline").length===0)return;n instanceof bt&&n.is2DAndNoDepth?gT(n):yT(n)}function _i(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=[Xt.MathUtils.seededRandom(o),Xt.MathUtils.seededRandom(o+1e4),Xt.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new Xt.BufferAttribute(t,3))}var xT;ai.then(n=>{xT=n});var Vr=new oo.Box3,Hs=new oo.Vector3;function Ny(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Jo=class extends bt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new oo.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}=Je.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,wi(this),_i(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){Je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Je.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Je.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,gt.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 oo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Vr.setFromBufferAttribute(t),Vr.getCenter(o),e.boundingSphere.radius=o.distanceTo(Vr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Vr.getSize(Hs),this.hasNonUniformScale&&Hs.divide(this.scale);let i={width:Hs.x,height:Hs.y,depth:Hs.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Vr.min.set(e[0],e[2],e[4]),Vr.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Vr.min.applyMatrix4(this.shearScaleInv),Vr.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new oo.Sphere);let o=t.boundingSphere.center;Vr.getCenter(o),t.boundingSphere.radius=o.distanceTo(Vr.max)}freeSubdivPointer(){this.subdivPointer&&(Je.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 jr=require("three"),Ey=-1,vT=1,My={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Ly={polygon_center:0,edge:1,vertex:2},Ws=(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-Ey)*(e-t)/(vT-Ey)+t};function By(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 bT=new jr.Vector3,Hl=new jr.Vector3,ST=new jr.Vector3,wT=new jr.Vector3;function Ti(n,r){let e=ST.fromArray(n),t=wT.fromArray(r);Hl.copy(t).sub(e);let o=Hl.length();return Hl.normalize().multiplyScalar(o*.5),bT.copy(e).add(Hl).toArray()}var rr=new jr.Triangle,Wl=new jr.Vector3,ql=new jr.Vector3,en=new jr.Vector3;function Dy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Wl.fromArray(n.index.array,e*3),rr.setFromAttributeAndIndices(n.attributes.position,Wl.x,Wl.y,Wl.z),rr.getNormal(ql),rr.getMidpoint(en),!(isNaN(en.x)||isNaN(en.y)||isNaN(en.z))){let{a:t,b:o,c:i}=rr,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=Ti(s,l),f=Ti(l,c),m=Ti(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=rr.getMidpoint(en).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:rr.getNormal(ql).toArray()})}return r}function Gy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){rr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),rr.getNormal(ql),rr.getMidpoint(en);let o=rr.a.toArray(),i=rr.b.toArray(),s=rr.c.toArray();r.push({vertices:[o,i,s],faceCenters:[Ti(o,i),Ti(i,s),Ti(s,o)],midpoint:en.toArray(),norm:ql.toArray()})}return r}var _T=4,TT=.5,Wd=n=>.5*(1-Math.cos(n*Math.PI)),qd=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<_T;g++){let v=o+(i<<4)+(s<<8);a=Wd(l),d=Wd(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+=Wd(u)*(h-m),p+=m*f,f*=TT,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()}},Ry=qd;var Oi=require("three");var Vy=new Oi.Vector3,jy=new Oi.Matrix4,Fy=new Oi.Ray;function zy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Pi=class extends bt{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)&&(jy.copy(o).invert(),Fy.copy(e.ray).applyMatrix4(jy),Fy.intersectBox(this.singleBBox,Vy))){let i=Vy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Ct=1e-4,Fr,Hy,Wy,qy,Uy=new Ee.Vector3,ky=new Ee.Vector3;ai.then(n=>{Fr=n,Hy=[Fr.get_face_center,Fr.get_edge_midpoint,Fr.get_vertex_position],Wy=[Fr.get_face_normal,Fr.get_edge_normal,Fr.get_vertex_normal],qy=[Fr.face_count,Fr.edge_count,Fr.vertex_count]});var PT=new Ee.Matrix4,OT=new Ee.Matrix4,Ao=new Ee.Vector3,tn=new Ee.Vector3,qs=new Ee.Vector3,$d=new Ee.Vector3,AT=new Ee.Vector3,IT=new Ee.Vector3;var no=new Ry,Ii=class extends Wn(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 Jr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Jr&&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 Jr(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 Jr(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??Ir.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";no.noiseSeed(u.seed);let d=al((0,Ai.default)(u.seed)),p=Ws(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?no.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,he(y,u.scale[0]))||Ct,m.scale.y=t.scale[1]+p(f,he(y,u.scale[1]))||Ct,m.scale.z=t.scale[2]+p(f,he(y,u.scale[2]))||Ct,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,he(y,u.position[0])),m.position.y+=t.position[1]+p(f,he(y,u.position[1])),m.position.z+=t.position[2]+p(f,he(y,u.position[2]));let v=p(f,he(y,u.rotation[0])),b=p(f,he(y,u.rotation[1])),w=p(f,he(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_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??Ir.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";no.noiseSeed(i.seed);let l=al((0,Ai.default)(i.seed)),c=Ws(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?no.noise(d):l(d,d),f=c(u,he(p,i.rotation[0])),m=c(u,he(p,i.rotation[1])),h=c(u,he(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,he(p,i.scale[0]))||Ct,a.scale.y=1+(t.scale[1]-1)*u+c(u,he(p,i.scale[1]))||Ct,a.scale.z=1+(t.scale[2]-1)*u+c(u,he(p,i.scale[2]))||Ct,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,he(p,i.position[0])),a.position.y=t.position[1]*u+c(u,he(p,i.position[1])),a.position.z=t.position[2]*u+c(u,he(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Ir.defaultData([1,1,1]).randomnessObject,s=Ws(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";no.noiseSeed(i.seed);let c=Dm((0,Ai.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?no.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,he(h,i.scale[0]))||Ct,y.scale.y=1+s(t,he(h,i.scale[1]))||Ct,y.scale.z=1+s(t,he(h,i.scale[2]))||Ct;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?no.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,he(f,i.scale[0]))||Ct,m.scale.y=1+s(t,he(f,i.scale[1]))||Ct,m.scale.z=1+s(t,he(f,i.scale[2]))||Ct;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??Ir.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";no.noiseSeed(i.seed);let l=al((0,Ai.default)(i.seed)),c=Ws(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 Pi)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(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,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=By(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new ll(this.objectForSample).build(),h=My[t.axis],y=this.children;m.setRandomGenerator((0,Ai.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?no.noise(b):l(b,b),S=c(g,he(w,i.rotation[0])),T=c(g,he(w,i.rotation[1])),_=c(g,he(w,i.rotation[2]));t.spreadType==="random"?m.sample(qs,$d):(f.length&&(qs.fromArray(f[g].pos),$d.fromArray(f[g].norm)),this.objectForSample instanceof Jo&&qs.applyMatrix4(PT.copy(this.objectForSample.matrixWorld).invert())),qs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(qs),Ao.fromArray(h);let x=t.align==="normal"?$d:this.object.getWorldDirection(IT),C=tn.fromArray(t.position);tn.x+=tn.x+c(g,he(w,i.position[0])),tn.y+=tn.y+c(g,he(w,i.position[1])),tn.z+=tn.z+c(g,he(w,i.position[2]));let P=Math.acos(x.dot(Ao)),I=AT.crossVectors(Ao,x).normalize(),O=OT.makeRotationAxis(I,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),U=new Ee.Matrix4().makeBasis(A,x,R),q=new Ee.Vector3(Ao.y,Ao.z,Ao.x).normalize(),te=q.clone().cross(Ao).normalize(),$=new Ee.Matrix4().makeBasis(q,Ao,te).invert(),W=new Ee.Matrix4().multiplyMatrices(U,$);v.rotation.setFromRotationMatrix(W),C.applyMatrix4(O),v.position.add(C),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,he(w,i.scale[0]))||Ct,v.scale.y=v.scale.y+t.scale[1]+c(g,he(w,i.scale[1]))||Ct,v.scale.z=v.scale.z+t.scale[2]+c(g,he(w,i.scale[2]))||Ct,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 Jo){let t=this.objectForSample,o=Ly[e],i=qy[o],s=Hy[o],l=Wy[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);Uy.fromArray(d).applyMatrix4(t.matrixWorld),ky.fromArray(p),c.push({pos:Uy.toArray(),norm:ky.toArray()})}return c}else return(this.objectForSample.geometry.index?Dy(this.objectForSample.geometry):Gy(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=Qr(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 gt?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 sr=require("three");var ke=require("three");var St=require("three");var $y=require("three"),zr=n=>{var r;return r=class extends n{},r.geometryHelper=new $y.BoxGeometry(30,30,30),r};var _t=require("three"),$l=new _t.Ray,Yd=new _t.Sphere,Yy=new _t.Matrix4,Ur=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Yd.copy(i.boundingSphere),Yd.applyMatrix4(s),e.ray.intersectsSphere(Yd)===!1||(Yy.copy(s).invert(),$l.copy(e.ray).applyMatrix4(Yy),i.boundingBox!==null&&$l.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,$l,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new _t.Vector3,w=new _t.Vector3,S=new _t.Vector3,T=new _t.Vector3,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=I,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),$l.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let q=e.ray.origin.distanceTo(T);q<e.near||q>e.far||t.push({distance:q,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new _t.Vector3,C=new _t.Vector3,P=new _t.Vector3,I=new _t.Vector3,O=new _t.Vector3;if(x.fromBufferAttribute(w,S),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,C,P,!1,I)===null)return null;O.copy(I),O.applyMatrix4(g.matrixWorld);let R=v.ray.origin.distanceTo(O);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Yl=new St.Vector3,or=new St.Camera,Xd=class extends St.LineSegments{constructor(e){let t=new St.BufferGeometry,o=new St.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new St.Color(15711266),u=new St.Color(15711266),a=new St.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 St.Float32BufferAttribute(i,3)),t.setAttribute("color",new St.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;or.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;Sr("n1",t,e,or,-i,-s,l),Sr("n2",t,e,or,i,-s,l),Sr("n3",t,e,or,-i,s,l),Sr("n4",t,e,or,i,s,l);let c=l;Sr("f1",t,e,or,-i,-s,c),Sr("f2",t,e,or,i,-s,c),Sr("f3",t,e,or,-i,s,c),Sr("f4",t,e,or,i,s,c);let u=c,a=.5;Sr("u1",t,e,or,i*.7*a,s*1.1,u),Sr("u2",t,e,or,-i*.7*a,s*1.1,u),Sr("u3",t,e,or,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Sr(n,r,e,t,o,i,s){Yl.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],Yl.x,Yl.y,Yl.z)}}var Xl=class extends zr(Xd){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){Ur(this.object,this.geometry,e,t,!0)}};var $s=require("three");var Kl;(r=>r.is=e=>"objectHelper"in e)(Kl||(Kl={}));var Io=(n,r)=>class extends ul(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 $s.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof $s.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 $s.Box3Helper&&(i.visible=!1)}}};var Kd=790,Ci=new ke.Vector3,Zd=new ke.Vector3,Qd=new ke.Quaternion,Jd=new ke.Vector3,Ys=new ke.Vector3,eu=new ke.Vector3,kr=class extends Io(ke.Camera,Xl){constructor(e="",t={...zn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Bo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),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??Kd,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(Ci),this.targetOffset=Ci.distanceTo(e)}getTarget(e=new ke.Vector3){return this.getWorldDirection(Zd),this.getWorldPosition(Ci),Zd.multiplyScalar(this.targetOffset),e.copy(Ci).add(Zd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ci),Ci.distanceTo(e)}updateUp(){this.getWorldQuaternion(Qd),Jd.set(0,0,1).applyQuaternion(Qd),Ys.copy(ke.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Ys.negate(),Ys.applyQuaternion(Qd),eu.copy(ke.Object3D.DEFAULT_UP).projectOnPlane(Jd),this.angleOffsetFromUp=eu.angleTo(Ys),this.angleOffsetFromUp*=eu.cross(Ys).dot(Jd)>=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??Kd,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())}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:Kd},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Vn(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 rn=require("three");var Xy=new rn.Matrix4;var nr=class extends br{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new rn.BufferGeometry;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 nr&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof gt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=hr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof nr&&s.needsTransformForDownstream===!0?(hr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Xy.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),hr.transformMeshSet(s.booleanMeshSetAddress,Xy),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new rn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return hr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new rn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=hr.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,wi(this),_i(this)}dispose(){super.dispose(),this.geometry.dispose()}};var Zy=require("three");var Ky;(r=>{function n(e){return Be.is(e)&&e instanceof Zy.Light}r.is=n})(Ky||(Ky={}));var Ni=(n,r)=>class extends Io(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 Ei=n=>n instanceof gt,Xs=n=>n!==null&&n instanceof nr,Qy=n=>n instanceof kr;var tu=n=>Kl.is(n);var eg=require("three");var Jy=require("three");var Co=class extends zr(Jy.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){Ur(this.object,Co.geometryHelper,e,t)}update(){}};var Ks=class extends Io(eg.Group,Co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var Qs=require("three");var tg=require("three");var Mi=class extends zr(tg.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){Ur(this.object,Mi.geometryHelper,e,t)}};var rg=require("three");var Li=class extends zr(rg.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Ur(this.object,Li.geometryHelper,e,t)}};var Ql=require("three");var Zl=class extends zr(Ql.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Ur(this.object,Zl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Zl._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)}}},Zs=Zl;Zs._vector=new Ql.Vector3;function NT(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 Jl=class extends Ni(Qs.DirectionalLight,Mi){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 Qs.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 Qs.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&&NT(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 Ut=require("three");var ec=class extends Ni(Ut.PointLight,Li){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 Ut.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Ut.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new Ut.Box3(s,l),u=new Ut.Box3Helper(c,new Ut.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 Ut.Box3Helper){let t=this.shadow.camera,o=new Ut.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Ut.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 ir=require("three");var og=new ir.Vector3,ng=new ir.Vector3,ig=new ir.Quaternion,tc=class extends Ni(ir.SpotLight,Zs){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=ir.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new ir.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 ir.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),ng.setFromMatrixPosition(this.matrixWorld),ig.setFromRotationMatrix(this.matrixWorld),og.copy(this.up).applyQuaternion(ig).negate().multiplyScalar(this.distance),this.target.position.copy(ng).add(og),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 rc=class extends bt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?gs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Bi=class extends bt{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=_l;break;case"Ellipse":i=ri;break;case"Polygon":i=wl;break;case"Star":i=Tl;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?gs(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 io=class extends Io(ag.Group,Co){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 xo.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 xo.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(Be.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),oc(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&lg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function oc(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)Be.is(e)&&oc(e)}}function sg(n,r,e,t){return n.component===r&&Xi(n.identity,t)?n.overrideData===e?2:1:0}function lg(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 io&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Be.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Un.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Be.is(m)?m:null,p!==null){let h=sg(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=sg(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?Wr.apply(u.data,d):u.data;cr.is(m.type)&&(m={...m,type:"Empty"}),p=pr.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,lg(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Be.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function ET(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Pi(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Jo(n,r,e):r.geometry.type==="PathGeometry"?t=new Bi(n,r,e):r.geometry.type==="VectorGeometry"?t=new rc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new nr(n,r,e):t=new bt(n,r,e),t)}function nc(n,r,e){return r.type==="Mesh"?ET(n,r,e):r.type==="Empty"?new Ks(n,r):r.type==="PointLight"?new ec(n,r,e):r.type==="SpotLight"?new tc(n,r,e):r.type==="DirectionalLight"?new Jl(n,r,e):r.type==="Component"||r.type==="Instance"?new io(n,r,e):cr.is(r.type)?new kr(n,r):(console.error(r),new Ks(n,r))}pr.createEntity=nc;function MT(n,r,e){let t=nc(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()}pr.changeEntityProptotype=MT;pr.Cloner=Ii;function cg(n,r,e,t){n.updateByOp(r,e,t,!1)}var Di=require("three");function dg(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,_i(n),wi(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function ug(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),e}function pg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof br)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)dg(e,e.material[t])&&(r=!0);else dg(e,e.material)&&(r=!0)}),r}function fg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof br)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ug(e,e.material[t])&&(r=!0);else ug(e,e.material)&&(r=!0)}),r}var BT=new Di.Raycaster,DT=new Di.Matrix4,GT=new Di.Ray;function ru(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=DT.copy(i.matrixWorld).invert(),l=GT.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=BT;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 ic=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 RT=new sr.MeshBasicMaterial;RT.wireframe=!0;var mg=new sr.Vector3,ou=class extends sr.Scene{constructor(e,t){super();this.data=e;this.backupFog=new sr.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.geometryCacheChanged=!1;this.bgColor=new st(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new ic;this.needsRecomputeInstances=!1;this.ambientLight=new sr.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=fg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=pg(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)=>$u(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(),Ei(i)&&Xs(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),Xs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ei(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Bi&&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()),Ei(o)&&(o.invalidateUpstreamBooleanData(),Xs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&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{states:l,rest:c}=t.props;t={...t,props:c},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 bt&&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(It(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 kr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Xs(o)&&o.recomputeBoolean(),o instanceof kr&&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){Be.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Be.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=pn(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...Ma(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;Tt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof io&&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=pn(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 io&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),oc(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof io&&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)Be.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new kr(ou.PERSONAL_CAMERA_ID,{...zn.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;Be.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ei(s)||tu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ru(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;Be.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ei(s)||tu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ru(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Be.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Be.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)ts.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Be.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=It(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=It(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=It(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}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=nc(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 bt&&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 sr.Box3;return o.setFromPoints(t),o.getCenter(mg),mg}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 gt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof zt&&e(t.material[o]);else t.material instanceof zt&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Gi=ou;Gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",Gi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";var hg=require("three/examples/jsm/loaders/DRACOLoader.js");var No;function VT(){return No||(No=new hg.DRACOLoader,No.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),No.decoderPending}async function jT(n){if(No){let r={attributeIDs:No.defaultAttributeIDs,attributeTypes:No.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await No.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function yg(n,r){let[e,t]=hc(_a.deserialize(new Uint8Array(n)));Em(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 VT();for(let i of o){let s=await jT(lt(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 FT=require("three"),zT=require("three/examples/jsm/utils/BufferGeometryUtils.js");function gg(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 ea=require("three");function xg(n){let r=new Set;return n.traverse(e=>{if(e instanceof br)if($e(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(UT(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new ea.Color,specularColor:new ea.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},ea.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)}else o++,o<2&&(e.needsUpdate=!0)})}}else kT(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function UT(n){return n.getLayersOfType("transmission").length>0}function kT(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function vg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function bg(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 Sg=require("three/examples/jsm/utils/BufferGeometryUtils.js");function wg(n){let r=[];return n.traverse(e=>{e instanceof Ii&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&gg(c),c}),s=(0,Sg.mergeBufferGeometries)(e.parameters.hideBase?i:[t instanceof gt?t.geometry:[],...i]);t instanceof gt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Iy})}),n}function _g(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Tg(n){Object.values(n.shared.materials).forEach(r=>{nu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?nu(e.material):"materials"in e&&e.materials.forEach(t=>{nu(t)})})}function nu(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 Ig=nn(Og(),1),Ag="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",sc=class extends ac.Loader{load(r,e,t,o=console.error){let i=new ac.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Ag+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Ag),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 yg(r,Tg);e.version&&(0,Ig.default)(e.version,"0.9.345")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Ny(e)&&$h(),zy(e)&&Oy()].filter(Boolean));let t=new Qo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Gi(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&&Qy(s)&&Object.assign(s,{makeDefault:!0})}return o=wg(o),o=xg(o),o=vg(o),o=bg(o),o=_g(o),o}};
|
|
1506
|
+
}`,[gt.simplex,e,o,s])}}();var Gu=class extends le{constructor(e,t,o,i,s,l,c,d){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=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.define("BLUR_SLOD",Math.pow(2,lt.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)}},Li=Gu;Li.Nodes=function(){let e=new U(`
|
|
1507
|
+
float gaussian(vec2 i) {
|
|
1508
|
+
const float sigma = float(NUM_SAMPLES) * .25;
|
|
1509
|
+
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
1510
|
+
}`),t=new U(`
|
|
1511
|
+
vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1512
|
+
// Slightly modified version of this:
|
|
1513
|
+
// https://www.shadertoy.com/view/ltScRG
|
|
1514
|
+
|
|
1515
|
+
// Special case for blur == 0.0
|
|
1516
|
+
if (lod == 0.0) {
|
|
1517
|
+
#ifdef TEXTURE_LOD_EXT
|
|
1518
|
+
return texture2DLodEXT( sp, U, 0.0).rgb;
|
|
1519
|
+
#else
|
|
1520
|
+
return textureLod( sp, U, 0.0).rgb;
|
|
1521
|
+
#endif
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
const int sLOD = BLUR_SLOD; // tile size = 2^LOD
|
|
1525
|
+
|
|
1526
|
+
vec3 O = vec3(0);
|
|
1527
|
+
float a = 0.0;
|
|
1528
|
+
const int s = NUM_SAMPLES/sLOD;
|
|
1529
|
+
for ( int i = 0; i < s*s; i++ ) {
|
|
1530
|
+
int modulo = (i)-((i)/(s))*(s);
|
|
1531
|
+
vec2 d = vec2(float(modulo), float(i/s))*float(sLOD) - float(NUM_SAMPLES)/2.;
|
|
1532
|
+
vec2 uv = U + (scale * aspectRatio) * d;
|
|
1533
|
+
// What is the depth of the opaque object we're trying to sample
|
|
1534
|
+
float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
|
|
1535
|
+
if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
|
|
1536
|
+
uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
|
|
1537
|
+
lod = lod > 4.0 ? lod : lod / 2.0;
|
|
1538
|
+
}
|
|
1539
|
+
float gaussian = gaussian(d);
|
|
1540
|
+
#ifdef TEXTURE_LOD_EXT
|
|
1541
|
+
O += gaussian * texture2DLodEXT( sp, uv, lod).rgb;
|
|
1542
|
+
#else
|
|
1543
|
+
O += gaussian * textureLod( sp, uv, lod).rgb;
|
|
1544
|
+
#endif
|
|
1545
|
+
a += gaussian;
|
|
1546
|
+
}
|
|
1547
|
+
return O / a;
|
|
1548
|
+
}`,[e]),o=new U(`
|
|
1549
|
+
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
1550
|
+
// Direction of refracted light.
|
|
1551
|
+
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
1552
|
+
// Compute rotation-independant scaling of the model matrix.
|
|
1553
|
+
vec3 modelScale;
|
|
1554
|
+
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
1555
|
+
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
1556
|
+
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
1557
|
+
// The thickness is specified in local space.
|
|
1558
|
+
return normalize( refractionVector ) * thickness * modelScale;
|
|
1559
|
+
}`),i=new U(`
|
|
1560
|
+
float applyIorToRoughness( float roughness, float ior ) {
|
|
1561
|
+
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
1562
|
+
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
1563
|
+
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
1564
|
+
} `),s=new U(`
|
|
1565
|
+
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
1566
|
+
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
1567
|
+
float lod = applyIorToRoughness(roughness, ior);
|
|
1568
|
+
|
|
1569
|
+
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1570
|
+
}`,[i,t]),l=new U(`
|
|
1571
|
+
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 ) {
|
|
1572
|
+
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1573
|
+
vec3 refractedRayExit = position + transmissionRay;
|
|
1574
|
+
|
|
1575
|
+
// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
|
|
1576
|
+
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
|
|
1577
|
+
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
|
|
1578
|
+
refractionCoords += 1.0;
|
|
1579
|
+
refractionCoords /= 2.0;
|
|
1580
|
+
|
|
1581
|
+
vec4 ndcPosUnrefracted = projMatrix * viewMatrix * vec4(position, 1.0 );
|
|
1582
|
+
vec2 unrefractedCoords = ndcPosUnrefracted.xy / ndcPosUnrefracted.w;
|
|
1583
|
+
unrefractedCoords += 1.0;
|
|
1584
|
+
unrefractedCoords /= 2.0;
|
|
1585
|
+
|
|
1586
|
+
// Sample framebuffer to get pixel the refracted ray hits.
|
|
1587
|
+
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
1588
|
+
}`,[s,o]);return{transmission:new U(`
|
|
1589
|
+
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) {
|
|
1590
|
+
vec3 v = vec3(0.);
|
|
1591
|
+
if (isOrthographic) {
|
|
1592
|
+
v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
1593
|
+
} else {
|
|
1594
|
+
v = normalize(vWPosition - cameraPosition);
|
|
1595
|
+
}
|
|
1596
|
+
vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness, vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
|
|
1597
|
+
|
|
1598
|
+
float lalpha = alpha * mask;
|
|
1599
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1600
|
+
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1601
|
+
|
|
1602
|
+
return transmission;
|
|
1603
|
+
}`,[l])}}();var Ru=(e=>(e.NOISE="noise",e.MAP="map",e))(Ru||{}),Vu=class extends le{constructor(e,t,o,i,s,l,c,d,a,u,p){super("v3");this.displacementTypeIndex=new Se(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Ru)[this.displacementTypeIndex.value]==="map"&&(this.mat=new vi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=l,this.highCut=c,this.lowCut=d,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(Ru)[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 l=Object.values(zs)[this.noiseFunctionIndex.value],c=new U(`vec3 orthogonal(vec3 v) {
|
|
1604
|
+
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1605
|
+
}`),d=l=="voronoi"?`
|
|
1606
|
+
float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
1607
|
+
v = remap(v, lowCut, highCut, 0.0, 1.0);
|
|
1608
|
+
v = smax(v, 0.0, smoothness * 0.25);
|
|
1609
|
+
v = smin(v, 1.0, smoothness * 0.25);
|
|
1610
|
+
|
|
1611
|
+
return p + n * v * intensity;
|
|
1612
|
+
`:`
|
|
1613
|
+
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1614
|
+
`,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) {
|
|
1615
|
+
${d}
|
|
1616
|
+
}`,[gt.simplex,gt.simplexFractal,gt.simplexAshima,gt.fbm,gt.perlin,gt.voronoi]),u=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) {
|
|
1617
|
+
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1618
|
+
vec3 tangent1 = orthogonal(normal);
|
|
1619
|
+
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
1620
|
+
|
|
1621
|
+
// TODO(Max): The distance to the neighbors was originally scaled by 0.1.
|
|
1622
|
+
// This caused some small oval/circular visual artifacts in the lighting.
|
|
1623
|
+
// For now, simply using neighbors further away betters the problem,
|
|
1624
|
+
// but we should figure out the underlying cause when we have some time.
|
|
1625
|
+
// Maybe its related to how we calculate the tangent and bitangent?
|
|
1626
|
+
vec3 nearby1 = position + tangent1;
|
|
1627
|
+
vec3 nearby2 = position + tangent2;
|
|
1628
|
+
vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1629
|
+
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1630
|
+
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1631
|
+
return displaced_position;
|
|
1632
|
+
}`,[a,c]);o=e.include(u),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),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)}},Bi=Vu;Bi.Nodes=function(){let e=new U(`vec3 orthogonal(vec3 v) {
|
|
1633
|
+
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1634
|
+
}`),t=new U(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1635
|
+
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
1636
|
+
vec4 tmp = texture2D(tex, uvs);
|
|
1637
|
+
vec3 col = tmp.rgb;
|
|
1638
|
+
if (crop > 0.5) {
|
|
1639
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1640
|
+
return 0.0;
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
return col.r;
|
|
1644
|
+
}`);return{map:new U(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
1645
|
+
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
1646
|
+
vec3 tangent1 = normalize(orthogonal(normal));
|
|
1647
|
+
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
1648
|
+
vec3 nearby1 = position + tangent1 * 0.1;
|
|
1649
|
+
vec3 nearby2 = position + tangent2 * 0.1;
|
|
1650
|
+
vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1651
|
+
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1652
|
+
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1653
|
+
return displaced_position;
|
|
1654
|
+
}`,[e,t])}}();var lt={normalRenderTarget:new Ft,normalRenderTargetDepth:new Ft,transmissionRenderTarget:new Ft,transmissionSize:new Qe(2048,2048),transmissionRenderTargetDepth:new Ft,pixelRatioNode:new Z(1),resolution:new Qe,penumbraSize:new Sr(5,.5),transmissionLod:new Se(2)};for(let n of Object.values(lt))n.isRenderGlobal=!0;var js=class extends mt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ie(5526619),this.emissive=new Ie(0),this.emissiveIntensity=new Z(1),this.shadingAlpha=new Z(1),this.shadingBlend=new Se(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(Fs.UniformsUtils.merge([Fs.UniformsLib.fog,Fs.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(`
|
|
1655
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
1656
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1657
|
+
#include <defaultnormal_vertex>
|
|
1658
|
+
#endif
|
|
1659
|
+
|
|
1660
|
+
vec3 displaced_position = position;
|
|
1661
|
+
vec3 displaced_normal = normal;
|
|
1662
|
+
|
|
1663
|
+
#ifdef USE_LAYER_DISPLACE
|
|
1664
|
+
vec3 transformed;
|
|
1665
|
+
vec3 transformedNormal;
|
|
1666
|
+
#endif
|
|
1667
|
+
`,"#include <normal_vertex>",`
|
|
1668
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1669
|
+
#include <begin_vertex>
|
|
1670
|
+
#endif
|
|
1671
|
+
`];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>",`
|
|
1672
|
+
vec3 diffuse = vec3( 1.0 );
|
|
1673
|
+
GeometricContext geometry;
|
|
1674
|
+
geometry.position = mvPosition.xyz;
|
|
1675
|
+
geometry.normal = normalize( transformedNormal );
|
|
1676
|
+
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
1677
|
+
GeometricContext backGeometry;
|
|
1678
|
+
backGeometry.position = geometry.position;
|
|
1679
|
+
backGeometry.normal = -geometry.normal;
|
|
1680
|
+
backGeometry.viewDir = geometry.viewDir;
|
|
1681
|
+
vLightFront = vec3( 0.0 );
|
|
1682
|
+
vIndirectFront = vec3( 0.0 );
|
|
1683
|
+
#ifdef DOUBLE_SIDED
|
|
1684
|
+
vLightBack = vec3( 0.0 );
|
|
1685
|
+
vIndirectBack = vec3( 0.0 );
|
|
1686
|
+
#endif
|
|
1687
|
+
IncidentLight directLight;
|
|
1688
|
+
float dotNL;
|
|
1689
|
+
vec3 directLightColor_Diffuse;
|
|
1690
|
+
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
1691
|
+
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
1692
|
+
#ifdef DOUBLE_SIDED
|
|
1693
|
+
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
1694
|
+
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
1695
|
+
#endif
|
|
1696
|
+
#if NUM_POINT_LIGHTS > 0
|
|
1697
|
+
#pragma unroll_loop_start
|
|
1698
|
+
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
1699
|
+
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
1700
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
1701
|
+
directLightColor_Diffuse = directLight.color;
|
|
1702
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1703
|
+
#ifdef DOUBLE_SIDED
|
|
1704
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1705
|
+
#endif
|
|
1706
|
+
}
|
|
1707
|
+
#pragma unroll_loop_end
|
|
1708
|
+
#endif
|
|
1709
|
+
#if NUM_SPOT_LIGHTS > 0
|
|
1710
|
+
#pragma unroll_loop_start
|
|
1711
|
+
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
1712
|
+
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
1713
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
1714
|
+
directLightColor_Diffuse = directLight.color;
|
|
1715
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1716
|
+
#ifdef DOUBLE_SIDED
|
|
1717
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1718
|
+
#endif
|
|
1719
|
+
}
|
|
1720
|
+
#pragma unroll_loop_end
|
|
1721
|
+
#endif
|
|
1722
|
+
#if NUM_DIR_LIGHTS > 0
|
|
1723
|
+
#pragma unroll_loop_start
|
|
1724
|
+
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
1725
|
+
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
1726
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
1727
|
+
directLightColor_Diffuse = directLight.color;
|
|
1728
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1729
|
+
#ifdef DOUBLE_SIDED
|
|
1730
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1731
|
+
#endif
|
|
1732
|
+
}
|
|
1733
|
+
#pragma unroll_loop_end
|
|
1734
|
+
#endif
|
|
1735
|
+
#if NUM_HEMI_LIGHTS > 0
|
|
1736
|
+
#pragma unroll_loop_start
|
|
1737
|
+
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
1738
|
+
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
1739
|
+
#ifdef DOUBLE_SIDED
|
|
1740
|
+
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
1741
|
+
#endif
|
|
1742
|
+
}
|
|
1743
|
+
#pragma unroll_loop_end
|
|
1744
|
+
#endif
|
|
1745
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
1746
|
+
`)}else{e.mergeUniform({penumbraSize:lt.penumbraSize}),this.color===void 0&&(this.color=new Ie(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.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),d=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}];`,"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(`
|
|
1747
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
1748
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1749
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1750
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1751
|
+
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
1752
|
+
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
1753
|
+
`,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.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&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
|
|
1754
|
+
if (outgoingLight != diffuseColor) {
|
|
1755
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1756
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
|
|
1757
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
|
|
1758
|
+
}
|
|
1759
|
+
`),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
|
|
1760
|
+
`)}return t}};var ks=require("three");var Us=class extends mt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ie(5526619),this.specular=new Ie(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new Se(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(ks.UniformsUtils.merge([ks.UniformsLib.fog,ks.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(`
|
|
1761
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
1762
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1763
|
+
#include <defaultnormal_vertex>
|
|
1764
|
+
#endif
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
vec3 displaced_position = position;
|
|
1768
|
+
vec3 displaced_normal = normal;
|
|
1769
|
+
|
|
1770
|
+
#ifdef USE_LAYER_DISPLACE
|
|
1771
|
+
vec3 transformed;
|
|
1772
|
+
vec3 transformedNormal;
|
|
1773
|
+
#endif
|
|
1774
|
+
`,"#include <normal_vertex>",`
|
|
1775
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1776
|
+
#include <begin_vertex>
|
|
1777
|
+
#endif
|
|
1778
|
+
`];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(`
|
|
1779
|
+
`)}else{e.mergeUniform({penumbraSize:lt.penumbraSize}),this.color===void 0&&(this.color=new Ie(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"),d=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(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1780
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
1781
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1782
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1783
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1784
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1785
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
1786
|
+
normal *= -1.0;
|
|
1787
|
+
}
|
|
1788
|
+
`," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
|
|
1789
|
+
if (outgoingLight != diffuseColor) {
|
|
1790
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1791
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
|
|
1792
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
|
|
1793
|
+
}
|
|
1794
|
+
`),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
|
|
1795
|
+
`)}return t}};var Di=require("three");var Hs=class extends mt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ie(5526619),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.shadingAlpha=new Z(1),this.shadingBlend=new Se(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(Di.UniformsUtils.merge([Di.UniformsLib.fog,Di.UniformsLib.lights])),Di.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(`
|
|
1796
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
1797
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
1798
|
+
#include <defaultnormal_vertex>
|
|
1799
|
+
#endif
|
|
1800
|
+
|
|
1801
|
+
vec3 displaced_position = position;
|
|
1802
|
+
vec3 displaced_normal = normal;
|
|
1803
|
+
|
|
1804
|
+
#if defined( USE_LAYER_DISPLACE )
|
|
1805
|
+
vec3 transformed;
|
|
1806
|
+
vec3 transformedNormal;
|
|
1807
|
+
#endif
|
|
1808
|
+
`,"#include <normal_vertex>",`
|
|
1809
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
1810
|
+
#include <begin_vertex>
|
|
1811
|
+
#endif /* !USE_LAYER_DISPLACE */
|
|
1812
|
+
`];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(`
|
|
1813
|
+
`)}else{e.mergeUniform({penumbraSize:lt.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ie(5526619)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
1814
|
+
`));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1815
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1816
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1817
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1818
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1819
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
1820
|
+
normal *= -1.0;
|
|
1821
|
+
}
|
|
1822
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",l.code," float metalnessFactor = "+l.result+";"),u&&f.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),f.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),p?f.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.result+" ) ), diffuseColor, metalnessFactor );"):f.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),f.push("#include <lights_fragment_begin>"),f.push("#include <lights_fragment_end>"),f.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
1823
|
+
if (outgoingLight != diffuseColor) {
|
|
1824
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1825
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
|
|
1826
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${d.result} );
|
|
1827
|
+
}
|
|
1828
|
+
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
|
|
1829
|
+
`)}return t}};var Ws=require("three");var qs=class extends mt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ie(5526619),this.specular=new Ie(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new Se(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(Ws.UniformsUtils.merge([Ws.UniformsLib.fog,Ws.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(`
|
|
1830
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
1831
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1832
|
+
#include <defaultnormal_vertex>
|
|
1833
|
+
#endif
|
|
1834
|
+
|
|
1835
|
+
vec3 displaced_position = position;
|
|
1836
|
+
vec3 displaced_normal = normal;
|
|
1837
|
+
|
|
1838
|
+
#ifdef USE_LAYER_DISPLACE
|
|
1839
|
+
vec3 transformed;
|
|
1840
|
+
vec3 transformedNormal;
|
|
1841
|
+
#endif
|
|
1842
|
+
`,"#include <normal_vertex>",`
|
|
1843
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1844
|
+
#include <begin_vertex>
|
|
1845
|
+
#endif
|
|
1846
|
+
`];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(`
|
|
1847
|
+
`)}else{e.mergeUniform({penumbraSize:lt.penumbraSize}),this.color===void 0&&(this.color=new Ie(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"),d=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}];`,"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>",`
|
|
1848
|
+
varying vec3 vViewPosition;
|
|
1849
|
+
struct ToonMaterial {
|
|
1850
|
+
vec3 diffuseColor;
|
|
1851
|
+
vec3 specularColor;
|
|
1852
|
+
float specularShininess;
|
|
1853
|
+
float specularStrength;
|
|
1854
|
+
};
|
|
1855
|
+
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1856
|
+
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
1857
|
+
|
|
1858
|
+
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1859
|
+
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
1860
|
+
}
|
|
1861
|
+
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1862
|
+
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1863
|
+
}
|
|
1864
|
+
#define RE_Direct RE_Direct_Toon
|
|
1865
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
1866
|
+
#define Material_LightProbeLOD( material ) (0)
|
|
1867
|
+
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
1868
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
1869
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1870
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1871
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1872
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1873
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
1874
|
+
normal *= -1.0;
|
|
1875
|
+
}
|
|
1876
|
+
`," ToonMaterial material;"];u.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&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
|
|
1877
|
+
if (outgoingLight != diffuseColor) {
|
|
1878
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1879
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
|
|
1880
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
|
|
1881
|
+
}
|
|
1882
|
+
`),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
|
|
1883
|
+
`)}return t}};var Hl=require("three");var jl=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 Fu=class extends jl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},zu;function Sy(n){return typeof n=="string"?n:(zu||(zu=new Fu),zu.load(n))}var kl=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")}},Ul=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 Gi=class extends kl{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=Sy(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new Hl.VideoTexture(this.img,void 0,e,e):o=new Hl.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 tr=class extends Gi{};var Fe=require("three");function wt(n,r){return r.color(n)}function wy(n,r){switch(n.type){case"fresnel":return sT(n,r);case"gradient":return aT(n);case"depth":return lT(n);case"normal":return cT(n);case"noise":return uT(n,r);case"rainbow":return dT(n);case"toon":return pT(n,r);case"outline":return fT(n,r);case"transmission":return mT(n,r);case"color":return iT(n,r);case"pattern":return hT(n,r)}}function nT(n){return{type:n.type}}function Tr(n){let{alpha:r,mode:e,isMask:t}=n;return{...nT(n),alpha:r,mode:e,isMask:t}}function iT(n,r){return{...Tr(n),color:wt(n.color,r)}}function sT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:l}=n;return{...Tr(n),color:wt(s,r),bias:e,scale:t,intensity:o,factor:i}}function aT(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...Tr(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 lT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:d,smooth:a}=n;return{...Tr(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(u=>u!==void 0?new Fe.Vector4(u[0],u[1],u[2],u[3]):new Fe.Vector4(0,0,0,0)),steps:d.slice(0,c.length),smooth:a}}function cT(n){let{cnormal:r}=n;return{...Tr(n),cnormal:new Fe.Vector3(r[0],r[1],r[2])}}function uT(n,r){return{...Tr(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:wt(n.colorA,r),colorB:wt(n.colorB,r),colorC:wt(n.colorC,r),colorD:wt(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 dT(n){return{...Tr(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 pT(n,r){return{...Tr(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:wt(n.shadowColor,r),offset:new Fe.Vector3(...n.offset)}}function fT(n,r){return{...Tr(n),outlineColor:wt(n.outlineColor,r),contourColor:wt(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 mT(n,r){return{...Tr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function hT(n,r){return{...Tr(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Fe.Vector2(...n.offset),colorA:wt(n.colorA,r),colorB:wt(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 Co=class extends at{};var _y=require("three");var ju={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ku={depth:["colors"]};function yT(n,r,e){if(r==="isMask")return!0;let t=ju[n.type],o=ku[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 Uu(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 tr||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof tr||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 Ty(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Hu(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 Ao))switch(o=o||yT(e,i,s),l.constructor){case Ie:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Co?l.value=new at(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case zt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Co?l.value=new at(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Qe:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case St:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Ft:{Uu(s,r,e);break}case _r:{l.value=s.map(c=>new _y.Vector4(...c));break}default:{l.value=s;break}}}return o}var jr=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)Hu(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 Zo(i,t.texture.wrapping),l=new zl(i),c=new Fl(t.texture.repeat,t.texture.offset),d=new Z(t.crop?1:0),a=new Se(t.projection??0),u=new Se(["x","y","z"].indexOf(t.axis)??0),p=new Se(t.side??0),f=new Qe(t.size?new Be.Vector2(t.size[0],t.size[1]):new Be.Vector2(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new Se(t.mode??0),g=new wr(t.isMask??!1),v=new _i(s,l,d,a,u,p,f,m,c,h,y,g),b=new Ae(v.calpha,"f");return new He(r,e,t,{texture:s,textureSize:l,crop:d,projection:a,axis:u,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 Zo(i,t.texture.wrapping),l=new Z(t.alpha??1),c=new Se(t.mode??0),d=new wr(t.isMask??!1),a=new Ai(s,l,c,d),u=new Ae(a.calpha,"f");return new He(r,e,t,{texture:s,alpha:l,mode:c,isMask:d},a,c,u,d)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new St(new Be.Vector3(...t.offset)),s=new Z(t.scale??10),l=new Z(t.intensity??8),c=new Z(t.movement??1),d=new Se(t.noiseType??0),a=new Se(t.voronoiStyle??0),u=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 Se(t.quality??1),y=new Bi(l,c,i,a,u,p,f,m,h,s,d);return new $s(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:d,voronoiStyle:a,smoothness:u,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return vT(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):Ty(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Uu(o.props,t.shared,this):!0;return!1}dispose(){if(gT(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof tr||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 jr{constructor(e,t,o,i,s,l,c,d){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c;this.isMask=d}},$s=class extends jr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},or=class extends jr{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 Se(o.mode),d;if(!o.visible)s=new Ko,d={};else if(o.category==="lambert"){s=new js;let a=new Ie(i.color(o.emissive)??0);d={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new qs;let a=new Z(o.shininess??30),u=new Ie(i.color(o.specular)??1118481);d={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new Hs;let a=new Z(o.roughness??.3),u=new Z(o.metalness??0),p=new Z(o.reflectivity??.5);d={roughness:a,metalness:u,reflectivity:p},s.roughness=a,s.metalness=u,s.reflectivity=p}else{s=new Us;let a=new Z(o.shininess??30),u=new Ie(o.specular!==void 0?i.color(o.specular)??1118481:1118481);d={shininess:a,specular:u},s.shininess=a,s.specular=u}return s.alpha=new Z(1),s.shadingAlpha=l,s.shadingBlend=c,d.alpha=s.shadingAlpha,d.mode=s.shadingBlend,new or(e,t,o,s,d)}get category(){return this.node.category}};function gT(n){let r=n instanceof jr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function rr(n){return{alpha:new Z(n.alpha??1),mode:new Se(n.mode??0),isMask:new wr(n.isMask??!1)}}function xT(n,r,e,t){switch(n.type){case"color":{let o=new Ie(t.color??5526619),i=rr(t),s=new Qo(o,i.alpha),l=new Ae(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}case"fresnel":{let o=new Ie(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),d=rr(t),a=new Vs(o,i,s,l,c,d.alpha,d.mode,d.isMask),u=new Ae(a.calpha,"f");return new He(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,...d},a,d.mode,u,d.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new St(t.wavelengths??new Be.Vector3(0,0,0)),l=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),d=new St(t.offset??new Be.Vector3(0,0,0)),a=rr(t),u=new Mi(o,i,s,l,c,d,a.alpha,a.isMask),p=new Ae(u.calpha,"f");return new He(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:d,...a},u,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=lt.transmissionSize,c=lt.transmissionRenderTarget,d=lt.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,p=a>=u?new Qe(u/a,1):new Qe(1,a/u),f=rr(t),m=new Li(o,i,s,l,c,d,p,f.alpha),h=new Ae(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 Se(t.positioning??0),i;t.colors?i=new _r(t.colors.length,t.colors):(i=new _r(10,new Be.Vector4(0,0,0,1)),i.value[1]=new Be.Vector4(1,1,1,1));let s;t.steps?s=new Sr(t.steps.length,t.steps):(s=new Sr(10,1),s.value[0]=0);let l=new St(t.source??new Be.Vector3(0,0,0)),c=new wr(t.isWorldSpace??!0),d=new Z(t.noiseStrength??0),a=new Z(t.noiseScale??1),u=new zt(t.shadowColor),p=new St(t.offset??new Be.Vector3(0,0,0)),f=rr(t),m=new Ei(o,i,s,l,c,d,a,u,p,f.alpha),h=new Ae(m.calpha,"f");return new He(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:d,noiseScale:a,shadowColor:u,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Ie(t.outlineColor??16777215),i=new Ie(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),l=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),d=new Z(t.contourThreshold??.1),a=new Z(t.outlineSmoothing??.1),u=new Z(t.contourFrequency??.1),p=new St(t.contourDirection??new Be.Vector3(0,1,0)),f=new wr(t.positionalLines??!1),m=new wr(t.compensation??!0),h=lt.normalRenderTarget,y=lt.normalRenderTargetDepth,g=lt.pixelRatioNode,v=lt.resolution,b=rr(t),w=new Ni(o,i,s,l,c,d,a,u,p,f,m,v,h,y,g,b.alpha),S=new Ae(w.calpha,"f");return new He(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:d,outlineSmoothing:a,contourFrequency:u,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new Se(t.gradientType??0),i=new wr(t.smooth??!1),s=new Z(t.near??50),l=new Z(t.far??200),c=new Z(t.isVector??1),d=new Z(t.isWorldSpace??0),a=new St(t.origin??new Be.Vector3),u=new St(t.direction??new Be.Vector3),p;t.colors?p=new _r(t.colors.length,t.colors):(p=new _r(2,new Be.Vector4(0,0,0,1)),p.value[1]=new Be.Vector4(1,1,1,1));let f;t.steps?f=new Sr(t.steps.length,t.steps):(f=new Sr(2,1),f.value[0]=0);let m=rr(t),h=new Pi(o,i,s,l,c,d,a,u,p,f,m.alpha,m.isMask),y=new Ae(h.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:d,origin:a,direction:u,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new St(t.size??new Be.Vector3(100,100,100)),s=new Z(t.move??1),l=new Qe(t.fA??new Be.Vector2(1.7,9.2)),c=new Qe(t.fB??new Be.Vector2(8.3,2.8)),d=new Qe(t.distortion??new Be.Vector2(1,1)),a=new zt(t.colorA),u=new zt(t.colorB),p=new zt(t.colorC),f=new zt(t.colorD),m=new Se(t.noiseType??0),h=new Se(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 Se(t.quality??1),S=rr(t),T=new Ci(o,i,s,l,c,d,a,u,p,f,S.alpha,m,S.isMask,h,y,g,v,b,w),_=new Ae(T.calpha,"f");return new He(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:d,colorA:a,colorB:u,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:v,seed:b,quality:w},T,S.mode,_,S.isMask)}case"normal":{let o=new St(t.cnormal??new Be.Vector3(1,1,1)),i=rr(t),s=new Si(o,i.alpha),l=new Ae(s.calpha,"f");return new He(r,e,n,{cnormal:o,...i},s,i.mode,l,i.isMask)}case"gradient":{let o=new Se(t.gradientType??0),i=new wr(t.smooth??!1),s;t.colors?s=new _r(t.colors.length,t.colors):(s=new _r(10,new Be.Vector4(0,0,0,1)),s.value[1]=new Be.Vector4(1,1,1,1));let l;t.steps?l=new Sr(t.steps.length,t.steps):(l=new Sr(10,1),l.value[0]=0);let c=new Qe(t.offset??new Be.Vector2(0,0)),d=new Qe(t.morph??new Be.Vector2(0,0)),a=new Z(t.angle??0),u=rr(t),p=new Oi(o,i,s,l,c,d,a,u.alpha,u.isMask),f=new Ae(p.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:d,angle:a,...u},p,u.mode,f,u.isMask)}case"pattern":{let o=new Se(t.style??0),i=new Se(t.projection??0),s=new Se(["x","y","z"].indexOf(t.axis)??0),l=new Z(t.blending??0),c=new Qe(t.offset??new Be.Vector2(0,0)),d=new zt(t.colorA),a=new zt(t.colorB),u=new Qe(t.frequency??new Be.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 Qe(t.vertical??new Be.Vector2(0,1)),v=new Qe(t.horizontal??new Be.Vector2(0,1)),b=new Se(t.sides??6),w=rr(t),S=new Ii(o,i,s,l,c,d,a,u,p,f,m,h,y,g,v,b,w.alpha,w.isMask),T=new Ae(S.calpha,"f");return new He(r,e,n,{style:o,projection:i,axis:s,blending:l,offset:c,colorA:d,colorB:a,frequency:u,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:v,sides:b,...w},S,w.mode,T,w.isMask)}default:{let o=new Ie(1,0,0,1),i=rr(t),s=new Qo(o,i.alpha),l=new Ae(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}}}function vT(n,r,e,t){let o=wy(e,t);return xT(e,n,r,o)}function Hu(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 Py(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,d=Math.min(i,Math.min(s,Math.min(l,c)));d<1&&(o=d)}e+=(1-e)*o}}return e<1}var kt=class extends Oy.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Wu=class extends kt{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}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()}},Ri=class extends kt{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 Wu(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}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??Dt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>jr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=Py(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,"",{...Nt.defaultData("light","phong"),visible:!1},new Ko,{})),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=Py(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=jr.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(d=>d.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{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=jr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(u=>u.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 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 ht(t.color,t.alpha,ht.MUL):i instanceof He&&(i.isMask.value||(i.color.mask=new ht(t.color,t.alpha,ht.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 bi(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ae("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 bi(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 $s);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new ht(t,e[o].position,ht.ADD),t=new ht(t,new Z(.5).setReadonly(!0),ht.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=(ju[t.type]??[]).map(l=>t[l]),i=(ku[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}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 Rl;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 Zo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(kt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Jo=class extends Ri{};var Iy=ln(Ay());var Cy=new Map;function Ny(n){if(typeof n=="string")return n;let r=Cy.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Cy.set(n,r)),r.url}var en=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:Ny(r),format:"wav"},this.sound=new Iy.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 ct=require("three"),ql=class{constructor(){this.type="ShapePath";this.color=new ct.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new ct.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,T=v.x,_=h.y,x=y.y,N=g.y,P=v.y,C=(T-S)*(_-N)-(P-N)*(b-S),O=(w-b)*(_-N)-(x-_)*(b-S),A=(P-N)*(w-b)-(T-S)*(x-_),R=C/A,k=O/A;if(A===0&&C!==0||R<=0||R>=1||k<0||k>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),X=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:X,t:t.t}}return null}else{for(let X=0;X<2;X++)if(i(X===0?g:v,h,y),t.loc===e.ORIGIN){let q=X===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:$,y:te,t:R}}}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,T=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(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>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 T=1;T<y.length;T++){let _=y[T-1],x=y[T],N=o(w,S,_,x);N!==null&&g.find(P=>P.t<=N.t+Number.EPSILON&&P.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),v.push(new ct.Vector2(N.x,N.y)))}}return v}function l(h,y,g){let v=new ct.Vector2;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),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 ct.Vector2;h.boundingBox.getCenter(w);let S=[new ct.Vector2(g,w.y),new ct.Vector2(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let N=_[0].point.x,P=[],C=0;for(;C<x.length&&x[C].point.x<N;)P.length>0&&P[P.length-1]===x[C].identifier?P.pop():P.push(x[C].identifier),C++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let k=0;k<P.length;k++){let $=P[k];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 d=0,a=999999999,u=-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 T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}u<=b&&(u=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:ct.ShapeUtils.isClockWise(y),identifier:d++,boundingBox:new ct.Box2(new ct.Vector2(w,v),new ct.Vector2(b,g))})});let f=p.map(h=>c(h,p,a,u,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new ct.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 ct.Path;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Ey,qu=new Promise(n=>{Ey=n}),My=!1;async function Ly(){if(My)return;let n=await import("./opentype.js");Ey(n),My=!0}var Xs=class{async load(r,e,t=()=>{}){let{load:o}=await qu;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await qu;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 bT(n){return await(await fetch(n)).arrayBuffer()}var ST=new Xs;async function $u(n){let r,e,t=!1;if(n.url?(r=await bT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await ST.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var Vi=require("three");function wT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var $l=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=$u(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=$u(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 d=0;d<t.length;d++){let a=t[d].index,u=String.fromCharCode(t[d].unicode),p=i[l];if(wT(a,p)||c)s.push({char:u,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:u,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(`
|
|
1884
|
+
`,e),d=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),u=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(_)}u=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,b,c);let T=[];try{T=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],N=x.index===0?`
|
|
1885
|
+
`:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],C=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(C=t.getKerningValue(x,y)*o),u+=O+C;let A=0;if(N===`
|
|
1886
|
+
`)A=d;else if(N===" ")A=a;else{let R=this.createPath(x,o,u,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(P.replacements.length===1)h[v].push([u,p]),m[v].push(A);else{let R=P.replacements.map(X=>(t.glyphs.get(X).advanceWidth??0)*o),k=R.reduce((X,q)=>X+=q,0),$=R.map(X=>X/k),te=u;for(let X=0;X<$.length;X++){let q=A*$[X];h[v].push([te,p]),m[v].push(q),te+=q}}u+=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(`
|
|
1887
|
+
`)>=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,d=-this.ascender*o-c/2;return i===3?-(t-s-d):i===2?-(t*.5-s*.5-d):d}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 d of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&d.type!=="Z"&&a.x===d.x&&-a.y===d.y))switch(d.type){case"M":l.moveTo(d.x,-d.y);break;case"L":l.lineTo(d.x,-d.y);break;case"Q":l.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":l.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return l.subPaths.forEach(d=>{let a=_T(d.curves);a!==void 0&&d.currentPoint.distanceTo(a)>0&&d.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 _T(n){if(n.length){let r=n[0];if(r instanceof Vi.LineCurve)return r.v1;if(r instanceof Vi.CubicBezierCurve||r instanceof Vi.QuadraticBezierCurve)return r.v0}}var Xu=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()}},Ys=class extends Xu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=$o(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var By={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Yu=class extends Ul{constructor(e){super();this.shared=e}create(e){return new Gi(e,this.shared)}},tn=class{constructor(r,e={}){this.geometryCache=new Ys(!0);this.geometryCache2=new Ys(!1);this.imageHolderCache=new Yu(this);this.thisContext={scene:By,shared:this};this.deletedMaterial=new Jo(Dt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new tr($n.emptyImage,this);this.deletedVideo=new tr(gn.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 Jo(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 Ri(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 tr(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 tr(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 Co(e.r,e.g,e.b,e.a):this.colors[r]=new Co(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 at(0,0,0,0))}else return"a"in r?new at(r.r,r.g,r.b,r.a):new at(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 en)return e;{let t=new en({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof en&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new $l(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 en&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Dy=new tn(dl.emptyData());var Pr=class extends bt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Sd(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(cr(e.path,["material"])&&this.material instanceof kt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(xt.drop(e,1),t.material,o);else if(cr(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(xt.drop(e,2),s,o)}}}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&&za(this.material).forEach(e=>{e instanceof kt&&(e instanceof Jo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Gy=require("three");var _t=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Gy.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof tn){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 as.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return as.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),cr(e.path,["geometry"])&&this.updateByPatchedOpGeometry(xt.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=$o(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let d=this.localGeometry.userData;d.sxPrev!==void 0&&Es(this.localGeometry.attributes,s/d.sxPrev,l/d.syPrev,c/d.szPrev),d.sxPrev=s,d.syPrev=l,d.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=$o(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&&ds(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof tt&&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 TT(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 Kt.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 Kt.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 Kt.Float32BufferAttribute(i,3))}function PT(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 Kt.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 Kt.Float32BufferAttribute(t,3))}function zi(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof kt)||n.material.getLayersOfType("outline").length===0)return;n instanceof _t&&n.is2DAndNoDepth?PT(n):TT(n)}function Fi(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=[Kt.MathUtils.seededRandom(o),Kt.MathUtils.seededRandom(o+1e4),Kt.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new Kt.BufferAttribute(t,3))}var OT;ui.then(n=>{OT=n});var kr=new so.Box3,Ks=new so.Vector3;function Ry(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var rn=class extends _t{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new so.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}=tt.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,zi(this),Fi(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){tt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&tt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=tt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=tt.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,bt.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 so.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;kr.setFromBufferAttribute(t),kr.getCenter(o),e.boundingSphere.radius=o.distanceTo(kr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kr.getSize(Ks),this.hasNonUniformScale&&Ks.divide(this.scale);let i={width:Ks.x,height:Ks.y,depth:Ks.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;kr.min.set(e[0],e[2],e[4]),kr.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(kr.min.applyMatrix4(this.shearScaleInv),kr.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new so.Sphere);let o=t.boundingSphere.center;kr.getCenter(o),t.boundingSphere.radius=o.distanceTo(kr.max)}freeSubdivPointer(){this.subdivPointer&&(tt.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 Ur=require("three"),Vy=-1,AT=1,zy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Fy={polygon_center:0,edge:1,vertex:2},Zs=(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-Vy)*(e-t)/(AT-Vy)+t};function jy(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 CT=new Ur.Vector3,Xl=new Ur.Vector3,NT=new Ur.Vector3,IT=new Ur.Vector3;function ji(n,r){let e=NT.fromArray(n),t=IT.fromArray(r);Xl.copy(t).sub(e);let o=Xl.length();return Xl.normalize().multiplyScalar(o*.5),CT.copy(e).add(Xl).toArray()}var nr=new Ur.Triangle,Yl=new Ur.Vector3,Kl=new Ur.Vector3,on=new Ur.Vector3;function ky(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Yl.fromArray(n.index.array,e*3),nr.setFromAttributeAndIndices(n.attributes.position,Yl.x,Yl.y,Yl.z),nr.getNormal(Kl),nr.getMidpoint(on),!(isNaN(on.x)||isNaN(on.y)||isNaN(on.z))){let{a:t,b:o,c:i}=nr,s=t.toArray(),l=o.toArray(),c=i.toArray(),d=t.distanceTo(o),a=o.distanceTo(i),u=i.distanceTo(t),p=ji(s,l),f=ji(l,c),m=ji(c,s),h=[d,a,u],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=nr.getMidpoint(on).toArray();y===d&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===u&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:nr.getNormal(Kl).toArray()})}return r}function Uy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){nr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),nr.getNormal(Kl),nr.getMidpoint(on);let o=nr.a.toArray(),i=nr.b.toArray(),s=nr.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ji(o,i),ji(i,s),ji(s,o)],midpoint:on.toArray(),norm:Kl.toArray()})}return r}var MT=4,ET=.5,Ku=n=>.5*(1-Math.cos(n*Math.PI)),Zu=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,d=t-s,a,u,p=0,f=.5,m,h,y;for(let g=0;g<MT;g++){let v=o+(i<<4)+(s<<8);a=Ku(l),u=Ku(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+=u*(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+=u*(y-h),m+=Ku(d)*(h-m),p+=m*f,f*=ET,o<<=1,l*=2,i<<=1,c*=2,s<<=1,d*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),d>=1&&(s++,d--)}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()}},Hy=Zu;var Ui=require("three");var Wy=new Ui.Vector3,qy=new Ui.Matrix4,$y=new Ui.Ray;function Xy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var ki=class extends _t{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)&&(qy.copy(o).invert(),$y.copy(e.ray).applyMatrix4(qy),$y.intersectBox(this.singleBBox,Wy))){let i=Wy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Mt=1e-4,Hr,Zy,Qy,Jy,Yy=new Me.Vector3,Ky=new Me.Vector3;ui.then(n=>{Hr=n,Zy=[Hr.get_face_center,Hr.get_edge_midpoint,Hr.get_vertex_position],Qy=[Hr.get_face_normal,Hr.get_edge_normal,Hr.get_vertex_normal],Jy=[Hr.face_count,Hr.edge_count,Hr.vertex_count]});var LT=new Me.Matrix4,BT=new Me.Matrix4,No=new Me.Vector3,nn=new Me.Vector3,Qs=new Me.Vector3,Qu=new Me.Vector3,DT=new Me.Vector3,GT=new Me.Vector3;var ao=new Hy,Wi=class extends Xn(Me.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 oo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof oo&&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 oo(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 oo(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*Me.MathUtils.DEG2RAD,i=t.end*Me.MathUtils.DEG2RAD,s=o-i,l=new Me.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Me.Vector3(0,0,1);break;case"y":c=new Me.Vector3(0,1,0);break;default:case"x":c=new Me.Vector3(1,0,0);break}let d=e.randomnessObject??Lr.defaultData([1,1,1]).randomnessObject,a=d.noiseType==="perlin";ao.noiseSeed(d.seed);let u=pl((0,Hi.default)(d.seed)),p=Zs(d.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(d.freqScale/10)+d.movement,y=a?ao.noise(h):u(h,h);m.scale.x=t.scale[0]+p(f,he(y,d.scale[0]))||Mt,m.scale.y=t.scale[1]+p(f,he(y,d.scale[1]))||Mt,m.scale.z=t.scale[2]+p(f,he(y,d.scale[2]))||Mt,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,he(y,d.position[0])),m.position.y+=t.position[1]+p(f,he(y,d.position[1])),m.position.z+=t.position[2]+p(f,he(y,d.position[2]));let v=p(f,he(y,d.rotation[0])),b=p(f,he(y,d.rotation[1])),w=p(f,he(y,d.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Me.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Lr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";ao.noiseSeed(i.seed);let l=pl((0,Hi.default)(i.seed)),c=Zs(i.strength,this.parameters.randomness);for(let[d,a]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=s?ao.noise(u):l(u,u),f=c(d,he(p,i.rotation[0])),m=c(d,he(p,i.rotation[1])),h=c(d,he(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*d+c(d,he(p,i.scale[0]))||Mt,a.scale.y=1+(t.scale[1]-1)*d+c(d,he(p,i.scale[1]))||Mt,a.scale.z=1+(t.scale[2]-1)*d+c(d,he(p,i.scale[2]))||Mt,a.rotation.x=o.x*d+f,a.rotation.y=o.y*d+m,a.rotation.z=o.z*d+h,a.position.x=t.position[0]*d+c(d,he(p,i.position[0])),a.position.y=t.position[1]*d+c(d,he(p,i.position[1])),a.position.z=t.position[2]*d+c(d,he(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Lr.defaultData([1,1,1]).randomnessObject,s=Zs(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";ao.noiseSeed(i.seed);let c=km((0,Hi.default)(i.seed));if(o.useCenter===!0){let d={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 Me.Vector3(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?ao.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,he(h,i.scale[0]))||Mt,y.scale.y=1+s(t,he(h,i.scale[1]))||Mt,y.scale.z=1+s(t,he(h,i.scale[2]))||Mt;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]*u-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 d=0;d<o.count[0];d++)for(let a=0;a<o.count[1];a++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=l?ao.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,he(f,i.scale[0]))||Mt,m.scale.y=1+s(t,he(f,i.scale[1]))||Mt,m.scale.z=1+s(t,he(f,i.scale[2]))||Mt;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]*d+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]*u+s(t,he(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Me.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Lr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";ao.noiseSeed(i.seed);let l=pl((0,Hi.default)(i.seed)),c=Zs(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 ki)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 d=this.getSubdivData(),a=[],u=g=>{let v=g.length,b=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let v=d.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:u(v.map(b=>b.norm))}):a.push(g)});let f=jy(a);if(d.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new fl(this.objectForSample).build(),h=zy[t.axis],y=this.children;m.setRandomGenerator((0,Hi.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?ao.noise(b):l(b,b),S=c(g,he(w,i.rotation[0])),T=c(g,he(w,i.rotation[1])),_=c(g,he(w,i.rotation[2]));t.spreadType==="random"?m.sample(Qs,Qu):(f.length&&(Qs.fromArray(f[g].pos),Qu.fromArray(f[g].norm)),this.objectForSample instanceof rn&&Qs.applyMatrix4(LT.copy(this.objectForSample.matrixWorld).invert())),Qs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Qs),No.fromArray(h);let x=t.align==="normal"?Qu:this.object.getWorldDirection(GT),N=nn.fromArray(t.position);nn.x+=nn.x+c(g,he(w,i.position[0])),nn.y+=nn.y+c(g,he(w,i.position[1])),nn.z+=nn.z+c(g,he(w,i.position[2]));let P=Math.acos(x.dot(No)),C=DT.crossVectors(No,x).normalize(),O=BT.makeRotationAxis(C,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),k=new Me.Matrix4().makeBasis(A,x,R),$=new Me.Vector3(No.y,No.z,No.x).normalize(),te=$.clone().cross(No).normalize(),X=new Me.Matrix4().makeBasis($,No,te).invert(),q=new Me.Matrix4().multiplyMatrices(k,X);v.rotation.setFromRotationMatrix(q),N.applyMatrix4(O),v.position.add(N),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,he(w,i.scale[0]))||Mt,v.scale.y=v.scale.y+t.scale[1]+c(g,he(w,i.scale[1]))||Mt,v.scale.z=v.scale.z+t.scale[2]+c(g,he(w,i.scale[2]))||Mt,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 rn){let t=this.objectForSample,o=Fy[e],i=Jy[o],s=Zy[o],l=Qy[o],c=[],d=i(t.subdivPointerNew);for(let a=0;a<=d-1;a++){let u=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);Yy.fromArray(u).applyMatrix4(t.matrixWorld),Ky.fromArray(p),c.push({pos:Yy.toArray(),norm:Ky.toArray()})}return c}else return(this.objectForSample.geometry.index?ky(this.objectForSample.geometry):Uy(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=ro(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 bt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Me.Matrix4,this.hiddenMatrix=new Me.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var lr=require("three");var We=require("three");var Tt=require("three");var eg=require("three"),Wr=n=>{var r;return r=class extends n{},r.geometryHelper=new eg.BoxGeometry(30,30,30),r};var Ot=require("three"),Zl=new Ot.Ray,Ju=new Ot.Sphere,tg=new Ot.Matrix4,qr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Ju.copy(i.boundingSphere),Ju.applyMatrix4(s),e.ray.intersectsSphere(Ju)===!1||(tg.copy(s).invert(),Zl.copy(e.ray).applyMatrix4(tg),i.boundingBox!==null&&Zl.intersectsBox(i.boundingBox)===!1))return;let l,c,d,a,u=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=u.getX(m),d=u.getX(m+1),a=u.getX(m+2),l=y(n,e,Zl,p,c,d,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Ot.Vector3,w=new Ot.Vector3,S=new Ot.Vector3,T=new Ot.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=N*N,C=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Zl.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Ot.Vector3,N=new Ot.Vector3,P=new Ot.Vector3,C=new Ot.Vector3,O=new Ot.Vector3;if(x.fromBufferAttribute(w,S),N.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,N,P,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=v.ray.origin.distanceTo(O);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Ql=new Tt.Vector3,ir=new Tt.Camera,ed=class extends Tt.LineSegments{constructor(e){let t=new Tt.BufferGeometry,o=new Tt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Tt.Color(15711266),d=new Tt.Color(15711266),a=new Tt.Color(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(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 Tt.Float32BufferAttribute(i,3)),t.setAttribute("color",new Tt.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;ir.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;Or("n1",t,e,ir,-i,-s,l),Or("n2",t,e,ir,i,-s,l),Or("n3",t,e,ir,-i,s,l),Or("n4",t,e,ir,i,s,l);let c=l;Or("f1",t,e,ir,-i,-s,c),Or("f2",t,e,ir,i,-s,c),Or("f3",t,e,ir,-i,s,c),Or("f4",t,e,ir,i,s,c);let d=c,a=.5;Or("u1",t,e,ir,i*.7*a,s*1.1,d),Or("u2",t,e,ir,-i*.7*a,s*1.1,d),Or("u3",t,e,ir,0,s*(1.1+.9*a),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Or(n,r,e,t,o,i,s){Ql.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let d=0,a=l.length;d<a;d++)c.setXYZ(l[d],Ql.x,Ql.y,Ql.z)}}var Jl=class extends Wr(ed){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){qr(this.object,this.geometry,e,t,!0)}};var Js=require("three");var ec;(r=>r.is=e=>"objectHelper"in e)(ec||(ec={}));var Io=(n,r)=>class extends yl(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 Js.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Js.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 Js.Box3Helper&&(i.visible=!1)}}};var td=790,qi=new We.Vector3,rd=new We.Vector3,od=new We.Quaternion,nd=new We.Vector3,ea=new We.Vector3,id=new We.Vector3,$r=class extends Io(We.Camera,Jl){constructor(e="",t={...Hn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Go.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),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??td,l=o/i,c=o>i?l:1,d=o>i?1:l;this.orthoCamera=new We.OrthographicCamera(-s*.5*c,s*.5*c,s*.5*(1/d),-s*.5*(1/d),-5e4,1e4)}else 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(qi),this.targetOffset=qi.distanceTo(e)}getTarget(e=new We.Vector3){return this.getWorldDirection(rd),this.getWorldPosition(qi),rd.multiplyScalar(this.targetOffset),e.copy(qi).add(rd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(qi),qi.distanceTo(e)}updateUp(){this.getWorldQuaternion(od),nd.set(0,0,1).applyQuaternion(od),ea.copy(We.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&ea.negate(),ea.applyQuaternion(od),id.copy(We.Object3D.DEFAULT_UP).projectOnPlane(nd),this.angleOffsetFromUp=id.angleTo(ea),this.angleOffsetFromUp*=id.cross(ea).dot(nd)>=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}}getViewToObject(e){let t=e.getWorldPosition(new We.Vector3),i=this.getWorldDirection(new We.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??td,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())}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:td},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return jn(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 sn=require("three");var rg=new sn.Matrix4;var sr=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new sn.BufferGeometry;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 sr&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof bt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=xr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;xr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof sr&&s.needsTransformForDownstream===!0?(xr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(rg.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),xr.transformMeshSet(s.booleanMeshSetAddress,rg),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new sn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return xr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new sn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=xr.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,zi(this),Fi(this)}dispose(){super.dispose(),this.geometry.dispose()}};var ng=require("three");var og;(r=>{function n(e){return De.is(e)&&e instanceof ng.Light}r.is=n})(og||(og={}));var $i=(n,r)=>class extends Io(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 Xi=n=>n instanceof bt,ta=n=>n!==null&&n instanceof sr,ig=n=>n instanceof $r;var sd=n=>ec.is(n);var ag=require("three");var sg=require("three");var Mo=class extends Wr(sg.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){qr(this.object,Mo.geometryHelper,e,t)}update(){}};var ra=class extends Io(ag.Group,Mo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var na=require("three");var lg=require("three");var Yi=class extends Wr(lg.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){qr(this.object,Yi.geometryHelper,e,t)}};var cg=require("three");var Ki=class extends Wr(cg.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){qr(this.object,Ki.geometryHelper,e,t)}};var rc=require("three");var tc=class extends Wr(rc.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){qr(this.object,tc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=tc._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)}}},oa=tc;oa._vector=new rc.Vector3;function VT(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 oc=class extends $i(na.DirectionalLight,Yi){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 na.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 na.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&&VT(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 Ut=require("three");var nc=class extends $i(Ut.PointLight,Ki){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 Ut.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Ut.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new Ut.Box3(s,l),d=new Ut.Box3Helper(c,new Ut.Color(16755200));d.visible=!1,this.gizmos.shadowmap=d,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 Ut.Box3Helper){let t=this.shadow.camera,o=new Ut.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Ut.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 ar=require("three");var ug=new ar.Vector3,dg=new ar.Vector3,pg=new ar.Quaternion,ic=class extends $i(ar.SpotLight,oa){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=ar.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new ar.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 ar.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),dg.setFromMatrixPosition(this.matrixWorld),pg.setFromRotationMatrix(this.matrixWorld),ug.copy(this.up).applyQuaternion(pg).negate().multiplyScalar(this.distance),this.target.position.copy(dg).add(ug),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 sc=class extends _t{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Ds(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Zi=class extends _t{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=Cl;break;case"Ellipse":i=ii;break;case"Polygon":i=Al;break;case"Star":i=Nl;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?Ds(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var mg=require("three");var lo=class extends Io(mg.Group,Mo){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 So.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 So.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(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),ac(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&hg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function ac(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)De.is(e)&&ac(e)}}function fg(n,r,e,t){return n.component===r&&ds(n.identity,t)?n.overrideData===e?2:1:0}function hg(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let d=t.component.instances.indexOf(t);d>=0&&t.component.instances.splice(d,1)}o.instances.push(t),t.component=o}o instanceof lo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let d of o.children)if(De.is(d)){let a=[...r,...typeof d.identity=="string"?[d.identity]:d.identity],u=Wn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=De.is(m)?m:null,p!==null){let h=fg(p,d,u,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=fg(p,d,u,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=u?Yr.apply(d.data,u):d.data;dr.is(m.type)&&(m={...m,type:"Empty"}),p=mr.createEntity(a,m,n),p.overrideData=u,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,hg(n,r,e,p,d,i,s+1,l)}if(!l){let d=c;for(;;){let a=t.children[c];if(De.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(d,c-d)}return!0}function zT(n,r,e){let t;return r.geometry.type==="TextGeometry"?new ki(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new rn(n,r,e):r.geometry.type==="PathGeometry"?t=new Zi(n,r,e):r.geometry.type==="VectorGeometry"?t=new sc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new sr(n,r,e):t=new _t(n,r,e),t)}function lc(n,r,e){return r.type==="Mesh"?zT(n,r,e):r.type==="Empty"?new ra(n,r):r.type==="PointLight"?new nc(n,r,e):r.type==="SpotLight"?new ic(n,r,e):r.type==="DirectionalLight"?new oc(n,r,e):r.type==="Component"||r.type==="Instance"?new lo(n,r,e):dr.is(r.type)?new $r(n,r):(console.error(r),new ra(n,r))}mr.createEntity=lc;function FT(n,r,e){let t=lc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,d=n.overrideData,a=n.uuid,u=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=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}mr.changeEntityProptotype=FT;mr.Cloner=Wi;function yg(n,r,e,t){n.updateByOp(r,e,t,!1)}var Qi=require("three");function gg(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,Fi(n),zi(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function xg(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),e}function vg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)gg(e,e.material[t])&&(r=!0);else gg(e,e.material)&&(r=!0)}),r}function bg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)xg(e,e.material[t])&&(r=!0);else xg(e,e.material)&&(r=!0)}),r}var kT=new Qi.Raycaster,UT=new Qi.Matrix4,HT=new Qi.Ray;function ad(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=UT.copy(i.matrixWorld).invert(),l=HT.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let d=kT;d.set(l.origin,l.direction),d.near=r.near,d.far=r.far;let a=d.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var cc=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 WT=new lr.MeshBasicMaterial;WT.wireframe=!0;var Sg=new lr.Vector3,ld=class extends lr.Scene{constructor(e,t){super();this.data=e;this.backupFog=new lr.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.geometryCacheChanged=!1;this.bgColor=new at(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new cc;this.needsRecomputeInstances=!1;this.ambientLight=new lr.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=bg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=vg(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)=>Jd(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(),Xi(i)&&ta(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),ta(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Xi(o)&&(o.freeBooleanPointer(),i instanceof sr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Zi&&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()),Xi(o)&&(o.invalidateUpstreamBooleanData(),ta(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof sr&&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{states:l,rest:c}=t.props;t={...t,props:c},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{yg(s,t,o,{scene:this,shared:i}),s instanceof _t&&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(wt(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 $r&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{ta(o)&&o.recomputeBoolean(),o instanceof $r&&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){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{De.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=hn(a.data,u=>{let p=u.events.data(c.id),f=a.goUp(l);if(f){let m=[...za(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;At.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof lo&&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=hn(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 lo&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),ac(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof lo&&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)De.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new $r(ld.PERSONAL_CAMERA_ID,{...Hn.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;De.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Xi(s)||sd(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ad(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;De.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Xi(s)||sd(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ad(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)De.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)De.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)vs.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)De.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=wt(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=wt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=wt(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}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},d=lc(e,t,c);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(s,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,l)),d.updateState(t,c),d instanceof _t&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),d}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],d=this.find(l),a=c?d.recursiveBBox:d.singleBBox;t.push(...a.vertices)}let o=new lr.Box3;return o.setFromPoints(t),o.getCenter(Sg),Sg}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 bt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof kt&&e(t.material[o]);else t.material instanceof kt&&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})})}},Ji=ld;Ji.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",Ji.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";var wg=require("three/examples/jsm/loaders/DRACOLoader.js");var Eo;function qT(){return Eo||(Eo=new wg.DRACOLoader,Eo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Eo.decoderPending}async function $T(n){if(Eo){let r={attributeIDs:Eo.defaultAttributeIDs,attributeTypes:Eo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Eo.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 _g(n,r){let[e,t]=vc(Ia.deserialize(new Uint8Array(n)));Vm(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 qT();for(let i of o){let s=await $T(ut(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:d,itemSize:a})=>{l[c]={array:d,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 XT=require("three"),YT=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Tg(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 sa=require("three");function Pg(n){let r=new Set;return n.traverse(e=>{if(e instanceof Pr)if(Ye(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(KT(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new sa.Color,specularColor:new sa.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},sa.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)}else o++,o<2&&(e.needsUpdate=!0)})}}else ZT(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function KT(n){return n.getLayersOfType("transmission").length>0}function ZT(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function Og(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Ag(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 Cg=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Ng(n){let r=[];return n.traverse(e=>{e instanceof Wi&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Tg(c),c}),s=(0,Cg.mergeBufferGeometries)(e.parameters.hideBase?i:[t instanceof bt?t.geometry:[],...i]);t instanceof bt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Dy})}),n}function Ig(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Mg(n){Object.values(n.shared.materials).forEach(r=>{cd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?cd(e.material):"materials"in e&&e.materials.forEach(t=>{cd(t)})})}function cd(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 Dg=ln(Lg(),1),Bg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",uc=class extends dc.Loader{load(r,e,t,o=console.error){let i=new dc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Bg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Bg),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 _g(r,Mg);e.version&&(0,Dg.default)(e.version,"0.9.347")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Ry(e)&&ey(),Xy(e)&&Ly()].filter(Boolean));let t=new tn(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ji(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&&ig(s)&&Object.assign(s,{makeDefault:!0})}return o=Ng(o),o=Pg(o),o=Og(o),o=Ag(o),o=Ig(o),o}};
|