openvideo 0.2.10 → 0.2.11

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/dist/index.umd.js CHANGED
@@ -129,7 +129,7 @@ void main() {
129
129
  <div xmlns="http://www.w3.org/1999/xhtml">${i.outerHTML}</div>
130
130
  </foreignObject>
131
131
  </svg>
132
- `.replace(/\t/g,"").replace(/#/g,"%23");return o.src=`data:image/svg+xml;charset=utf-8,${l}`,await new Promise(u=>{o.onload=u}),o}async function kL(r,e,t={}){const i=await BL(r,e,t),n=new OffscreenCanvas(i.width,i.height);return n.getContext("2d")?.drawImage(i,0,0,i.width,i.height),await createImageBitmap(n)}async function RL(r,e){const t={type:e,data:r},i=new ImageDecoder(t);await Promise.all([i.completed,i.tracks.ready]);const n=i.tracks.selectedTrack?.frameCount??1,s=[];for(let o=0;o<n;o+=1)s.push((await i.decode({frameIndex:o})).image);return s}let X0=class{all=new Map;on(e,t){const i=this.all.get(e);return i?i.push(t):this.all.set(e,[t]),()=>this.off(e,t)}once(e,t){const i=this.on(e,n=>{i(),t(n)});return i}off(e,t){const i=this.all.get(e);i&&(t?i.splice(i.indexOf(t)>>>0,1):this.all.set(e,[]))}emit(e,t){let i=this.all.get(e);i&&i.slice().forEach(n=>{n(t)}),i=this.all.get("*"),i&&i.slice().forEach(n=>{n(e,t)})}};const FL={x:{label:"X Position",min:-2e3,max:2e3,step:1,default:0},y:{label:"Y Position",min:-2e3,max:2e3,step:1,default:0},width:{label:"Width",min:-1e3,max:1e3,step:1,default:0},height:{label:"Height",min:-1e3,max:1e3,step:1,default:0},scale:{label:"Scale",min:0,max:3,step:.1,default:1},scaleX:{label:"Scale X",min:0,max:3,step:.1,default:1},scaleY:{label:"Scale Y",min:0,max:3,step:.1,default:1},opacity:{label:"Opacity",min:0,max:1,step:.01,default:1},angle:{label:"Rotation",min:-360,max:360,step:1,default:0},blur:{label:"Blur",min:0,max:100,step:1,default:0},brightness:{label:"Brightness",min:0,max:5,step:.1,default:1},mirror:{label:"Mirror",min:0,max:1,step:1,default:0},motionBlur:{label:"Motion Blur",min:0,max:500,step:1,default:0}},Su={linear:r=>r,easeInQuad:r=>r*r,easeOutQuad:r=>r*(2-r),easeInOutQuad:r=>r<.5?2*r*r:-1+(4-2*r)*r,easeInCubic:r=>r*r*r,easeOutCubic:r=>--r*r*r+1,easeInOutCubic:r=>r<.5?4*r*r*r:(r-1)*(2*r-2)*(2*r-2)+1,easeInSine:r=>1-Math.cos(r*Math.PI/2),easeOutSine:r=>Math.sin(r*Math.PI/2),easeInOutSine:r=>.5*(1-Math.cos(Math.PI*r)),easeInExpo:r=>r===0?0:Math.pow(2,10*(r-1)),easeOutExpo:r=>r===1?1:1-Math.pow(2,-10*r),easeInOutExpo:r=>r===0?0:r===1?1:(r/=.5)<1?.5*Math.pow(2,10*(r-1)):.5*(2-Math.pow(2,-10*--r)),easeInCirc:r=>1-Math.sqrt(1-r*r),easeOutCirc:r=>Math.sqrt(1-(r-1)*(r-1)),easeInOutCirc:r=>(r/=.5)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-2)*r)+1),slow:iS(.5,.5,!1)};function iS(r=.7,e=.7,t=!1){const i=Math.min(1,r),n=i<1?e:0,s=(1-i)/2,o=s+i;return a=>{const l=a+(.5-a)*n;if(a<s){const u=1-a/s;return t?1-u*u:l-u*u*u*l}if(a>o){const u=(a-o)/s;return t?a===1?0:1-u*u:l+(a-l)*u*u*u}return t?1:l}}function Y0(r){return typeof r=="function"?r:typeof r=="string"&&Su[r]?Su[r]:Su.linear}class B{id;type;options;params;frames;constructor(e,t,i="keyframes"){this.id=t.id||`keyframe_${Math.random().toString(36).substr(2,9)}`,this.type=i,this.params=e,this.options={duration:t.duration,delay:t.delay??0,easing:t.easing??"linear",iterCount:t.iterCount??1,id:this.id,disableGlobalEasing:t.disableGlobalEasing??!1},Array.isArray(e)?this.frames=e.map(n=>({progress:n.progress,props:n.props||n,easing:n.easing})):this.frames=Object.entries(e).filter(([n])=>{if(n==="from"||n==="to")return!0;const s=Number(n.replace("%",""));return!isNaN(s)&&s>=0&&s<=100}).map(([n,s])=>{const o={from:0,to:100}[n]??Number(n.replace("%","")),{easing:a,...l}=s;return{progress:o/100,props:l,easing:a}}).sort((n,s)=>n.progress-s.progress),this.frames.length>0&&this.frames[0].progress!==0&&this.frames.unshift({progress:0,props:{}}),this.frames.length>0&&this.frames[this.frames.length-1].progress!==1&&this.frames.push({progress:1,props:{}})}getTransform(e){const{duration:t,delay:i,iterCount:n,easing:s,disableGlobalEasing:o}=this.options,a=e-i;if(a<0)return{};if(n!==1/0&&a>=t){const c=this.interpolateProps(1);return"mirror"in c&&(c.mirror=0),c}const l=n===1/0?t:t/n;let u=a%l/l;return!o&&s!=="linear"&&(u=Y0(s)(u)),this.interpolateProps(u)}interpolateProps(e){const t=this.frames.findIndex(h=>h.progress>=e);if(t===-1)return this.frames[this.frames.length-1].props;if(t===0)return this.frames[0].props;const i=this.frames[t-1],n=this.frames[t],s=(e-i.progress)/(n.progress-i.progress),o=n.easing??(this.options.disableGlobalEasing?this.options.easing:"linear"),l=Y0(o)(s),u={},c=new Set([...Object.keys(i.props),...Object.keys(n.props)]);for(const h of c){const d=h,f=d==="scale"||d==="scaleX"||d==="scaleY"||d==="opacity"?1:0,p=i.props[d]??f,m=n.props[d]??f;u[d]=p+(m-p)*l}return u}}class ML{factories=new Map;constructor(){this.register("keyframes",(e,t)=>new B(t,e))}register(e,t){this.factories.set(e,t)}create(e,t,i){const n=this.factories.get(e);if(!n)throw new Error(`Animation "${e}" not found in registry`);return n(t,i)}has(e){return this.factories.has(e)}}const z=new ML;function Li(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function nS(r,e){r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.__proto__=e}var Sr={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},js={duration:.5,overwrite:!1,delay:0},q0,Yt,ht,Gr=1e8,$e=1/Gr,j0=Math.PI*2,DL=j0/4,OL=0,sS=Math.sqrt,UL=Math.cos,zL=Math.sin,Lt=function(e){return typeof e=="string"},_t=function(e){return typeof e=="function"},Ni=function(e){return typeof e=="number"},K0=function(e){return typeof e>"u"},xi=function(e){return typeof e=="object"},lr=function(e){return e!==!1},Q0=function(){return typeof window<"u"},Tu=function(e){return _t(e)||Lt(e)},oS=typeof ArrayBuffer=="function"&&ArrayBuffer.isView||function(){},Kt=Array.isArray,LL=/random\([^)]+\)/g,NL=/,\s*/g,aS=/(?:-?\.?\d|\.)+/gi,lS=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,Ks=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,Z0=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,uS=/[+-]=-?[.\d]+/,GL=/[^,'"\[\]\s]+/gi,HL=/^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,pt,yi,J0,$0,Tr={},Cu={},cS,hS=function(e){return(Cu=Zs(e,Tr))&&hr},ev=function(e,t){return console.warn("Invalid property",e,"set to",t,"Missing plugin? gsap.registerPlugin()")},_a=function(e,t){return!t&&console.warn(e)},dS=function(e,t){return e&&(Tr[e]=t)&&Cu&&(Cu[e]=t)||Tr},wa=function(){return 0},WL={suppressEvents:!0,isStart:!0,kill:!1},Au={suppressEvents:!0,kill:!1},VL={suppressEvents:!0},tv={},gn=[],rv={},fS,Cr={},iv={},pS=30,Eu=[],nv="",sv=function(e){var t=e[0],i,n;if(xi(t)||_t(t)||(e=[e]),!(i=(t._gsap||{}).harness)){for(n=Eu.length;n--&&!Eu[n].targetTest(t););i=Eu[n]}for(n=e.length;n--;)e[n]&&(e[n]._gsap||(e[n]._gsap=new WS(e[n],i)))||e.splice(n,1);return e},Kn=function(e){return e._gsap||sv(Wr(e))[0]._gsap},mS=function(e,t,i){return(i=e[t])&&_t(i)?e[t]():K0(i)&&e.getAttribute&&e.getAttribute(t)||i},ur=function(e,t){return(e=e.split(",")).forEach(t)||e},Et=function(e){return Math.round(e*1e5)/1e5||0},mt=function(e){return Math.round(e*1e7)/1e7||0},Qs=function(e,t){var i=t.charAt(0),n=parseFloat(t.substr(2));return e=parseFloat(e),i==="+"?e+n:i==="-"?e-n:i==="*"?e*n:e/n},XL=function(e,t){for(var i=t.length,n=0;e.indexOf(t[n])<0&&++n<i;);return n<i},Pu=function(){var e=gn.length,t=gn.slice(0),i,n;for(rv={},gn.length=0,i=0;i<e;i++)n=t[i],n&&n._lazy&&(n.render(n._lazy[0],n._lazy[1],!0)._lazy=0)},ov=function(e){return!!(e._initted||e._startAt||e.add)},gS=function(e,t,i,n){gn.length&&!Yt&&Pu(),e.render(t,i,!!(Yt&&t<0&&ov(e))),gn.length&&!Yt&&Pu()},vS=function(e){var t=parseFloat(e);return(t||t===0)&&(e+"").match(GL).length<2?t:Lt(e)?e.trim():e},xS=function(e){return e},Ar=function(e,t){for(var i in t)i in e||(e[i]=t[i]);return e},YL=function(e){return function(t,i){for(var n in i)n in t||n==="duration"&&e||n==="ease"||(t[n]=i[n])}},Zs=function(e,t){for(var i in t)e[i]=t[i];return e},yS=function r(e,t){for(var i in t)i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(e[i]=xi(t[i])?r(e[i]||(e[i]={}),t[i]):t[i]);return e},Iu=function(e,t){var i={},n;for(n in e)n in t||(i[n]=e[n]);return i},Sa=function(e){var t=e.parent||pt,i=e.keyframes?YL(Kt(e.keyframes)):Ar;if(lr(e.inherit))for(;t;)i(e,t.vars.defaults),t=t.parent||t._dp;return e},qL=function(e,t){for(var i=e.length,n=i===t.length;n&&i--&&e[i]===t[i];);return i<0},bS=function(e,t,i,n,s){var o=e[n],a;if(s)for(a=t[s];o&&o[s]>a;)o=o._prev;return o?(t._next=o._next,o._next=t):(t._next=e[i],e[i]=t),t._next?t._next._prev=t:e[n]=t,t._prev=o,t.parent=t._dp=e,t},Bu=function(e,t,i,n){i===void 0&&(i="_first"),n===void 0&&(n="_last");var s=t._prev,o=t._next;s?s._next=o:e[i]===t&&(e[i]=o),o?o._prev=s:e[n]===t&&(e[n]=s),t._next=t._prev=t.parent=null},vn=function(e,t){e.parent&&(!t||e.parent.autoRemoveChildren)&&e.parent.remove&&e.parent.remove(e),e._act=0},Qn=function(e,t){if(e&&(!t||t._end>e._dur||t._start<0))for(var i=e;i;)i._dirty=1,i=i.parent;return e},jL=function(e){for(var t=e.parent;t&&t.parent;)t._dirty=1,t.totalDuration(),t=t.parent;return e},av=function(e,t,i,n){return e._startAt&&(Yt?e._startAt.revert(Au):e.vars.immediateRender&&!e.vars.autoRevert||e._startAt.render(t,!0,n))},KL=function r(e){return!e||e._ts&&r(e.parent)},_S=function(e){return e._repeat?Js(e._tTime,e=e.duration()+e._rDelay)*e:0},Js=function(e,t){var i=Math.floor(e=mt(e/t));return e&&i===e?i-1:i},ku=function(e,t){return(e-t._start)*t._ts+(t._ts>=0?0:t._dirty?t.totalDuration():t._tDur)},Ru=function(e){return e._end=mt(e._start+(e._tDur/Math.abs(e._ts||e._rts||$e)||0))},Fu=function(e,t){var i=e._dp;return i&&i.smoothChildTiming&&e._ts&&(e._start=mt(i._time-(e._ts>0?t/e._ts:((e._dirty?e.totalDuration():e._tDur)-t)/-e._ts)),Ru(e),i._dirty||Qn(i,e)),e},wS=function(e,t){var i;if((t._time||!t._dur&&t._initted||t._start<e._time&&(t._dur||!t.add))&&(i=ku(e.rawTime(),t),(!t._dur||Ca(0,t.totalDuration(),i)-t._tTime>$e)&&t.render(i,!0)),Qn(e,t)._dp&&e._initted&&e._time>=e._dur&&e._ts){if(e._dur<e.duration())for(i=e;i._dp;)i.rawTime()>=0&&i.totalTime(i._tTime),i=i._dp;e._zTime=-$e}},bi=function(e,t,i,n){return t.parent&&vn(t),t._start=mt((Ni(i)?i:i||e!==pt?Hr(e,i,t):e._time)+t._delay),t._end=mt(t._start+(t.totalDuration()/Math.abs(t.timeScale())||0)),bS(e,t,"_first","_last",e._sort?"_start":0),lv(t)||(e._recent=t),n||wS(e,t),e._ts<0&&Fu(e,e._tTime),e},SS=function(e,t){return(Tr.ScrollTrigger||ev("scrollTrigger",t))&&Tr.ScrollTrigger.create(t,e)},TS=function(e,t,i,n,s){if(vv(e,t,s),!e._initted)return 1;if(!i&&e._pt&&!Yt&&(e._dur&&e.vars.lazy!==!1||!e._dur&&e.vars.lazy)&&fS!==Pr.frame)return gn.push(e),e._lazy=[s,n],1},QL=function r(e){var t=e.parent;return t&&t._ts&&t._initted&&!t._lock&&(t.rawTime()<0||r(t))},lv=function(e){var t=e.data;return t==="isFromStart"||t==="isStart"},ZL=function(e,t,i,n){var s=e.ratio,o=t<0||!t&&(!e._start&&QL(e)&&!(!e._initted&&lv(e))||(e._ts<0||e._dp._ts<0)&&!lv(e))?0:1,a=e._rDelay,l=0,u,c,h;if(a&&e._repeat&&(l=Ca(0,e._tDur,t),c=Js(l,a),e._yoyo&&c&1&&(o=1-o),c!==Js(e._tTime,a)&&(s=1-o,e.vars.repeatRefresh&&e._initted&&e.invalidate())),o!==s||Yt||n||e._zTime===$e||!t&&e._zTime){if(!e._initted&&TS(e,t,n,i,l))return;for(h=e._zTime,e._zTime=t||(i?$e:0),i||(i=t&&!h),e.ratio=o,e._from&&(o=1-o),e._time=0,e._tTime=l,u=e._pt;u;)u.r(o,u.d),u=u._next;t<0&&av(e,t,i,!0),e._onUpdate&&!i&&Er(e,"onUpdate"),l&&e._repeat&&!i&&e.parent&&Er(e,"onRepeat"),(t>=e._tDur||t<0)&&e.ratio===o&&(o&&vn(e,1),!i&&!Yt&&(Er(e,o?"onComplete":"onReverseComplete",!0),e._prom&&e._prom()))}else e._zTime||(e._zTime=t)},JL=function(e,t,i){var n;if(i>t)for(n=e._first;n&&n._start<=i;){if(n.data==="isPause"&&n._start>t)return n;n=n._next}else for(n=e._last;n&&n._start>=i;){if(n.data==="isPause"&&n._start<t)return n;n=n._prev}},$s=function(e,t,i,n){var s=e._repeat,o=mt(t)||0,a=e._tTime/e._tDur;return a&&!n&&(e._time*=o/e._dur),e._dur=o,e._tDur=s?s<0?1e10:mt(o*(s+1)+e._rDelay*s):o,a>0&&!n&&Fu(e,e._tTime=e._tDur*a),e.parent&&Ru(e),i||Qn(e.parent,e),e},CS=function(e){return e instanceof rr?Qn(e):$s(e,e._dur)},$L={_start:0,endTime:wa,totalDuration:wa},Hr=function r(e,t,i){var n=e.labels,s=e._recent||$L,o=e.duration()>=Gr?s.endTime(!1):e._dur,a,l,u;return Lt(t)&&(isNaN(t)||t in n)?(l=t.charAt(0),u=t.substr(-1)==="%",a=t.indexOf("="),l==="<"||l===">"?(a>=0&&(t=t.replace(/=/,"")),(l==="<"?s._start:s.endTime(s._repeat>=0))+(parseFloat(t.substr(1))||0)*(u?(a<0?s:i).totalDuration()/100:1)):a<0?(t in n||(n[t]=o),n[t]):(l=parseFloat(t.charAt(a-1)+t.substr(a+1)),u&&i&&(l=l/100*(Kt(i)?i[0]:i).totalDuration()),a>1?r(e,t.substr(0,a-1),i)+l:o+l)):t==null?o:+t},Ta=function(e,t,i){var n=Ni(t[1]),s=(n?2:1)+(e<2?0:1),o=t[s],a,l;if(n&&(o.duration=t[1]),o.parent=i,e){for(a=o,l=i;l&&!("immediateRender"in a);)a=l.vars.defaults||{},l=lr(l.vars.inherit)&&l.parent;o.immediateRender=lr(a.immediateRender),e<2?o.runBackwards=1:o.startAt=t[s-1]}return new Rt(t[0],o,t[s+1])},xn=function(e,t){return e||e===0?t(e):t},Ca=function(e,t,i){return i<e?e:i>t?t:i},Qt=function(e,t){return!Lt(e)||!(t=HL.exec(e))?"":t[1]},eN=function(e,t,i){return xn(i,function(n){return Ca(e,t,n)})},uv=[].slice,AS=function(e,t){return e&&xi(e)&&"length"in e&&(!t&&!e.length||e.length-1 in e&&xi(e[0]))&&!e.nodeType&&e!==yi},tN=function(e,t,i){return i===void 0&&(i=[]),e.forEach(function(n){var s;return Lt(n)&&!t||AS(n,1)?(s=i).push.apply(s,Wr(n)):i.push(n)})||i},Wr=function(e,t,i){return ht&&!t&&ht.selector?ht.selector(e):Lt(e)&&!i&&(J0||!to())?uv.call((t||$0).querySelectorAll(e),0):Kt(e)?tN(e,i):AS(e)?uv.call(e,0):e?[e]:[]},cv=function(e){return e=Wr(e)[0]||_a("Invalid scope")||{},function(t){var i=e.current||e.nativeElement||e;return Wr(t,i.querySelectorAll?i:i===e?_a("Invalid scope")||$0.createElement("div"):e)}},ES=function(e){return e.sort(function(){return .5-Math.random()})},PS=function(e){if(_t(e))return e;var t=xi(e)?e:{each:e},i=Zn(t.ease),n=t.from||0,s=parseFloat(t.base)||0,o={},a=n>0&&n<1,l=isNaN(n)||a,u=t.axis,c=n,h=n;return Lt(n)?c=h={center:.5,edges:.5,end:1}[n]||0:!a&&l&&(c=n[0],h=n[1]),function(d,f,p){var m=(p||t).length,g=o[m],v,x,y,b,T,P,A,E,_;if(!g){if(_=t.grid==="auto"?0:(t.grid||[1,Gr])[1],!_){for(A=-Gr;A<(A=p[_++].getBoundingClientRect().left)&&_<m;);_<m&&_--}for(g=o[m]=[],v=l?Math.min(_,m)*c-.5:n%_,x=_===Gr?0:l?m*h/_-.5:n/_|0,A=0,E=Gr,P=0;P<m;P++)y=P%_-v,b=x-(P/_|0),g[P]=T=u?Math.abs(u==="y"?b:y):sS(y*y+b*b),T>A&&(A=T),T<E&&(E=T);n==="random"&&ES(g),g.max=A-E,g.min=E,g.v=m=(parseFloat(t.amount)||parseFloat(t.each)*(_>m?m-1:u?u==="y"?m/_:_:Math.max(_,m/_))||0)*(n==="edges"?-1:1),g.b=m<0?s-m:s,g.u=Qt(t.amount||t.each)||0,i=i&&m<0?NS(i):i}return m=(g[d]-g.min)/g.max||0,mt(g.b+(i?i(m):m)*g.v)+g.u}},hv=function(e){var t=Math.pow(10,((e+"").split(".")[1]||"").length);return function(i){var n=mt(Math.round(parseFloat(i)/e)*e*t);return(n-n%1)/t+(Ni(i)?0:Qt(i))}},IS=function(e,t){var i=Kt(e),n,s;return!i&&xi(e)&&(n=i=e.radius||Gr,e.values?(e=Wr(e.values),(s=!Ni(e[0]))&&(n*=n)):e=hv(e.increment)),xn(t,i?_t(e)?function(o){return s=e(o),Math.abs(s-o)<=n?s:o}:function(o){for(var a=parseFloat(s?o.x:o),l=parseFloat(s?o.y:0),u=Gr,c=0,h=e.length,d,f;h--;)s?(d=e[h].x-a,f=e[h].y-l,d=d*d+f*f):d=Math.abs(e[h]-a),d<u&&(u=d,c=h);return c=!n||u<=n?e[c]:o,s||c===o||Ni(o)?c:c+Qt(o)}:hv(e))},BS=function(e,t,i,n){return xn(Kt(e)?!t:i===!0?!!(i=0):!n,function(){return Kt(e)?e[~~(Math.random()*e.length)]:(i=i||1e-5)&&(n=i<1?Math.pow(10,(i+"").length-2):1)&&Math.floor(Math.round((e-i/2+Math.random()*(t-e+i*.99))/i)*i*n)/n})},rN=function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(n){return t.reduce(function(s,o){return o(s)},n)}},iN=function(e,t){return function(i){return e(parseFloat(i))+(t||Qt(i))}},nN=function(e,t,i){return RS(e,t,0,1,i)},kS=function(e,t,i){return xn(i,function(n){return e[~~t(n)]})},sN=function r(e,t,i){var n=t-e;return Kt(e)?kS(e,r(0,e.length),t):xn(i,function(s){return(n+(s-e)%n)%n+e})},oN=function r(e,t,i){var n=t-e,s=n*2;return Kt(e)?kS(e,r(0,e.length-1),t):xn(i,function(o){return o=(s+(o-e)%s)%s||0,e+(o>n?s-o:o)})},Aa=function(e){return e.replace(LL,function(t){var i=t.indexOf("[")+1,n=t.substring(i||7,i?t.indexOf("]"):t.length-1).split(NL);return BS(i?n:+n[0],i?0:+n[1],+n[2]||1e-5)})},RS=function(e,t,i,n,s){var o=t-e,a=n-i;return xn(s,function(l){return i+((l-e)/o*a||0)})},aN=function r(e,t,i,n){var s=isNaN(e+t)?0:function(f){return(1-f)*e+f*t};if(!s){var o=Lt(e),a={},l,u,c,h,d;if(i===!0&&(n=1)&&(i=null),o)e={p:e},t={p:t};else if(Kt(e)&&!Kt(t)){for(c=[],h=e.length,d=h-2,u=1;u<h;u++)c.push(r(e[u-1],e[u]));h--,s=function(p){p*=h;var m=Math.min(d,~~p);return c[m](p-m)},i=t}else n||(e=Zs(Kt(e)?[]:{},e));if(!c){for(l in t)mv.call(a,e,l,"get",t[l]);s=function(p){return bv(p,a)||(o?e.p:e)}}}return xn(i,s)},FS=function(e,t,i){var n=e.labels,s=Gr,o,a,l;for(o in n)a=n[o]-t,a<0==!!i&&a&&s>(a=Math.abs(a))&&(l=o,s=a);return l},Er=function(e,t,i){var n=e.vars,s=n[t],o=ht,a=e._ctx,l,u,c;if(s)return l=n[t+"Params"],u=n.callbackScope||e,i&&gn.length&&Pu(),a&&(ht=a),c=l?s.apply(u,l):s.call(u),ht=o,c},Ea=function(e){return vn(e),e.scrollTrigger&&e.scrollTrigger.kill(!!Yt),e.progress()<1&&Er(e,"onInterrupt"),e},eo,MS=[],DS=function(e){if(e)if(e=!e.name&&e.default||e,Q0()||e.headless){var t=e.name,i=_t(e),n=t&&!i&&e.init?function(){this._props=[]}:e,s={init:wa,render:bv,add:mv,kill:SN,modifier:wN,rawVars:0},o={targetTest:0,get:0,getSetter:yv,aliases:{},register:0};if(to(),e!==n){if(Cr[t])return;Ar(n,Ar(Iu(e,s),o)),Zs(n.prototype,Zs(s,Iu(e,o))),Cr[n.prop=t]=n,e.targetTest&&(Eu.push(n),tv[t]=1),t=(t==="css"?"CSS":t.charAt(0).toUpperCase()+t.substr(1))+"Plugin"}dS(t,n),e.register&&e.register(hr,n,cr)}else MS.push(e)},et=255,Pa={aqua:[0,et,et],lime:[0,et,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,et],navy:[0,0,128],white:[et,et,et],olive:[128,128,0],yellow:[et,et,0],orange:[et,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[et,0,0],pink:[et,192,203],cyan:[0,et,et],transparent:[et,et,et,0]},dv=function(e,t,i){return e+=e<0?1:e>1?-1:0,(e*6<1?t+(i-t)*e*6:e<.5?i:e*3<2?t+(i-t)*(2/3-e)*6:t)*et+.5|0},OS=function(e,t,i){var n=e?Ni(e)?[e>>16,e>>8&et,e&et]:0:Pa.black,s,o,a,l,u,c,h,d,f,p;if(!n){if(e.substr(-1)===","&&(e=e.substr(0,e.length-1)),Pa[e])n=Pa[e];else if(e.charAt(0)==="#"){if(e.length<6&&(s=e.charAt(1),o=e.charAt(2),a=e.charAt(3),e="#"+s+s+o+o+a+a+(e.length===5?e.charAt(4)+e.charAt(4):"")),e.length===9)return n=parseInt(e.substr(1,6),16),[n>>16,n>>8&et,n&et,parseInt(e.substr(7),16)/255];e=parseInt(e.substr(1),16),n=[e>>16,e>>8&et,e&et]}else if(e.substr(0,3)==="hsl"){if(n=p=e.match(aS),!t)l=+n[0]%360/360,u=+n[1]/100,c=+n[2]/100,o=c<=.5?c*(u+1):c+u-c*u,s=c*2-o,n.length>3&&(n[3]*=1),n[0]=dv(l+1/3,s,o),n[1]=dv(l,s,o),n[2]=dv(l-1/3,s,o);else if(~e.indexOf("="))return n=e.match(lS),i&&n.length<4&&(n[3]=1),n}else n=e.match(aS)||Pa.transparent;n=n.map(Number)}return t&&!p&&(s=n[0]/et,o=n[1]/et,a=n[2]/et,h=Math.max(s,o,a),d=Math.min(s,o,a),c=(h+d)/2,h===d?l=u=0:(f=h-d,u=c>.5?f/(2-h-d):f/(h+d),l=h===s?(o-a)/f+(o<a?6:0):h===o?(a-s)/f+2:(s-o)/f+4,l*=60),n[0]=~~(l+.5),n[1]=~~(u*100+.5),n[2]=~~(c*100+.5)),i&&n.length<4&&(n[3]=1),n},US=function(e){var t=[],i=[],n=-1;return e.split(yn).forEach(function(s){var o=s.match(Ks)||[];t.push.apply(t,o),i.push(n+=o.length+1)}),t.c=i,t},zS=function(e,t,i){var n="",s=(e+n).match(yn),o=t?"hsla(":"rgba(",a=0,l,u,c,h;if(!s)return e;if(s=s.map(function(d){return(d=OS(d,t,1))&&o+(t?d[0]+","+d[1]+"%,"+d[2]+"%,"+d[3]:d.join(","))+")"}),i&&(c=US(e),l=i.c,l.join(n)!==c.c.join(n)))for(u=e.replace(yn,"1").split(Ks),h=u.length-1;a<h;a++)n+=u[a]+(~l.indexOf(a)?s.shift()||o+"0,0,0,0)":(c.length?c:s.length?s:i).shift());if(!u)for(u=e.split(yn),h=u.length-1;a<h;a++)n+=u[a]+s[a];return n+u[h]},yn=(function(){var r="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",e;for(e in Pa)r+="|"+e+"\\b";return new RegExp(r+")","gi")})(),lN=/hsl[a]?\(/,LS=function(e){var t=e.join(" "),i;if(yn.lastIndex=0,yn.test(t))return i=lN.test(t),e[1]=zS(e[1],i),e[0]=zS(e[0],i,US(e[1])),!0},Ia,Pr=(function(){var r=Date.now,e=500,t=33,i=r(),n=i,s=1e3/240,o=s,a=[],l,u,c,h,d,f,p=function m(g){var v=r()-n,x=g===!0,y,b,T,P;if((v>e||v<0)&&(i+=v-t),n+=v,T=n-i,y=T-o,(y>0||x)&&(P=++h.frame,d=T-h.time*1e3,h.time=T=T/1e3,o+=y+(y>=s?4:s-y),b=1),x||(l=u(m)),b)for(f=0;f<a.length;f++)a[f](T,d,P,g)};return h={time:0,frame:0,tick:function(){p(!0)},deltaRatio:function(g){return d/(1e3/(g||60))},wake:function(){cS&&(!J0&&Q0()&&(yi=J0=window,$0=yi.document||{},Tr.gsap=hr,(yi.gsapVersions||(yi.gsapVersions=[])).push(hr.version),hS(Cu||yi.GreenSockGlobals||!yi.gsap&&yi||{}),MS.forEach(DS)),c=typeof requestAnimationFrame<"u"&&requestAnimationFrame,l&&h.sleep(),u=c||function(g){return setTimeout(g,o-h.time*1e3+1|0)},Ia=1,p(2))},sleep:function(){(c?cancelAnimationFrame:clearTimeout)(l),Ia=0,u=wa},lagSmoothing:function(g,v){e=g||1/0,t=Math.min(v||33,e)},fps:function(g){s=1e3/(g||240),o=h.time*1e3+s},add:function(g,v,x){var y=v?function(b,T,P,A){g(b,T,P,A),h.remove(y)}:g;return h.remove(g),a[x?"unshift":"push"](y),to(),y},remove:function(g,v){~(v=a.indexOf(g))&&a.splice(v,1)&&f>=v&&f--},_listeners:a},h})(),to=function(){return!Ia&&Pr.wake()},Ne={},uN=/^[\d.\-M][\d.\-,\s]/,cN=/["']/g,hN=function(e){for(var t={},i=e.substr(1,e.length-3).split(":"),n=i[0],s=1,o=i.length,a,l,u;s<o;s++)l=i[s],a=s!==o-1?l.lastIndexOf(","):l.length,u=l.substr(0,a),t[n]=isNaN(u)?u.replace(cN,"").trim():+u,n=l.substr(a+1).trim();return t},dN=function(e){var t=e.indexOf("(")+1,i=e.indexOf(")"),n=e.indexOf("(",t);return e.substring(t,~n&&n<i?e.indexOf(")",i+1):i)},fN=function(e){var t=(e+"").split("("),i=Ne[t[0]];return i&&t.length>1&&i.config?i.config.apply(null,~e.indexOf("{")?[hN(t[1])]:dN(e).split(",").map(vS)):Ne._CE&&uN.test(e)?Ne._CE("",e):i},NS=function(e){return function(t){return 1-e(1-t)}},GS=function r(e,t){for(var i=e._first,n;i;)i instanceof rr?r(i,t):i.vars.yoyoEase&&(!i._yoyo||!i._repeat)&&i._yoyo!==t&&(i.timeline?r(i.timeline,t):(n=i._ease,i._ease=i._yEase,i._yEase=n,i._yoyo=t)),i=i._next},Zn=function(e,t){return e&&(_t(e)?e:Ne[e]||fN(e))||t},Jn=function(e,t,i,n){i===void 0&&(i=function(l){return 1-t(1-l)}),n===void 0&&(n=function(l){return l<.5?t(l*2)/2:1-t((1-l)*2)/2});var s={easeIn:t,easeOut:i,easeInOut:n},o;return ur(e,function(a){Ne[a]=Tr[a]=s,Ne[o=a.toLowerCase()]=i;for(var l in s)Ne[o+(l==="easeIn"?".in":l==="easeOut"?".out":".inOut")]=Ne[a+"."+l]=s[l]}),s},HS=function(e){return function(t){return t<.5?(1-e(1-t*2))/2:.5+e((t-.5)*2)/2}},fv=function r(e,t,i){var n=t>=1?t:1,s=(i||(e?.3:.45))/(t<1?t:1),o=s/j0*(Math.asin(1/n)||0),a=function(c){return c===1?1:n*Math.pow(2,-10*c)*zL((c-o)*s)+1},l=e==="out"?a:e==="in"?function(u){return 1-a(1-u)}:HS(a);return s=j0/s,l.config=function(u,c){return r(e,u,c)},l},pv=function r(e,t){t===void 0&&(t=1.70158);var i=function(o){return o?--o*o*((t+1)*o+t)+1:0},n=e==="out"?i:e==="in"?function(s){return 1-i(1-s)}:HS(i);return n.config=function(s){return r(e,s)},n};ur("Linear,Quad,Cubic,Quart,Quint,Strong",function(r,e){var t=e<5?e+1:e;Jn(r+",Power"+(t-1),e?function(i){return Math.pow(i,t)}:function(i){return i},function(i){return 1-Math.pow(1-i,t)},function(i){return i<.5?Math.pow(i*2,t)/2:1-Math.pow((1-i)*2,t)/2})}),Ne.Linear.easeNone=Ne.none=Ne.Linear.easeIn,Jn("Elastic",fv("in"),fv("out"),fv()),(function(r,e){var t=1/e,i=2*t,n=2.5*t,s=function(a){return a<t?r*a*a:a<i?r*Math.pow(a-1.5/e,2)+.75:a<n?r*(a-=2.25/e)*a+.9375:r*Math.pow(a-2.625/e,2)+.984375};Jn("Bounce",function(o){return 1-s(1-o)},s)})(7.5625,2.75),Jn("Expo",function(r){return Math.pow(2,10*(r-1))*r+r*r*r*r*r*r*(1-r)}),Jn("Circ",function(r){return-(sS(1-r*r)-1)}),Jn("Sine",function(r){return r===1?1:-UL(r*DL)+1}),Jn("Back",pv("in"),pv("out"),pv()),Ne.SteppedEase=Ne.steps=Tr.SteppedEase={config:function(e,t){e===void 0&&(e=1);var i=1/e,n=e+(t?0:1),s=t?1:0,o=1-$e;return function(a){return((n*Ca(0,o,a)|0)+s)*i}}},js.ease=Ne["quad.out"],ur("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",function(r){return nv+=r+","+r+"Params,"});var WS=function(e,t){this.id=OL++,e._gsap=this,this.target=e,this.harness=t,this.get=t?t.get:mS,this.set=t?t.getSetter:yv},Ba=(function(){function r(t){this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat===1/0?-2:t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,$s(this,+t.duration,1,1),this.data=t.data,ht&&(this._ctx=ht,ht.data.push(this)),Ia||Pr.wake()}var e=r.prototype;return e.delay=function(i){return i||i===0?(this.parent&&this.parent.smoothChildTiming&&this.startTime(this._start+i-this._delay),this._delay=i,this):this._delay},e.duration=function(i){return arguments.length?this.totalDuration(this._repeat>0?i+(i+this._rDelay)*this._repeat:i):this.totalDuration()&&this._dur},e.totalDuration=function(i){return arguments.length?(this._dirty=0,$s(this,this._repeat<0?i:(i-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},e.totalTime=function(i,n){if(to(),!arguments.length)return this._tTime;var s=this._dp;if(s&&s.smoothChildTiming&&this._ts){for(Fu(this,i),!s._dp||s.parent||wS(s,this);s&&s.parent;)s.parent._time!==s._start+(s._ts>=0?s._tTime/s._ts:(s.totalDuration()-s._tTime)/-s._ts)&&s.totalTime(s._tTime,!0),s=s.parent;!this.parent&&this._dp.autoRemoveChildren&&(this._ts>0&&i<this._tDur||this._ts<0&&i>0||!this._tDur&&!i)&&bi(this._dp,this,this._start-this._delay)}return(this._tTime!==i||!this._dur&&!n||this._initted&&Math.abs(this._zTime)===$e||!this._initted&&this._dur&&i||!i&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=i),gS(this,i,n)),this},e.time=function(i,n){return arguments.length?this.totalTime(Math.min(this.totalDuration(),i+_S(this))%(this._dur+this._rDelay)||(i?this._dur:0),n):this._time},e.totalProgress=function(i,n){return arguments.length?this.totalTime(this.totalDuration()*i,n):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.rawTime()>=0&&this._initted?1:0},e.progress=function(i,n){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&!(this.iteration()&1)?1-i:i)+_S(this),n):this.duration()?Math.min(1,this._time/this._dur):this.rawTime()>0?1:0},e.iteration=function(i,n){var s=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(i-1)*s,n):this._repeat?Js(this._tTime,s)+1:1},e.timeScale=function(i,n){if(!arguments.length)return this._rts===-$e?0:this._rts;if(this._rts===i)return this;var s=this.parent&&this._ts?ku(this.parent._time,this):this._tTime;return this._rts=+i||0,this._ts=this._ps||i===-$e?0:this._rts,this.totalTime(Ca(-Math.abs(this._delay),this.totalDuration(),s),n!==!1),Ru(this),jL(this)},e.paused=function(i){return arguments.length?(this._ps!==i&&(this._ps=i,i?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(to(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,this.progress()===1&&Math.abs(this._zTime)!==$e&&(this._tTime-=$e)))),this):this._ps},e.startTime=function(i){if(arguments.length){this._start=mt(i);var n=this.parent||this._dp;return n&&(n._sort||!this.parent)&&bi(n,this,this._start-this._delay),this}return this._start},e.endTime=function(i){return this._start+(lr(i)?this.totalDuration():this.duration())/Math.abs(this._ts||1)},e.rawTime=function(i){var n=this.parent||this._dp;return n?i&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?ku(n.rawTime(i),this):this._tTime:this._tTime},e.revert=function(i){i===void 0&&(i=VL);var n=Yt;return Yt=i,ov(this)&&(this.timeline&&this.timeline.revert(i),this.totalTime(-.01,i.suppressEvents)),this.data!=="nested"&&i.kill!==!1&&this.kill(),Yt=n,this},e.globalTime=function(i){for(var n=this,s=arguments.length?i:n.rawTime();n;)s=n._start+s/(Math.abs(n._ts)||1),n=n._dp;return!this.parent&&this._sat?this._sat.globalTime(i):s},e.repeat=function(i){return arguments.length?(this._repeat=i===1/0?-2:i,CS(this)):this._repeat===-2?1/0:this._repeat},e.repeatDelay=function(i){if(arguments.length){var n=this._time;return this._rDelay=i,CS(this),n?this.time(n):this}return this._rDelay},e.yoyo=function(i){return arguments.length?(this._yoyo=i,this):this._yoyo},e.seek=function(i,n){return this.totalTime(Hr(this,i),lr(n))},e.restart=function(i,n){return this.play().totalTime(i?-this._delay:0,lr(n)),this._dur||(this._zTime=-$e),this},e.play=function(i,n){return i!=null&&this.seek(i,n),this.reversed(!1).paused(!1)},e.reverse=function(i,n){return i!=null&&this.seek(i||this.totalDuration(),n),this.reversed(!0).paused(!1)},e.pause=function(i,n){return i!=null&&this.seek(i,n),this.paused(!0)},e.resume=function(){return this.paused(!1)},e.reversed=function(i){return arguments.length?(!!i!==this.reversed()&&this.timeScale(-this._rts||(i?-$e:0)),this):this._rts<0},e.invalidate=function(){return this._initted=this._act=0,this._zTime=-$e,this},e.isActive=function(){var i=this.parent||this._dp,n=this._start,s;return!!(!i||this._ts&&this._initted&&i.isActive()&&(s=i.rawTime(!0))>=n&&s<this.endTime(!0)-$e)},e.eventCallback=function(i,n,s){var o=this.vars;return arguments.length>1?(n?(o[i]=n,s&&(o[i+"Params"]=s),i==="onUpdate"&&(this._onUpdate=n)):delete o[i],this):o[i]},e.then=function(i){var n=this,s=n._prom;return new Promise(function(o){var a=_t(i)?i:xS,l=function(){var c=n.then;n.then=null,s&&s(),_t(a)&&(a=a(n))&&(a.then||a===n)&&(n.then=c),o(a),n.then=c};n._initted&&n.totalProgress()===1&&n._ts>=0||!n._tTime&&n._ts<0?l():n._prom=l})},e.kill=function(){Ea(this)},r})();Ar(Ba.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-$e,_prom:0,_ps:!1,_rts:1});var rr=(function(r){nS(e,r);function e(i,n){var s;return i===void 0&&(i={}),s=r.call(this,i)||this,s.labels={},s.smoothChildTiming=!!i.smoothChildTiming,s.autoRemoveChildren=!!i.autoRemoveChildren,s._sort=lr(i.sortChildren),pt&&bi(i.parent||pt,Li(s),n),i.reversed&&s.reverse(),i.paused&&s.paused(!0),i.scrollTrigger&&SS(Li(s),i.scrollTrigger),s}var t=e.prototype;return t.to=function(n,s,o){return Ta(0,arguments,this),this},t.from=function(n,s,o){return Ta(1,arguments,this),this},t.fromTo=function(n,s,o,a){return Ta(2,arguments,this),this},t.set=function(n,s,o){return s.duration=0,s.parent=this,Sa(s).repeatDelay||(s.repeat=0),s.immediateRender=!!s.immediateRender,new Rt(n,s,Hr(this,o),1),this},t.call=function(n,s,o){return bi(this,Rt.delayedCall(0,n,s),o)},t.staggerTo=function(n,s,o,a,l,u,c){return o.duration=s,o.stagger=o.stagger||a,o.onComplete=u,o.onCompleteParams=c,o.parent=this,new Rt(n,o,Hr(this,l)),this},t.staggerFrom=function(n,s,o,a,l,u,c){return o.runBackwards=1,Sa(o).immediateRender=lr(o.immediateRender),this.staggerTo(n,s,o,a,l,u,c)},t.staggerFromTo=function(n,s,o,a,l,u,c,h){return a.startAt=o,Sa(a).immediateRender=lr(a.immediateRender),this.staggerTo(n,s,a,l,u,c,h)},t.render=function(n,s,o){var a=this._time,l=this._dirty?this.totalDuration():this._tDur,u=this._dur,c=n<=0?0:mt(n),h=this._zTime<0!=n<0&&(this._initted||!u),d,f,p,m,g,v,x,y,b,T,P,A;if(this!==pt&&c>l&&n>=0&&(c=l),c!==this._tTime||o||h){if(a!==this._time&&u&&(c+=this._time-a,n+=this._time-a),d=c,b=this._start,y=this._ts,v=!y,h&&(u||(a=this._zTime),(n||!s)&&(this._zTime=n)),this._repeat){if(P=this._yoyo,g=u+this._rDelay,this._repeat<-1&&n<0)return this.totalTime(g*100+n,s,o);if(d=mt(c%g),c===l?(m=this._repeat,d=u):(T=mt(c/g),m=~~T,m&&m===T&&(d=u,m--),d>u&&(d=u)),T=Js(this._tTime,g),!a&&this._tTime&&T!==m&&this._tTime-T*g-this._dur<=0&&(T=m),P&&m&1&&(d=u-d,A=1),m!==T&&!this._lock){var E=P&&T&1,_=E===(P&&m&1);if(m<T&&(E=!E),a=E?0:c%u?u:c,this._lock=1,this.render(a||(A?0:mt(m*g)),s,!u)._lock=0,this._tTime=c,!s&&this.parent&&Er(this,"onRepeat"),this.vars.repeatRefresh&&!A&&(this.invalidate()._lock=1,T=m),a&&a!==this._time||v!==!this._ts||this.vars.onRepeat&&!this.parent&&!this._act)return this;if(u=this._dur,l=this._tDur,_&&(this._lock=2,a=E?u:-1e-4,this.render(a,!0),this.vars.repeatRefresh&&!A&&this.invalidate()),this._lock=0,!this._ts&&!v)return this;GS(this,A)}}if(this._hasPause&&!this._forcing&&this._lock<2&&(x=JL(this,mt(a),mt(d)),x&&(c-=d-(d=x._start))),this._tTime=c,this._time=d,this._act=!y,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=n,a=0),!a&&c&&u&&!s&&!T&&(Er(this,"onStart"),this._tTime!==c))return this;if(d>=a&&n>=0)for(f=this._first;f;){if(p=f._next,(f._act||d>=f._start)&&f._ts&&x!==f){if(f.parent!==this)return this.render(n,s,o);if(f.render(f._ts>0?(d-f._start)*f._ts:(f._dirty?f.totalDuration():f._tDur)+(d-f._start)*f._ts,s,o),d!==this._time||!this._ts&&!v){x=0,p&&(c+=this._zTime=-$e);break}}f=p}else{f=this._last;for(var S=n<0?n:d;f;){if(p=f._prev,(f._act||S<=f._end)&&f._ts&&x!==f){if(f.parent!==this)return this.render(n,s,o);if(f.render(f._ts>0?(S-f._start)*f._ts:(f._dirty?f.totalDuration():f._tDur)+(S-f._start)*f._ts,s,o||Yt&&ov(f)),d!==this._time||!this._ts&&!v){x=0,p&&(c+=this._zTime=S?-$e:$e);break}}f=p}}if(x&&!s&&(this.pause(),x.render(d>=a?0:-$e)._zTime=d>=a?1:-1,this._ts))return this._start=b,Ru(this),this.render(n,s,o);this._onUpdate&&!s&&Er(this,"onUpdate",!0),(c===l&&this._tTime>=this.totalDuration()||!c&&a)&&(b===this._start||Math.abs(y)!==Math.abs(this._ts))&&(this._lock||((n||!u)&&(c===l&&this._ts>0||!c&&this._ts<0)&&vn(this,1),!s&&!(n<0&&!a)&&(c||a||!l)&&(Er(this,c===l&&n>=0?"onComplete":"onReverseComplete",!0),this._prom&&!(c<l&&this.timeScale()>0)&&this._prom())))}return this},t.add=function(n,s){var o=this;if(Ni(s)||(s=Hr(this,s,n)),!(n instanceof Ba)){if(Kt(n))return n.forEach(function(a){return o.add(a,s)}),this;if(Lt(n))return this.addLabel(n,s);if(_t(n))n=Rt.delayedCall(0,n);else return this}return this!==n?bi(this,n,s):this},t.getChildren=function(n,s,o,a){n===void 0&&(n=!0),s===void 0&&(s=!0),o===void 0&&(o=!0),a===void 0&&(a=-Gr);for(var l=[],u=this._first;u;)u._start>=a&&(u instanceof Rt?s&&l.push(u):(o&&l.push(u),n&&l.push.apply(l,u.getChildren(!0,s,o)))),u=u._next;return l},t.getById=function(n){for(var s=this.getChildren(1,1,1),o=s.length;o--;)if(s[o].vars.id===n)return s[o]},t.remove=function(n){return Lt(n)?this.removeLabel(n):_t(n)?this.killTweensOf(n):(n.parent===this&&Bu(this,n),n===this._recent&&(this._recent=this._last),Qn(this))},t.totalTime=function(n,s){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=mt(Pr.time-(this._ts>0?n/this._ts:(this.totalDuration()-n)/-this._ts))),r.prototype.totalTime.call(this,n,s),this._forcing=0,this):this._tTime},t.addLabel=function(n,s){return this.labels[n]=Hr(this,s),this},t.removeLabel=function(n){return delete this.labels[n],this},t.addPause=function(n,s,o){var a=Rt.delayedCall(0,s||wa,o);return a.data="isPause",this._hasPause=1,bi(this,a,Hr(this,n))},t.removePause=function(n){var s=this._first;for(n=Hr(this,n);s;)s._start===n&&s.data==="isPause"&&vn(s),s=s._next},t.killTweensOf=function(n,s,o){for(var a=this.getTweensOf(n,o),l=a.length;l--;)bn!==a[l]&&a[l].kill(n,s);return this},t.getTweensOf=function(n,s){for(var o=[],a=Wr(n),l=this._first,u=Ni(s),c;l;)l instanceof Rt?XL(l._targets,a)&&(u?(!bn||l._initted&&l._ts)&&l.globalTime(0)<=s&&l.globalTime(l.totalDuration())>s:!s||l.isActive())&&o.push(l):(c=l.getTweensOf(a,s)).length&&o.push.apply(o,c),l=l._next;return o},t.tweenTo=function(n,s){s=s||{};var o=this,a=Hr(o,n),l=s,u=l.startAt,c=l.onStart,h=l.onStartParams,d=l.immediateRender,f,p=Rt.to(o,Ar({ease:s.ease||"none",lazy:!1,immediateRender:!1,time:a,overwrite:"auto",duration:s.duration||Math.abs((a-(u&&"time"in u?u.time:o._time))/o.timeScale())||$e,onStart:function(){if(o.pause(),!f){var g=s.duration||Math.abs((a-(u&&"time"in u?u.time:o._time))/o.timeScale());p._dur!==g&&$s(p,g,0,1).render(p._time,!0,!0),f=1}c&&c.apply(p,h||[])}},s));return d?p.render(0):p},t.tweenFromTo=function(n,s,o){return this.tweenTo(s,Ar({startAt:{time:Hr(this,n)}},o))},t.recent=function(){return this._recent},t.nextLabel=function(n){return n===void 0&&(n=this._time),FS(this,Hr(this,n))},t.previousLabel=function(n){return n===void 0&&(n=this._time),FS(this,Hr(this,n),1)},t.currentLabel=function(n){return arguments.length?this.seek(n,!0):this.previousLabel(this._time+$e)},t.shiftChildren=function(n,s,o){o===void 0&&(o=0);var a=this._first,l=this.labels,u;for(n=mt(n);a;)a._start>=o&&(a._start+=n,a._end+=n),a=a._next;if(s)for(u in l)l[u]>=o&&(l[u]+=n);return Qn(this)},t.invalidate=function(n){var s=this._first;for(this._lock=0;s;)s.invalidate(n),s=s._next;return r.prototype.invalidate.call(this,n)},t.clear=function(n){n===void 0&&(n=!0);for(var s=this._first,o;s;)o=s._next,this.remove(s),s=o;return this._dp&&(this._time=this._tTime=this._pTime=0),n&&(this.labels={}),Qn(this)},t.totalDuration=function(n){var s=0,o=this,a=o._last,l=Gr,u,c,h;if(arguments.length)return o.timeScale((o._repeat<0?o.duration():o.totalDuration())/(o.reversed()?-n:n));if(o._dirty){for(h=o.parent;a;)u=a._prev,a._dirty&&a.totalDuration(),c=a._start,c>l&&o._sort&&a._ts&&!o._lock?(o._lock=1,bi(o,a,c-a._delay,1)._lock=0):l=c,c<0&&a._ts&&(s-=c,(!h&&!o._dp||h&&h.smoothChildTiming)&&(o._start+=mt(c/o._ts),o._time-=c,o._tTime-=c),o.shiftChildren(-c,!1,-1/0),l=0),a._end>s&&a._ts&&(s=a._end),a=u;$s(o,o===pt&&o._time>s?o._time:s,1,1),o._dirty=0}return o._tDur},e.updateRoot=function(n){if(pt._ts&&(gS(pt,ku(n,pt)),fS=Pr.frame),Pr.frame>=pS){pS+=Sr.autoSleep||120;var s=pt._first;if((!s||!s._ts)&&Sr.autoSleep&&Pr._listeners.length<2){for(;s&&!s._ts;)s=s._next;s||Pr.sleep()}}},e})(Ba);Ar(rr.prototype,{_lock:0,_hasPause:0,_forcing:0});var pN=function(e,t,i,n,s,o,a){var l=new cr(this._pt,e,t,0,1,KS,null,s),u=0,c=0,h,d,f,p,m,g,v,x;for(l.b=i,l.e=n,i+="",n+="",(v=~n.indexOf("random("))&&(n=Aa(n)),o&&(x=[i,n],o(x,e,t),i=x[0],n=x[1]),d=i.match(Z0)||[];h=Z0.exec(n);)p=h[0],m=n.substring(u,h.index),f?f=(f+1)%5:m.substr(-5)==="rgba("&&(f=1),p!==d[c++]&&(g=parseFloat(d[c-1])||0,l._pt={_next:l._pt,p:m||c===1?m:",",s:g,c:p.charAt(1)==="="?Qs(g,p)-g:parseFloat(p)-g,m:f&&f<4?Math.round:0},u=Z0.lastIndex);return l.c=u<n.length?n.substring(u,n.length):"",l.fp=a,(uS.test(n)||v)&&(l.e=0),this._pt=l,l},mv=function(e,t,i,n,s,o,a,l,u,c){_t(n)&&(n=n(s||0,e,o));var h=e[t],d=i!=="get"?i:_t(h)?u?e[t.indexOf("set")||!_t(e["get"+t.substr(3)])?t:"get"+t.substr(3)](u):e[t]():h,f=_t(h)?u?yN:qS:xv,p;if(Lt(n)&&(~n.indexOf("random(")&&(n=Aa(n)),n.charAt(1)==="="&&(p=Qs(d,n)+(Qt(d)||0),(p||p===0)&&(n=p))),!c||d!==n||gv)return!isNaN(d*n)&&n!==""?(p=new cr(this._pt,e,t,+d||0,n-(d||0),typeof h=="boolean"?_N:jS,0,f),u&&(p.fp=u),a&&p.modifier(a,this,e),this._pt=p):(!h&&!(t in e)&&ev(t,n),pN.call(this,e,t,d,n,f,l||Sr.stringFilter,u))},mN=function(e,t,i,n,s){if(_t(e)&&(e=ka(e,s,t,i,n)),!xi(e)||e.style&&e.nodeType||Kt(e)||oS(e))return Lt(e)?ka(e,s,t,i,n):e;var o={},a;for(a in e)o[a]=ka(e[a],s,t,i,n);return o},VS=function(e,t,i,n,s,o){var a,l,u,c;if(Cr[e]&&(a=new Cr[e]).init(s,a.rawVars?t[e]:mN(t[e],n,s,o,i),i,n,o)!==!1&&(i._pt=l=new cr(i._pt,s,e,0,1,a.render,a,0,a.priority),i!==eo))for(u=i._ptLookup[i._targets.indexOf(s)],c=a._props.length;c--;)u[a._props[c]]=l;return a},bn,gv,vv=function r(e,t,i){var n=e.vars,s=n.ease,o=n.startAt,a=n.immediateRender,l=n.lazy,u=n.onUpdate,c=n.runBackwards,h=n.yoyoEase,d=n.keyframes,f=n.autoRevert,p=e._dur,m=e._startAt,g=e._targets,v=e.parent,x=v&&v.data==="nested"?v.vars.targets:g,y=e._overwrite==="auto"&&!q0,b=e.timeline,T,P,A,E,_,S,I,M,O,U,X,D,k;if(b&&(!d||!s)&&(s="none"),e._ease=Zn(s,js.ease),e._yEase=h?NS(Zn(h===!0?s:h,js.ease)):0,h&&e._yoyo&&!e._repeat&&(h=e._yEase,e._yEase=e._ease,e._ease=h),e._from=!b&&!!n.runBackwards,!b||d&&!n.stagger){if(M=g[0]?Kn(g[0]).harness:0,D=M&&n[M.prop],T=Iu(n,tv),m&&(m._zTime<0&&m.progress(1),t<0&&c&&a&&!f?m.render(-1,!0):m.revert(c&&p?Au:WL),m._lazy=0),o){if(vn(e._startAt=Rt.set(g,Ar({data:"isStart",overwrite:!1,parent:v,immediateRender:!0,lazy:!m&&lr(l),startAt:null,delay:0,onUpdate:u&&function(){return Er(e,"onUpdate")},stagger:0},o))),e._startAt._dp=0,e._startAt._sat=e,t<0&&(Yt||!a&&!f)&&e._startAt.revert(Au),a&&p&&t<=0&&i<=0){t&&(e._zTime=t);return}}else if(c&&p&&!m){if(t&&(a=!1),A=Ar({overwrite:!1,data:"isFromStart",lazy:a&&!m&&lr(l),immediateRender:a,stagger:0,parent:v},T),D&&(A[M.prop]=D),vn(e._startAt=Rt.set(g,A)),e._startAt._dp=0,e._startAt._sat=e,t<0&&(Yt?e._startAt.revert(Au):e._startAt.render(-1,!0)),e._zTime=t,!a)r(e._startAt,$e,$e);else if(!t)return}for(e._pt=e._ptCache=0,l=p&&lr(l)||l&&!p,P=0;P<g.length;P++){if(_=g[P],I=_._gsap||sv(g)[P]._gsap,e._ptLookup[P]=U={},rv[I.id]&&gn.length&&Pu(),X=x===g?P:x.indexOf(_),M&&(O=new M).init(_,D||T,e,X,x)!==!1&&(e._pt=E=new cr(e._pt,_,O.name,0,1,O.render,O,0,O.priority),O._props.forEach(function(Y){U[Y]=E}),O.priority&&(S=1)),!M||D)for(A in T)Cr[A]&&(O=VS(A,T,e,X,_,x))?O.priority&&(S=1):U[A]=E=mv.call(e,_,A,"get",T[A],X,x,0,n.stringFilter);e._op&&e._op[P]&&e.kill(_,e._op[P]),y&&e._pt&&(bn=e,pt.killTweensOf(_,U,e.globalTime(t)),k=!e.parent,bn=0),e._pt&&l&&(rv[I.id]=1)}S&&QS(e),e._onInit&&e._onInit(e)}e._onUpdate=u,e._initted=(!e._op||e._pt)&&!k,d&&t<=0&&b.render(Gr,!0,!0)},gN=function(e,t,i,n,s,o,a,l){var u=(e._pt&&e._ptCache||(e._ptCache={}))[t],c,h,d,f;if(!u)for(u=e._ptCache[t]=[],d=e._ptLookup,f=e._targets.length;f--;){if(c=d[f][t],c&&c.d&&c.d._pt)for(c=c.d._pt;c&&c.p!==t&&c.fp!==t;)c=c._next;if(!c)return gv=1,e.vars[t]="+=0",vv(e,a),gv=0,l?_a(t+" not eligible for reset"):1;u.push(c)}for(f=u.length;f--;)h=u[f],c=h._pt||h,c.s=(n||n===0)&&!s?n:c.s+(n||0)+o*c.c,c.c=i-c.s,h.e&&(h.e=Et(i)+Qt(h.e)),h.b&&(h.b=c.s+Qt(h.b))},vN=function(e,t){var i=e[0]?Kn(e[0]).harness:0,n=i&&i.aliases,s,o,a,l;if(!n)return t;s=Zs({},t);for(o in n)if(o in s)for(l=n[o].split(","),a=l.length;a--;)s[l[a]]=s[o];return s},xN=function(e,t,i,n){var s=t.ease||n||"power1.inOut",o,a;if(Kt(t))a=i[e]||(i[e]=[]),t.forEach(function(l,u){return a.push({t:u/(t.length-1)*100,v:l,e:s})});else for(o in t)a=i[o]||(i[o]=[]),o==="ease"||a.push({t:parseFloat(e),v:t[o],e:s})},ka=function(e,t,i,n,s){return _t(e)?e.call(t,i,n,s):Lt(e)&&~e.indexOf("random(")?Aa(e):e},XS=nv+"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert",YS={};ur(XS+",id,stagger,delay,duration,paused,scrollTrigger",function(r){return YS[r]=1});var Rt=(function(r){nS(e,r);function e(i,n,s,o){var a;typeof n=="number"&&(s.duration=n,n=s,s=null),a=r.call(this,o?n:Sa(n))||this;var l=a.vars,u=l.duration,c=l.delay,h=l.immediateRender,d=l.stagger,f=l.overwrite,p=l.keyframes,m=l.defaults,g=l.scrollTrigger,v=l.yoyoEase,x=n.parent||pt,y=(Kt(i)||oS(i)?Ni(i[0]):"length"in n)?[i]:Wr(i),b,T,P,A,E,_,S,I;if(a._targets=y.length?sv(y):_a("GSAP target "+i+" not found. https://gsap.com",!Sr.nullTargetWarn)||[],a._ptLookup=[],a._overwrite=f,p||d||Tu(u)||Tu(c)){if(n=a.vars,b=a.timeline=new rr({data:"nested",defaults:m||{},targets:x&&x.data==="nested"?x.vars.targets:y}),b.kill(),b.parent=b._dp=Li(a),b._start=0,d||Tu(u)||Tu(c)){if(A=y.length,S=d&&PS(d),xi(d))for(E in d)~XS.indexOf(E)&&(I||(I={}),I[E]=d[E]);for(T=0;T<A;T++)P=Iu(n,YS),P.stagger=0,v&&(P.yoyoEase=v),I&&Zs(P,I),_=y[T],P.duration=+ka(u,Li(a),T,_,y),P.delay=(+ka(c,Li(a),T,_,y)||0)-a._delay,!d&&A===1&&P.delay&&(a._delay=c=P.delay,a._start+=c,P.delay=0),b.to(_,P,S?S(T,_,y):0),b._ease=Ne.none;b.duration()?u=c=0:a.timeline=0}else if(p){Sa(Ar(b.vars.defaults,{ease:"none"})),b._ease=Zn(p.ease||n.ease||"none");var M=0,O,U,X;if(Kt(p))p.forEach(function(D){return b.to(y,D,">")}),b.duration();else{P={};for(E in p)E==="ease"||E==="easeEach"||xN(E,p[E],P,p.easeEach);for(E in P)for(O=P[E].sort(function(D,k){return D.t-k.t}),M=0,T=0;T<O.length;T++)U=O[T],X={ease:U.e,duration:(U.t-(T?O[T-1].t:0))/100*u},X[E]=U.v,b.to(y,X,M),M+=X.duration;b.duration()<u&&b.to({},{duration:u-b.duration()})}}u||a.duration(u=b.duration())}else a.timeline=0;return f===!0&&!q0&&(bn=Li(a),pt.killTweensOf(y),bn=0),bi(x,Li(a),s),n.reversed&&a.reverse(),n.paused&&a.paused(!0),(h||!u&&!p&&a._start===mt(x._time)&&lr(h)&&KL(Li(a))&&x.data!=="nested")&&(a._tTime=-$e,a.render(Math.max(0,-c)||0)),g&&SS(Li(a),g),a}var t=e.prototype;return t.render=function(n,s,o){var a=this._time,l=this._tDur,u=this._dur,c=n<0,h=n>l-$e&&!c?l:n<$e?0:n,d,f,p,m,g,v,x,y,b;if(!u)ZL(this,n,s,o);else if(h!==this._tTime||!n||o||!this._initted&&this._tTime||this._startAt&&this._zTime<0!==c||this._lazy){if(d=h,y=this.timeline,this._repeat){if(m=u+this._rDelay,this._repeat<-1&&c)return this.totalTime(m*100+n,s,o);if(d=mt(h%m),h===l?(p=this._repeat,d=u):(g=mt(h/m),p=~~g,p&&p===g?(d=u,p--):d>u&&(d=u)),v=this._yoyo&&p&1,v&&(b=this._yEase,d=u-d),g=Js(this._tTime,m),d===a&&!o&&this._initted&&p===g)return this._tTime=h,this;p!==g&&(y&&this._yEase&&GS(y,v),this.vars.repeatRefresh&&!v&&!this._lock&&d!==m&&this._initted&&(this._lock=o=1,this.render(mt(m*p),!0).invalidate()._lock=0))}if(!this._initted){if(TS(this,c?n:d,o,s,h))return this._tTime=0,this;if(a!==this._time&&!(o&&this.vars.repeatRefresh&&p!==g))return this;if(u!==this._dur)return this.render(n,s,o)}if(this._tTime=h,this._time=d,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=x=(b||this._ease)(d/u),this._from&&(this.ratio=x=1-x),!a&&h&&!s&&!g&&(Er(this,"onStart"),this._tTime!==h))return this;for(f=this._pt;f;)f.r(x,f.d),f=f._next;y&&y.render(n<0?n:y._dur*y._ease(d/this._dur),s,o)||this._startAt&&(this._zTime=n),this._onUpdate&&!s&&(c&&av(this,n,s,o),Er(this,"onUpdate")),this._repeat&&p!==g&&this.vars.onRepeat&&!s&&this.parent&&Er(this,"onRepeat"),(h===this._tDur||!h)&&this._tTime===h&&(c&&!this._onUpdate&&av(this,n,!0,!0),(n||!u)&&(h===this._tDur&&this._ts>0||!h&&this._ts<0)&&vn(this,1),!s&&!(c&&!a)&&(h||a||v)&&(Er(this,h===l?"onComplete":"onReverseComplete",!0),this._prom&&!(h<l&&this.timeScale()>0)&&this._prom()))}return this},t.targets=function(){return this._targets},t.invalidate=function(n){return(!n||!this.vars.runBackwards)&&(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(n),r.prototype.invalidate.call(this,n)},t.resetTo=function(n,s,o,a,l){Ia||Pr.wake(),this._ts||this.play();var u=Math.min(this._dur,(this._dp._time-this._start)*this._ts),c;return this._initted||vv(this,u),c=this._ease(u/this._dur),gN(this,n,s,o,a,c,u,l)?this.resetTo(n,s,o,a,1):(Fu(this,0),this.parent||bS(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},t.kill=function(n,s){if(s===void 0&&(s="all"),!n&&(!s||s==="all"))return this._lazy=this._pt=0,this.parent?Ea(this):this.scrollTrigger&&this.scrollTrigger.kill(!!Yt),this;if(this.timeline){var o=this.timeline.totalDuration();return this.timeline.killTweensOf(n,s,bn&&bn.vars.overwrite!==!0)._first||Ea(this),this.parent&&o!==this.timeline.totalDuration()&&$s(this,this._dur*this.timeline._tDur/o,0,1),this}var a=this._targets,l=n?Wr(n):a,u=this._ptLookup,c=this._pt,h,d,f,p,m,g,v;if((!s||s==="all")&&qL(a,l))return s==="all"&&(this._pt=0),Ea(this);for(h=this._op=this._op||[],s!=="all"&&(Lt(s)&&(m={},ur(s,function(x){return m[x]=1}),s=m),s=vN(a,s)),v=a.length;v--;)if(~l.indexOf(a[v])){d=u[v],s==="all"?(h[v]=s,p=d,f={}):(f=h[v]=h[v]||{},p=s);for(m in p)g=d&&d[m],g&&((!("kill"in g.d)||g.d.kill(m)===!0)&&Bu(this,g,"_pt"),delete d[m]),f!=="all"&&(f[m]=1)}return this._initted&&!this._pt&&c&&Ea(this),this},e.to=function(n,s){return new e(n,s,arguments[2])},e.from=function(n,s){return Ta(1,arguments)},e.delayedCall=function(n,s,o,a){return new e(s,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:n,onComplete:s,onReverseComplete:s,onCompleteParams:o,onReverseCompleteParams:o,callbackScope:a})},e.fromTo=function(n,s,o){return Ta(2,arguments)},e.set=function(n,s){return s.duration=0,s.repeatDelay||(s.repeat=0),new e(n,s)},e.killTweensOf=function(n,s,o){return pt.killTweensOf(n,s,o)},e})(Ba);Ar(Rt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ur("staggerTo,staggerFrom,staggerFromTo",function(r){Rt[r]=function(){var e=new rr,t=uv.call(arguments,0);return t.splice(r==="staggerFromTo"?5:4,0,0),e[r].apply(e,t)}});var xv=function(e,t,i){return e[t]=i},qS=function(e,t,i){return e[t](i)},yN=function(e,t,i,n){return e[t](n.fp,i)},bN=function(e,t,i){return e.setAttribute(t,i)},yv=function(e,t){return _t(e[t])?qS:K0(e[t])&&e.setAttribute?bN:xv},jS=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e6)/1e6,t)},_N=function(e,t){return t.set(t.t,t.p,!!(t.s+t.c*e),t)},KS=function(e,t){var i=t._pt,n="";if(!e&&t.b)n=t.b;else if(e===1&&t.e)n=t.e;else{for(;i;)n=i.p+(i.m?i.m(i.s+i.c*e):Math.round((i.s+i.c*e)*1e4)/1e4)+n,i=i._next;n+=t.c}t.set(t.t,t.p,n,t)},bv=function(e,t){for(var i=t._pt;i;)i.r(e,i.d),i=i._next},wN=function(e,t,i,n){for(var s=this._pt,o;s;)o=s._next,s.p===n&&s.modifier(e,t,i),s=o},SN=function(e){for(var t=this._pt,i,n;t;)n=t._next,t.p===e&&!t.op||t.op===e?Bu(this,t,"_pt"):t.dep||(i=1),t=n;return!i},TN=function(e,t,i,n){n.mSet(e,t,n.m.call(n.tween,i,n.mt),n)},QS=function(e){for(var t=e._pt,i,n,s,o;t;){for(i=t._next,n=s;n&&n.pr>t.pr;)n=n._next;(t._prev=n?n._prev:o)?t._prev._next=t:s=t,(t._next=n)?n._prev=t:o=t,t=i}e._pt=s},cr=(function(){function r(t,i,n,s,o,a,l,u,c){this.t=i,this.s=s,this.c=o,this.p=n,this.r=a||jS,this.d=l||this,this.set=u||xv,this.pr=c||0,this._next=t,t&&(t._prev=this)}var e=r.prototype;return e.modifier=function(i,n,s){this.mSet=this.mSet||this.set,this.set=TN,this.m=i,this.mt=s,this.tween=n},r})();ur(nv+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(r){return tv[r]=1}),Tr.TweenMax=Tr.TweenLite=Rt,Tr.TimelineLite=Tr.TimelineMax=rr,pt=new rr({sortChildren:!1,defaults:js,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),Sr.stringFilter=LS;var $n=[],Mu={},CN=[],ZS=0,AN=0,_v=function(e){return(Mu[e]||CN).map(function(t){return t()})},wv=function(){var e=Date.now(),t=[];e-ZS>2&&(_v("matchMediaInit"),$n.forEach(function(i){var n=i.queries,s=i.conditions,o,a,l,u;for(a in n)o=yi.matchMedia(n[a]).matches,o&&(l=1),o!==s[a]&&(s[a]=o,u=1);u&&(i.revert(),l&&t.push(i))}),_v("matchMediaRevert"),t.forEach(function(i){return i.onMatch(i,function(n){return i.add(null,n)})}),ZS=e,_v("matchMedia"))},JS=(function(){function r(t,i){this.selector=i&&cv(i),this.data=[],this._r=[],this.isReverted=!1,this.id=AN++,t&&this.add(t)}var e=r.prototype;return e.add=function(i,n,s){_t(i)&&(s=n,n=i,i=_t);var o=this,a=function(){var u=ht,c=o.selector,h;return u&&u!==o&&u.data.push(o),s&&(o.selector=cv(s)),ht=o,h=n.apply(o,arguments),_t(h)&&o._r.push(h),ht=u,o.selector=c,o.isReverted=!1,h};return o.last=a,i===_t?a(o,function(l){return o.add(null,l)}):i?o[i]=a:a},e.ignore=function(i){var n=ht;ht=null,i(this),ht=n},e.getTweens=function(){var i=[];return this.data.forEach(function(n){return n instanceof r?i.push.apply(i,n.getTweens()):n instanceof Rt&&!(n.parent&&n.parent.data==="nested")&&i.push(n)}),i},e.clear=function(){this._r.length=this.data.length=0},e.kill=function(i,n){var s=this;if(i?(function(){for(var a=s.getTweens(),l=s.data.length,u;l--;)u=s.data[l],u.data==="isFlip"&&(u.revert(),u.getChildren(!0,!0,!1).forEach(function(c){return a.splice(a.indexOf(c),1)}));for(a.map(function(c){return{g:c._dur||c._delay||c._sat&&!c._sat.vars.immediateRender?c.globalTime(0):-1/0,t:c}}).sort(function(c,h){return h.g-c.g||-1/0}).forEach(function(c){return c.t.revert(i)}),l=s.data.length;l--;)u=s.data[l],u instanceof rr?u.data!=="nested"&&(u.scrollTrigger&&u.scrollTrigger.revert(),u.kill()):!(u instanceof Rt)&&u.revert&&u.revert(i);s._r.forEach(function(c){return c(i,s)}),s.isReverted=!0})():this.data.forEach(function(a){return a.kill&&a.kill()}),this.clear(),n)for(var o=$n.length;o--;)$n[o].id===this.id&&$n.splice(o,1)},e.revert=function(i){this.kill(i||{})},r})(),EN=(function(){function r(t){this.contexts=[],this.scope=t,ht&&ht.data.push(this)}var e=r.prototype;return e.add=function(i,n,s){xi(i)||(i={matches:i});var o=new JS(0,s||this.scope),a=o.conditions={},l,u,c;ht&&!o.selector&&(o.selector=ht.selector),this.contexts.push(o),n=o.add("onMatch",n),o.queries=i;for(u in i)u==="all"?c=1:(l=yi.matchMedia(i[u]),l&&($n.indexOf(o)<0&&$n.push(o),(a[u]=l.matches)&&(c=1),l.addListener?l.addListener(wv):l.addEventListener("change",wv)));return c&&n(o,function(h){return o.add(null,h)}),this},e.revert=function(i){this.kill(i||{})},e.kill=function(i){this.contexts.forEach(function(n){return n.kill(i,!0)})},r})(),Du={registerPlugin:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];t.forEach(function(n){return DS(n)})},timeline:function(e){return new rr(e)},getTweensOf:function(e,t){return pt.getTweensOf(e,t)},getProperty:function(e,t,i,n){Lt(e)&&(e=Wr(e)[0]);var s=Kn(e||{}).get,o=i?xS:vS;return i==="native"&&(i=""),e&&(t?o((Cr[t]&&Cr[t].get||s)(e,t,i,n)):function(a,l,u){return o((Cr[a]&&Cr[a].get||s)(e,a,l,u))})},quickSetter:function(e,t,i){if(e=Wr(e),e.length>1){var n=e.map(function(c){return hr.quickSetter(c,t,i)}),s=n.length;return function(c){for(var h=s;h--;)n[h](c)}}e=e[0]||{};var o=Cr[t],a=Kn(e),l=a.harness&&(a.harness.aliases||{})[t]||t,u=o?function(c){var h=new o;eo._pt=0,h.init(e,i?c+i:c,eo,0,[e]),h.render(1,h),eo._pt&&bv(1,eo)}:a.set(e,l);return o?u:function(c){return u(e,l,i?c+i:c,a,1)}},quickTo:function(e,t,i){var n,s=hr.to(e,Ar((n={},n[t]="+=0.1",n.paused=!0,n.stagger=0,n),i||{})),o=function(l,u,c){return s.resetTo(t,l,u,c)};return o.tween=s,o},isTweening:function(e){return pt.getTweensOf(e,!0).length>0},defaults:function(e){return e&&e.ease&&(e.ease=Zn(e.ease,js.ease)),yS(js,e||{})},config:function(e){return yS(Sr,e||{})},registerEffect:function(e){var t=e.name,i=e.effect,n=e.plugins,s=e.defaults,o=e.extendTimeline;(n||"").split(",").forEach(function(a){return a&&!Cr[a]&&!Tr[a]&&_a(t+" effect requires "+a+" plugin.")}),iv[t]=function(a,l,u){return i(Wr(a),Ar(l||{},s),u)},o&&(rr.prototype[t]=function(a,l,u){return this.add(iv[t](a,xi(l)?l:(u=l)&&{},this),u)})},registerEase:function(e,t){Ne[e]=Zn(t)},parseEase:function(e,t){return arguments.length?Zn(e,t):Ne},getById:function(e){return pt.getById(e)},exportRoot:function(e,t){e===void 0&&(e={});var i=new rr(e),n,s;for(i.smoothChildTiming=lr(e.smoothChildTiming),pt.remove(i),i._dp=0,i._time=i._tTime=pt._time,n=pt._first;n;)s=n._next,(t||!(!n._dur&&n instanceof Rt&&n.vars.onComplete===n._targets[0]))&&bi(i,n,n._start-n._delay),n=s;return bi(pt,i,0),i},context:function(e,t){return e?new JS(e,t):ht},matchMedia:function(e){return new EN(e)},matchMediaRefresh:function(){return $n.forEach(function(e){var t=e.conditions,i,n;for(n in t)t[n]&&(t[n]=!1,i=1);i&&e.revert()})||wv()},addEventListener:function(e,t){var i=Mu[e]||(Mu[e]=[]);~i.indexOf(t)||i.push(t)},removeEventListener:function(e,t){var i=Mu[e],n=i&&i.indexOf(t);n>=0&&i.splice(n,1)},utils:{wrap:sN,wrapYoyo:oN,distribute:PS,random:BS,snap:IS,normalize:nN,getUnit:Qt,clamp:eN,splitColor:OS,toArray:Wr,selector:cv,mapRange:RS,pipe:rN,unitize:iN,interpolate:aN,shuffle:ES},install:hS,effects:iv,ticker:Pr,updateRoot:rr.updateRoot,plugins:Cr,globalTimeline:pt,core:{PropTween:cr,globals:dS,Tween:Rt,Timeline:rr,Animation:Ba,getCache:Kn,_removeLinkedListItem:Bu,reverting:function(){return Yt},context:function(e){return e&&ht&&(ht.data.push(e),e._ctx=ht),ht},suppressOverwrites:function(e){return q0=e}}};ur("to,from,fromTo,delayedCall,set,killTweensOf",function(r){return Du[r]=Rt[r]}),Pr.add(rr.updateRoot),eo=Du.to({},{duration:0});var PN=function(e,t){for(var i=e._pt;i&&i.p!==t&&i.op!==t&&i.fp!==t;)i=i._next;return i},IN=function(e,t){var i=e._targets,n,s,o;for(n in t)for(s=i.length;s--;)o=e._ptLookup[s][n],o&&(o=o.d)&&(o._pt&&(o=PN(o,n)),o&&o.modifier&&o.modifier(t[n],e,i[s],n))},Sv=function(e,t){return{name:e,headless:1,rawVars:1,init:function(n,s,o){o._onInit=function(a){var l,u;if(Lt(s)&&(l={},ur(s,function(c){return l[c]=1}),s=l),t){l={};for(u in s)l[u]=t(s[u]);s=l}IN(a,s)}}}},hr=Du.registerPlugin({name:"attr",init:function(e,t,i,n,s){var o,a,l;this.tween=i;for(o in t)l=e.getAttribute(o)||"",a=this.add(e,"setAttribute",(l||0)+"",t[o],n,s,0,0,o),a.op=o,a.b=l,this._props.push(o)},render:function(e,t){for(var i=t._pt;i;)Yt?i.set(i.t,i.p,i.b,i):i.r(e,i.d),i=i._next}},{name:"endArray",headless:1,init:function(e,t){for(var i=t.length;i--;)this.add(e,i,e[i]||0,t[i],0,0,0,0,0,1)}},Sv("roundProps",hv),Sv("modifiers"),Sv("snap",IS))||Du;Rt.version=rr.version=hr.version="3.14.2",cS=1,Q0()&&to(),Ne.Power0,Ne.Power1,Ne.Power2,Ne.Power3,Ne.Power4,Ne.Linear,Ne.Quad,Ne.Cubic,Ne.Quart,Ne.Quint,Ne.Strong,Ne.Elastic,Ne.Back,Ne.SteppedEase,Ne.Bounce,Ne.Sine,Ne.Expo,Ne.Circ;var $S,_n,ro,Tv,es,e3,Cv,BN=function(){return typeof window<"u"},Gi={},ts=180/Math.PI,io=Math.PI/180,no=Math.atan2,t3=1e8,Av=/([A-Z])/g,kN=/(left|right|width|margin|padding|x)/i,RN=/[\s,\(]\S/,_i={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},Ev=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},FN=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},MN=function(e,t){return t.set(t.t,t.p,e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},DN=function(e,t){return t.set(t.t,t.p,e===1?t.e:e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},ON=function(e,t){var i=t.s+t.c*e;t.set(t.t,t.p,~~(i+(i<0?-.5:.5))+t.u,t)},r3=function(e,t){return t.set(t.t,t.p,e?t.e:t.b,t)},i3=function(e,t){return t.set(t.t,t.p,e!==1?t.b:t.e,t)},UN=function(e,t,i){return e.style[t]=i},zN=function(e,t,i){return e.style.setProperty(t,i)},LN=function(e,t,i){return e._gsap[t]=i},NN=function(e,t,i){return e._gsap.scaleX=e._gsap.scaleY=i},GN=function(e,t,i,n,s){var o=e._gsap;o.scaleX=o.scaleY=i,o.renderTransform(s,o)},HN=function(e,t,i,n,s){var o=e._gsap;o[t]=i,o.renderTransform(s,o)},gt="transform",dr=gt+"Origin",WN=function r(e,t){var i=this,n=this.target,s=n.style,o=n._gsap;if(e in Gi&&s){if(this.tfm=this.tfm||{},e!=="transform")e=_i[e]||e,~e.indexOf(",")?e.split(",").forEach(function(a){return i.tfm[a]=Hi(n,a)}):this.tfm[e]=o.x?o[e]:Hi(n,e),e===dr&&(this.tfm.zOrigin=o.zOrigin);else return _i.transform.split(",").forEach(function(a){return r.call(i,a,t)});if(this.props.indexOf(gt)>=0)return;o.svg&&(this.svgo=n.getAttribute("data-svg-origin"),this.props.push(dr,t,"")),e=gt}(s||t)&&this.props.push(e,t,s[e])},n3=function(e){e.translate&&(e.removeProperty("translate"),e.removeProperty("scale"),e.removeProperty("rotate"))},VN=function(){var e=this.props,t=this.target,i=t.style,n=t._gsap,s,o;for(s=0;s<e.length;s+=3)e[s+1]?e[s+1]===2?t[e[s]](e[s+2]):t[e[s]]=e[s+2]:e[s+2]?i[e[s]]=e[s+2]:i.removeProperty(e[s].substr(0,2)==="--"?e[s]:e[s].replace(Av,"-$1").toLowerCase());if(this.tfm){for(o in this.tfm)n[o]=this.tfm[o];n.svg&&(n.renderTransform(),t.setAttribute("data-svg-origin",this.svgo||"")),s=Cv(),(!s||!s.isStart)&&!i[gt]&&(n3(i),n.zOrigin&&i[dr]&&(i[dr]+=" "+n.zOrigin+"px",n.zOrigin=0,n.renderTransform()),n.uncache=1)}},s3=function(e,t){var i={target:e,props:[],revert:VN,save:WN};return e._gsap||hr.core.getCache(e),t&&e.style&&e.nodeType&&t.split(",").forEach(function(n){return i.save(n)}),i},o3,Pv=function(e,t){var i=_n.createElementNS?_n.createElementNS((t||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),e):_n.createElement(e);return i&&i.style?i:_n.createElement(e)},Ir=function r(e,t,i){var n=getComputedStyle(e);return n[t]||n.getPropertyValue(t.replace(Av,"-$1").toLowerCase())||n.getPropertyValue(t)||!i&&r(e,so(t)||t,1)||""},a3="O,Moz,ms,Ms,Webkit".split(","),so=function(e,t,i){var n=t||es,s=n.style,o=5;if(e in s&&!i)return e;for(e=e.charAt(0).toUpperCase()+e.substr(1);o--&&!(a3[o]+e in s););return o<0?null:(o===3?"ms":o>=0?a3[o]:"")+e},Iv=function(){BN()&&window.document&&($S=window,_n=$S.document,ro=_n.documentElement,es=Pv("div")||{style:{}},Pv("div"),gt=so(gt),dr=gt+"Origin",es.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",o3=!!so("perspective"),Cv=hr.core.reverting,Tv=1)},l3=function(e){var t=e.ownerSVGElement,i=Pv("svg",t&&t.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),n=e.cloneNode(!0),s;n.style.display="block",i.appendChild(n),ro.appendChild(i);try{s=n.getBBox()}catch{}return i.removeChild(n),ro.removeChild(i),s},u3=function(e,t){for(var i=t.length;i--;)if(e.hasAttribute(t[i]))return e.getAttribute(t[i])},c3=function(e){var t,i;try{t=e.getBBox()}catch{t=l3(e),i=1}return t&&(t.width||t.height)||i||(t=l3(e)),t&&!t.width&&!t.x&&!t.y?{x:+u3(e,["x","cx","x1"])||0,y:+u3(e,["y","cy","y1"])||0,width:0,height:0}:t},h3=function(e){return!!(e.getCTM&&(!e.parentNode||e.ownerSVGElement)&&c3(e))},wn=function(e,t){if(t){var i=e.style,n;t in Gi&&t!==dr&&(t=gt),i.removeProperty?(n=t.substr(0,2),(n==="ms"||t.substr(0,6)==="webkit")&&(t="-"+t),i.removeProperty(n==="--"?t:t.replace(Av,"-$1").toLowerCase())):i.removeAttribute(t)}},Sn=function(e,t,i,n,s,o){var a=new cr(e._pt,t,i,0,1,o?i3:r3);return e._pt=a,a.b=n,a.e=s,e._props.push(i),a},d3={deg:1,rad:1,turn:1},XN={grid:1,flex:1},Tn=function r(e,t,i,n){var s=parseFloat(i)||0,o=(i+"").trim().substr((s+"").length)||"px",a=es.style,l=kN.test(t),u=e.tagName.toLowerCase()==="svg",c=(u?"client":"offset")+(l?"Width":"Height"),h=100,d=n==="px",f=n==="%",p,m,g,v;if(n===o||!s||d3[n]||d3[o])return s;if(o!=="px"&&!d&&(s=r(e,t,i,"px")),v=e.getCTM&&h3(e),(f||o==="%")&&(Gi[t]||~t.indexOf("adius")))return p=v?e.getBBox()[l?"width":"height"]:e[c],Et(f?s/p*h:s/100*p);if(a[l?"width":"height"]=h+(d?o:n),m=n!=="rem"&&~t.indexOf("adius")||n==="em"&&e.appendChild&&!u?e:e.parentNode,v&&(m=(e.ownerSVGElement||{}).parentNode),(!m||m===_n||!m.appendChild)&&(m=_n.body),g=m._gsap,g&&f&&g.width&&l&&g.time===Pr.time&&!g.uncache)return Et(s/g.width*h);if(f&&(t==="height"||t==="width")){var x=e.style[t];e.style[t]=h+n,p=e[c],x?e.style[t]=x:wn(e,t)}else(f||o==="%")&&!XN[Ir(m,"display")]&&(a.position=Ir(e,"position")),m===e&&(a.position="static"),m.appendChild(es),p=es[c],m.removeChild(es),a.position="absolute";return l&&f&&(g=Kn(m),g.time=Pr.time,g.width=m[c]),Et(d?p*s/h:p&&s?h/p*s:0)},Hi=function(e,t,i,n){var s;return Tv||Iv(),t in _i&&t!=="transform"&&(t=_i[t],~t.indexOf(",")&&(t=t.split(",")[0])),Gi[t]&&t!=="transform"?(s=Fa(e,n),s=t!=="transformOrigin"?s[t]:s.svg?s.origin:Uu(Ir(e,dr))+" "+s.zOrigin+"px"):(s=e.style[t],(!s||s==="auto"||n||~(s+"").indexOf("calc("))&&(s=Ou[t]&&Ou[t](e,t,i)||Ir(e,t)||mS(e,t)||(t==="opacity"?1:0))),i&&!~(s+"").trim().indexOf(" ")?Tn(e,t,s,i)+i:s},YN=function(e,t,i,n){if(!i||i==="none"){var s=so(t,e,1),o=s&&Ir(e,s,1);o&&o!==i?(t=s,i=o):t==="borderColor"&&(i=Ir(e,"borderTopColor"))}var a=new cr(this._pt,e.style,t,0,1,KS),l=0,u=0,c,h,d,f,p,m,g,v,x,y,b,T;if(a.b=i,a.e=n,i+="",n+="",n.substring(0,6)==="var(--"&&(n=Ir(e,n.substring(4,n.indexOf(")")))),n==="auto"&&(m=e.style[t],e.style[t]=n,n=Ir(e,t)||n,m?e.style[t]=m:wn(e,t)),c=[i,n],LS(c),i=c[0],n=c[1],d=i.match(Ks)||[],T=n.match(Ks)||[],T.length){for(;h=Ks.exec(n);)g=h[0],x=n.substring(l,h.index),p?p=(p+1)%5:(x.substr(-5)==="rgba("||x.substr(-5)==="hsla(")&&(p=1),g!==(m=d[u++]||"")&&(f=parseFloat(m)||0,b=m.substr((f+"").length),g.charAt(1)==="="&&(g=Qs(f,g)+b),v=parseFloat(g),y=g.substr((v+"").length),l=Ks.lastIndex-y.length,y||(y=y||Sr.units[t]||b,l===n.length&&(n+=y,a.e+=y)),b!==y&&(f=Tn(e,t,m,y)||0),a._pt={_next:a._pt,p:x||u===1?x:",",s:f,c:v-f,m:p&&p<4||t==="zIndex"?Math.round:0});a.c=l<n.length?n.substring(l,n.length):""}else a.r=t==="display"&&n==="none"?i3:r3;return uS.test(n)&&(a.e=0),this._pt=a,a},f3={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},qN=function(e){var t=e.split(" "),i=t[0],n=t[1]||"50%";return(i==="top"||i==="bottom"||n==="left"||n==="right")&&(e=i,i=n,n=e),t[0]=f3[i]||i,t[1]=f3[n]||n,t.join(" ")},jN=function(e,t){if(t.tween&&t.tween._time===t.tween._dur){var i=t.t,n=i.style,s=t.u,o=i._gsap,a,l,u;if(s==="all"||s===!0)n.cssText="",l=1;else for(s=s.split(","),u=s.length;--u>-1;)a=s[u],Gi[a]&&(l=1,a=a==="transformOrigin"?dr:gt),wn(i,a);l&&(wn(i,gt),o&&(o.svg&&i.removeAttribute("transform"),n.scale=n.rotate=n.translate="none",Fa(i,1),o.uncache=1,n3(n)))}},Ou={clearProps:function(e,t,i,n,s){if(s.data!=="isFromStart"){var o=e._pt=new cr(e._pt,t,i,0,0,jN);return o.u=n,o.pr=-10,o.tween=s,e._props.push(i),1}}},Ra=[1,0,0,1,0,0],p3={},m3=function(e){return e==="matrix(1, 0, 0, 1, 0, 0)"||e==="none"||!e},g3=function(e){var t=Ir(e,gt);return m3(t)?Ra:t.substr(7).match(lS).map(Et)},Bv=function(e,t){var i=e._gsap||Kn(e),n=e.style,s=g3(e),o,a,l,u;return i.svg&&e.getAttribute("transform")?(l=e.transform.baseVal.consolidate().matrix,s=[l.a,l.b,l.c,l.d,l.e,l.f],s.join(",")==="1,0,0,1,0,0"?Ra:s):(s===Ra&&!e.offsetParent&&e!==ro&&!i.svg&&(l=n.display,n.display="block",o=e.parentNode,(!o||!e.offsetParent&&!e.getBoundingClientRect().width)&&(u=1,a=e.nextElementSibling,ro.appendChild(e)),s=g3(e),l?n.display=l:wn(e,"display"),u&&(a?o.insertBefore(e,a):o?o.appendChild(e):ro.removeChild(e))),t&&s.length>6?[s[0],s[1],s[4],s[5],s[12],s[13]]:s)},kv=function(e,t,i,n,s,o){var a=e._gsap,l=s||Bv(e,!0),u=a.xOrigin||0,c=a.yOrigin||0,h=a.xOffset||0,d=a.yOffset||0,f=l[0],p=l[1],m=l[2],g=l[3],v=l[4],x=l[5],y=t.split(" "),b=parseFloat(y[0])||0,T=parseFloat(y[1])||0,P,A,E,_;i?l!==Ra&&(A=f*g-p*m)&&(E=b*(g/A)+T*(-m/A)+(m*x-g*v)/A,_=b*(-p/A)+T*(f/A)-(f*x-p*v)/A,b=E,T=_):(P=c3(e),b=P.x+(~y[0].indexOf("%")?b/100*P.width:b),T=P.y+(~(y[1]||y[0]).indexOf("%")?T/100*P.height:T)),n||n!==!1&&a.smooth?(v=b-u,x=T-c,a.xOffset=h+(v*f+x*m)-v,a.yOffset=d+(v*p+x*g)-x):a.xOffset=a.yOffset=0,a.xOrigin=b,a.yOrigin=T,a.smooth=!!n,a.origin=t,a.originIsAbsolute=!!i,e.style[dr]="0px 0px",o&&(Sn(o,a,"xOrigin",u,b),Sn(o,a,"yOrigin",c,T),Sn(o,a,"xOffset",h,a.xOffset),Sn(o,a,"yOffset",d,a.yOffset)),e.setAttribute("data-svg-origin",b+" "+T)},Fa=function(e,t){var i=e._gsap||new WS(e);if("x"in i&&!t&&!i.uncache)return i;var n=e.style,s=i.scaleX<0,o="px",a="deg",l=getComputedStyle(e),u=Ir(e,dr)||"0",c,h,d,f,p,m,g,v,x,y,b,T,P,A,E,_,S,I,M,O,U,X,D,k,Y,H,$,K,we,Ie,ve,G;return c=h=d=m=g=v=x=y=b=0,f=p=1,i.svg=!!(e.getCTM&&h3(e)),l.translate&&((l.translate!=="none"||l.scale!=="none"||l.rotate!=="none")&&(n[gt]=(l.translate!=="none"?"translate3d("+(l.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+(l.rotate!=="none"?"rotate("+l.rotate+") ":"")+(l.scale!=="none"?"scale("+l.scale.split(" ").join(",")+") ":"")+(l[gt]!=="none"?l[gt]:"")),n.scale=n.rotate=n.translate="none"),A=Bv(e,i.svg),i.svg&&(i.uncache?(Y=e.getBBox(),u=i.xOrigin-Y.x+"px "+(i.yOrigin-Y.y)+"px",k=""):k=!t&&e.getAttribute("data-svg-origin"),kv(e,k||u,!!k||i.originIsAbsolute,i.smooth!==!1,A)),T=i.xOrigin||0,P=i.yOrigin||0,A!==Ra&&(I=A[0],M=A[1],O=A[2],U=A[3],c=X=A[4],h=D=A[5],A.length===6?(f=Math.sqrt(I*I+M*M),p=Math.sqrt(U*U+O*O),m=I||M?no(M,I)*ts:0,x=O||U?no(O,U)*ts+m:0,x&&(p*=Math.abs(Math.cos(x*io))),i.svg&&(c-=T-(T*I+P*O),h-=P-(T*M+P*U))):(G=A[6],Ie=A[7],$=A[8],K=A[9],we=A[10],ve=A[11],c=A[12],h=A[13],d=A[14],E=no(G,we),g=E*ts,E&&(_=Math.cos(-E),S=Math.sin(-E),k=X*_+$*S,Y=D*_+K*S,H=G*_+we*S,$=X*-S+$*_,K=D*-S+K*_,we=G*-S+we*_,ve=Ie*-S+ve*_,X=k,D=Y,G=H),E=no(-O,we),v=E*ts,E&&(_=Math.cos(-E),S=Math.sin(-E),k=I*_-$*S,Y=M*_-K*S,H=O*_-we*S,ve=U*S+ve*_,I=k,M=Y,O=H),E=no(M,I),m=E*ts,E&&(_=Math.cos(E),S=Math.sin(E),k=I*_+M*S,Y=X*_+D*S,M=M*_-I*S,D=D*_-X*S,I=k,X=Y),g&&Math.abs(g)+Math.abs(m)>359.9&&(g=m=0,v=180-v),f=Et(Math.sqrt(I*I+M*M+O*O)),p=Et(Math.sqrt(D*D+G*G)),E=no(X,D),x=Math.abs(E)>2e-4?E*ts:0,b=ve?1/(ve<0?-ve:ve):0),i.svg&&(k=e.getAttribute("transform"),i.forceCSS=e.setAttribute("transform","")||!m3(Ir(e,gt)),k&&e.setAttribute("transform",k))),Math.abs(x)>90&&Math.abs(x)<270&&(s?(f*=-1,x+=m<=0?180:-180,m+=m<=0?180:-180):(p*=-1,x+=x<=0?180:-180)),t=t||i.uncache,i.x=c-((i.xPercent=c&&(!t&&i.xPercent||(Math.round(e.offsetWidth/2)===Math.round(-c)?-50:0)))?e.offsetWidth*i.xPercent/100:0)+o,i.y=h-((i.yPercent=h&&(!t&&i.yPercent||(Math.round(e.offsetHeight/2)===Math.round(-h)?-50:0)))?e.offsetHeight*i.yPercent/100:0)+o,i.z=d+o,i.scaleX=Et(f),i.scaleY=Et(p),i.rotation=Et(m)+a,i.rotationX=Et(g)+a,i.rotationY=Et(v)+a,i.skewX=x+a,i.skewY=y+a,i.transformPerspective=b+o,(i.zOrigin=parseFloat(u.split(" ")[2])||!t&&i.zOrigin||0)&&(n[dr]=Uu(u)),i.xOffset=i.yOffset=0,i.force3D=Sr.force3D,i.renderTransform=i.svg?QN:o3?v3:KN,i.uncache=0,i},Uu=function(e){return(e=e.split(" "))[0]+" "+e[1]},Rv=function(e,t,i){var n=Qt(t);return Et(parseFloat(t)+parseFloat(Tn(e,"x",i+"px",n)))+n},KN=function(e,t){t.z="0px",t.rotationY=t.rotationX="0deg",t.force3D=0,v3(e,t)},rs="0deg",Ma="0px",is=") ",v3=function(e,t){var i=t||this,n=i.xPercent,s=i.yPercent,o=i.x,a=i.y,l=i.z,u=i.rotation,c=i.rotationY,h=i.rotationX,d=i.skewX,f=i.skewY,p=i.scaleX,m=i.scaleY,g=i.transformPerspective,v=i.force3D,x=i.target,y=i.zOrigin,b="",T=v==="auto"&&e&&e!==1||v===!0;if(y&&(h!==rs||c!==rs)){var P=parseFloat(c)*io,A=Math.sin(P),E=Math.cos(P),_;P=parseFloat(h)*io,_=Math.cos(P),o=Rv(x,o,A*_*-y),a=Rv(x,a,-Math.sin(P)*-y),l=Rv(x,l,E*_*-y+y)}g!==Ma&&(b+="perspective("+g+is),(n||s)&&(b+="translate("+n+"%, "+s+"%) "),(T||o!==Ma||a!==Ma||l!==Ma)&&(b+=l!==Ma||T?"translate3d("+o+", "+a+", "+l+") ":"translate("+o+", "+a+is),u!==rs&&(b+="rotate("+u+is),c!==rs&&(b+="rotateY("+c+is),h!==rs&&(b+="rotateX("+h+is),(d!==rs||f!==rs)&&(b+="skew("+d+", "+f+is),(p!==1||m!==1)&&(b+="scale("+p+", "+m+is),x.style[gt]=b||"translate(0, 0)"},QN=function(e,t){var i=t||this,n=i.xPercent,s=i.yPercent,o=i.x,a=i.y,l=i.rotation,u=i.skewX,c=i.skewY,h=i.scaleX,d=i.scaleY,f=i.target,p=i.xOrigin,m=i.yOrigin,g=i.xOffset,v=i.yOffset,x=i.forceCSS,y=parseFloat(o),b=parseFloat(a),T,P,A,E,_;l=parseFloat(l),u=parseFloat(u),c=parseFloat(c),c&&(c=parseFloat(c),u+=c,l+=c),l||u?(l*=io,u*=io,T=Math.cos(l)*h,P=Math.sin(l)*h,A=Math.sin(l-u)*-d,E=Math.cos(l-u)*d,u&&(c*=io,_=Math.tan(u-c),_=Math.sqrt(1+_*_),A*=_,E*=_,c&&(_=Math.tan(c),_=Math.sqrt(1+_*_),T*=_,P*=_)),T=Et(T),P=Et(P),A=Et(A),E=Et(E)):(T=h,E=d,P=A=0),(y&&!~(o+"").indexOf("px")||b&&!~(a+"").indexOf("px"))&&(y=Tn(f,"x",o,"px"),b=Tn(f,"y",a,"px")),(p||m||g||v)&&(y=Et(y+p-(p*T+m*A)+g),b=Et(b+m-(p*P+m*E)+v)),(n||s)&&(_=f.getBBox(),y=Et(y+n/100*_.width),b=Et(b+s/100*_.height)),_="matrix("+T+","+P+","+A+","+E+","+y+","+b+")",f.setAttribute("transform",_),x&&(f.style[gt]=_)},ZN=function(e,t,i,n,s){var o=360,a=Lt(s),l=parseFloat(s)*(a&&~s.indexOf("rad")?ts:1),u=l-n,c=n+u+"deg",h,d;return a&&(h=s.split("_")[1],h==="short"&&(u%=o,u!==u%(o/2)&&(u+=u<0?o:-o)),h==="cw"&&u<0?u=(u+o*t3)%o-~~(u/o)*o:h==="ccw"&&u>0&&(u=(u-o*t3)%o-~~(u/o)*o)),e._pt=d=new cr(e._pt,t,i,n,u,FN),d.e=c,d.u="deg",e._props.push(i),d},x3=function(e,t){for(var i in t)e[i]=t[i];return e},JN=function(e,t,i){var n=x3({},i._gsap),s="perspective,force3D,transformOrigin,svgOrigin",o=i.style,a,l,u,c,h,d,f,p;n.svg?(u=i.getAttribute("transform"),i.setAttribute("transform",""),o[gt]=t,a=Fa(i,1),wn(i,gt),i.setAttribute("transform",u)):(u=getComputedStyle(i)[gt],o[gt]=t,a=Fa(i,1),o[gt]=u);for(l in Gi)u=n[l],c=a[l],u!==c&&s.indexOf(l)<0&&(f=Qt(u),p=Qt(c),h=f!==p?Tn(i,l,u,p):parseFloat(u),d=parseFloat(c),e._pt=new cr(e._pt,a,l,h,d-h,Ev),e._pt.u=p||0,e._props.push(l));x3(a,n)};ur("padding,margin,Width,Radius",function(r,e){var t="Top",i="Right",n="Bottom",s="Left",o=(e<3?[t,i,n,s]:[t+s,t+i,n+i,n+s]).map(function(a){return e<2?r+a:"border"+a+r});Ou[e>1?"border"+r:r]=function(a,l,u,c,h){var d,f;if(arguments.length<4)return d=o.map(function(p){return Hi(a,p,u)}),f=d.join(" "),f.split(d[0]).length===5?d[0]:f;d=(c+"").split(" "),f={},o.forEach(function(p,m){return f[p]=d[m]=d[m]||d[(m-1)/2|0]}),a.init(l,f,h)}});var y3={name:"css",register:Iv,targetTest:function(e){return e.style&&e.nodeType},init:function(e,t,i,n,s){var o=this._props,a=e.style,l=i.vars.startAt,u,c,h,d,f,p,m,g,v,x,y,b,T,P,A,E,_;Tv||Iv(),this.styles=this.styles||s3(e),E=this.styles.props,this.tween=i;for(m in t)if(m!=="autoRound"&&(c=t[m],!(Cr[m]&&VS(m,t,i,n,e,s)))){if(f=typeof c,p=Ou[m],f==="function"&&(c=c.call(i,n,e,s),f=typeof c),f==="string"&&~c.indexOf("random(")&&(c=Aa(c)),p)p(this,e,m,c,i)&&(A=1);else if(m.substr(0,2)==="--")u=(getComputedStyle(e).getPropertyValue(m)+"").trim(),c+="",yn.lastIndex=0,yn.test(u)||(g=Qt(u),v=Qt(c),v?g!==v&&(u=Tn(e,m,u,v)+v):g&&(c+=g)),this.add(a,"setProperty",u,c,n,s,0,0,m),o.push(m),E.push(m,0,a[m]);else if(f!=="undefined"){if(l&&m in l?(u=typeof l[m]=="function"?l[m].call(i,n,e,s):l[m],Lt(u)&&~u.indexOf("random(")&&(u=Aa(u)),Qt(u+"")||u==="auto"||(u+=Sr.units[m]||Qt(Hi(e,m))||""),(u+"").charAt(1)==="="&&(u=Hi(e,m))):u=Hi(e,m),d=parseFloat(u),x=f==="string"&&c.charAt(1)==="="&&c.substr(0,2),x&&(c=c.substr(2)),h=parseFloat(c),m in _i&&(m==="autoAlpha"&&(d===1&&Hi(e,"visibility")==="hidden"&&h&&(d=0),E.push("visibility",0,a.visibility),Sn(this,a,"visibility",d?"inherit":"hidden",h?"inherit":"hidden",!h)),m!=="scale"&&m!=="transform"&&(m=_i[m],~m.indexOf(",")&&(m=m.split(",")[0]))),y=m in Gi,y){if(this.styles.save(m),_=c,f==="string"&&c.substring(0,6)==="var(--"){if(c=Ir(e,c.substring(4,c.indexOf(")"))),c.substring(0,5)==="calc("){var S=e.style.perspective;e.style.perspective=c,c=Ir(e,"perspective"),S?e.style.perspective=S:wn(e,"perspective")}h=parseFloat(c)}if(b||(T=e._gsap,T.renderTransform&&!t.parseTransform||Fa(e,t.parseTransform),P=t.smoothOrigin!==!1&&T.smooth,b=this._pt=new cr(this._pt,a,gt,0,1,T.renderTransform,T,0,-1),b.dep=1),m==="scale")this._pt=new cr(this._pt,T,"scaleY",T.scaleY,(x?Qs(T.scaleY,x+h):h)-T.scaleY||0,Ev),this._pt.u=0,o.push("scaleY",m),m+="X";else if(m==="transformOrigin"){E.push(dr,0,a[dr]),c=qN(c),T.svg?kv(e,c,0,P,0,this):(v=parseFloat(c.split(" ")[2])||0,v!==T.zOrigin&&Sn(this,T,"zOrigin",T.zOrigin,v),Sn(this,a,m,Uu(u),Uu(c)));continue}else if(m==="svgOrigin"){kv(e,c,1,P,0,this);continue}else if(m in p3){ZN(this,T,m,d,x?Qs(d,x+c):c);continue}else if(m==="smoothOrigin"){Sn(this,T,"smooth",T.smooth,c);continue}else if(m==="force3D"){T[m]=c;continue}else if(m==="transform"){JN(this,c,e);continue}}else m in a||(m=so(m)||m);if(y||(h||h===0)&&(d||d===0)&&!RN.test(c)&&m in a)g=(u+"").substr((d+"").length),h||(h=0),v=Qt(c)||(m in Sr.units?Sr.units[m]:g),g!==v&&(d=Tn(e,m,u,v)),this._pt=new cr(this._pt,y?T:a,m,d,(x?Qs(d,x+h):h)-d,!y&&(v==="px"||m==="zIndex")&&t.autoRound!==!1?ON:Ev),this._pt.u=v||0,y&&_!==c?(this._pt.b=u,this._pt.e=_,this._pt.r=DN):g!==v&&v!=="%"&&(this._pt.b=u,this._pt.r=MN);else if(m in a)YN.call(this,e,m,u,x?x+c:c);else if(m in e)this.add(e,m,u||e[m],x?x+c:c,n,s);else if(m!=="parseTransform"){ev(m,c);continue}y||(m in a?E.push(m,0,a[m]):typeof e[m]=="function"?E.push(m,2,e[m]()):E.push(m,1,u||e[m])),o.push(m)}}A&&QS(this)},render:function(e,t){if(t.tween._time||!Cv())for(var i=t._pt;i;)i.r(e,i.d),i=i._next;else t.styles.revert()},get:Hi,aliases:_i,getSetter:function(e,t,i){var n=_i[t];return n&&n.indexOf(",")<0&&(t=n),t in Gi&&t!==dr&&(e._gsap.x||Hi(e,"x"))?i&&e3===i?t==="scale"?NN:LN:(e3=i||{})&&(t==="scale"?GN:HN):e.style&&!K0(e.style[t])?UN:~t.indexOf("-")?zN:yv(e,t)},core:{_removeProperty:wn,_getMatrix:Bv}};hr.utils.checkPrefix=so,hr.core.getStyleSaver=s3,(function(r,e,t,i){var n=ur(r+","+e+","+t,function(s){Gi[s]=1});ur(e,function(s){Sr.units[s]="deg",p3[s]=1}),_i[n[13]]=r+","+e,ur(i,function(s){var o=s.split(":");_i[o[1]]=n[o[0]]})})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent","rotation,rotationX,rotationY,skewX,skewY","transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective","0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY"),ur("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(r){Sr.units[r]="px"}),hr.registerPlugin(y3);var Fv=hr.registerPlugin(y3)||hr;Fv.core.Tween;var Cn,zu,b3,Vr,Da,_3,Mv,Lu,w3=function(){return typeof window<"u"},S3=function(){return Cn||w3()&&(Cn=window.gsap)&&Cn.registerPlugin&&Cn},Dv=function(e){return typeof e=="function"},T3=function(e){return console.warn(e)},$N=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],ii=.212671,Xr=.71516,Yr=.072169,C3=function(e){return Dv(Vr[e])?Vr[e]:Vr.filters[e]},Nu=function(e,t){var i=[],n=0,s=0,o,a;for(o=0;o<4;o++){for(a=0;a<5;a++)s=a===4?e[n+4]:0,i[n+a]=e[n]*t[a]+e[n+1]*t[a+5]+e[n+2]*t[a+10]+e[n+3]*t[a+15]+s;n+=5}return i},A3=function(e,t){var i=1-t,n=i*ii,s=i*Xr,o=i*Yr;return Nu([n+t,s,o,0,0,n,s+t,o,0,0,n,s,o+t,0,0,0,0,0,1,0],e)},E3=function(e,t,i){var n=zu(t),s=n[0]/255,o=n[1]/255,a=n[2]/255,l=1-i;return Nu([l+i*s*ii,i*s*Xr,i*s*Yr,0,0,i*o*ii,l+i*o*Xr,i*o*Yr,0,0,i*a*ii,i*a*Xr,l+i*a*Yr,0,0,0,0,0,1,0],e)},P3=function(e,t){t*=Math.PI/180;var i=Math.cos(t),n=Math.sin(t);return Nu([ii+i*(1-ii)+n*-ii,Xr+i*-Xr+n*-Xr,Yr+i*-Yr+n*(1-Yr),0,0,ii+i*-ii+n*.143,Xr+i*(1-Xr)+n*.14,Yr+i*-Yr+n*-.283,0,0,ii+i*-ii+n*-.787329,Xr+i*-Xr+n*Xr,Yr+i*(1-Yr)+n*Yr,0,0,0,0,0,1,0,0,0,0,0,1],e)},I3=function(e,t){return Nu([t,0,0,0,.5*(1-t),0,t,0,0,.5*(1-t),0,0,t,0,.5*(1-t),0,0,0,1,0],e)},B3=function(e,t){var i=C3(t),n=e.filters||[],s=n.length,o;for(i||T3(t+" not found. PixiPlugin.registerPIXI(PIXI)");--s>-1;)if(n[s]instanceof i)return n[s];return o=new i,t==="BlurFilter"&&(Lu?o.strength=0:o.blur=0),e.filters=[].concat(n,[o]),o},Nt=function(e,t,i,n){t.add(i,e,i[e],n[e]),t._props.push(e)},k3=function(e,t){var i=C3("ColorMatrixFilter"),n=new i;return n.matrix=t,n.brightness(e,!0),n.matrix},eG=function(e){var t={},i;for(i in e)t[i]=e[i];return t},Br={contrast:1,saturation:1,colorizeAmount:0,colorize:"rgb(255,255,255)",hue:0,brightness:1},tG=function(e,t,i){var n=B3(e,"ColorMatrixFilter"),s=e._gsColorMatrixFilter=e._gsColorMatrixFilter||eG(Br),o=t.combineCMF&&!("colorMatrixFilter"in t&&!t.colorMatrixFilter),a,l,u;for(u=n.matrix,t.resolution&&(n.resolution=t.resolution),t.matrix&&t.matrix.length===u.length?(l=t.matrix,s.contrast!==1&&Nt("contrast",i,s,Br),s.hue&&Nt("hue",i,s,Br),s.brightness!==1&&Nt("brightness",i,s,Br),s.colorizeAmount&&(Nt("colorize",i,s,Br),Nt("colorizeAmount",i,s,Br)),s.saturation!==1&&Nt("saturation",i,s,Br)):(l=$N.slice(),t.contrast!=null?(l=I3(l,+t.contrast),Nt("contrast",i,s,t)):s.contrast!==1&&(o?l=I3(l,s.contrast):Nt("contrast",i,s,Br)),t.hue!=null?(l=P3(l,+t.hue),Nt("hue",i,s,t)):s.hue&&(o?l=P3(l,s.hue):Nt("hue",i,s,Br)),t.brightness!=null?(l=k3(+t.brightness,l),Nt("brightness",i,s,t)):s.brightness!==1&&(o?l=k3(s.brightness,l):Nt("brightness",i,s,Br)),t.colorize!=null?(t.colorizeAmount="colorizeAmount"in t?+t.colorizeAmount:1,l=E3(l,t.colorize,t.colorizeAmount),Nt("colorize",i,s,t),Nt("colorizeAmount",i,s,t)):s.colorizeAmount&&(o?l=E3(l,s.colorize,s.colorizeAmount):(Nt("colorize",i,s,Br),Nt("colorizeAmount",i,s,Br))),t.saturation!=null?(l=A3(l,+t.saturation),Nt("saturation",i,s,t)):s.saturation!==1&&(o?l=A3(l,s.saturation):Nt("saturation",i,s,Br))),a=l.length;--a>-1;)l[a]!==u[a]&&i.add(u,a,u[a],l[a],"colorMatrixFilter");i._props.push("colorMatrixFilter")},rG=function(e,t){var i=t.t,n=t.p,s=t.color,o=t.set;o(i,n,s[0]<<16|s[1]<<8|s[2])},iG=function(e,t){var i=t.g;Lu?(i.fill(),i.stroke()):i&&(i.dirty++,i.clearDirty++)},nG=function(e,t){t.t.visible=!!t.t.alpha},R3=function(e,t,i,n){var s=e[t],o=zu(Dv(s)?e[t.indexOf("set")||!Dv(e["get"+t.substr(3)])?t:"get"+t.substr(3)]():s),a=zu(i);n._pt=new Da(n._pt,e,t,0,0,rG,{t:e,p:t,color:o,set:_3(e,t)}),n.add(o,0,o[0],a[0]),n.add(o,1,o[1],a[1]),n.add(o,2,o[2],a[2])},sG={tint:1,lineColor:1,fillColor:1,strokeColor:1},F3="position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),Ov={x:"position",y:"position",tileX:"tilePosition",tileY:"tilePosition"},oG={colorMatrixFilter:1,saturation:1,contrast:1,hue:1,colorize:1,colorizeAmount:1,brightness:1,combineCMF:1},Gu=Math.PI/180,M3=function(e){return typeof e=="string"},aG=function(e){return M3(e)&&e.charAt(1)==="="?e.substr(0,2)+parseFloat(e.substr(2))*Gu:e*Gu},lG=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e5)/1e5,t)},uG=function(e,t,i,n,s,o){var a=360*(o?Gu:1),l=M3(s),u=l&&s.charAt(1)==="="?+(s.charAt(0)+"1"):0,c=parseFloat(u?s.substr(2):s)*(o?Gu:1),h=u?c*u:c-n,d=n+h,f,p;return l&&(f=s.split("_")[1],f==="short"&&(h%=a,h!==h%(a/2)&&(h+=h<0?a:-a)),f==="cw"&&h<0?h=(h+a*1e10)%a-~~(h/a)*a:f==="ccw"&&h>0&&(h=(h-a*1e10)%a-~~(h/a)*a)),e._pt=p=new Da(e._pt,t,i,n,h,lG),p.e=d,p},D3=function(){if(!b3){Cn=S3(),Vr=b3=Vr||w3()&&window.PIXI;var e=Vr&&Vr.VERSION&&parseFloat(Vr.VERSION.split(".")[0])||0;Mv=e===4,Lu=e>=8,zu=function(i){return Cn.utils.splitColor((i+"").substr(0,2)==="0x"?"#"+i.substr(2):i)}}},Hu,Oa;for(Hu=0;Hu<F3.length;Hu++)Oa=F3[Hu],Ov[Oa+"X"]=Oa,Ov[Oa+"Y"]=Oa;var Uv={version:"3.14.2",name:"pixi",register:function(e,t,i){Cn=e,Da=i,_3=t.getSetter,D3()},headless:!0,registerPIXI:function(e){Vr=e},init:function(e,t,i,n,s){if(Vr||D3(),!Vr)return T3("PIXI was not found. PixiPlugin.registerPIXI(PIXI);"),!1;var o,a,l,u,c,h,d,f,p,m;for(h in t){if(o=Ov[h],l=t[h],o)a=~h.charAt(h.length-1).toLowerCase().indexOf("x")?"x":"y",this.add(e[o],a,e[o][a],o==="skew"?aG(l):l,0,0,0,0,0,1);else if(h==="scale"||h==="anchor"||h==="pivot"||h==="tileScale")this.add(e[h],"x",e[h].x,l),this.add(e[h],"y",e[h].y,l);else if(h==="rotation"||h==="angle")uG(this,e,h,e[h],l,h==="rotation");else if(oG[h])u||(tG(e,t.colorMatrixFilter||t,this),u=!0);else if(h==="blur"||h==="blurX"||h==="blurY"||h==="blurPadding"){if(c=B3(e,"BlurFilter"),this.add(c,h,c[h],l),t.blurPadding!==0)for(d=t.blurPadding||Math.max(c[h],l)*2,f=e.filters.length;--f>-1;)e.filters[f].padding=Math.max(e.filters[f].padding,d)}else if(sG[h])if((h==="lineColor"||h==="fillColor"||h==="strokeColor")&&e instanceof Vr.Graphics)for(p=("fillStyle"in e)?[e]:(e.geometry||e).graphicsData,m=h.substr(0,h.length-5),Lu&&m==="line"&&(m="stroke"),this._pt=new Da(this._pt,e,h,0,0,iG,{g:e.geometry||e}),f=p.length;--f>-1;)R3(Mv?p[f]:p[f][m+"Style"],Mv?h:"color",l,this);else R3(e,h,l,this);else h==="autoAlpha"?(this._pt=new Da(this._pt,e,"visible",0,0,nG),this.add(e,"alpha",e.alpha,l),this._props.push("alpha","visible")):h!=="resolution"&&this.add(e,h,"get",l);this._props.push(h)}}};S3()&&Cn.registerPlugin(Uv);var F=(r=>(r.Application="application",r.WebGLPipes="webgl-pipes",r.WebGLPipesAdaptor="webgl-pipes-adaptor",r.WebGLSystem="webgl-system",r.WebGPUPipes="webgpu-pipes",r.WebGPUPipesAdaptor="webgpu-pipes-adaptor",r.WebGPUSystem="webgpu-system",r.CanvasSystem="canvas-system",r.CanvasPipesAdaptor="canvas-pipes-adaptor",r.CanvasPipes="canvas-pipes",r.Asset="asset",r.LoadParser="load-parser",r.ResolveParser="resolve-parser",r.CacheParser="cache-parser",r.DetectionParser="detection-parser",r.MaskEffect="mask-effect",r.BlendMode="blend-mode",r.TextureSource="texture-source",r.Environment="environment",r.ShapeBuilder="shape-builder",r.Batcher="batcher",r))(F||{});const zv=r=>{if(typeof r=="function"||typeof r=="object"&&r.extension){if(!r.extension)throw new Error("Extension class must have an extension object");r={...typeof r.extension!="object"?{type:r.extension}:r.extension,ref:r}}if(typeof r=="object")r={...r};else throw new Error("Invalid extension type");return typeof r.type=="string"&&(r.type=[r.type]),r},Ua=(r,e)=>zv(r).priority??e,xe={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...r){return r.map(zv).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...r){return r.map(zv).forEach(e=>{e.type.forEach(t=>{const i=this._addHandlers,n=this._queue;i[t]?i[t]?.(e):(n[t]=n[t]||[],n[t]?.push(e))})}),this},handle(r,e,t){const i=this._addHandlers,n=this._removeHandlers;if(i[r]||n[r])throw new Error(`Extension type ${r} already has a handler`);i[r]=e,n[r]=t;const s=this._queue;return s[r]&&(s[r]?.forEach(o=>e(o)),delete s[r]),this},handleByMap(r,e){return this.handle(r,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByNamedList(r,e,t=-1){return this.handle(r,i=>{e.findIndex(s=>s.name===i.name)>=0||(e.push({name:i.name,value:i.ref}),e.sort((s,o)=>Ua(o.value,t)-Ua(s.value,t)))},i=>{const n=e.findIndex(s=>s.name===i.name);n!==-1&&e.splice(n,1)})},handleByList(r,e,t=-1){return this.handle(r,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((n,s)=>Ua(s,t)-Ua(n,t)))},i=>{const n=e.indexOf(i.ref);n!==-1&&e.splice(n,1)})},mixin(r,...e){for(const t of e)Object.defineProperties(r.prototype,Object.getOwnPropertyDescriptors(t))}},O3={extension:{type:F.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>Ate)}},U3={extension:{type:F.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Promise.resolve().then(()=>Ete)}};class ot{constructor(e,t,i){this._x=t||0,this._y=i||0,this._observer=e}clone(e){return new ot(e??this._observer,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this._observer._onUpdate(this)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this._observer._onUpdate(this)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this._observer._onUpdate(this))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this._observer._onUpdate(this))}}function Lv(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Nv={exports:{}},z3;function cG(){return z3||(z3=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(l,u,c){this.fn=l,this.context=u,this.once=c||!1}function s(l,u,c,h,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new n(c,h||l,d),p=t?t+u:u;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],f]:l._events[p].push(f):(l._events[p]=f,l._eventsCount++),l}function o(l,u){--l._eventsCount===0?l._events=new i:delete l._events[u]}function a(){this._events=new i,this._eventsCount=0}a.prototype.eventNames=function(){var u=[],c,h;if(this._eventsCount===0)return u;for(h in c=this._events)e.call(c,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(c)):u},a.prototype.listeners=function(u){var c=t?t+u:u,h=this._events[c];if(!h)return[];if(h.fn)return[h.fn];for(var d=0,f=h.length,p=new Array(f);d<f;d++)p[d]=h[d].fn;return p},a.prototype.listenerCount=function(u){var c=t?t+u:u,h=this._events[c];return h?h.fn?1:h.length:0},a.prototype.emit=function(u,c,h,d,f,p){var m=t?t+u:u;if(!this._events[m])return!1;var g=this._events[m],v=arguments.length,x,y;if(g.fn){switch(g.once&&this.removeListener(u,g.fn,void 0,!0),v){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,c),!0;case 3:return g.fn.call(g.context,c,h),!0;case 4:return g.fn.call(g.context,c,h,d),!0;case 5:return g.fn.call(g.context,c,h,d,f),!0;case 6:return g.fn.call(g.context,c,h,d,f,p),!0}for(y=1,x=new Array(v-1);y<v;y++)x[y-1]=arguments[y];g.fn.apply(g.context,x)}else{var b=g.length,T;for(y=0;y<b;y++)switch(g[y].once&&this.removeListener(u,g[y].fn,void 0,!0),v){case 1:g[y].fn.call(g[y].context);break;case 2:g[y].fn.call(g[y].context,c);break;case 3:g[y].fn.call(g[y].context,c,h);break;case 4:g[y].fn.call(g[y].context,c,h,d);break;default:if(!x)for(T=1,x=new Array(v-1);T<v;T++)x[T-1]=arguments[T];g[y].fn.apply(g[y].context,x)}}return!0},a.prototype.on=function(u,c,h){return s(this,u,c,h,!1)},a.prototype.once=function(u,c,h){return s(this,u,c,h,!0)},a.prototype.removeListener=function(u,c,h,d){var f=t?t+u:u;if(!this._events[f])return this;if(!c)return o(this,f),this;var p=this._events[f];if(p.fn)p.fn===c&&(!d||p.once)&&(!h||p.context===h)&&o(this,f);else{for(var m=0,g=[],v=p.length;m<v;m++)(p[m].fn!==c||d&&!p[m].once||h&&p[m].context!==h)&&g.push(p[m]);g.length?this._events[f]=g.length===1?g[0]:g:o(this,f)}return this},a.prototype.removeAllListeners=function(u){var c;return u?(c=t?t+u:u,this._events[c]&&o(this,c)):(this._events=new i,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=t,a.EventEmitter=a,r.exports=a})(Nv)),Nv.exports}var hG=cG();const fr=Lv(hG),L3=Math.PI*2,N3=180/Math.PI,ns=Math.PI/180;class me{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new me(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return Gv.x=0,Gv.y=0,Gv}}const Gv=new me;class ae{constructor(e=1,t=0,i=0,n=1,s=0,o=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=n,this.tx=s,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,n,s,o){return this.a=e,this.b=t,this.c=i,this.d=n,this.tx=s,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new me;const i=e.x,n=e.y;return t.x=this.a*i+this.c*n+this.tx,t.y=this.b*i+this.d*n+this.ty,t}applyInverse(e,t){t=t||new me;const i=this.a,n=this.b,s=this.c,o=this.d,a=this.tx,l=this.ty,u=1/(i*o+s*-n),c=e.x,h=e.y;return t.x=o*u*c+-s*u*h+(l*s-a*o)*u,t.y=i*u*h+-n*u*c+(-l*i+a*n)*u,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.a,s=this.c,o=this.tx;return this.a=n*t-this.b*i,this.b=n*i+this.b*t,this.c=s*t-this.d*i,this.d=s*i+this.d*t,this.tx=o*t-this.ty*i,this.ty=o*i+this.ty*t,this}append(e){const t=this.a,i=this.b,n=this.c,s=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*i+e.b*s,this.c=e.c*t+e.d*n,this.d=e.c*i+e.d*s,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*i+e.ty*s+this.ty,this}appendFrom(e,t){const i=e.a,n=e.b,s=e.c,o=e.d,a=e.tx,l=e.ty,u=t.a,c=t.b,h=t.c,d=t.d;return this.a=i*u+n*h,this.b=i*c+n*d,this.c=s*u+o*h,this.d=s*c+o*d,this.tx=a*u+l*h+t.tx,this.ty=a*c+l*d+t.ty,this}setTransform(e,t,i,n,s,o,a,l,u){return this.a=Math.cos(a+u)*s,this.b=Math.sin(a+u)*s,this.c=-Math.sin(a-l)*o,this.d=Math.cos(a-l)*o,this.tx=e-(i*this.a+n*this.c),this.ty=t-(i*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,n=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,n=this.c,s=this.d,o=e.pivot,a=-Math.atan2(-n,s),l=Math.atan2(i,t),u=Math.abs(a+l);return u<1e-5||Math.abs(L3-u)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=a,e.skew.y=l),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(n*n+s*s),e.position.x=this.tx+(o.x*t+o.y*n),e.position.y=this.ty+(o.x*i+o.y*s),e}invert(){const e=this.a,t=this.b,i=this.c,n=this.d,s=this.tx,o=e*n-t*i;return this.a=n/o,this.b=-t/o,this.c=-i/o,this.d=e/o,this.tx=(i*this.ty-n*s)/o,this.ty=-(e*this.ty-t*s)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new ae;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}equals(e){return e.a===this.a&&e.b===this.b&&e.c===this.c&&e.d===this.d&&e.tx===this.tx&&e.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return fG.identity()}static get shared(){return dG.identity()}}const dG=new ae,fG=new ae,ss=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],os=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],as=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ls=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Hv=[],G3=[],Wu=Math.sign;function pG(){for(let r=0;r<16;r++){const e=[];Hv.push(e);for(let t=0;t<16;t++){const i=Wu(ss[r]*ss[t]+as[r]*os[t]),n=Wu(os[r]*ss[t]+ls[r]*os[t]),s=Wu(ss[r]*as[t]+as[r]*ls[t]),o=Wu(os[r]*as[t]+ls[r]*ls[t]);for(let a=0;a<16;a++)if(ss[a]===i&&os[a]===n&&as[a]===s&&ls[a]===o){e.push(a);break}}}for(let r=0;r<16;r++){const e=new ae;e.set(ss[r],os[r],as[r],ls[r],0,0),G3.push(e)}}pG();const Be={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:r=>ss[r],uY:r=>os[r],vX:r=>as[r],vY:r=>ls[r],inv:r=>r&8?r&15:-r&7,add:(r,e)=>Hv[r][e],sub:(r,e)=>Hv[r][Be.inv(e)],rotate180:r=>r^4,isVertical:r=>(r&3)===2,byDirection:(r,e)=>Math.abs(r)*2<=Math.abs(e)?e>=0?Be.S:Be.N:Math.abs(e)*2<=Math.abs(r)?r>0?Be.E:Be.W:e>0?r>0?Be.SE:Be.SW:r>0?Be.NE:Be.NW,matrixAppendRotationInv:(r,e,t=0,i=0)=>{const n=G3[Be.inv(e)];n.tx=t,n.ty=i,r.append(n)},transformRectCoords:(r,e,t,i)=>{const{x:n,y:s,width:o,height:a}=r,{x:l,y:u,width:c,height:h}=e;return t===Be.E?(i.set(n+l,s+u,o,a),i):t===Be.S?i.set(c-s-a+l,n+u,a,o):t===Be.W?i.set(c-n-o+l,h-s-a+u,o,a):t===Be.N?i.set(s+l,h-n-o+u,a,o):i.set(n+l,s+u,o,a)}},Vu=[new me,new me,new me,new me];class he{constructor(e=0,t=0,i=0,n=0){this.type="rectangle",this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(n)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new he(0,0,0,0)}clone(){return new he(this.x,this.y,this.width,this.height)}copyFromBounds(e){return this.x=e.minX,this.y=e.minY,this.width=e.maxX-e.minX,this.height=e.maxY-e.minY,this}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e<this.x+this.width&&t>=this.y&&t<this.y+this.height}strokeContains(e,t,i,n=.5){const{width:s,height:o}=this;if(s<=0||o<=0)return!1;const a=this.x,l=this.y,u=i*(1-n),c=i-u,h=a-u,d=a+s+u,f=l-u,p=l+o+u,m=a+c,g=a+s-c,v=l+c,x=l+o-c;return e>=h&&e<=d&&t>=f&&t<=p&&!(e>m&&e<g&&t>v&&t<x)}intersects(e,t){if(!t){const E=this.x<e.x?e.x:this.x;if((this.right>e.right?e.right:this.right)<=E)return!1;const S=this.y<e.y?e.y:this.y;return(this.bottom>e.bottom?e.bottom:this.bottom)>S}const i=this.left,n=this.right,s=this.top,o=this.bottom;if(n<=i||o<=s)return!1;const a=Vu[0].set(e.left,e.top),l=Vu[1].set(e.left,e.bottom),u=Vu[2].set(e.right,e.top),c=Vu[3].set(e.right,e.bottom);if(u.x<=a.x||l.y<=a.y)return!1;const h=Math.sign(t.a*t.d-t.b*t.c);if(h===0||(t.apply(a,a),t.apply(l,l),t.apply(u,u),t.apply(c,c),Math.max(a.x,l.x,u.x,c.x)<=i||Math.min(a.x,l.x,u.x,c.x)>=n||Math.max(a.y,l.y,u.y,c.y)<=s||Math.min(a.y,l.y,u.y,c.y)>=o))return!1;const d=h*(l.y-a.y),f=h*(a.x-l.x),p=d*i+f*s,m=d*n+f*s,g=d*i+f*o,v=d*n+f*o;if(Math.max(p,m,g,v)<=d*a.x+f*a.y||Math.min(p,m,g,v)>=d*c.x+f*c.y)return!1;const x=h*(a.y-u.y),y=h*(u.x-a.x),b=x*i+y*s,T=x*n+y*s,P=x*i+y*o,A=x*n+y*o;return!(Math.max(b,T,P,A)<=x*a.x+y*a.y||Math.min(b,T,P,A)>=x*c.x+y*c.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),s=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=n,this.height=Math.max(s-n,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=n-this.y,this}scale(e,t=e){return this.x*=e,this.y*=t,this.width*=e,this.height*=t,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),s=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=n,this.height=s-n,this}getBounds(e){return e||(e=new he),e.copyFrom(this),e}containsRect(e){if(this.width<=0||this.height<=0)return!1;const t=e.x,i=e.y,n=e.x+e.width,s=e.y+e.height;return t>=this.x&&t<this.x+this.width&&i>=this.y&&i<this.y+this.height&&n>=this.x&&n<this.x+this.width&&s>=this.y&&s<this.y+this.height}set(e,t,i,n){return this.x=e,this.y=t,this.width=i,this.height=n,this}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const za={default:-1};function tt(r="default"){return za[r]===void 0&&(za[r]=-1),++za[r]}function mG(){for(const r in za)delete za[r]}const H3=new Set,Te="8.0.0",W3="8.3.4",oo={quiet:!1,noColor:!1},J=(r,e,t=3)=>{if(oo.quiet||H3.has(e))return;let i=new Error().stack;const n=`${e}
132
+ `.replace(/\t/g,"").replace(/#/g,"%23");return o.src=`data:image/svg+xml;charset=utf-8,${l}`,await new Promise(u=>{o.onload=u}),o}async function kL(r,e,t={}){const i=await BL(r,e,t),n=new OffscreenCanvas(i.width,i.height);return n.getContext("2d")?.drawImage(i,0,0,i.width,i.height),await createImageBitmap(n)}async function RL(r,e){const t={type:e,data:r},i=new ImageDecoder(t);await Promise.all([i.completed,i.tracks.ready]);const n=i.tracks.selectedTrack?.frameCount??1,s=[];for(let o=0;o<n;o+=1)s.push((await i.decode({frameIndex:o})).image);return s}let X0=class{all=new Map;on(e,t){const i=this.all.get(e);return i?i.push(t):this.all.set(e,[t]),()=>this.off(e,t)}once(e,t){const i=this.on(e,n=>{i(),t(n)});return i}off(e,t){const i=this.all.get(e);i&&(t?i.splice(i.indexOf(t)>>>0,1):this.all.set(e,[]))}emit(e,t){let i=this.all.get(e);i&&i.slice().forEach(n=>{n(t)}),i=this.all.get("*"),i&&i.slice().forEach(n=>{n(e,t)})}};const FL={x:{label:"X Position",min:-2e3,max:2e3,step:1,default:0},y:{label:"Y Position",min:-2e3,max:2e3,step:1,default:0},width:{label:"Width",min:-1e3,max:1e3,step:1,default:0},height:{label:"Height",min:-1e3,max:1e3,step:1,default:0},scale:{label:"Scale",min:0,max:3,step:.1,default:1},scaleX:{label:"Scale X",min:0,max:3,step:.1,default:1},scaleY:{label:"Scale Y",min:0,max:3,step:.1,default:1},opacity:{label:"Opacity",min:0,max:1,step:.01,default:1},angle:{label:"Rotation",min:-360,max:360,step:1,default:0},blur:{label:"Blur",min:0,max:100,step:1,default:0},brightness:{label:"Brightness",min:0,max:5,step:.1,default:1},mirror:{label:"Mirror",min:0,max:1,step:1,default:0},motionBlur:{label:"Motion Blur",min:0,max:500,step:1,default:0}},Su={linear:r=>r,easeInQuad:r=>r*r,easeOutQuad:r=>r*(2-r),easeInOutQuad:r=>r<.5?2*r*r:-1+(4-2*r)*r,easeInCubic:r=>r*r*r,easeOutCubic:r=>--r*r*r+1,easeInOutCubic:r=>r<.5?4*r*r*r:(r-1)*(2*r-2)*(2*r-2)+1,easeInSine:r=>1-Math.cos(r*Math.PI/2),easeOutSine:r=>Math.sin(r*Math.PI/2),easeInOutSine:r=>.5*(1-Math.cos(Math.PI*r)),easeInExpo:r=>r===0?0:Math.pow(2,10*(r-1)),easeOutExpo:r=>r===1?1:1-Math.pow(2,-10*r),easeInOutExpo:r=>r===0?0:r===1?1:(r/=.5)<1?.5*Math.pow(2,10*(r-1)):.5*(2-Math.pow(2,-10*--r)),easeInCirc:r=>1-Math.sqrt(1-r*r),easeOutCirc:r=>Math.sqrt(1-(r-1)*(r-1)),easeInOutCirc:r=>(r/=.5)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-2)*r)+1),slow:iS(.5,.5,!1)};function iS(r=.7,e=.7,t=!1){const i=Math.min(1,r),n=i<1?e:0,s=(1-i)/2,o=s+i;return a=>{const l=a+(.5-a)*n;if(a<s){const u=1-a/s;return t?1-u*u:l-u*u*u*l}if(a>o){const u=(a-o)/s;return t?a===1?0:1-u*u:l+(a-l)*u*u*u}return t?1:l}}function Y0(r){return typeof r=="function"?r:typeof r=="string"&&Su[r]?Su[r]:Su.linear}class B{id;type;options;params;frames;constructor(e,t,i="keyframes"){this.id=t.id||`keyframe_${Math.random().toString(36).substr(2,9)}`,this.type=i,this.params=e,this.options={duration:t.duration,delay:t.delay??0,easing:t.easing??"linear",iterCount:t.iterCount??1,id:this.id,disableGlobalEasing:t.disableGlobalEasing??!1},Array.isArray(e)?this.frames=e.map(n=>({progress:n.progress,props:n.props||n,easing:n.easing})):this.frames=Object.entries(e).filter(([n])=>{if(n==="from"||n==="to")return!0;const s=Number(n.replace("%",""));return!isNaN(s)&&s>=0&&s<=100}).map(([n,s])=>{const o={from:0,to:100}[n]??Number(n.replace("%","")),{easing:a,...l}=s;return{progress:o/100,props:l,easing:a}}).sort((n,s)=>n.progress-s.progress),this.frames.length>0&&this.frames[0].progress!==0&&this.frames.unshift({progress:0,props:{}}),this.frames.length>0&&this.frames[this.frames.length-1].progress!==1&&this.frames.push({progress:1,props:{}})}getTransform(e){const{duration:t,delay:i,iterCount:n,easing:s,disableGlobalEasing:o}=this.options,a=e-i;if(a<0)return{};if(n!==1/0&&a>=t){const c=this.interpolateProps(1);return"mirror"in c&&(c.mirror=0),c}const l=n===1/0?t:t/n;let u=a%l/l;return!o&&s!=="linear"&&(u=Y0(s)(u)),this.interpolateProps(u)}interpolateProps(e){const t=this.frames.findIndex(h=>h.progress>=e);if(t===-1)return this.frames[this.frames.length-1].props;if(t===0)return this.frames[0].props;const i=this.frames[t-1],n=this.frames[t],s=(e-i.progress)/(n.progress-i.progress),o=n.easing??(this.options.disableGlobalEasing?this.options.easing:"linear"),l=Y0(o)(s),u={},c=new Set([...Object.keys(i.props),...Object.keys(n.props)]);for(const h of c){const d=h,f=d==="scale"||d==="scaleX"||d==="scaleY"||d==="opacity"?1:0,p=i.props[d]??f,m=n.props[d]??f;u[d]=p+(m-p)*l}return u}}class ML{factories=new Map;constructor(){this.register("keyframes",(e,t)=>new B(t,e))}register(e,t){this.factories.set(e,t)}create(e,t,i){const n=this.factories.get(e);if(!n)throw new Error(`Animation "${e}" not found in registry`);return n(t,i)}has(e){return this.factories.has(e)}}const z=new ML;function Li(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function nS(r,e){r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.__proto__=e}var Sr={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},js={duration:.5,overwrite:!1,delay:0},q0,Yt,ht,Gr=1e8,$e=1/Gr,j0=Math.PI*2,DL=j0/4,OL=0,sS=Math.sqrt,UL=Math.cos,zL=Math.sin,Lt=function(e){return typeof e=="string"},_t=function(e){return typeof e=="function"},Ni=function(e){return typeof e=="number"},K0=function(e){return typeof e>"u"},xi=function(e){return typeof e=="object"},lr=function(e){return e!==!1},Q0=function(){return typeof window<"u"},Tu=function(e){return _t(e)||Lt(e)},oS=typeof ArrayBuffer=="function"&&ArrayBuffer.isView||function(){},Kt=Array.isArray,LL=/random\([^)]+\)/g,NL=/,\s*/g,aS=/(?:-?\.?\d|\.)+/gi,lS=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,Ks=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,Z0=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,uS=/[+-]=-?[.\d]+/,GL=/[^,'"\[\]\s]+/gi,HL=/^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,pt,yi,J0,$0,Tr={},Cu={},cS,hS=function(e){return(Cu=Zs(e,Tr))&&hr},ev=function(e,t){return console.warn("Invalid property",e,"set to",t,"Missing plugin? gsap.registerPlugin()")},_a=function(e,t){return!t&&console.warn(e)},dS=function(e,t){return e&&(Tr[e]=t)&&Cu&&(Cu[e]=t)||Tr},wa=function(){return 0},WL={suppressEvents:!0,isStart:!0,kill:!1},Au={suppressEvents:!0,kill:!1},VL={suppressEvents:!0},tv={},gn=[],rv={},fS,Cr={},iv={},pS=30,Eu=[],nv="",sv=function(e){var t=e[0],i,n;if(xi(t)||_t(t)||(e=[e]),!(i=(t._gsap||{}).harness)){for(n=Eu.length;n--&&!Eu[n].targetTest(t););i=Eu[n]}for(n=e.length;n--;)e[n]&&(e[n]._gsap||(e[n]._gsap=new WS(e[n],i)))||e.splice(n,1);return e},Kn=function(e){return e._gsap||sv(Wr(e))[0]._gsap},mS=function(e,t,i){return(i=e[t])&&_t(i)?e[t]():K0(i)&&e.getAttribute&&e.getAttribute(t)||i},ur=function(e,t){return(e=e.split(",")).forEach(t)||e},Et=function(e){return Math.round(e*1e5)/1e5||0},mt=function(e){return Math.round(e*1e7)/1e7||0},Qs=function(e,t){var i=t.charAt(0),n=parseFloat(t.substr(2));return e=parseFloat(e),i==="+"?e+n:i==="-"?e-n:i==="*"?e*n:e/n},XL=function(e,t){for(var i=t.length,n=0;e.indexOf(t[n])<0&&++n<i;);return n<i},Pu=function(){var e=gn.length,t=gn.slice(0),i,n;for(rv={},gn.length=0,i=0;i<e;i++)n=t[i],n&&n._lazy&&(n.render(n._lazy[0],n._lazy[1],!0)._lazy=0)},ov=function(e){return!!(e._initted||e._startAt||e.add)},gS=function(e,t,i,n){gn.length&&!Yt&&Pu(),e.render(t,i,!!(Yt&&t<0&&ov(e))),gn.length&&!Yt&&Pu()},vS=function(e){var t=parseFloat(e);return(t||t===0)&&(e+"").match(GL).length<2?t:Lt(e)?e.trim():e},xS=function(e){return e},Ar=function(e,t){for(var i in t)i in e||(e[i]=t[i]);return e},YL=function(e){return function(t,i){for(var n in i)n in t||n==="duration"&&e||n==="ease"||(t[n]=i[n])}},Zs=function(e,t){for(var i in t)e[i]=t[i];return e},yS=function r(e,t){for(var i in t)i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(e[i]=xi(t[i])?r(e[i]||(e[i]={}),t[i]):t[i]);return e},Iu=function(e,t){var i={},n;for(n in e)n in t||(i[n]=e[n]);return i},Sa=function(e){var t=e.parent||pt,i=e.keyframes?YL(Kt(e.keyframes)):Ar;if(lr(e.inherit))for(;t;)i(e,t.vars.defaults),t=t.parent||t._dp;return e},qL=function(e,t){for(var i=e.length,n=i===t.length;n&&i--&&e[i]===t[i];);return i<0},bS=function(e,t,i,n,s){var o=e[n],a;if(s)for(a=t[s];o&&o[s]>a;)o=o._prev;return o?(t._next=o._next,o._next=t):(t._next=e[i],e[i]=t),t._next?t._next._prev=t:e[n]=t,t._prev=o,t.parent=t._dp=e,t},Bu=function(e,t,i,n){i===void 0&&(i="_first"),n===void 0&&(n="_last");var s=t._prev,o=t._next;s?s._next=o:e[i]===t&&(e[i]=o),o?o._prev=s:e[n]===t&&(e[n]=s),t._next=t._prev=t.parent=null},vn=function(e,t){e.parent&&(!t||e.parent.autoRemoveChildren)&&e.parent.remove&&e.parent.remove(e),e._act=0},Qn=function(e,t){if(e&&(!t||t._end>e._dur||t._start<0))for(var i=e;i;)i._dirty=1,i=i.parent;return e},jL=function(e){for(var t=e.parent;t&&t.parent;)t._dirty=1,t.totalDuration(),t=t.parent;return e},av=function(e,t,i,n){return e._startAt&&(Yt?e._startAt.revert(Au):e.vars.immediateRender&&!e.vars.autoRevert||e._startAt.render(t,!0,n))},KL=function r(e){return!e||e._ts&&r(e.parent)},_S=function(e){return e._repeat?Js(e._tTime,e=e.duration()+e._rDelay)*e:0},Js=function(e,t){var i=Math.floor(e=mt(e/t));return e&&i===e?i-1:i},ku=function(e,t){return(e-t._start)*t._ts+(t._ts>=0?0:t._dirty?t.totalDuration():t._tDur)},Ru=function(e){return e._end=mt(e._start+(e._tDur/Math.abs(e._ts||e._rts||$e)||0))},Fu=function(e,t){var i=e._dp;return i&&i.smoothChildTiming&&e._ts&&(e._start=mt(i._time-(e._ts>0?t/e._ts:((e._dirty?e.totalDuration():e._tDur)-t)/-e._ts)),Ru(e),i._dirty||Qn(i,e)),e},wS=function(e,t){var i;if((t._time||!t._dur&&t._initted||t._start<e._time&&(t._dur||!t.add))&&(i=ku(e.rawTime(),t),(!t._dur||Ca(0,t.totalDuration(),i)-t._tTime>$e)&&t.render(i,!0)),Qn(e,t)._dp&&e._initted&&e._time>=e._dur&&e._ts){if(e._dur<e.duration())for(i=e;i._dp;)i.rawTime()>=0&&i.totalTime(i._tTime),i=i._dp;e._zTime=-$e}},bi=function(e,t,i,n){return t.parent&&vn(t),t._start=mt((Ni(i)?i:i||e!==pt?Hr(e,i,t):e._time)+t._delay),t._end=mt(t._start+(t.totalDuration()/Math.abs(t.timeScale())||0)),bS(e,t,"_first","_last",e._sort?"_start":0),lv(t)||(e._recent=t),n||wS(e,t),e._ts<0&&Fu(e,e._tTime),e},SS=function(e,t){return(Tr.ScrollTrigger||ev("scrollTrigger",t))&&Tr.ScrollTrigger.create(t,e)},TS=function(e,t,i,n,s){if(vv(e,t,s),!e._initted)return 1;if(!i&&e._pt&&!Yt&&(e._dur&&e.vars.lazy!==!1||!e._dur&&e.vars.lazy)&&fS!==Pr.frame)return gn.push(e),e._lazy=[s,n],1},QL=function r(e){var t=e.parent;return t&&t._ts&&t._initted&&!t._lock&&(t.rawTime()<0||r(t))},lv=function(e){var t=e.data;return t==="isFromStart"||t==="isStart"},ZL=function(e,t,i,n){var s=e.ratio,o=t<0||!t&&(!e._start&&QL(e)&&!(!e._initted&&lv(e))||(e._ts<0||e._dp._ts<0)&&!lv(e))?0:1,a=e._rDelay,l=0,u,c,h;if(a&&e._repeat&&(l=Ca(0,e._tDur,t),c=Js(l,a),e._yoyo&&c&1&&(o=1-o),c!==Js(e._tTime,a)&&(s=1-o,e.vars.repeatRefresh&&e._initted&&e.invalidate())),o!==s||Yt||n||e._zTime===$e||!t&&e._zTime){if(!e._initted&&TS(e,t,n,i,l))return;for(h=e._zTime,e._zTime=t||(i?$e:0),i||(i=t&&!h),e.ratio=o,e._from&&(o=1-o),e._time=0,e._tTime=l,u=e._pt;u;)u.r(o,u.d),u=u._next;t<0&&av(e,t,i,!0),e._onUpdate&&!i&&Er(e,"onUpdate"),l&&e._repeat&&!i&&e.parent&&Er(e,"onRepeat"),(t>=e._tDur||t<0)&&e.ratio===o&&(o&&vn(e,1),!i&&!Yt&&(Er(e,o?"onComplete":"onReverseComplete",!0),e._prom&&e._prom()))}else e._zTime||(e._zTime=t)},JL=function(e,t,i){var n;if(i>t)for(n=e._first;n&&n._start<=i;){if(n.data==="isPause"&&n._start>t)return n;n=n._next}else for(n=e._last;n&&n._start>=i;){if(n.data==="isPause"&&n._start<t)return n;n=n._prev}},$s=function(e,t,i,n){var s=e._repeat,o=mt(t)||0,a=e._tTime/e._tDur;return a&&!n&&(e._time*=o/e._dur),e._dur=o,e._tDur=s?s<0?1e10:mt(o*(s+1)+e._rDelay*s):o,a>0&&!n&&Fu(e,e._tTime=e._tDur*a),e.parent&&Ru(e),i||Qn(e.parent,e),e},CS=function(e){return e instanceof rr?Qn(e):$s(e,e._dur)},$L={_start:0,endTime:wa,totalDuration:wa},Hr=function r(e,t,i){var n=e.labels,s=e._recent||$L,o=e.duration()>=Gr?s.endTime(!1):e._dur,a,l,u;return Lt(t)&&(isNaN(t)||t in n)?(l=t.charAt(0),u=t.substr(-1)==="%",a=t.indexOf("="),l==="<"||l===">"?(a>=0&&(t=t.replace(/=/,"")),(l==="<"?s._start:s.endTime(s._repeat>=0))+(parseFloat(t.substr(1))||0)*(u?(a<0?s:i).totalDuration()/100:1)):a<0?(t in n||(n[t]=o),n[t]):(l=parseFloat(t.charAt(a-1)+t.substr(a+1)),u&&i&&(l=l/100*(Kt(i)?i[0]:i).totalDuration()),a>1?r(e,t.substr(0,a-1),i)+l:o+l)):t==null?o:+t},Ta=function(e,t,i){var n=Ni(t[1]),s=(n?2:1)+(e<2?0:1),o=t[s],a,l;if(n&&(o.duration=t[1]),o.parent=i,e){for(a=o,l=i;l&&!("immediateRender"in a);)a=l.vars.defaults||{},l=lr(l.vars.inherit)&&l.parent;o.immediateRender=lr(a.immediateRender),e<2?o.runBackwards=1:o.startAt=t[s-1]}return new Rt(t[0],o,t[s+1])},xn=function(e,t){return e||e===0?t(e):t},Ca=function(e,t,i){return i<e?e:i>t?t:i},Qt=function(e,t){return!Lt(e)||!(t=HL.exec(e))?"":t[1]},eN=function(e,t,i){return xn(i,function(n){return Ca(e,t,n)})},uv=[].slice,AS=function(e,t){return e&&xi(e)&&"length"in e&&(!t&&!e.length||e.length-1 in e&&xi(e[0]))&&!e.nodeType&&e!==yi},tN=function(e,t,i){return i===void 0&&(i=[]),e.forEach(function(n){var s;return Lt(n)&&!t||AS(n,1)?(s=i).push.apply(s,Wr(n)):i.push(n)})||i},Wr=function(e,t,i){return ht&&!t&&ht.selector?ht.selector(e):Lt(e)&&!i&&(J0||!to())?uv.call((t||$0).querySelectorAll(e),0):Kt(e)?tN(e,i):AS(e)?uv.call(e,0):e?[e]:[]},cv=function(e){return e=Wr(e)[0]||_a("Invalid scope")||{},function(t){var i=e.current||e.nativeElement||e;return Wr(t,i.querySelectorAll?i:i===e?_a("Invalid scope")||$0.createElement("div"):e)}},ES=function(e){return e.sort(function(){return .5-Math.random()})},PS=function(e){if(_t(e))return e;var t=xi(e)?e:{each:e},i=Zn(t.ease),n=t.from||0,s=parseFloat(t.base)||0,o={},a=n>0&&n<1,l=isNaN(n)||a,u=t.axis,c=n,h=n;return Lt(n)?c=h={center:.5,edges:.5,end:1}[n]||0:!a&&l&&(c=n[0],h=n[1]),function(d,f,p){var m=(p||t).length,g=o[m],v,x,y,b,T,P,A,E,_;if(!g){if(_=t.grid==="auto"?0:(t.grid||[1,Gr])[1],!_){for(A=-Gr;A<(A=p[_++].getBoundingClientRect().left)&&_<m;);_<m&&_--}for(g=o[m]=[],v=l?Math.min(_,m)*c-.5:n%_,x=_===Gr?0:l?m*h/_-.5:n/_|0,A=0,E=Gr,P=0;P<m;P++)y=P%_-v,b=x-(P/_|0),g[P]=T=u?Math.abs(u==="y"?b:y):sS(y*y+b*b),T>A&&(A=T),T<E&&(E=T);n==="random"&&ES(g),g.max=A-E,g.min=E,g.v=m=(parseFloat(t.amount)||parseFloat(t.each)*(_>m?m-1:u?u==="y"?m/_:_:Math.max(_,m/_))||0)*(n==="edges"?-1:1),g.b=m<0?s-m:s,g.u=Qt(t.amount||t.each)||0,i=i&&m<0?NS(i):i}return m=(g[d]-g.min)/g.max||0,mt(g.b+(i?i(m):m)*g.v)+g.u}},hv=function(e){var t=Math.pow(10,((e+"").split(".")[1]||"").length);return function(i){var n=mt(Math.round(parseFloat(i)/e)*e*t);return(n-n%1)/t+(Ni(i)?0:Qt(i))}},IS=function(e,t){var i=Kt(e),n,s;return!i&&xi(e)&&(n=i=e.radius||Gr,e.values?(e=Wr(e.values),(s=!Ni(e[0]))&&(n*=n)):e=hv(e.increment)),xn(t,i?_t(e)?function(o){return s=e(o),Math.abs(s-o)<=n?s:o}:function(o){for(var a=parseFloat(s?o.x:o),l=parseFloat(s?o.y:0),u=Gr,c=0,h=e.length,d,f;h--;)s?(d=e[h].x-a,f=e[h].y-l,d=d*d+f*f):d=Math.abs(e[h]-a),d<u&&(u=d,c=h);return c=!n||u<=n?e[c]:o,s||c===o||Ni(o)?c:c+Qt(o)}:hv(e))},BS=function(e,t,i,n){return xn(Kt(e)?!t:i===!0?!!(i=0):!n,function(){return Kt(e)?e[~~(Math.random()*e.length)]:(i=i||1e-5)&&(n=i<1?Math.pow(10,(i+"").length-2):1)&&Math.floor(Math.round((e-i/2+Math.random()*(t-e+i*.99))/i)*i*n)/n})},rN=function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(n){return t.reduce(function(s,o){return o(s)},n)}},iN=function(e,t){return function(i){return e(parseFloat(i))+(t||Qt(i))}},nN=function(e,t,i){return RS(e,t,0,1,i)},kS=function(e,t,i){return xn(i,function(n){return e[~~t(n)]})},sN=function r(e,t,i){var n=t-e;return Kt(e)?kS(e,r(0,e.length),t):xn(i,function(s){return(n+(s-e)%n)%n+e})},oN=function r(e,t,i){var n=t-e,s=n*2;return Kt(e)?kS(e,r(0,e.length-1),t):xn(i,function(o){return o=(s+(o-e)%s)%s||0,e+(o>n?s-o:o)})},Aa=function(e){return e.replace(LL,function(t){var i=t.indexOf("[")+1,n=t.substring(i||7,i?t.indexOf("]"):t.length-1).split(NL);return BS(i?n:+n[0],i?0:+n[1],+n[2]||1e-5)})},RS=function(e,t,i,n,s){var o=t-e,a=n-i;return xn(s,function(l){return i+((l-e)/o*a||0)})},aN=function r(e,t,i,n){var s=isNaN(e+t)?0:function(f){return(1-f)*e+f*t};if(!s){var o=Lt(e),a={},l,u,c,h,d;if(i===!0&&(n=1)&&(i=null),o)e={p:e},t={p:t};else if(Kt(e)&&!Kt(t)){for(c=[],h=e.length,d=h-2,u=1;u<h;u++)c.push(r(e[u-1],e[u]));h--,s=function(p){p*=h;var m=Math.min(d,~~p);return c[m](p-m)},i=t}else n||(e=Zs(Kt(e)?[]:{},e));if(!c){for(l in t)mv.call(a,e,l,"get",t[l]);s=function(p){return bv(p,a)||(o?e.p:e)}}}return xn(i,s)},FS=function(e,t,i){var n=e.labels,s=Gr,o,a,l;for(o in n)a=n[o]-t,a<0==!!i&&a&&s>(a=Math.abs(a))&&(l=o,s=a);return l},Er=function(e,t,i){var n=e.vars,s=n[t],o=ht,a=e._ctx,l,u,c;if(s)return l=n[t+"Params"],u=n.callbackScope||e,i&&gn.length&&Pu(),a&&(ht=a),c=l?s.apply(u,l):s.call(u),ht=o,c},Ea=function(e){return vn(e),e.scrollTrigger&&e.scrollTrigger.kill(!!Yt),e.progress()<1&&Er(e,"onInterrupt"),e},eo,MS=[],DS=function(e){if(e)if(e=!e.name&&e.default||e,Q0()||e.headless){var t=e.name,i=_t(e),n=t&&!i&&e.init?function(){this._props=[]}:e,s={init:wa,render:bv,add:mv,kill:SN,modifier:wN,rawVars:0},o={targetTest:0,get:0,getSetter:yv,aliases:{},register:0};if(to(),e!==n){if(Cr[t])return;Ar(n,Ar(Iu(e,s),o)),Zs(n.prototype,Zs(s,Iu(e,o))),Cr[n.prop=t]=n,e.targetTest&&(Eu.push(n),tv[t]=1),t=(t==="css"?"CSS":t.charAt(0).toUpperCase()+t.substr(1))+"Plugin"}dS(t,n),e.register&&e.register(hr,n,cr)}else MS.push(e)},et=255,Pa={aqua:[0,et,et],lime:[0,et,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,et],navy:[0,0,128],white:[et,et,et],olive:[128,128,0],yellow:[et,et,0],orange:[et,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[et,0,0],pink:[et,192,203],cyan:[0,et,et],transparent:[et,et,et,0]},dv=function(e,t,i){return e+=e<0?1:e>1?-1:0,(e*6<1?t+(i-t)*e*6:e<.5?i:e*3<2?t+(i-t)*(2/3-e)*6:t)*et+.5|0},OS=function(e,t,i){var n=e?Ni(e)?[e>>16,e>>8&et,e&et]:0:Pa.black,s,o,a,l,u,c,h,d,f,p;if(!n){if(e.substr(-1)===","&&(e=e.substr(0,e.length-1)),Pa[e])n=Pa[e];else if(e.charAt(0)==="#"){if(e.length<6&&(s=e.charAt(1),o=e.charAt(2),a=e.charAt(3),e="#"+s+s+o+o+a+a+(e.length===5?e.charAt(4)+e.charAt(4):"")),e.length===9)return n=parseInt(e.substr(1,6),16),[n>>16,n>>8&et,n&et,parseInt(e.substr(7),16)/255];e=parseInt(e.substr(1),16),n=[e>>16,e>>8&et,e&et]}else if(e.substr(0,3)==="hsl"){if(n=p=e.match(aS),!t)l=+n[0]%360/360,u=+n[1]/100,c=+n[2]/100,o=c<=.5?c*(u+1):c+u-c*u,s=c*2-o,n.length>3&&(n[3]*=1),n[0]=dv(l+1/3,s,o),n[1]=dv(l,s,o),n[2]=dv(l-1/3,s,o);else if(~e.indexOf("="))return n=e.match(lS),i&&n.length<4&&(n[3]=1),n}else n=e.match(aS)||Pa.transparent;n=n.map(Number)}return t&&!p&&(s=n[0]/et,o=n[1]/et,a=n[2]/et,h=Math.max(s,o,a),d=Math.min(s,o,a),c=(h+d)/2,h===d?l=u=0:(f=h-d,u=c>.5?f/(2-h-d):f/(h+d),l=h===s?(o-a)/f+(o<a?6:0):h===o?(a-s)/f+2:(s-o)/f+4,l*=60),n[0]=~~(l+.5),n[1]=~~(u*100+.5),n[2]=~~(c*100+.5)),i&&n.length<4&&(n[3]=1),n},US=function(e){var t=[],i=[],n=-1;return e.split(yn).forEach(function(s){var o=s.match(Ks)||[];t.push.apply(t,o),i.push(n+=o.length+1)}),t.c=i,t},zS=function(e,t,i){var n="",s=(e+n).match(yn),o=t?"hsla(":"rgba(",a=0,l,u,c,h;if(!s)return e;if(s=s.map(function(d){return(d=OS(d,t,1))&&o+(t?d[0]+","+d[1]+"%,"+d[2]+"%,"+d[3]:d.join(","))+")"}),i&&(c=US(e),l=i.c,l.join(n)!==c.c.join(n)))for(u=e.replace(yn,"1").split(Ks),h=u.length-1;a<h;a++)n+=u[a]+(~l.indexOf(a)?s.shift()||o+"0,0,0,0)":(c.length?c:s.length?s:i).shift());if(!u)for(u=e.split(yn),h=u.length-1;a<h;a++)n+=u[a]+s[a];return n+u[h]},yn=(function(){var r="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",e;for(e in Pa)r+="|"+e+"\\b";return new RegExp(r+")","gi")})(),lN=/hsl[a]?\(/,LS=function(e){var t=e.join(" "),i;if(yn.lastIndex=0,yn.test(t))return i=lN.test(t),e[1]=zS(e[1],i),e[0]=zS(e[0],i,US(e[1])),!0},Ia,Pr=(function(){var r=Date.now,e=500,t=33,i=r(),n=i,s=1e3/240,o=s,a=[],l,u,c,h,d,f,p=function m(g){var v=r()-n,x=g===!0,y,b,T,P;if((v>e||v<0)&&(i+=v-t),n+=v,T=n-i,y=T-o,(y>0||x)&&(P=++h.frame,d=T-h.time*1e3,h.time=T=T/1e3,o+=y+(y>=s?4:s-y),b=1),x||(l=u(m)),b)for(f=0;f<a.length;f++)a[f](T,d,P,g)};return h={time:0,frame:0,tick:function(){p(!0)},deltaRatio:function(g){return d/(1e3/(g||60))},wake:function(){cS&&(!J0&&Q0()&&(yi=J0=window,$0=yi.document||{},Tr.gsap=hr,(yi.gsapVersions||(yi.gsapVersions=[])).push(hr.version),hS(Cu||yi.GreenSockGlobals||!yi.gsap&&yi||{}),MS.forEach(DS)),c=typeof requestAnimationFrame<"u"&&requestAnimationFrame,l&&h.sleep(),u=c||function(g){return setTimeout(g,o-h.time*1e3+1|0)},Ia=1,p(2))},sleep:function(){(c?cancelAnimationFrame:clearTimeout)(l),Ia=0,u=wa},lagSmoothing:function(g,v){e=g||1/0,t=Math.min(v||33,e)},fps:function(g){s=1e3/(g||240),o=h.time*1e3+s},add:function(g,v,x){var y=v?function(b,T,P,A){g(b,T,P,A),h.remove(y)}:g;return h.remove(g),a[x?"unshift":"push"](y),to(),y},remove:function(g,v){~(v=a.indexOf(g))&&a.splice(v,1)&&f>=v&&f--},_listeners:a},h})(),to=function(){return!Ia&&Pr.wake()},Ne={},uN=/^[\d.\-M][\d.\-,\s]/,cN=/["']/g,hN=function(e){for(var t={},i=e.substr(1,e.length-3).split(":"),n=i[0],s=1,o=i.length,a,l,u;s<o;s++)l=i[s],a=s!==o-1?l.lastIndexOf(","):l.length,u=l.substr(0,a),t[n]=isNaN(u)?u.replace(cN,"").trim():+u,n=l.substr(a+1).trim();return t},dN=function(e){var t=e.indexOf("(")+1,i=e.indexOf(")"),n=e.indexOf("(",t);return e.substring(t,~n&&n<i?e.indexOf(")",i+1):i)},fN=function(e){var t=(e+"").split("("),i=Ne[t[0]];return i&&t.length>1&&i.config?i.config.apply(null,~e.indexOf("{")?[hN(t[1])]:dN(e).split(",").map(vS)):Ne._CE&&uN.test(e)?Ne._CE("",e):i},NS=function(e){return function(t){return 1-e(1-t)}},GS=function r(e,t){for(var i=e._first,n;i;)i instanceof rr?r(i,t):i.vars.yoyoEase&&(!i._yoyo||!i._repeat)&&i._yoyo!==t&&(i.timeline?r(i.timeline,t):(n=i._ease,i._ease=i._yEase,i._yEase=n,i._yoyo=t)),i=i._next},Zn=function(e,t){return e&&(_t(e)?e:Ne[e]||fN(e))||t},Jn=function(e,t,i,n){i===void 0&&(i=function(l){return 1-t(1-l)}),n===void 0&&(n=function(l){return l<.5?t(l*2)/2:1-t((1-l)*2)/2});var s={easeIn:t,easeOut:i,easeInOut:n},o;return ur(e,function(a){Ne[a]=Tr[a]=s,Ne[o=a.toLowerCase()]=i;for(var l in s)Ne[o+(l==="easeIn"?".in":l==="easeOut"?".out":".inOut")]=Ne[a+"."+l]=s[l]}),s},HS=function(e){return function(t){return t<.5?(1-e(1-t*2))/2:.5+e((t-.5)*2)/2}},fv=function r(e,t,i){var n=t>=1?t:1,s=(i||(e?.3:.45))/(t<1?t:1),o=s/j0*(Math.asin(1/n)||0),a=function(c){return c===1?1:n*Math.pow(2,-10*c)*zL((c-o)*s)+1},l=e==="out"?a:e==="in"?function(u){return 1-a(1-u)}:HS(a);return s=j0/s,l.config=function(u,c){return r(e,u,c)},l},pv=function r(e,t){t===void 0&&(t=1.70158);var i=function(o){return o?--o*o*((t+1)*o+t)+1:0},n=e==="out"?i:e==="in"?function(s){return 1-i(1-s)}:HS(i);return n.config=function(s){return r(e,s)},n};ur("Linear,Quad,Cubic,Quart,Quint,Strong",function(r,e){var t=e<5?e+1:e;Jn(r+",Power"+(t-1),e?function(i){return Math.pow(i,t)}:function(i){return i},function(i){return 1-Math.pow(1-i,t)},function(i){return i<.5?Math.pow(i*2,t)/2:1-Math.pow((1-i)*2,t)/2})}),Ne.Linear.easeNone=Ne.none=Ne.Linear.easeIn,Jn("Elastic",fv("in"),fv("out"),fv()),(function(r,e){var t=1/e,i=2*t,n=2.5*t,s=function(a){return a<t?r*a*a:a<i?r*Math.pow(a-1.5/e,2)+.75:a<n?r*(a-=2.25/e)*a+.9375:r*Math.pow(a-2.625/e,2)+.984375};Jn("Bounce",function(o){return 1-s(1-o)},s)})(7.5625,2.75),Jn("Expo",function(r){return Math.pow(2,10*(r-1))*r+r*r*r*r*r*r*(1-r)}),Jn("Circ",function(r){return-(sS(1-r*r)-1)}),Jn("Sine",function(r){return r===1?1:-UL(r*DL)+1}),Jn("Back",pv("in"),pv("out"),pv()),Ne.SteppedEase=Ne.steps=Tr.SteppedEase={config:function(e,t){e===void 0&&(e=1);var i=1/e,n=e+(t?0:1),s=t?1:0,o=1-$e;return function(a){return((n*Ca(0,o,a)|0)+s)*i}}},js.ease=Ne["quad.out"],ur("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",function(r){return nv+=r+","+r+"Params,"});var WS=function(e,t){this.id=OL++,e._gsap=this,this.target=e,this.harness=t,this.get=t?t.get:mS,this.set=t?t.getSetter:yv},Ba=(function(){function r(t){this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat===1/0?-2:t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,$s(this,+t.duration,1,1),this.data=t.data,ht&&(this._ctx=ht,ht.data.push(this)),Ia||Pr.wake()}var e=r.prototype;return e.delay=function(i){return i||i===0?(this.parent&&this.parent.smoothChildTiming&&this.startTime(this._start+i-this._delay),this._delay=i,this):this._delay},e.duration=function(i){return arguments.length?this.totalDuration(this._repeat>0?i+(i+this._rDelay)*this._repeat:i):this.totalDuration()&&this._dur},e.totalDuration=function(i){return arguments.length?(this._dirty=0,$s(this,this._repeat<0?i:(i-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},e.totalTime=function(i,n){if(to(),!arguments.length)return this._tTime;var s=this._dp;if(s&&s.smoothChildTiming&&this._ts){for(Fu(this,i),!s._dp||s.parent||wS(s,this);s&&s.parent;)s.parent._time!==s._start+(s._ts>=0?s._tTime/s._ts:(s.totalDuration()-s._tTime)/-s._ts)&&s.totalTime(s._tTime,!0),s=s.parent;!this.parent&&this._dp.autoRemoveChildren&&(this._ts>0&&i<this._tDur||this._ts<0&&i>0||!this._tDur&&!i)&&bi(this._dp,this,this._start-this._delay)}return(this._tTime!==i||!this._dur&&!n||this._initted&&Math.abs(this._zTime)===$e||!this._initted&&this._dur&&i||!i&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=i),gS(this,i,n)),this},e.time=function(i,n){return arguments.length?this.totalTime(Math.min(this.totalDuration(),i+_S(this))%(this._dur+this._rDelay)||(i?this._dur:0),n):this._time},e.totalProgress=function(i,n){return arguments.length?this.totalTime(this.totalDuration()*i,n):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.rawTime()>=0&&this._initted?1:0},e.progress=function(i,n){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&!(this.iteration()&1)?1-i:i)+_S(this),n):this.duration()?Math.min(1,this._time/this._dur):this.rawTime()>0?1:0},e.iteration=function(i,n){var s=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(i-1)*s,n):this._repeat?Js(this._tTime,s)+1:1},e.timeScale=function(i,n){if(!arguments.length)return this._rts===-$e?0:this._rts;if(this._rts===i)return this;var s=this.parent&&this._ts?ku(this.parent._time,this):this._tTime;return this._rts=+i||0,this._ts=this._ps||i===-$e?0:this._rts,this.totalTime(Ca(-Math.abs(this._delay),this.totalDuration(),s),n!==!1),Ru(this),jL(this)},e.paused=function(i){return arguments.length?(this._ps!==i&&(this._ps=i,i?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(to(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,this.progress()===1&&Math.abs(this._zTime)!==$e&&(this._tTime-=$e)))),this):this._ps},e.startTime=function(i){if(arguments.length){this._start=mt(i);var n=this.parent||this._dp;return n&&(n._sort||!this.parent)&&bi(n,this,this._start-this._delay),this}return this._start},e.endTime=function(i){return this._start+(lr(i)?this.totalDuration():this.duration())/Math.abs(this._ts||1)},e.rawTime=function(i){var n=this.parent||this._dp;return n?i&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?ku(n.rawTime(i),this):this._tTime:this._tTime},e.revert=function(i){i===void 0&&(i=VL);var n=Yt;return Yt=i,ov(this)&&(this.timeline&&this.timeline.revert(i),this.totalTime(-.01,i.suppressEvents)),this.data!=="nested"&&i.kill!==!1&&this.kill(),Yt=n,this},e.globalTime=function(i){for(var n=this,s=arguments.length?i:n.rawTime();n;)s=n._start+s/(Math.abs(n._ts)||1),n=n._dp;return!this.parent&&this._sat?this._sat.globalTime(i):s},e.repeat=function(i){return arguments.length?(this._repeat=i===1/0?-2:i,CS(this)):this._repeat===-2?1/0:this._repeat},e.repeatDelay=function(i){if(arguments.length){var n=this._time;return this._rDelay=i,CS(this),n?this.time(n):this}return this._rDelay},e.yoyo=function(i){return arguments.length?(this._yoyo=i,this):this._yoyo},e.seek=function(i,n){return this.totalTime(Hr(this,i),lr(n))},e.restart=function(i,n){return this.play().totalTime(i?-this._delay:0,lr(n)),this._dur||(this._zTime=-$e),this},e.play=function(i,n){return i!=null&&this.seek(i,n),this.reversed(!1).paused(!1)},e.reverse=function(i,n){return i!=null&&this.seek(i||this.totalDuration(),n),this.reversed(!0).paused(!1)},e.pause=function(i,n){return i!=null&&this.seek(i,n),this.paused(!0)},e.resume=function(){return this.paused(!1)},e.reversed=function(i){return arguments.length?(!!i!==this.reversed()&&this.timeScale(-this._rts||(i?-$e:0)),this):this._rts<0},e.invalidate=function(){return this._initted=this._act=0,this._zTime=-$e,this},e.isActive=function(){var i=this.parent||this._dp,n=this._start,s;return!!(!i||this._ts&&this._initted&&i.isActive()&&(s=i.rawTime(!0))>=n&&s<this.endTime(!0)-$e)},e.eventCallback=function(i,n,s){var o=this.vars;return arguments.length>1?(n?(o[i]=n,s&&(o[i+"Params"]=s),i==="onUpdate"&&(this._onUpdate=n)):delete o[i],this):o[i]},e.then=function(i){var n=this,s=n._prom;return new Promise(function(o){var a=_t(i)?i:xS,l=function(){var c=n.then;n.then=null,s&&s(),_t(a)&&(a=a(n))&&(a.then||a===n)&&(n.then=c),o(a),n.then=c};n._initted&&n.totalProgress()===1&&n._ts>=0||!n._tTime&&n._ts<0?l():n._prom=l})},e.kill=function(){Ea(this)},r})();Ar(Ba.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-$e,_prom:0,_ps:!1,_rts:1});var rr=(function(r){nS(e,r);function e(i,n){var s;return i===void 0&&(i={}),s=r.call(this,i)||this,s.labels={},s.smoothChildTiming=!!i.smoothChildTiming,s.autoRemoveChildren=!!i.autoRemoveChildren,s._sort=lr(i.sortChildren),pt&&bi(i.parent||pt,Li(s),n),i.reversed&&s.reverse(),i.paused&&s.paused(!0),i.scrollTrigger&&SS(Li(s),i.scrollTrigger),s}var t=e.prototype;return t.to=function(n,s,o){return Ta(0,arguments,this),this},t.from=function(n,s,o){return Ta(1,arguments,this),this},t.fromTo=function(n,s,o,a){return Ta(2,arguments,this),this},t.set=function(n,s,o){return s.duration=0,s.parent=this,Sa(s).repeatDelay||(s.repeat=0),s.immediateRender=!!s.immediateRender,new Rt(n,s,Hr(this,o),1),this},t.call=function(n,s,o){return bi(this,Rt.delayedCall(0,n,s),o)},t.staggerTo=function(n,s,o,a,l,u,c){return o.duration=s,o.stagger=o.stagger||a,o.onComplete=u,o.onCompleteParams=c,o.parent=this,new Rt(n,o,Hr(this,l)),this},t.staggerFrom=function(n,s,o,a,l,u,c){return o.runBackwards=1,Sa(o).immediateRender=lr(o.immediateRender),this.staggerTo(n,s,o,a,l,u,c)},t.staggerFromTo=function(n,s,o,a,l,u,c,h){return a.startAt=o,Sa(a).immediateRender=lr(a.immediateRender),this.staggerTo(n,s,a,l,u,c,h)},t.render=function(n,s,o){var a=this._time,l=this._dirty?this.totalDuration():this._tDur,u=this._dur,c=n<=0?0:mt(n),h=this._zTime<0!=n<0&&(this._initted||!u),d,f,p,m,g,v,x,y,b,T,P,A;if(this!==pt&&c>l&&n>=0&&(c=l),c!==this._tTime||o||h){if(a!==this._time&&u&&(c+=this._time-a,n+=this._time-a),d=c,b=this._start,y=this._ts,v=!y,h&&(u||(a=this._zTime),(n||!s)&&(this._zTime=n)),this._repeat){if(P=this._yoyo,g=u+this._rDelay,this._repeat<-1&&n<0)return this.totalTime(g*100+n,s,o);if(d=mt(c%g),c===l?(m=this._repeat,d=u):(T=mt(c/g),m=~~T,m&&m===T&&(d=u,m--),d>u&&(d=u)),T=Js(this._tTime,g),!a&&this._tTime&&T!==m&&this._tTime-T*g-this._dur<=0&&(T=m),P&&m&1&&(d=u-d,A=1),m!==T&&!this._lock){var E=P&&T&1,_=E===(P&&m&1);if(m<T&&(E=!E),a=E?0:c%u?u:c,this._lock=1,this.render(a||(A?0:mt(m*g)),s,!u)._lock=0,this._tTime=c,!s&&this.parent&&Er(this,"onRepeat"),this.vars.repeatRefresh&&!A&&(this.invalidate()._lock=1,T=m),a&&a!==this._time||v!==!this._ts||this.vars.onRepeat&&!this.parent&&!this._act)return this;if(u=this._dur,l=this._tDur,_&&(this._lock=2,a=E?u:-1e-4,this.render(a,!0),this.vars.repeatRefresh&&!A&&this.invalidate()),this._lock=0,!this._ts&&!v)return this;GS(this,A)}}if(this._hasPause&&!this._forcing&&this._lock<2&&(x=JL(this,mt(a),mt(d)),x&&(c-=d-(d=x._start))),this._tTime=c,this._time=d,this._act=!y,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=n,a=0),!a&&c&&u&&!s&&!T&&(Er(this,"onStart"),this._tTime!==c))return this;if(d>=a&&n>=0)for(f=this._first;f;){if(p=f._next,(f._act||d>=f._start)&&f._ts&&x!==f){if(f.parent!==this)return this.render(n,s,o);if(f.render(f._ts>0?(d-f._start)*f._ts:(f._dirty?f.totalDuration():f._tDur)+(d-f._start)*f._ts,s,o),d!==this._time||!this._ts&&!v){x=0,p&&(c+=this._zTime=-$e);break}}f=p}else{f=this._last;for(var S=n<0?n:d;f;){if(p=f._prev,(f._act||S<=f._end)&&f._ts&&x!==f){if(f.parent!==this)return this.render(n,s,o);if(f.render(f._ts>0?(S-f._start)*f._ts:(f._dirty?f.totalDuration():f._tDur)+(S-f._start)*f._ts,s,o||Yt&&ov(f)),d!==this._time||!this._ts&&!v){x=0,p&&(c+=this._zTime=S?-$e:$e);break}}f=p}}if(x&&!s&&(this.pause(),x.render(d>=a?0:-$e)._zTime=d>=a?1:-1,this._ts))return this._start=b,Ru(this),this.render(n,s,o);this._onUpdate&&!s&&Er(this,"onUpdate",!0),(c===l&&this._tTime>=this.totalDuration()||!c&&a)&&(b===this._start||Math.abs(y)!==Math.abs(this._ts))&&(this._lock||((n||!u)&&(c===l&&this._ts>0||!c&&this._ts<0)&&vn(this,1),!s&&!(n<0&&!a)&&(c||a||!l)&&(Er(this,c===l&&n>=0?"onComplete":"onReverseComplete",!0),this._prom&&!(c<l&&this.timeScale()>0)&&this._prom())))}return this},t.add=function(n,s){var o=this;if(Ni(s)||(s=Hr(this,s,n)),!(n instanceof Ba)){if(Kt(n))return n.forEach(function(a){return o.add(a,s)}),this;if(Lt(n))return this.addLabel(n,s);if(_t(n))n=Rt.delayedCall(0,n);else return this}return this!==n?bi(this,n,s):this},t.getChildren=function(n,s,o,a){n===void 0&&(n=!0),s===void 0&&(s=!0),o===void 0&&(o=!0),a===void 0&&(a=-Gr);for(var l=[],u=this._first;u;)u._start>=a&&(u instanceof Rt?s&&l.push(u):(o&&l.push(u),n&&l.push.apply(l,u.getChildren(!0,s,o)))),u=u._next;return l},t.getById=function(n){for(var s=this.getChildren(1,1,1),o=s.length;o--;)if(s[o].vars.id===n)return s[o]},t.remove=function(n){return Lt(n)?this.removeLabel(n):_t(n)?this.killTweensOf(n):(n.parent===this&&Bu(this,n),n===this._recent&&(this._recent=this._last),Qn(this))},t.totalTime=function(n,s){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=mt(Pr.time-(this._ts>0?n/this._ts:(this.totalDuration()-n)/-this._ts))),r.prototype.totalTime.call(this,n,s),this._forcing=0,this):this._tTime},t.addLabel=function(n,s){return this.labels[n]=Hr(this,s),this},t.removeLabel=function(n){return delete this.labels[n],this},t.addPause=function(n,s,o){var a=Rt.delayedCall(0,s||wa,o);return a.data="isPause",this._hasPause=1,bi(this,a,Hr(this,n))},t.removePause=function(n){var s=this._first;for(n=Hr(this,n);s;)s._start===n&&s.data==="isPause"&&vn(s),s=s._next},t.killTweensOf=function(n,s,o){for(var a=this.getTweensOf(n,o),l=a.length;l--;)bn!==a[l]&&a[l].kill(n,s);return this},t.getTweensOf=function(n,s){for(var o=[],a=Wr(n),l=this._first,u=Ni(s),c;l;)l instanceof Rt?XL(l._targets,a)&&(u?(!bn||l._initted&&l._ts)&&l.globalTime(0)<=s&&l.globalTime(l.totalDuration())>s:!s||l.isActive())&&o.push(l):(c=l.getTweensOf(a,s)).length&&o.push.apply(o,c),l=l._next;return o},t.tweenTo=function(n,s){s=s||{};var o=this,a=Hr(o,n),l=s,u=l.startAt,c=l.onStart,h=l.onStartParams,d=l.immediateRender,f,p=Rt.to(o,Ar({ease:s.ease||"none",lazy:!1,immediateRender:!1,time:a,overwrite:"auto",duration:s.duration||Math.abs((a-(u&&"time"in u?u.time:o._time))/o.timeScale())||$e,onStart:function(){if(o.pause(),!f){var g=s.duration||Math.abs((a-(u&&"time"in u?u.time:o._time))/o.timeScale());p._dur!==g&&$s(p,g,0,1).render(p._time,!0,!0),f=1}c&&c.apply(p,h||[])}},s));return d?p.render(0):p},t.tweenFromTo=function(n,s,o){return this.tweenTo(s,Ar({startAt:{time:Hr(this,n)}},o))},t.recent=function(){return this._recent},t.nextLabel=function(n){return n===void 0&&(n=this._time),FS(this,Hr(this,n))},t.previousLabel=function(n){return n===void 0&&(n=this._time),FS(this,Hr(this,n),1)},t.currentLabel=function(n){return arguments.length?this.seek(n,!0):this.previousLabel(this._time+$e)},t.shiftChildren=function(n,s,o){o===void 0&&(o=0);var a=this._first,l=this.labels,u;for(n=mt(n);a;)a._start>=o&&(a._start+=n,a._end+=n),a=a._next;if(s)for(u in l)l[u]>=o&&(l[u]+=n);return Qn(this)},t.invalidate=function(n){var s=this._first;for(this._lock=0;s;)s.invalidate(n),s=s._next;return r.prototype.invalidate.call(this,n)},t.clear=function(n){n===void 0&&(n=!0);for(var s=this._first,o;s;)o=s._next,this.remove(s),s=o;return this._dp&&(this._time=this._tTime=this._pTime=0),n&&(this.labels={}),Qn(this)},t.totalDuration=function(n){var s=0,o=this,a=o._last,l=Gr,u,c,h;if(arguments.length)return o.timeScale((o._repeat<0?o.duration():o.totalDuration())/(o.reversed()?-n:n));if(o._dirty){for(h=o.parent;a;)u=a._prev,a._dirty&&a.totalDuration(),c=a._start,c>l&&o._sort&&a._ts&&!o._lock?(o._lock=1,bi(o,a,c-a._delay,1)._lock=0):l=c,c<0&&a._ts&&(s-=c,(!h&&!o._dp||h&&h.smoothChildTiming)&&(o._start+=mt(c/o._ts),o._time-=c,o._tTime-=c),o.shiftChildren(-c,!1,-1/0),l=0),a._end>s&&a._ts&&(s=a._end),a=u;$s(o,o===pt&&o._time>s?o._time:s,1,1),o._dirty=0}return o._tDur},e.updateRoot=function(n){if(pt._ts&&(gS(pt,ku(n,pt)),fS=Pr.frame),Pr.frame>=pS){pS+=Sr.autoSleep||120;var s=pt._first;if((!s||!s._ts)&&Sr.autoSleep&&Pr._listeners.length<2){for(;s&&!s._ts;)s=s._next;s||Pr.sleep()}}},e})(Ba);Ar(rr.prototype,{_lock:0,_hasPause:0,_forcing:0});var pN=function(e,t,i,n,s,o,a){var l=new cr(this._pt,e,t,0,1,KS,null,s),u=0,c=0,h,d,f,p,m,g,v,x;for(l.b=i,l.e=n,i+="",n+="",(v=~n.indexOf("random("))&&(n=Aa(n)),o&&(x=[i,n],o(x,e,t),i=x[0],n=x[1]),d=i.match(Z0)||[];h=Z0.exec(n);)p=h[0],m=n.substring(u,h.index),f?f=(f+1)%5:m.substr(-5)==="rgba("&&(f=1),p!==d[c++]&&(g=parseFloat(d[c-1])||0,l._pt={_next:l._pt,p:m||c===1?m:",",s:g,c:p.charAt(1)==="="?Qs(g,p)-g:parseFloat(p)-g,m:f&&f<4?Math.round:0},u=Z0.lastIndex);return l.c=u<n.length?n.substring(u,n.length):"",l.fp=a,(uS.test(n)||v)&&(l.e=0),this._pt=l,l},mv=function(e,t,i,n,s,o,a,l,u,c){_t(n)&&(n=n(s||0,e,o));var h=e[t],d=i!=="get"?i:_t(h)?u?e[t.indexOf("set")||!_t(e["get"+t.substr(3)])?t:"get"+t.substr(3)](u):e[t]():h,f=_t(h)?u?yN:qS:xv,p;if(Lt(n)&&(~n.indexOf("random(")&&(n=Aa(n)),n.charAt(1)==="="&&(p=Qs(d,n)+(Qt(d)||0),(p||p===0)&&(n=p))),!c||d!==n||gv)return!isNaN(d*n)&&n!==""?(p=new cr(this._pt,e,t,+d||0,n-(d||0),typeof h=="boolean"?_N:jS,0,f),u&&(p.fp=u),a&&p.modifier(a,this,e),this._pt=p):(!h&&!(t in e)&&ev(t,n),pN.call(this,e,t,d,n,f,l||Sr.stringFilter,u))},mN=function(e,t,i,n,s){if(_t(e)&&(e=ka(e,s,t,i,n)),!xi(e)||e.style&&e.nodeType||Kt(e)||oS(e))return Lt(e)?ka(e,s,t,i,n):e;var o={},a;for(a in e)o[a]=ka(e[a],s,t,i,n);return o},VS=function(e,t,i,n,s,o){var a,l,u,c;if(Cr[e]&&(a=new Cr[e]).init(s,a.rawVars?t[e]:mN(t[e],n,s,o,i),i,n,o)!==!1&&(i._pt=l=new cr(i._pt,s,e,0,1,a.render,a,0,a.priority),i!==eo))for(u=i._ptLookup[i._targets.indexOf(s)],c=a._props.length;c--;)u[a._props[c]]=l;return a},bn,gv,vv=function r(e,t,i){var n=e.vars,s=n.ease,o=n.startAt,a=n.immediateRender,l=n.lazy,u=n.onUpdate,c=n.runBackwards,h=n.yoyoEase,d=n.keyframes,f=n.autoRevert,p=e._dur,m=e._startAt,g=e._targets,v=e.parent,x=v&&v.data==="nested"?v.vars.targets:g,y=e._overwrite==="auto"&&!q0,b=e.timeline,T,P,A,E,_,S,I,M,O,U,X,D,k;if(b&&(!d||!s)&&(s="none"),e._ease=Zn(s,js.ease),e._yEase=h?NS(Zn(h===!0?s:h,js.ease)):0,h&&e._yoyo&&!e._repeat&&(h=e._yEase,e._yEase=e._ease,e._ease=h),e._from=!b&&!!n.runBackwards,!b||d&&!n.stagger){if(M=g[0]?Kn(g[0]).harness:0,D=M&&n[M.prop],T=Iu(n,tv),m&&(m._zTime<0&&m.progress(1),t<0&&c&&a&&!f?m.render(-1,!0):m.revert(c&&p?Au:WL),m._lazy=0),o){if(vn(e._startAt=Rt.set(g,Ar({data:"isStart",overwrite:!1,parent:v,immediateRender:!0,lazy:!m&&lr(l),startAt:null,delay:0,onUpdate:u&&function(){return Er(e,"onUpdate")},stagger:0},o))),e._startAt._dp=0,e._startAt._sat=e,t<0&&(Yt||!a&&!f)&&e._startAt.revert(Au),a&&p&&t<=0&&i<=0){t&&(e._zTime=t);return}}else if(c&&p&&!m){if(t&&(a=!1),A=Ar({overwrite:!1,data:"isFromStart",lazy:a&&!m&&lr(l),immediateRender:a,stagger:0,parent:v},T),D&&(A[M.prop]=D),vn(e._startAt=Rt.set(g,A)),e._startAt._dp=0,e._startAt._sat=e,t<0&&(Yt?e._startAt.revert(Au):e._startAt.render(-1,!0)),e._zTime=t,!a)r(e._startAt,$e,$e);else if(!t)return}for(e._pt=e._ptCache=0,l=p&&lr(l)||l&&!p,P=0;P<g.length;P++){if(_=g[P],I=_._gsap||sv(g)[P]._gsap,e._ptLookup[P]=U={},rv[I.id]&&gn.length&&Pu(),X=x===g?P:x.indexOf(_),M&&(O=new M).init(_,D||T,e,X,x)!==!1&&(e._pt=E=new cr(e._pt,_,O.name,0,1,O.render,O,0,O.priority),O._props.forEach(function(Y){U[Y]=E}),O.priority&&(S=1)),!M||D)for(A in T)Cr[A]&&(O=VS(A,T,e,X,_,x))?O.priority&&(S=1):U[A]=E=mv.call(e,_,A,"get",T[A],X,x,0,n.stringFilter);e._op&&e._op[P]&&e.kill(_,e._op[P]),y&&e._pt&&(bn=e,pt.killTweensOf(_,U,e.globalTime(t)),k=!e.parent,bn=0),e._pt&&l&&(rv[I.id]=1)}S&&QS(e),e._onInit&&e._onInit(e)}e._onUpdate=u,e._initted=(!e._op||e._pt)&&!k,d&&t<=0&&b.render(Gr,!0,!0)},gN=function(e,t,i,n,s,o,a,l){var u=(e._pt&&e._ptCache||(e._ptCache={}))[t],c,h,d,f;if(!u)for(u=e._ptCache[t]=[],d=e._ptLookup,f=e._targets.length;f--;){if(c=d[f][t],c&&c.d&&c.d._pt)for(c=c.d._pt;c&&c.p!==t&&c.fp!==t;)c=c._next;if(!c)return gv=1,e.vars[t]="+=0",vv(e,a),gv=0,l?_a(t+" not eligible for reset"):1;u.push(c)}for(f=u.length;f--;)h=u[f],c=h._pt||h,c.s=(n||n===0)&&!s?n:c.s+(n||0)+o*c.c,c.c=i-c.s,h.e&&(h.e=Et(i)+Qt(h.e)),h.b&&(h.b=c.s+Qt(h.b))},vN=function(e,t){var i=e[0]?Kn(e[0]).harness:0,n=i&&i.aliases,s,o,a,l;if(!n)return t;s=Zs({},t);for(o in n)if(o in s)for(l=n[o].split(","),a=l.length;a--;)s[l[a]]=s[o];return s},xN=function(e,t,i,n){var s=t.ease||n||"power1.inOut",o,a;if(Kt(t))a=i[e]||(i[e]=[]),t.forEach(function(l,u){return a.push({t:u/(t.length-1)*100,v:l,e:s})});else for(o in t)a=i[o]||(i[o]=[]),o==="ease"||a.push({t:parseFloat(e),v:t[o],e:s})},ka=function(e,t,i,n,s){return _t(e)?e.call(t,i,n,s):Lt(e)&&~e.indexOf("random(")?Aa(e):e},XS=nv+"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert",YS={};ur(XS+",id,stagger,delay,duration,paused,scrollTrigger",function(r){return YS[r]=1});var Rt=(function(r){nS(e,r);function e(i,n,s,o){var a;typeof n=="number"&&(s.duration=n,n=s,s=null),a=r.call(this,o?n:Sa(n))||this;var l=a.vars,u=l.duration,c=l.delay,h=l.immediateRender,d=l.stagger,f=l.overwrite,p=l.keyframes,m=l.defaults,g=l.scrollTrigger,v=l.yoyoEase,x=n.parent||pt,y=(Kt(i)||oS(i)?Ni(i[0]):"length"in n)?[i]:Wr(i),b,T,P,A,E,_,S,I;if(a._targets=y.length?sv(y):_a("GSAP target "+i+" not found. https://gsap.com",!Sr.nullTargetWarn)||[],a._ptLookup=[],a._overwrite=f,p||d||Tu(u)||Tu(c)){if(n=a.vars,b=a.timeline=new rr({data:"nested",defaults:m||{},targets:x&&x.data==="nested"?x.vars.targets:y}),b.kill(),b.parent=b._dp=Li(a),b._start=0,d||Tu(u)||Tu(c)){if(A=y.length,S=d&&PS(d),xi(d))for(E in d)~XS.indexOf(E)&&(I||(I={}),I[E]=d[E]);for(T=0;T<A;T++)P=Iu(n,YS),P.stagger=0,v&&(P.yoyoEase=v),I&&Zs(P,I),_=y[T],P.duration=+ka(u,Li(a),T,_,y),P.delay=(+ka(c,Li(a),T,_,y)||0)-a._delay,!d&&A===1&&P.delay&&(a._delay=c=P.delay,a._start+=c,P.delay=0),b.to(_,P,S?S(T,_,y):0),b._ease=Ne.none;b.duration()?u=c=0:a.timeline=0}else if(p){Sa(Ar(b.vars.defaults,{ease:"none"})),b._ease=Zn(p.ease||n.ease||"none");var M=0,O,U,X;if(Kt(p))p.forEach(function(D){return b.to(y,D,">")}),b.duration();else{P={};for(E in p)E==="ease"||E==="easeEach"||xN(E,p[E],P,p.easeEach);for(E in P)for(O=P[E].sort(function(D,k){return D.t-k.t}),M=0,T=0;T<O.length;T++)U=O[T],X={ease:U.e,duration:(U.t-(T?O[T-1].t:0))/100*u},X[E]=U.v,b.to(y,X,M),M+=X.duration;b.duration()<u&&b.to({},{duration:u-b.duration()})}}u||a.duration(u=b.duration())}else a.timeline=0;return f===!0&&!q0&&(bn=Li(a),pt.killTweensOf(y),bn=0),bi(x,Li(a),s),n.reversed&&a.reverse(),n.paused&&a.paused(!0),(h||!u&&!p&&a._start===mt(x._time)&&lr(h)&&KL(Li(a))&&x.data!=="nested")&&(a._tTime=-$e,a.render(Math.max(0,-c)||0)),g&&SS(Li(a),g),a}var t=e.prototype;return t.render=function(n,s,o){var a=this._time,l=this._tDur,u=this._dur,c=n<0,h=n>l-$e&&!c?l:n<$e?0:n,d,f,p,m,g,v,x,y,b;if(!u)ZL(this,n,s,o);else if(h!==this._tTime||!n||o||!this._initted&&this._tTime||this._startAt&&this._zTime<0!==c||this._lazy){if(d=h,y=this.timeline,this._repeat){if(m=u+this._rDelay,this._repeat<-1&&c)return this.totalTime(m*100+n,s,o);if(d=mt(h%m),h===l?(p=this._repeat,d=u):(g=mt(h/m),p=~~g,p&&p===g?(d=u,p--):d>u&&(d=u)),v=this._yoyo&&p&1,v&&(b=this._yEase,d=u-d),g=Js(this._tTime,m),d===a&&!o&&this._initted&&p===g)return this._tTime=h,this;p!==g&&(y&&this._yEase&&GS(y,v),this.vars.repeatRefresh&&!v&&!this._lock&&d!==m&&this._initted&&(this._lock=o=1,this.render(mt(m*p),!0).invalidate()._lock=0))}if(!this._initted){if(TS(this,c?n:d,o,s,h))return this._tTime=0,this;if(a!==this._time&&!(o&&this.vars.repeatRefresh&&p!==g))return this;if(u!==this._dur)return this.render(n,s,o)}if(this._tTime=h,this._time=d,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=x=(b||this._ease)(d/u),this._from&&(this.ratio=x=1-x),!a&&h&&!s&&!g&&(Er(this,"onStart"),this._tTime!==h))return this;for(f=this._pt;f;)f.r(x,f.d),f=f._next;y&&y.render(n<0?n:y._dur*y._ease(d/this._dur),s,o)||this._startAt&&(this._zTime=n),this._onUpdate&&!s&&(c&&av(this,n,s,o),Er(this,"onUpdate")),this._repeat&&p!==g&&this.vars.onRepeat&&!s&&this.parent&&Er(this,"onRepeat"),(h===this._tDur||!h)&&this._tTime===h&&(c&&!this._onUpdate&&av(this,n,!0,!0),(n||!u)&&(h===this._tDur&&this._ts>0||!h&&this._ts<0)&&vn(this,1),!s&&!(c&&!a)&&(h||a||v)&&(Er(this,h===l?"onComplete":"onReverseComplete",!0),this._prom&&!(h<l&&this.timeScale()>0)&&this._prom()))}return this},t.targets=function(){return this._targets},t.invalidate=function(n){return(!n||!this.vars.runBackwards)&&(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(n),r.prototype.invalidate.call(this,n)},t.resetTo=function(n,s,o,a,l){Ia||Pr.wake(),this._ts||this.play();var u=Math.min(this._dur,(this._dp._time-this._start)*this._ts),c;return this._initted||vv(this,u),c=this._ease(u/this._dur),gN(this,n,s,o,a,c,u,l)?this.resetTo(n,s,o,a,1):(Fu(this,0),this.parent||bS(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},t.kill=function(n,s){if(s===void 0&&(s="all"),!n&&(!s||s==="all"))return this._lazy=this._pt=0,this.parent?Ea(this):this.scrollTrigger&&this.scrollTrigger.kill(!!Yt),this;if(this.timeline){var o=this.timeline.totalDuration();return this.timeline.killTweensOf(n,s,bn&&bn.vars.overwrite!==!0)._first||Ea(this),this.parent&&o!==this.timeline.totalDuration()&&$s(this,this._dur*this.timeline._tDur/o,0,1),this}var a=this._targets,l=n?Wr(n):a,u=this._ptLookup,c=this._pt,h,d,f,p,m,g,v;if((!s||s==="all")&&qL(a,l))return s==="all"&&(this._pt=0),Ea(this);for(h=this._op=this._op||[],s!=="all"&&(Lt(s)&&(m={},ur(s,function(x){return m[x]=1}),s=m),s=vN(a,s)),v=a.length;v--;)if(~l.indexOf(a[v])){d=u[v],s==="all"?(h[v]=s,p=d,f={}):(f=h[v]=h[v]||{},p=s);for(m in p)g=d&&d[m],g&&((!("kill"in g.d)||g.d.kill(m)===!0)&&Bu(this,g,"_pt"),delete d[m]),f!=="all"&&(f[m]=1)}return this._initted&&!this._pt&&c&&Ea(this),this},e.to=function(n,s){return new e(n,s,arguments[2])},e.from=function(n,s){return Ta(1,arguments)},e.delayedCall=function(n,s,o,a){return new e(s,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:n,onComplete:s,onReverseComplete:s,onCompleteParams:o,onReverseCompleteParams:o,callbackScope:a})},e.fromTo=function(n,s,o){return Ta(2,arguments)},e.set=function(n,s){return s.duration=0,s.repeatDelay||(s.repeat=0),new e(n,s)},e.killTweensOf=function(n,s,o){return pt.killTweensOf(n,s,o)},e})(Ba);Ar(Rt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ur("staggerTo,staggerFrom,staggerFromTo",function(r){Rt[r]=function(){var e=new rr,t=uv.call(arguments,0);return t.splice(r==="staggerFromTo"?5:4,0,0),e[r].apply(e,t)}});var xv=function(e,t,i){return e[t]=i},qS=function(e,t,i){return e[t](i)},yN=function(e,t,i,n){return e[t](n.fp,i)},bN=function(e,t,i){return e.setAttribute(t,i)},yv=function(e,t){return _t(e[t])?qS:K0(e[t])&&e.setAttribute?bN:xv},jS=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e6)/1e6,t)},_N=function(e,t){return t.set(t.t,t.p,!!(t.s+t.c*e),t)},KS=function(e,t){var i=t._pt,n="";if(!e&&t.b)n=t.b;else if(e===1&&t.e)n=t.e;else{for(;i;)n=i.p+(i.m?i.m(i.s+i.c*e):Math.round((i.s+i.c*e)*1e4)/1e4)+n,i=i._next;n+=t.c}t.set(t.t,t.p,n,t)},bv=function(e,t){for(var i=t._pt;i;)i.r(e,i.d),i=i._next},wN=function(e,t,i,n){for(var s=this._pt,o;s;)o=s._next,s.p===n&&s.modifier(e,t,i),s=o},SN=function(e){for(var t=this._pt,i,n;t;)n=t._next,t.p===e&&!t.op||t.op===e?Bu(this,t,"_pt"):t.dep||(i=1),t=n;return!i},TN=function(e,t,i,n){n.mSet(e,t,n.m.call(n.tween,i,n.mt),n)},QS=function(e){for(var t=e._pt,i,n,s,o;t;){for(i=t._next,n=s;n&&n.pr>t.pr;)n=n._next;(t._prev=n?n._prev:o)?t._prev._next=t:s=t,(t._next=n)?n._prev=t:o=t,t=i}e._pt=s},cr=(function(){function r(t,i,n,s,o,a,l,u,c){this.t=i,this.s=s,this.c=o,this.p=n,this.r=a||jS,this.d=l||this,this.set=u||xv,this.pr=c||0,this._next=t,t&&(t._prev=this)}var e=r.prototype;return e.modifier=function(i,n,s){this.mSet=this.mSet||this.set,this.set=TN,this.m=i,this.mt=s,this.tween=n},r})();ur(nv+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(r){return tv[r]=1}),Tr.TweenMax=Tr.TweenLite=Rt,Tr.TimelineLite=Tr.TimelineMax=rr,pt=new rr({sortChildren:!1,defaults:js,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),Sr.stringFilter=LS;var $n=[],Mu={},CN=[],ZS=0,AN=0,_v=function(e){return(Mu[e]||CN).map(function(t){return t()})},wv=function(){var e=Date.now(),t=[];e-ZS>2&&(_v("matchMediaInit"),$n.forEach(function(i){var n=i.queries,s=i.conditions,o,a,l,u;for(a in n)o=yi.matchMedia(n[a]).matches,o&&(l=1),o!==s[a]&&(s[a]=o,u=1);u&&(i.revert(),l&&t.push(i))}),_v("matchMediaRevert"),t.forEach(function(i){return i.onMatch(i,function(n){return i.add(null,n)})}),ZS=e,_v("matchMedia"))},JS=(function(){function r(t,i){this.selector=i&&cv(i),this.data=[],this._r=[],this.isReverted=!1,this.id=AN++,t&&this.add(t)}var e=r.prototype;return e.add=function(i,n,s){_t(i)&&(s=n,n=i,i=_t);var o=this,a=function(){var u=ht,c=o.selector,h;return u&&u!==o&&u.data.push(o),s&&(o.selector=cv(s)),ht=o,h=n.apply(o,arguments),_t(h)&&o._r.push(h),ht=u,o.selector=c,o.isReverted=!1,h};return o.last=a,i===_t?a(o,function(l){return o.add(null,l)}):i?o[i]=a:a},e.ignore=function(i){var n=ht;ht=null,i(this),ht=n},e.getTweens=function(){var i=[];return this.data.forEach(function(n){return n instanceof r?i.push.apply(i,n.getTweens()):n instanceof Rt&&!(n.parent&&n.parent.data==="nested")&&i.push(n)}),i},e.clear=function(){this._r.length=this.data.length=0},e.kill=function(i,n){var s=this;if(i?(function(){for(var a=s.getTweens(),l=s.data.length,u;l--;)u=s.data[l],u.data==="isFlip"&&(u.revert(),u.getChildren(!0,!0,!1).forEach(function(c){return a.splice(a.indexOf(c),1)}));for(a.map(function(c){return{g:c._dur||c._delay||c._sat&&!c._sat.vars.immediateRender?c.globalTime(0):-1/0,t:c}}).sort(function(c,h){return h.g-c.g||-1/0}).forEach(function(c){return c.t.revert(i)}),l=s.data.length;l--;)u=s.data[l],u instanceof rr?u.data!=="nested"&&(u.scrollTrigger&&u.scrollTrigger.revert(),u.kill()):!(u instanceof Rt)&&u.revert&&u.revert(i);s._r.forEach(function(c){return c(i,s)}),s.isReverted=!0})():this.data.forEach(function(a){return a.kill&&a.kill()}),this.clear(),n)for(var o=$n.length;o--;)$n[o].id===this.id&&$n.splice(o,1)},e.revert=function(i){this.kill(i||{})},r})(),EN=(function(){function r(t){this.contexts=[],this.scope=t,ht&&ht.data.push(this)}var e=r.prototype;return e.add=function(i,n,s){xi(i)||(i={matches:i});var o=new JS(0,s||this.scope),a=o.conditions={},l,u,c;ht&&!o.selector&&(o.selector=ht.selector),this.contexts.push(o),n=o.add("onMatch",n),o.queries=i;for(u in i)u==="all"?c=1:(l=yi.matchMedia(i[u]),l&&($n.indexOf(o)<0&&$n.push(o),(a[u]=l.matches)&&(c=1),l.addListener?l.addListener(wv):l.addEventListener("change",wv)));return c&&n(o,function(h){return o.add(null,h)}),this},e.revert=function(i){this.kill(i||{})},e.kill=function(i){this.contexts.forEach(function(n){return n.kill(i,!0)})},r})(),Du={registerPlugin:function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];t.forEach(function(n){return DS(n)})},timeline:function(e){return new rr(e)},getTweensOf:function(e,t){return pt.getTweensOf(e,t)},getProperty:function(e,t,i,n){Lt(e)&&(e=Wr(e)[0]);var s=Kn(e||{}).get,o=i?xS:vS;return i==="native"&&(i=""),e&&(t?o((Cr[t]&&Cr[t].get||s)(e,t,i,n)):function(a,l,u){return o((Cr[a]&&Cr[a].get||s)(e,a,l,u))})},quickSetter:function(e,t,i){if(e=Wr(e),e.length>1){var n=e.map(function(c){return hr.quickSetter(c,t,i)}),s=n.length;return function(c){for(var h=s;h--;)n[h](c)}}e=e[0]||{};var o=Cr[t],a=Kn(e),l=a.harness&&(a.harness.aliases||{})[t]||t,u=o?function(c){var h=new o;eo._pt=0,h.init(e,i?c+i:c,eo,0,[e]),h.render(1,h),eo._pt&&bv(1,eo)}:a.set(e,l);return o?u:function(c){return u(e,l,i?c+i:c,a,1)}},quickTo:function(e,t,i){var n,s=hr.to(e,Ar((n={},n[t]="+=0.1",n.paused=!0,n.stagger=0,n),i||{})),o=function(l,u,c){return s.resetTo(t,l,u,c)};return o.tween=s,o},isTweening:function(e){return pt.getTweensOf(e,!0).length>0},defaults:function(e){return e&&e.ease&&(e.ease=Zn(e.ease,js.ease)),yS(js,e||{})},config:function(e){return yS(Sr,e||{})},registerEffect:function(e){var t=e.name,i=e.effect,n=e.plugins,s=e.defaults,o=e.extendTimeline;(n||"").split(",").forEach(function(a){return a&&!Cr[a]&&!Tr[a]&&_a(t+" effect requires "+a+" plugin.")}),iv[t]=function(a,l,u){return i(Wr(a),Ar(l||{},s),u)},o&&(rr.prototype[t]=function(a,l,u){return this.add(iv[t](a,xi(l)?l:(u=l)&&{},this),u)})},registerEase:function(e,t){Ne[e]=Zn(t)},parseEase:function(e,t){return arguments.length?Zn(e,t):Ne},getById:function(e){return pt.getById(e)},exportRoot:function(e,t){e===void 0&&(e={});var i=new rr(e),n,s;for(i.smoothChildTiming=lr(e.smoothChildTiming),pt.remove(i),i._dp=0,i._time=i._tTime=pt._time,n=pt._first;n;)s=n._next,(t||!(!n._dur&&n instanceof Rt&&n.vars.onComplete===n._targets[0]))&&bi(i,n,n._start-n._delay),n=s;return bi(pt,i,0),i},context:function(e,t){return e?new JS(e,t):ht},matchMedia:function(e){return new EN(e)},matchMediaRefresh:function(){return $n.forEach(function(e){var t=e.conditions,i,n;for(n in t)t[n]&&(t[n]=!1,i=1);i&&e.revert()})||wv()},addEventListener:function(e,t){var i=Mu[e]||(Mu[e]=[]);~i.indexOf(t)||i.push(t)},removeEventListener:function(e,t){var i=Mu[e],n=i&&i.indexOf(t);n>=0&&i.splice(n,1)},utils:{wrap:sN,wrapYoyo:oN,distribute:PS,random:BS,snap:IS,normalize:nN,getUnit:Qt,clamp:eN,splitColor:OS,toArray:Wr,selector:cv,mapRange:RS,pipe:rN,unitize:iN,interpolate:aN,shuffle:ES},install:hS,effects:iv,ticker:Pr,updateRoot:rr.updateRoot,plugins:Cr,globalTimeline:pt,core:{PropTween:cr,globals:dS,Tween:Rt,Timeline:rr,Animation:Ba,getCache:Kn,_removeLinkedListItem:Bu,reverting:function(){return Yt},context:function(e){return e&&ht&&(ht.data.push(e),e._ctx=ht),ht},suppressOverwrites:function(e){return q0=e}}};ur("to,from,fromTo,delayedCall,set,killTweensOf",function(r){return Du[r]=Rt[r]}),Pr.add(rr.updateRoot),eo=Du.to({},{duration:0});var PN=function(e,t){for(var i=e._pt;i&&i.p!==t&&i.op!==t&&i.fp!==t;)i=i._next;return i},IN=function(e,t){var i=e._targets,n,s,o;for(n in t)for(s=i.length;s--;)o=e._ptLookup[s][n],o&&(o=o.d)&&(o._pt&&(o=PN(o,n)),o&&o.modifier&&o.modifier(t[n],e,i[s],n))},Sv=function(e,t){return{name:e,headless:1,rawVars:1,init:function(n,s,o){o._onInit=function(a){var l,u;if(Lt(s)&&(l={},ur(s,function(c){return l[c]=1}),s=l),t){l={};for(u in s)l[u]=t(s[u]);s=l}IN(a,s)}}}},hr=Du.registerPlugin({name:"attr",init:function(e,t,i,n,s){var o,a,l;this.tween=i;for(o in t)l=e.getAttribute(o)||"",a=this.add(e,"setAttribute",(l||0)+"",t[o],n,s,0,0,o),a.op=o,a.b=l,this._props.push(o)},render:function(e,t){for(var i=t._pt;i;)Yt?i.set(i.t,i.p,i.b,i):i.r(e,i.d),i=i._next}},{name:"endArray",headless:1,init:function(e,t){for(var i=t.length;i--;)this.add(e,i,e[i]||0,t[i],0,0,0,0,0,1)}},Sv("roundProps",hv),Sv("modifiers"),Sv("snap",IS))||Du;Rt.version=rr.version=hr.version="3.14.2",cS=1,Q0()&&to(),Ne.Power0,Ne.Power1,Ne.Power2,Ne.Power3,Ne.Power4,Ne.Linear,Ne.Quad,Ne.Cubic,Ne.Quart,Ne.Quint,Ne.Strong,Ne.Elastic,Ne.Back,Ne.SteppedEase,Ne.Bounce,Ne.Sine,Ne.Expo,Ne.Circ;var $S,_n,ro,Tv,es,e3,Cv,BN=function(){return typeof window<"u"},Gi={},ts=180/Math.PI,io=Math.PI/180,no=Math.atan2,t3=1e8,Av=/([A-Z])/g,kN=/(left|right|width|margin|padding|x)/i,RN=/[\s,\(]\S/,_i={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},Ev=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},FN=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},MN=function(e,t){return t.set(t.t,t.p,e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},DN=function(e,t){return t.set(t.t,t.p,e===1?t.e:e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},ON=function(e,t){var i=t.s+t.c*e;t.set(t.t,t.p,~~(i+(i<0?-.5:.5))+t.u,t)},r3=function(e,t){return t.set(t.t,t.p,e?t.e:t.b,t)},i3=function(e,t){return t.set(t.t,t.p,e!==1?t.b:t.e,t)},UN=function(e,t,i){return e.style[t]=i},zN=function(e,t,i){return e.style.setProperty(t,i)},LN=function(e,t,i){return e._gsap[t]=i},NN=function(e,t,i){return e._gsap.scaleX=e._gsap.scaleY=i},GN=function(e,t,i,n,s){var o=e._gsap;o.scaleX=o.scaleY=i,o.renderTransform(s,o)},HN=function(e,t,i,n,s){var o=e._gsap;o[t]=i,o.renderTransform(s,o)},gt="transform",dr=gt+"Origin",WN=function r(e,t){var i=this,n=this.target,s=n.style,o=n._gsap;if(e in Gi&&s){if(this.tfm=this.tfm||{},e!=="transform")e=_i[e]||e,~e.indexOf(",")?e.split(",").forEach(function(a){return i.tfm[a]=Hi(n,a)}):this.tfm[e]=o.x?o[e]:Hi(n,e),e===dr&&(this.tfm.zOrigin=o.zOrigin);else return _i.transform.split(",").forEach(function(a){return r.call(i,a,t)});if(this.props.indexOf(gt)>=0)return;o.svg&&(this.svgo=n.getAttribute("data-svg-origin"),this.props.push(dr,t,"")),e=gt}(s||t)&&this.props.push(e,t,s[e])},n3=function(e){e.translate&&(e.removeProperty("translate"),e.removeProperty("scale"),e.removeProperty("rotate"))},VN=function(){var e=this.props,t=this.target,i=t.style,n=t._gsap,s,o;for(s=0;s<e.length;s+=3)e[s+1]?e[s+1]===2?t[e[s]](e[s+2]):t[e[s]]=e[s+2]:e[s+2]?i[e[s]]=e[s+2]:i.removeProperty(e[s].substr(0,2)==="--"?e[s]:e[s].replace(Av,"-$1").toLowerCase());if(this.tfm){for(o in this.tfm)n[o]=this.tfm[o];n.svg&&(n.renderTransform(),t.setAttribute("data-svg-origin",this.svgo||"")),s=Cv(),(!s||!s.isStart)&&!i[gt]&&(n3(i),n.zOrigin&&i[dr]&&(i[dr]+=" "+n.zOrigin+"px",n.zOrigin=0,n.renderTransform()),n.uncache=1)}},s3=function(e,t){var i={target:e,props:[],revert:VN,save:WN};return e._gsap||hr.core.getCache(e),t&&e.style&&e.nodeType&&t.split(",").forEach(function(n){return i.save(n)}),i},o3,Pv=function(e,t){var i=_n.createElementNS?_n.createElementNS((t||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),e):_n.createElement(e);return i&&i.style?i:_n.createElement(e)},Ir=function r(e,t,i){var n=getComputedStyle(e);return n[t]||n.getPropertyValue(t.replace(Av,"-$1").toLowerCase())||n.getPropertyValue(t)||!i&&r(e,so(t)||t,1)||""},a3="O,Moz,ms,Ms,Webkit".split(","),so=function(e,t,i){var n=t||es,s=n.style,o=5;if(e in s&&!i)return e;for(e=e.charAt(0).toUpperCase()+e.substr(1);o--&&!(a3[o]+e in s););return o<0?null:(o===3?"ms":o>=0?a3[o]:"")+e},Iv=function(){BN()&&window.document&&($S=window,_n=$S.document,ro=_n.documentElement,es=Pv("div")||{style:{}},Pv("div"),gt=so(gt),dr=gt+"Origin",es.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",o3=!!so("perspective"),Cv=hr.core.reverting,Tv=1)},l3=function(e){var t=e.ownerSVGElement,i=Pv("svg",t&&t.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),n=e.cloneNode(!0),s;n.style.display="block",i.appendChild(n),ro.appendChild(i);try{s=n.getBBox()}catch{}return i.removeChild(n),ro.removeChild(i),s},u3=function(e,t){for(var i=t.length;i--;)if(e.hasAttribute(t[i]))return e.getAttribute(t[i])},c3=function(e){var t,i;try{t=e.getBBox()}catch{t=l3(e),i=1}return t&&(t.width||t.height)||i||(t=l3(e)),t&&!t.width&&!t.x&&!t.y?{x:+u3(e,["x","cx","x1"])||0,y:+u3(e,["y","cy","y1"])||0,width:0,height:0}:t},h3=function(e){return!!(e.getCTM&&(!e.parentNode||e.ownerSVGElement)&&c3(e))},wn=function(e,t){if(t){var i=e.style,n;t in Gi&&t!==dr&&(t=gt),i.removeProperty?(n=t.substr(0,2),(n==="ms"||t.substr(0,6)==="webkit")&&(t="-"+t),i.removeProperty(n==="--"?t:t.replace(Av,"-$1").toLowerCase())):i.removeAttribute(t)}},Sn=function(e,t,i,n,s,o){var a=new cr(e._pt,t,i,0,1,o?i3:r3);return e._pt=a,a.b=n,a.e=s,e._props.push(i),a},d3={deg:1,rad:1,turn:1},XN={grid:1,flex:1},Tn=function r(e,t,i,n){var s=parseFloat(i)||0,o=(i+"").trim().substr((s+"").length)||"px",a=es.style,l=kN.test(t),u=e.tagName.toLowerCase()==="svg",c=(u?"client":"offset")+(l?"Width":"Height"),h=100,d=n==="px",f=n==="%",p,m,g,v;if(n===o||!s||d3[n]||d3[o])return s;if(o!=="px"&&!d&&(s=r(e,t,i,"px")),v=e.getCTM&&h3(e),(f||o==="%")&&(Gi[t]||~t.indexOf("adius")))return p=v?e.getBBox()[l?"width":"height"]:e[c],Et(f?s/p*h:s/100*p);if(a[l?"width":"height"]=h+(d?o:n),m=n!=="rem"&&~t.indexOf("adius")||n==="em"&&e.appendChild&&!u?e:e.parentNode,v&&(m=(e.ownerSVGElement||{}).parentNode),(!m||m===_n||!m.appendChild)&&(m=_n.body),g=m._gsap,g&&f&&g.width&&l&&g.time===Pr.time&&!g.uncache)return Et(s/g.width*h);if(f&&(t==="height"||t==="width")){var x=e.style[t];e.style[t]=h+n,p=e[c],x?e.style[t]=x:wn(e,t)}else(f||o==="%")&&!XN[Ir(m,"display")]&&(a.position=Ir(e,"position")),m===e&&(a.position="static"),m.appendChild(es),p=es[c],m.removeChild(es),a.position="absolute";return l&&f&&(g=Kn(m),g.time=Pr.time,g.width=m[c]),Et(d?p*s/h:p&&s?h/p*s:0)},Hi=function(e,t,i,n){var s;return Tv||Iv(),t in _i&&t!=="transform"&&(t=_i[t],~t.indexOf(",")&&(t=t.split(",")[0])),Gi[t]&&t!=="transform"?(s=Fa(e,n),s=t!=="transformOrigin"?s[t]:s.svg?s.origin:Uu(Ir(e,dr))+" "+s.zOrigin+"px"):(s=e.style[t],(!s||s==="auto"||n||~(s+"").indexOf("calc("))&&(s=Ou[t]&&Ou[t](e,t,i)||Ir(e,t)||mS(e,t)||(t==="opacity"?1:0))),i&&!~(s+"").trim().indexOf(" ")?Tn(e,t,s,i)+i:s},YN=function(e,t,i,n){if(!i||i==="none"){var s=so(t,e,1),o=s&&Ir(e,s,1);o&&o!==i?(t=s,i=o):t==="borderColor"&&(i=Ir(e,"borderTopColor"))}var a=new cr(this._pt,e.style,t,0,1,KS),l=0,u=0,c,h,d,f,p,m,g,v,x,y,b,T;if(a.b=i,a.e=n,i+="",n+="",n.substring(0,6)==="var(--"&&(n=Ir(e,n.substring(4,n.indexOf(")")))),n==="auto"&&(m=e.style[t],e.style[t]=n,n=Ir(e,t)||n,m?e.style[t]=m:wn(e,t)),c=[i,n],LS(c),i=c[0],n=c[1],d=i.match(Ks)||[],T=n.match(Ks)||[],T.length){for(;h=Ks.exec(n);)g=h[0],x=n.substring(l,h.index),p?p=(p+1)%5:(x.substr(-5)==="rgba("||x.substr(-5)==="hsla(")&&(p=1),g!==(m=d[u++]||"")&&(f=parseFloat(m)||0,b=m.substr((f+"").length),g.charAt(1)==="="&&(g=Qs(f,g)+b),v=parseFloat(g),y=g.substr((v+"").length),l=Ks.lastIndex-y.length,y||(y=y||Sr.units[t]||b,l===n.length&&(n+=y,a.e+=y)),b!==y&&(f=Tn(e,t,m,y)||0),a._pt={_next:a._pt,p:x||u===1?x:",",s:f,c:v-f,m:p&&p<4||t==="zIndex"?Math.round:0});a.c=l<n.length?n.substring(l,n.length):""}else a.r=t==="display"&&n==="none"?i3:r3;return uS.test(n)&&(a.e=0),this._pt=a,a},f3={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},qN=function(e){var t=e.split(" "),i=t[0],n=t[1]||"50%";return(i==="top"||i==="bottom"||n==="left"||n==="right")&&(e=i,i=n,n=e),t[0]=f3[i]||i,t[1]=f3[n]||n,t.join(" ")},jN=function(e,t){if(t.tween&&t.tween._time===t.tween._dur){var i=t.t,n=i.style,s=t.u,o=i._gsap,a,l,u;if(s==="all"||s===!0)n.cssText="",l=1;else for(s=s.split(","),u=s.length;--u>-1;)a=s[u],Gi[a]&&(l=1,a=a==="transformOrigin"?dr:gt),wn(i,a);l&&(wn(i,gt),o&&(o.svg&&i.removeAttribute("transform"),n.scale=n.rotate=n.translate="none",Fa(i,1),o.uncache=1,n3(n)))}},Ou={clearProps:function(e,t,i,n,s){if(s.data!=="isFromStart"){var o=e._pt=new cr(e._pt,t,i,0,0,jN);return o.u=n,o.pr=-10,o.tween=s,e._props.push(i),1}}},Ra=[1,0,0,1,0,0],p3={},m3=function(e){return e==="matrix(1, 0, 0, 1, 0, 0)"||e==="none"||!e},g3=function(e){var t=Ir(e,gt);return m3(t)?Ra:t.substr(7).match(lS).map(Et)},Bv=function(e,t){var i=e._gsap||Kn(e),n=e.style,s=g3(e),o,a,l,u;return i.svg&&e.getAttribute("transform")?(l=e.transform.baseVal.consolidate().matrix,s=[l.a,l.b,l.c,l.d,l.e,l.f],s.join(",")==="1,0,0,1,0,0"?Ra:s):(s===Ra&&!e.offsetParent&&e!==ro&&!i.svg&&(l=n.display,n.display="block",o=e.parentNode,(!o||!e.offsetParent&&!e.getBoundingClientRect().width)&&(u=1,a=e.nextElementSibling,ro.appendChild(e)),s=g3(e),l?n.display=l:wn(e,"display"),u&&(a?o.insertBefore(e,a):o?o.appendChild(e):ro.removeChild(e))),t&&s.length>6?[s[0],s[1],s[4],s[5],s[12],s[13]]:s)},kv=function(e,t,i,n,s,o){var a=e._gsap,l=s||Bv(e,!0),u=a.xOrigin||0,c=a.yOrigin||0,h=a.xOffset||0,d=a.yOffset||0,f=l[0],p=l[1],m=l[2],g=l[3],v=l[4],x=l[5],y=t.split(" "),b=parseFloat(y[0])||0,T=parseFloat(y[1])||0,P,A,E,_;i?l!==Ra&&(A=f*g-p*m)&&(E=b*(g/A)+T*(-m/A)+(m*x-g*v)/A,_=b*(-p/A)+T*(f/A)-(f*x-p*v)/A,b=E,T=_):(P=c3(e),b=P.x+(~y[0].indexOf("%")?b/100*P.width:b),T=P.y+(~(y[1]||y[0]).indexOf("%")?T/100*P.height:T)),n||n!==!1&&a.smooth?(v=b-u,x=T-c,a.xOffset=h+(v*f+x*m)-v,a.yOffset=d+(v*p+x*g)-x):a.xOffset=a.yOffset=0,a.xOrigin=b,a.yOrigin=T,a.smooth=!!n,a.origin=t,a.originIsAbsolute=!!i,e.style[dr]="0px 0px",o&&(Sn(o,a,"xOrigin",u,b),Sn(o,a,"yOrigin",c,T),Sn(o,a,"xOffset",h,a.xOffset),Sn(o,a,"yOffset",d,a.yOffset)),e.setAttribute("data-svg-origin",b+" "+T)},Fa=function(e,t){var i=e._gsap||new WS(e);if("x"in i&&!t&&!i.uncache)return i;var n=e.style,s=i.scaleX<0,o="px",a="deg",l=getComputedStyle(e),u=Ir(e,dr)||"0",c,h,d,f,p,m,g,v,x,y,b,T,P,A,E,_,S,I,M,O,U,X,D,k,Y,H,$,K,we,Ie,ve,G;return c=h=d=m=g=v=x=y=b=0,f=p=1,i.svg=!!(e.getCTM&&h3(e)),l.translate&&((l.translate!=="none"||l.scale!=="none"||l.rotate!=="none")&&(n[gt]=(l.translate!=="none"?"translate3d("+(l.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+(l.rotate!=="none"?"rotate("+l.rotate+") ":"")+(l.scale!=="none"?"scale("+l.scale.split(" ").join(",")+") ":"")+(l[gt]!=="none"?l[gt]:"")),n.scale=n.rotate=n.translate="none"),A=Bv(e,i.svg),i.svg&&(i.uncache?(Y=e.getBBox(),u=i.xOrigin-Y.x+"px "+(i.yOrigin-Y.y)+"px",k=""):k=!t&&e.getAttribute("data-svg-origin"),kv(e,k||u,!!k||i.originIsAbsolute,i.smooth!==!1,A)),T=i.xOrigin||0,P=i.yOrigin||0,A!==Ra&&(I=A[0],M=A[1],O=A[2],U=A[3],c=X=A[4],h=D=A[5],A.length===6?(f=Math.sqrt(I*I+M*M),p=Math.sqrt(U*U+O*O),m=I||M?no(M,I)*ts:0,x=O||U?no(O,U)*ts+m:0,x&&(p*=Math.abs(Math.cos(x*io))),i.svg&&(c-=T-(T*I+P*O),h-=P-(T*M+P*U))):(G=A[6],Ie=A[7],$=A[8],K=A[9],we=A[10],ve=A[11],c=A[12],h=A[13],d=A[14],E=no(G,we),g=E*ts,E&&(_=Math.cos(-E),S=Math.sin(-E),k=X*_+$*S,Y=D*_+K*S,H=G*_+we*S,$=X*-S+$*_,K=D*-S+K*_,we=G*-S+we*_,ve=Ie*-S+ve*_,X=k,D=Y,G=H),E=no(-O,we),v=E*ts,E&&(_=Math.cos(-E),S=Math.sin(-E),k=I*_-$*S,Y=M*_-K*S,H=O*_-we*S,ve=U*S+ve*_,I=k,M=Y,O=H),E=no(M,I),m=E*ts,E&&(_=Math.cos(E),S=Math.sin(E),k=I*_+M*S,Y=X*_+D*S,M=M*_-I*S,D=D*_-X*S,I=k,X=Y),g&&Math.abs(g)+Math.abs(m)>359.9&&(g=m=0,v=180-v),f=Et(Math.sqrt(I*I+M*M+O*O)),p=Et(Math.sqrt(D*D+G*G)),E=no(X,D),x=Math.abs(E)>2e-4?E*ts:0,b=ve?1/(ve<0?-ve:ve):0),i.svg&&(k=e.getAttribute("transform"),i.forceCSS=e.setAttribute("transform","")||!m3(Ir(e,gt)),k&&e.setAttribute("transform",k))),Math.abs(x)>90&&Math.abs(x)<270&&(s?(f*=-1,x+=m<=0?180:-180,m+=m<=0?180:-180):(p*=-1,x+=x<=0?180:-180)),t=t||i.uncache,i.x=c-((i.xPercent=c&&(!t&&i.xPercent||(Math.round(e.offsetWidth/2)===Math.round(-c)?-50:0)))?e.offsetWidth*i.xPercent/100:0)+o,i.y=h-((i.yPercent=h&&(!t&&i.yPercent||(Math.round(e.offsetHeight/2)===Math.round(-h)?-50:0)))?e.offsetHeight*i.yPercent/100:0)+o,i.z=d+o,i.scaleX=Et(f),i.scaleY=Et(p),i.rotation=Et(m)+a,i.rotationX=Et(g)+a,i.rotationY=Et(v)+a,i.skewX=x+a,i.skewY=y+a,i.transformPerspective=b+o,(i.zOrigin=parseFloat(u.split(" ")[2])||!t&&i.zOrigin||0)&&(n[dr]=Uu(u)),i.xOffset=i.yOffset=0,i.force3D=Sr.force3D,i.renderTransform=i.svg?QN:o3?v3:KN,i.uncache=0,i},Uu=function(e){return(e=e.split(" "))[0]+" "+e[1]},Rv=function(e,t,i){var n=Qt(t);return Et(parseFloat(t)+parseFloat(Tn(e,"x",i+"px",n)))+n},KN=function(e,t){t.z="0px",t.rotationY=t.rotationX="0deg",t.force3D=0,v3(e,t)},rs="0deg",Ma="0px",is=") ",v3=function(e,t){var i=t||this,n=i.xPercent,s=i.yPercent,o=i.x,a=i.y,l=i.z,u=i.rotation,c=i.rotationY,h=i.rotationX,d=i.skewX,f=i.skewY,p=i.scaleX,m=i.scaleY,g=i.transformPerspective,v=i.force3D,x=i.target,y=i.zOrigin,b="",T=v==="auto"&&e&&e!==1||v===!0;if(y&&(h!==rs||c!==rs)){var P=parseFloat(c)*io,A=Math.sin(P),E=Math.cos(P),_;P=parseFloat(h)*io,_=Math.cos(P),o=Rv(x,o,A*_*-y),a=Rv(x,a,-Math.sin(P)*-y),l=Rv(x,l,E*_*-y+y)}g!==Ma&&(b+="perspective("+g+is),(n||s)&&(b+="translate("+n+"%, "+s+"%) "),(T||o!==Ma||a!==Ma||l!==Ma)&&(b+=l!==Ma||T?"translate3d("+o+", "+a+", "+l+") ":"translate("+o+", "+a+is),u!==rs&&(b+="rotate("+u+is),c!==rs&&(b+="rotateY("+c+is),h!==rs&&(b+="rotateX("+h+is),(d!==rs||f!==rs)&&(b+="skew("+d+", "+f+is),(p!==1||m!==1)&&(b+="scale("+p+", "+m+is),x.style[gt]=b||"translate(0, 0)"},QN=function(e,t){var i=t||this,n=i.xPercent,s=i.yPercent,o=i.x,a=i.y,l=i.rotation,u=i.skewX,c=i.skewY,h=i.scaleX,d=i.scaleY,f=i.target,p=i.xOrigin,m=i.yOrigin,g=i.xOffset,v=i.yOffset,x=i.forceCSS,y=parseFloat(o),b=parseFloat(a),T,P,A,E,_;l=parseFloat(l),u=parseFloat(u),c=parseFloat(c),c&&(c=parseFloat(c),u+=c,l+=c),l||u?(l*=io,u*=io,T=Math.cos(l)*h,P=Math.sin(l)*h,A=Math.sin(l-u)*-d,E=Math.cos(l-u)*d,u&&(c*=io,_=Math.tan(u-c),_=Math.sqrt(1+_*_),A*=_,E*=_,c&&(_=Math.tan(c),_=Math.sqrt(1+_*_),T*=_,P*=_)),T=Et(T),P=Et(P),A=Et(A),E=Et(E)):(T=h,E=d,P=A=0),(y&&!~(o+"").indexOf("px")||b&&!~(a+"").indexOf("px"))&&(y=Tn(f,"x",o,"px"),b=Tn(f,"y",a,"px")),(p||m||g||v)&&(y=Et(y+p-(p*T+m*A)+g),b=Et(b+m-(p*P+m*E)+v)),(n||s)&&(_=f.getBBox(),y=Et(y+n/100*_.width),b=Et(b+s/100*_.height)),_="matrix("+T+","+P+","+A+","+E+","+y+","+b+")",f.setAttribute("transform",_),x&&(f.style[gt]=_)},ZN=function(e,t,i,n,s){var o=360,a=Lt(s),l=parseFloat(s)*(a&&~s.indexOf("rad")?ts:1),u=l-n,c=n+u+"deg",h,d;return a&&(h=s.split("_")[1],h==="short"&&(u%=o,u!==u%(o/2)&&(u+=u<0?o:-o)),h==="cw"&&u<0?u=(u+o*t3)%o-~~(u/o)*o:h==="ccw"&&u>0&&(u=(u-o*t3)%o-~~(u/o)*o)),e._pt=d=new cr(e._pt,t,i,n,u,FN),d.e=c,d.u="deg",e._props.push(i),d},x3=function(e,t){for(var i in t)e[i]=t[i];return e},JN=function(e,t,i){var n=x3({},i._gsap),s="perspective,force3D,transformOrigin,svgOrigin",o=i.style,a,l,u,c,h,d,f,p;n.svg?(u=i.getAttribute("transform"),i.setAttribute("transform",""),o[gt]=t,a=Fa(i,1),wn(i,gt),i.setAttribute("transform",u)):(u=getComputedStyle(i)[gt],o[gt]=t,a=Fa(i,1),o[gt]=u);for(l in Gi)u=n[l],c=a[l],u!==c&&s.indexOf(l)<0&&(f=Qt(u),p=Qt(c),h=f!==p?Tn(i,l,u,p):parseFloat(u),d=parseFloat(c),e._pt=new cr(e._pt,a,l,h,d-h,Ev),e._pt.u=p||0,e._props.push(l));x3(a,n)};ur("padding,margin,Width,Radius",function(r,e){var t="Top",i="Right",n="Bottom",s="Left",o=(e<3?[t,i,n,s]:[t+s,t+i,n+i,n+s]).map(function(a){return e<2?r+a:"border"+a+r});Ou[e>1?"border"+r:r]=function(a,l,u,c,h){var d,f;if(arguments.length<4)return d=o.map(function(p){return Hi(a,p,u)}),f=d.join(" "),f.split(d[0]).length===5?d[0]:f;d=(c+"").split(" "),f={},o.forEach(function(p,m){return f[p]=d[m]=d[m]||d[(m-1)/2|0]}),a.init(l,f,h)}});var y3={name:"css",register:Iv,targetTest:function(e){return e.style&&e.nodeType},init:function(e,t,i,n,s){var o=this._props,a=e.style,l=i.vars.startAt,u,c,h,d,f,p,m,g,v,x,y,b,T,P,A,E,_;Tv||Iv(),this.styles=this.styles||s3(e),E=this.styles.props,this.tween=i;for(m in t)if(m!=="autoRound"&&(c=t[m],!(Cr[m]&&VS(m,t,i,n,e,s)))){if(f=typeof c,p=Ou[m],f==="function"&&(c=c.call(i,n,e,s),f=typeof c),f==="string"&&~c.indexOf("random(")&&(c=Aa(c)),p)p(this,e,m,c,i)&&(A=1);else if(m.substr(0,2)==="--")u=(getComputedStyle(e).getPropertyValue(m)+"").trim(),c+="",yn.lastIndex=0,yn.test(u)||(g=Qt(u),v=Qt(c),v?g!==v&&(u=Tn(e,m,u,v)+v):g&&(c+=g)),this.add(a,"setProperty",u,c,n,s,0,0,m),o.push(m),E.push(m,0,a[m]);else if(f!=="undefined"){if(l&&m in l?(u=typeof l[m]=="function"?l[m].call(i,n,e,s):l[m],Lt(u)&&~u.indexOf("random(")&&(u=Aa(u)),Qt(u+"")||u==="auto"||(u+=Sr.units[m]||Qt(Hi(e,m))||""),(u+"").charAt(1)==="="&&(u=Hi(e,m))):u=Hi(e,m),d=parseFloat(u),x=f==="string"&&c.charAt(1)==="="&&c.substr(0,2),x&&(c=c.substr(2)),h=parseFloat(c),m in _i&&(m==="autoAlpha"&&(d===1&&Hi(e,"visibility")==="hidden"&&h&&(d=0),E.push("visibility",0,a.visibility),Sn(this,a,"visibility",d?"inherit":"hidden",h?"inherit":"hidden",!h)),m!=="scale"&&m!=="transform"&&(m=_i[m],~m.indexOf(",")&&(m=m.split(",")[0]))),y=m in Gi,y){if(this.styles.save(m),_=c,f==="string"&&c.substring(0,6)==="var(--"){if(c=Ir(e,c.substring(4,c.indexOf(")"))),c.substring(0,5)==="calc("){var S=e.style.perspective;e.style.perspective=c,c=Ir(e,"perspective"),S?e.style.perspective=S:wn(e,"perspective")}h=parseFloat(c)}if(b||(T=e._gsap,T.renderTransform&&!t.parseTransform||Fa(e,t.parseTransform),P=t.smoothOrigin!==!1&&T.smooth,b=this._pt=new cr(this._pt,a,gt,0,1,T.renderTransform,T,0,-1),b.dep=1),m==="scale")this._pt=new cr(this._pt,T,"scaleY",T.scaleY,(x?Qs(T.scaleY,x+h):h)-T.scaleY||0,Ev),this._pt.u=0,o.push("scaleY",m),m+="X";else if(m==="transformOrigin"){E.push(dr,0,a[dr]),c=qN(c),T.svg?kv(e,c,0,P,0,this):(v=parseFloat(c.split(" ")[2])||0,v!==T.zOrigin&&Sn(this,T,"zOrigin",T.zOrigin,v),Sn(this,a,m,Uu(u),Uu(c)));continue}else if(m==="svgOrigin"){kv(e,c,1,P,0,this);continue}else if(m in p3){ZN(this,T,m,d,x?Qs(d,x+c):c);continue}else if(m==="smoothOrigin"){Sn(this,T,"smooth",T.smooth,c);continue}else if(m==="force3D"){T[m]=c;continue}else if(m==="transform"){JN(this,c,e);continue}}else m in a||(m=so(m)||m);if(y||(h||h===0)&&(d||d===0)&&!RN.test(c)&&m in a)g=(u+"").substr((d+"").length),h||(h=0),v=Qt(c)||(m in Sr.units?Sr.units[m]:g),g!==v&&(d=Tn(e,m,u,v)),this._pt=new cr(this._pt,y?T:a,m,d,(x?Qs(d,x+h):h)-d,!y&&(v==="px"||m==="zIndex")&&t.autoRound!==!1?ON:Ev),this._pt.u=v||0,y&&_!==c?(this._pt.b=u,this._pt.e=_,this._pt.r=DN):g!==v&&v!=="%"&&(this._pt.b=u,this._pt.r=MN);else if(m in a)YN.call(this,e,m,u,x?x+c:c);else if(m in e)this.add(e,m,u||e[m],x?x+c:c,n,s);else if(m!=="parseTransform"){ev(m,c);continue}y||(m in a?E.push(m,0,a[m]):typeof e[m]=="function"?E.push(m,2,e[m]()):E.push(m,1,u||e[m])),o.push(m)}}A&&QS(this)},render:function(e,t){if(t.tween._time||!Cv())for(var i=t._pt;i;)i.r(e,i.d),i=i._next;else t.styles.revert()},get:Hi,aliases:_i,getSetter:function(e,t,i){var n=_i[t];return n&&n.indexOf(",")<0&&(t=n),t in Gi&&t!==dr&&(e._gsap.x||Hi(e,"x"))?i&&e3===i?t==="scale"?NN:LN:(e3=i||{})&&(t==="scale"?GN:HN):e.style&&!K0(e.style[t])?UN:~t.indexOf("-")?zN:yv(e,t)},core:{_removeProperty:wn,_getMatrix:Bv}};hr.utils.checkPrefix=so,hr.core.getStyleSaver=s3,(function(r,e,t,i){var n=ur(r+","+e+","+t,function(s){Gi[s]=1});ur(e,function(s){Sr.units[s]="deg",p3[s]=1}),_i[n[13]]=r+","+e,ur(i,function(s){var o=s.split(":");_i[o[1]]=n[o[0]]})})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent","rotation,rotationX,rotationY,skewX,skewY","transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective","0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY"),ur("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(r){Sr.units[r]="px"}),hr.registerPlugin(y3);var Fv=hr.registerPlugin(y3)||hr;Fv.core.Tween;var Cn,zu,b3,Vr,Da,_3,Mv,Lu,w3=function(){return typeof window<"u"},S3=function(){return Cn||w3()&&(Cn=window.gsap)&&Cn.registerPlugin&&Cn},Dv=function(e){return typeof e=="function"},T3=function(e){return console.warn(e)},$N=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],ii=.212671,Xr=.71516,Yr=.072169,C3=function(e){return Dv(Vr[e])?Vr[e]:Vr.filters[e]},Nu=function(e,t){var i=[],n=0,s=0,o,a;for(o=0;o<4;o++){for(a=0;a<5;a++)s=a===4?e[n+4]:0,i[n+a]=e[n]*t[a]+e[n+1]*t[a+5]+e[n+2]*t[a+10]+e[n+3]*t[a+15]+s;n+=5}return i},A3=function(e,t){var i=1-t,n=i*ii,s=i*Xr,o=i*Yr;return Nu([n+t,s,o,0,0,n,s+t,o,0,0,n,s,o+t,0,0,0,0,0,1,0],e)},E3=function(e,t,i){var n=zu(t),s=n[0]/255,o=n[1]/255,a=n[2]/255,l=1-i;return Nu([l+i*s*ii,i*s*Xr,i*s*Yr,0,0,i*o*ii,l+i*o*Xr,i*o*Yr,0,0,i*a*ii,i*a*Xr,l+i*a*Yr,0,0,0,0,0,1,0],e)},P3=function(e,t){t*=Math.PI/180;var i=Math.cos(t),n=Math.sin(t);return Nu([ii+i*(1-ii)+n*-ii,Xr+i*-Xr+n*-Xr,Yr+i*-Yr+n*(1-Yr),0,0,ii+i*-ii+n*.143,Xr+i*(1-Xr)+n*.14,Yr+i*-Yr+n*-.283,0,0,ii+i*-ii+n*-.787329,Xr+i*-Xr+n*Xr,Yr+i*(1-Yr)+n*Yr,0,0,0,0,0,1,0,0,0,0,0,1],e)},I3=function(e,t){return Nu([t,0,0,0,.5*(1-t),0,t,0,0,.5*(1-t),0,0,t,0,.5*(1-t),0,0,0,1,0],e)},B3=function(e,t){var i=C3(t),n=e.filters||[],s=n.length,o;for(i||T3(t+" not found. PixiPlugin.registerPIXI(PIXI)");--s>-1;)if(n[s]instanceof i)return n[s];return o=new i,t==="BlurFilter"&&(Lu?o.strength=0:o.blur=0),e.filters=[].concat(n,[o]),o},Nt=function(e,t,i,n){t.add(i,e,i[e],n[e]),t._props.push(e)},k3=function(e,t){var i=C3("ColorMatrixFilter"),n=new i;return n.matrix=t,n.brightness(e,!0),n.matrix},eG=function(e){var t={},i;for(i in e)t[i]=e[i];return t},Br={contrast:1,saturation:1,colorizeAmount:0,colorize:"rgb(255,255,255)",hue:0,brightness:1},tG=function(e,t,i){var n=B3(e,"ColorMatrixFilter"),s=e._gsColorMatrixFilter=e._gsColorMatrixFilter||eG(Br),o=t.combineCMF&&!("colorMatrixFilter"in t&&!t.colorMatrixFilter),a,l,u;for(u=n.matrix,t.resolution&&(n.resolution=t.resolution),t.matrix&&t.matrix.length===u.length?(l=t.matrix,s.contrast!==1&&Nt("contrast",i,s,Br),s.hue&&Nt("hue",i,s,Br),s.brightness!==1&&Nt("brightness",i,s,Br),s.colorizeAmount&&(Nt("colorize",i,s,Br),Nt("colorizeAmount",i,s,Br)),s.saturation!==1&&Nt("saturation",i,s,Br)):(l=$N.slice(),t.contrast!=null?(l=I3(l,+t.contrast),Nt("contrast",i,s,t)):s.contrast!==1&&(o?l=I3(l,s.contrast):Nt("contrast",i,s,Br)),t.hue!=null?(l=P3(l,+t.hue),Nt("hue",i,s,t)):s.hue&&(o?l=P3(l,s.hue):Nt("hue",i,s,Br)),t.brightness!=null?(l=k3(+t.brightness,l),Nt("brightness",i,s,t)):s.brightness!==1&&(o?l=k3(s.brightness,l):Nt("brightness",i,s,Br)),t.colorize!=null?(t.colorizeAmount="colorizeAmount"in t?+t.colorizeAmount:1,l=E3(l,t.colorize,t.colorizeAmount),Nt("colorize",i,s,t),Nt("colorizeAmount",i,s,t)):s.colorizeAmount&&(o?l=E3(l,s.colorize,s.colorizeAmount):(Nt("colorize",i,s,Br),Nt("colorizeAmount",i,s,Br))),t.saturation!=null?(l=A3(l,+t.saturation),Nt("saturation",i,s,t)):s.saturation!==1&&(o?l=A3(l,s.saturation):Nt("saturation",i,s,Br))),a=l.length;--a>-1;)l[a]!==u[a]&&i.add(u,a,u[a],l[a],"colorMatrixFilter");i._props.push("colorMatrixFilter")},rG=function(e,t){var i=t.t,n=t.p,s=t.color,o=t.set;o(i,n,s[0]<<16|s[1]<<8|s[2])},iG=function(e,t){var i=t.g;Lu?(i.fill(),i.stroke()):i&&(i.dirty++,i.clearDirty++)},nG=function(e,t){t.t.visible=!!t.t.alpha},R3=function(e,t,i,n){var s=e[t],o=zu(Dv(s)?e[t.indexOf("set")||!Dv(e["get"+t.substr(3)])?t:"get"+t.substr(3)]():s),a=zu(i);n._pt=new Da(n._pt,e,t,0,0,rG,{t:e,p:t,color:o,set:_3(e,t)}),n.add(o,0,o[0],a[0]),n.add(o,1,o[1],a[1]),n.add(o,2,o[2],a[2])},sG={tint:1,lineColor:1,fillColor:1,strokeColor:1},F3="position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),Ov={x:"position",y:"position",tileX:"tilePosition",tileY:"tilePosition"},oG={colorMatrixFilter:1,saturation:1,contrast:1,hue:1,colorize:1,colorizeAmount:1,brightness:1,combineCMF:1},Gu=Math.PI/180,M3=function(e){return typeof e=="string"},aG=function(e){return M3(e)&&e.charAt(1)==="="?e.substr(0,2)+parseFloat(e.substr(2))*Gu:e*Gu},lG=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e5)/1e5,t)},uG=function(e,t,i,n,s,o){var a=360*(o?Gu:1),l=M3(s),u=l&&s.charAt(1)==="="?+(s.charAt(0)+"1"):0,c=parseFloat(u?s.substr(2):s)*(o?Gu:1),h=u?c*u:c-n,d=n+h,f,p;return l&&(f=s.split("_")[1],f==="short"&&(h%=a,h!==h%(a/2)&&(h+=h<0?a:-a)),f==="cw"&&h<0?h=(h+a*1e10)%a-~~(h/a)*a:f==="ccw"&&h>0&&(h=(h-a*1e10)%a-~~(h/a)*a)),e._pt=p=new Da(e._pt,t,i,n,h,lG),p.e=d,p},D3=function(){if(!b3){Cn=S3(),Vr=b3=Vr||w3()&&window.PIXI;var e=Vr&&Vr.VERSION&&parseFloat(Vr.VERSION.split(".")[0])||0;Mv=e===4,Lu=e>=8,zu=function(i){return Cn.utils.splitColor((i+"").substr(0,2)==="0x"?"#"+i.substr(2):i)}}},Hu,Oa;for(Hu=0;Hu<F3.length;Hu++)Oa=F3[Hu],Ov[Oa+"X"]=Oa,Ov[Oa+"Y"]=Oa;var Uv={version:"3.14.2",name:"pixi",register:function(e,t,i){Cn=e,Da=i,_3=t.getSetter,D3()},headless:!0,registerPIXI:function(e){Vr=e},init:function(e,t,i,n,s){if(Vr||D3(),!Vr)return T3("PIXI was not found. PixiPlugin.registerPIXI(PIXI);"),!1;var o,a,l,u,c,h,d,f,p,m;for(h in t){if(o=Ov[h],l=t[h],o)a=~h.charAt(h.length-1).toLowerCase().indexOf("x")?"x":"y",this.add(e[o],a,e[o][a],o==="skew"?aG(l):l,0,0,0,0,0,1);else if(h==="scale"||h==="anchor"||h==="pivot"||h==="tileScale")this.add(e[h],"x",e[h].x,l),this.add(e[h],"y",e[h].y,l);else if(h==="rotation"||h==="angle")uG(this,e,h,e[h],l,h==="rotation");else if(oG[h])u||(tG(e,t.colorMatrixFilter||t,this),u=!0);else if(h==="blur"||h==="blurX"||h==="blurY"||h==="blurPadding"){if(c=B3(e,"BlurFilter"),this.add(c,h,c[h],l),t.blurPadding!==0)for(d=t.blurPadding||Math.max(c[h],l)*2,f=e.filters.length;--f>-1;)e.filters[f].padding=Math.max(e.filters[f].padding,d)}else if(sG[h])if((h==="lineColor"||h==="fillColor"||h==="strokeColor")&&e instanceof Vr.Graphics)for(p=("fillStyle"in e)?[e]:(e.geometry||e).graphicsData,m=h.substr(0,h.length-5),Lu&&m==="line"&&(m="stroke"),this._pt=new Da(this._pt,e,h,0,0,iG,{g:e.geometry||e}),f=p.length;--f>-1;)R3(Mv?p[f]:p[f][m+"Style"],Mv?h:"color",l,this);else R3(e,h,l,this);else h==="autoAlpha"?(this._pt=new Da(this._pt,e,"visible",0,0,nG),this.add(e,"alpha",e.alpha,l),this._props.push("alpha","visible")):h!=="resolution"&&this.add(e,h,"get",l);this._props.push(h)}}};S3()&&Cn.registerPlugin(Uv);var F=(r=>(r.Application="application",r.WebGLPipes="webgl-pipes",r.WebGLPipesAdaptor="webgl-pipes-adaptor",r.WebGLSystem="webgl-system",r.WebGPUPipes="webgpu-pipes",r.WebGPUPipesAdaptor="webgpu-pipes-adaptor",r.WebGPUSystem="webgpu-system",r.CanvasSystem="canvas-system",r.CanvasPipesAdaptor="canvas-pipes-adaptor",r.CanvasPipes="canvas-pipes",r.Asset="asset",r.LoadParser="load-parser",r.ResolveParser="resolve-parser",r.CacheParser="cache-parser",r.DetectionParser="detection-parser",r.MaskEffect="mask-effect",r.BlendMode="blend-mode",r.TextureSource="texture-source",r.Environment="environment",r.ShapeBuilder="shape-builder",r.Batcher="batcher",r))(F||{});const zv=r=>{if(typeof r=="function"||typeof r=="object"&&r.extension){if(!r.extension)throw new Error("Extension class must have an extension object");r={...typeof r.extension!="object"?{type:r.extension}:r.extension,ref:r}}if(typeof r=="object")r={...r};else throw new Error("Invalid extension type");return typeof r.type=="string"&&(r.type=[r.type]),r},Ua=(r,e)=>zv(r).priority??e,xe={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...r){return r.map(zv).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...r){return r.map(zv).forEach(e=>{e.type.forEach(t=>{const i=this._addHandlers,n=this._queue;i[t]?i[t]?.(e):(n[t]=n[t]||[],n[t]?.push(e))})}),this},handle(r,e,t){const i=this._addHandlers,n=this._removeHandlers;if(i[r]||n[r])throw new Error(`Extension type ${r} already has a handler`);i[r]=e,n[r]=t;const s=this._queue;return s[r]&&(s[r]?.forEach(o=>e(o)),delete s[r]),this},handleByMap(r,e){return this.handle(r,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByNamedList(r,e,t=-1){return this.handle(r,i=>{e.findIndex(s=>s.name===i.name)>=0||(e.push({name:i.name,value:i.ref}),e.sort((s,o)=>Ua(o.value,t)-Ua(s.value,t)))},i=>{const n=e.findIndex(s=>s.name===i.name);n!==-1&&e.splice(n,1)})},handleByList(r,e,t=-1){return this.handle(r,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((n,s)=>Ua(s,t)-Ua(n,t)))},i=>{const n=e.indexOf(i.ref);n!==-1&&e.splice(n,1)})},mixin(r,...e){for(const t of e)Object.defineProperties(r.prototype,Object.getOwnPropertyDescriptors(t))}},O3={extension:{type:F.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>Ete)}},U3={extension:{type:F.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Promise.resolve().then(()=>Pte)}};class ot{constructor(e,t,i){this._x=t||0,this._y=i||0,this._observer=e}clone(e){return new ot(e??this._observer,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this._observer._onUpdate(this)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this._observer._onUpdate(this)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this._observer._onUpdate(this))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this._observer._onUpdate(this))}}function Lv(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Nv={exports:{}},z3;function cG(){return z3||(z3=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(l,u,c){this.fn=l,this.context=u,this.once=c||!1}function s(l,u,c,h,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new n(c,h||l,d),p=t?t+u:u;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],f]:l._events[p].push(f):(l._events[p]=f,l._eventsCount++),l}function o(l,u){--l._eventsCount===0?l._events=new i:delete l._events[u]}function a(){this._events=new i,this._eventsCount=0}a.prototype.eventNames=function(){var u=[],c,h;if(this._eventsCount===0)return u;for(h in c=this._events)e.call(c,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(c)):u},a.prototype.listeners=function(u){var c=t?t+u:u,h=this._events[c];if(!h)return[];if(h.fn)return[h.fn];for(var d=0,f=h.length,p=new Array(f);d<f;d++)p[d]=h[d].fn;return p},a.prototype.listenerCount=function(u){var c=t?t+u:u,h=this._events[c];return h?h.fn?1:h.length:0},a.prototype.emit=function(u,c,h,d,f,p){var m=t?t+u:u;if(!this._events[m])return!1;var g=this._events[m],v=arguments.length,x,y;if(g.fn){switch(g.once&&this.removeListener(u,g.fn,void 0,!0),v){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,c),!0;case 3:return g.fn.call(g.context,c,h),!0;case 4:return g.fn.call(g.context,c,h,d),!0;case 5:return g.fn.call(g.context,c,h,d,f),!0;case 6:return g.fn.call(g.context,c,h,d,f,p),!0}for(y=1,x=new Array(v-1);y<v;y++)x[y-1]=arguments[y];g.fn.apply(g.context,x)}else{var b=g.length,T;for(y=0;y<b;y++)switch(g[y].once&&this.removeListener(u,g[y].fn,void 0,!0),v){case 1:g[y].fn.call(g[y].context);break;case 2:g[y].fn.call(g[y].context,c);break;case 3:g[y].fn.call(g[y].context,c,h);break;case 4:g[y].fn.call(g[y].context,c,h,d);break;default:if(!x)for(T=1,x=new Array(v-1);T<v;T++)x[T-1]=arguments[T];g[y].fn.apply(g[y].context,x)}}return!0},a.prototype.on=function(u,c,h){return s(this,u,c,h,!1)},a.prototype.once=function(u,c,h){return s(this,u,c,h,!0)},a.prototype.removeListener=function(u,c,h,d){var f=t?t+u:u;if(!this._events[f])return this;if(!c)return o(this,f),this;var p=this._events[f];if(p.fn)p.fn===c&&(!d||p.once)&&(!h||p.context===h)&&o(this,f);else{for(var m=0,g=[],v=p.length;m<v;m++)(p[m].fn!==c||d&&!p[m].once||h&&p[m].context!==h)&&g.push(p[m]);g.length?this._events[f]=g.length===1?g[0]:g:o(this,f)}return this},a.prototype.removeAllListeners=function(u){var c;return u?(c=t?t+u:u,this._events[c]&&o(this,c)):(this._events=new i,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=t,a.EventEmitter=a,r.exports=a})(Nv)),Nv.exports}var hG=cG();const fr=Lv(hG),L3=Math.PI*2,N3=180/Math.PI,ns=Math.PI/180;class me{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new me(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return Gv.x=0,Gv.y=0,Gv}}const Gv=new me;class ae{constructor(e=1,t=0,i=0,n=1,s=0,o=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=n,this.tx=s,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,n,s,o){return this.a=e,this.b=t,this.c=i,this.d=n,this.tx=s,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new me;const i=e.x,n=e.y;return t.x=this.a*i+this.c*n+this.tx,t.y=this.b*i+this.d*n+this.ty,t}applyInverse(e,t){t=t||new me;const i=this.a,n=this.b,s=this.c,o=this.d,a=this.tx,l=this.ty,u=1/(i*o+s*-n),c=e.x,h=e.y;return t.x=o*u*c+-s*u*h+(l*s-a*o)*u,t.y=i*u*h+-n*u*c+(-l*i+a*n)*u,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.a,s=this.c,o=this.tx;return this.a=n*t-this.b*i,this.b=n*i+this.b*t,this.c=s*t-this.d*i,this.d=s*i+this.d*t,this.tx=o*t-this.ty*i,this.ty=o*i+this.ty*t,this}append(e){const t=this.a,i=this.b,n=this.c,s=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*i+e.b*s,this.c=e.c*t+e.d*n,this.d=e.c*i+e.d*s,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*i+e.ty*s+this.ty,this}appendFrom(e,t){const i=e.a,n=e.b,s=e.c,o=e.d,a=e.tx,l=e.ty,u=t.a,c=t.b,h=t.c,d=t.d;return this.a=i*u+n*h,this.b=i*c+n*d,this.c=s*u+o*h,this.d=s*c+o*d,this.tx=a*u+l*h+t.tx,this.ty=a*c+l*d+t.ty,this}setTransform(e,t,i,n,s,o,a,l,u){return this.a=Math.cos(a+u)*s,this.b=Math.sin(a+u)*s,this.c=-Math.sin(a-l)*o,this.d=Math.cos(a-l)*o,this.tx=e-(i*this.a+n*this.c),this.ty=t-(i*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,n=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,n=this.c,s=this.d,o=e.pivot,a=-Math.atan2(-n,s),l=Math.atan2(i,t),u=Math.abs(a+l);return u<1e-5||Math.abs(L3-u)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=a,e.skew.y=l),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(n*n+s*s),e.position.x=this.tx+(o.x*t+o.y*n),e.position.y=this.ty+(o.x*i+o.y*s),e}invert(){const e=this.a,t=this.b,i=this.c,n=this.d,s=this.tx,o=e*n-t*i;return this.a=n/o,this.b=-t/o,this.c=-i/o,this.d=e/o,this.tx=(i*this.ty-n*s)/o,this.ty=-(e*this.ty-t*s)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new ae;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}equals(e){return e.a===this.a&&e.b===this.b&&e.c===this.c&&e.d===this.d&&e.tx===this.tx&&e.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return fG.identity()}static get shared(){return dG.identity()}}const dG=new ae,fG=new ae,ss=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],os=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],as=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ls=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Hv=[],G3=[],Wu=Math.sign;function pG(){for(let r=0;r<16;r++){const e=[];Hv.push(e);for(let t=0;t<16;t++){const i=Wu(ss[r]*ss[t]+as[r]*os[t]),n=Wu(os[r]*ss[t]+ls[r]*os[t]),s=Wu(ss[r]*as[t]+as[r]*ls[t]),o=Wu(os[r]*as[t]+ls[r]*ls[t]);for(let a=0;a<16;a++)if(ss[a]===i&&os[a]===n&&as[a]===s&&ls[a]===o){e.push(a);break}}}for(let r=0;r<16;r++){const e=new ae;e.set(ss[r],os[r],as[r],ls[r],0,0),G3.push(e)}}pG();const Be={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:r=>ss[r],uY:r=>os[r],vX:r=>as[r],vY:r=>ls[r],inv:r=>r&8?r&15:-r&7,add:(r,e)=>Hv[r][e],sub:(r,e)=>Hv[r][Be.inv(e)],rotate180:r=>r^4,isVertical:r=>(r&3)===2,byDirection:(r,e)=>Math.abs(r)*2<=Math.abs(e)?e>=0?Be.S:Be.N:Math.abs(e)*2<=Math.abs(r)?r>0?Be.E:Be.W:e>0?r>0?Be.SE:Be.SW:r>0?Be.NE:Be.NW,matrixAppendRotationInv:(r,e,t=0,i=0)=>{const n=G3[Be.inv(e)];n.tx=t,n.ty=i,r.append(n)},transformRectCoords:(r,e,t,i)=>{const{x:n,y:s,width:o,height:a}=r,{x:l,y:u,width:c,height:h}=e;return t===Be.E?(i.set(n+l,s+u,o,a),i):t===Be.S?i.set(c-s-a+l,n+u,a,o):t===Be.W?i.set(c-n-o+l,h-s-a+u,o,a):t===Be.N?i.set(s+l,h-n-o+u,a,o):i.set(n+l,s+u,o,a)}},Vu=[new me,new me,new me,new me];class he{constructor(e=0,t=0,i=0,n=0){this.type="rectangle",this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(n)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new he(0,0,0,0)}clone(){return new he(this.x,this.y,this.width,this.height)}copyFromBounds(e){return this.x=e.minX,this.y=e.minY,this.width=e.maxX-e.minX,this.height=e.maxY-e.minY,this}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e<this.x+this.width&&t>=this.y&&t<this.y+this.height}strokeContains(e,t,i,n=.5){const{width:s,height:o}=this;if(s<=0||o<=0)return!1;const a=this.x,l=this.y,u=i*(1-n),c=i-u,h=a-u,d=a+s+u,f=l-u,p=l+o+u,m=a+c,g=a+s-c,v=l+c,x=l+o-c;return e>=h&&e<=d&&t>=f&&t<=p&&!(e>m&&e<g&&t>v&&t<x)}intersects(e,t){if(!t){const E=this.x<e.x?e.x:this.x;if((this.right>e.right?e.right:this.right)<=E)return!1;const S=this.y<e.y?e.y:this.y;return(this.bottom>e.bottom?e.bottom:this.bottom)>S}const i=this.left,n=this.right,s=this.top,o=this.bottom;if(n<=i||o<=s)return!1;const a=Vu[0].set(e.left,e.top),l=Vu[1].set(e.left,e.bottom),u=Vu[2].set(e.right,e.top),c=Vu[3].set(e.right,e.bottom);if(u.x<=a.x||l.y<=a.y)return!1;const h=Math.sign(t.a*t.d-t.b*t.c);if(h===0||(t.apply(a,a),t.apply(l,l),t.apply(u,u),t.apply(c,c),Math.max(a.x,l.x,u.x,c.x)<=i||Math.min(a.x,l.x,u.x,c.x)>=n||Math.max(a.y,l.y,u.y,c.y)<=s||Math.min(a.y,l.y,u.y,c.y)>=o))return!1;const d=h*(l.y-a.y),f=h*(a.x-l.x),p=d*i+f*s,m=d*n+f*s,g=d*i+f*o,v=d*n+f*o;if(Math.max(p,m,g,v)<=d*a.x+f*a.y||Math.min(p,m,g,v)>=d*c.x+f*c.y)return!1;const x=h*(a.y-u.y),y=h*(u.x-a.x),b=x*i+y*s,T=x*n+y*s,P=x*i+y*o,A=x*n+y*o;return!(Math.max(b,T,P,A)<=x*a.x+y*a.y||Math.min(b,T,P,A)>=x*c.x+y*c.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),s=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=n,this.height=Math.max(s-n,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=n-this.y,this}scale(e,t=e){return this.x*=e,this.y*=t,this.width*=e,this.height*=t,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),s=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=n,this.height=s-n,this}getBounds(e){return e||(e=new he),e.copyFrom(this),e}containsRect(e){if(this.width<=0||this.height<=0)return!1;const t=e.x,i=e.y,n=e.x+e.width,s=e.y+e.height;return t>=this.x&&t<this.x+this.width&&i>=this.y&&i<this.y+this.height&&n>=this.x&&n<this.x+this.width&&s>=this.y&&s<this.y+this.height}set(e,t,i,n){return this.x=e,this.y=t,this.width=i,this.height=n,this}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const za={default:-1};function tt(r="default"){return za[r]===void 0&&(za[r]=-1),++za[r]}function mG(){for(const r in za)delete za[r]}const H3=new Set,Te="8.0.0",W3="8.3.4",oo={quiet:!1,noColor:!1},J=(r,e,t=3)=>{if(oo.quiet||H3.has(e))return;let i=new Error().stack;const n=`${e}
133
133
  Deprecated since v${r}`,s=typeof console.groupCollapsed=="function"&&!oo.noColor;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",n):(i=i.split(`
134
134
  `).splice(t).join(`
135
135
  `),s?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",n),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",n),console.warn(i))),H3.add(e)};Object.defineProperties(J,{quiet:{get:()=>oo.quiet,set:r=>{oo.quiet=r},enumerable:!0,configurable:!1},noColor:{get:()=>oo.noColor,set:r=>{oo.noColor=r},enumerable:!0,configurable:!1}});const Wv=()=>{};function us(r){return r+=r===0?1:0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r+1}function Vv(r){return!(r&r-1)&&!!r}function gG(r){let e=(r>65535?1:0)<<4;r>>>=e;let t=(r>255?1:0)<<3;return r>>>=t,e|=t,t=(r>15?1:0)<<2,r>>>=t,e|=t,t=(r>3?1:0)<<1,r>>>=t,e|=t,e|r>>1}function ni(r){const e={};for(const t in r)r[t]!==void 0&&(e[t]=r[t]);return e}const V3=Object.create(null);function vG(r){const e=V3[r];return e===void 0&&(V3[r]=tt("resource")),e}const X3=class tR extends fr{constructor(e={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,e={...tR.defaultOptions,...e},this.addressMode=e.addressMode,this.addressModeU=e.addressModeU??this.addressModeU,this.addressModeV=e.addressModeV??this.addressModeV,this.addressModeW=e.addressModeW??this.addressModeW,this.scaleMode=e.scaleMode,this.magFilter=e.magFilter??this.magFilter,this.minFilter=e.minFilter??this.minFilter,this.mipmapFilter=e.mipmapFilter??this.mipmapFilter,this.lodMinClamp=e.lodMinClamp,this.lodMaxClamp=e.lodMaxClamp,this.compare=e.compare,this.maxAnisotropy=e.maxAnisotropy??1}set addressMode(e){this.addressModeU=e,this.addressModeV=e,this.addressModeW=e}get addressMode(){return this.addressModeU}set wrapMode(e){J(Te,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=e}get wrapMode(){return this.addressMode}set scaleMode(e){this.magFilter=e,this.minFilter=e,this.mipmapFilter=e}get scaleMode(){return this.magFilter}set maxAnisotropy(e){this._maxAnisotropy=Math.min(e,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){const e=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=vG(e),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};X3.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let kr=X3;const Y3=class rR extends fr{constructor(e={}){super(),this.options=e,this.uid=tt("textureSource"),this._resourceType="textureSource",this._resourceId=tt("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,e={...rR.defaultOptions,...e},this.label=e.label??"",this.resource=e.resource,this.autoGarbageCollect=e.autoGarbageCollect,this._resolution=e.resolution,e.width?this.pixelWidth=e.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,e.height?this.pixelHeight=e.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=e.format,this.dimension=e.dimensions,this.mipLevelCount=e.mipLevelCount,this.autoGenerateMipmaps=e.autoGenerateMipmaps,this.sampleCount=e.sampleCount,this.antialias=e.antialias,this.alphaMode=e.alphaMode,this.style=new kr(ni(e)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(e){this.style!==e&&(this._style?.off("change",this._onStyleChange,this),this._style=e,this._style?.on("change",this._onStyleChange,this),this._onStyleChange())}set maxAnisotropy(e){this._style.maxAnisotropy=e}get maxAnisotropy(){return this._style.maxAnisotropy}get addressMode(){return this._style.addressMode}set addressMode(e){this._style.addressMode=e}get repeatMode(){return this._style.addressMode}set repeatMode(e){this._style.addressMode=e}get magFilter(){return this._style.magFilter}set magFilter(e){this._style.magFilter=e}get minFilter(){return this._style.minFilter}set minFilter(e){this._style.minFilter=e}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(e){this._style.mipmapFilter=e}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(e){this._style.lodMinClamp=e}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(e){this._style.lodMaxClamp=e}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const e=this._resolution;if(this.resize(this.resourceWidth/e,this.resourceHeight/e))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=tt("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){const{resource:e}=this;return e.naturalWidth||e.videoWidth||e.displayWidth||e.width}get resourceHeight(){const{resource:e}=this;return e.naturalHeight||e.videoHeight||e.displayHeight||e.height}get resolution(){return this._resolution}set resolution(e){this._resolution!==e&&(this._resolution=e,this.width=this.pixelWidth/e,this.height=this.pixelHeight/e)}resize(e,t,i){i||(i=this._resolution),e||(e=this.width),t||(t=this.height);const n=Math.round(e*i),s=Math.round(t*i);return this.width=n/i,this.height=s/i,this._resolution=i,this.pixelWidth===n&&this.pixelHeight===s?!1:(this._refreshPOT(),this.pixelWidth=n,this.pixelHeight=s,this.emit("resize",this),this._resourceId=tt("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(e){this._style.wrapMode=e}get wrapMode(){return this._style.wrapMode}set scaleMode(e){this._style.scaleMode=e}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=Vv(this.pixelWidth)&&Vv(this.pixelHeight)}static test(e){throw new Error("Unimplemented")}};Y3.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let dt=Y3;class Xu extends dt{constructor(e){const t=e.resource||new Float32Array(e.width*e.height*4);let i=e.format;i||(t instanceof Float32Array?i="rgba32float":t instanceof Int32Array||t instanceof Uint32Array?i="rgba32uint":t instanceof Int16Array||t instanceof Uint16Array?i="rgba16uint":(t instanceof Int8Array,i="bgra8unorm")),super({...e,resource:t,format:i}),this.uploadMethodId="buffer"}static test(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}Xu.extension=F.TextureSource;const q3=new ae;class Xv{constructor(e,t){this.mapCoord=new ae,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof t>"u"?this.clampMargin=e.width<10?0:.5:this.clampMargin=t,this.isSimple=!1,this.texture=e}get texture(){return this._texture}set texture(e){this.texture!==e&&(this._texture?.removeListener("update",this.update,this),this._texture=e,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(e,t){t===void 0&&(t=e);const i=this.mapCoord;for(let n=0;n<e.length;n+=2){const s=e[n],o=e[n+1];t[n]=s*i.a+o*i.c+i.tx,t[n+1]=s*i.b+o*i.d+i.ty}return t}update(){const e=this._texture;this._updateID++;const t=e.uvs;this.mapCoord.set(t.x1-t.x0,t.y1-t.y0,t.x3-t.x0,t.y3-t.y0,t.x0,t.y0);const i=e.orig,n=e.trim;n&&(q3.set(i.width/n.width,0,0,i.height/n.height,-n.x/n.width,-n.y/n.height),this.mapCoord.append(q3));const s=e.source,o=this.uClampFrame,a=this.clampMargin/s._resolution,l=this.clampOffset/s._resolution;return o[0]=(e.frame.x+a+l)/s.width,o[1]=(e.frame.y+a+l)/s.height,o[2]=(e.frame.x+e.frame.width-a+l)/s.width,o[3]=(e.frame.y+e.frame.height-a+l)/s.height,this.uClampOffset[0]=this.clampOffset/s.pixelWidth,this.uClampOffset[1]=this.clampOffset/s.pixelHeight,this.isSimple=e.frame.width===s.width&&e.frame.height===s.height&&e.rotate===0,!0}}class Q extends fr{constructor({source:e,label:t,frame:i,orig:n,trim:s,defaultAnchor:o,defaultBorders:a,rotate:l,dynamic:u}={}){if(super(),this.uid=tt("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new he,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=t,this.source=e?.source??new dt,this.noFrame=!i,i)this.frame.copyFrom(i);else{const{width:c,height:h}=this._source;this.frame.width=c,this.frame.height=h}this.orig=n||this.frame,this.trim=s,this.rotate=l??0,this.defaultAnchor=o,this.defaultBorders=a,this.destroyed=!1,this.dynamic=u||!1,this.updateUvs()}set source(e){this._source&&this._source.off("resize",this.update,this),this._source=e,e.on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new Xv(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){const{uvs:e,frame:t}=this,{width:i,height:n}=this._source,s=t.x/i,o=t.y/n,a=t.width/i,l=t.height/n;let u=this.rotate;if(u){const c=a/2,h=l/2,d=s+c,f=o+h;u=Be.add(u,Be.NW),e.x0=d+c*Be.uX(u),e.y0=f+h*Be.uY(u),u=Be.add(u,2),e.x1=d+c*Be.uX(u),e.y1=f+h*Be.uY(u),u=Be.add(u,2),e.x2=d+c*Be.uX(u),e.y2=f+h*Be.uY(u),u=Be.add(u,2),e.x3=d+c*Be.uX(u),e.y3=f+h*Be.uY(u)}else e.x0=s,e.y0=o,e.x1=s+a,e.y1=o,e.x2=s+a,e.y2=o+l,e.x3=s,e.y3=o+l}destroy(e=!1){this._source&&(this._source.off("resize",this.update,this),e&&(this._source.destroy(),this._source=null)),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return J(Te,"Texture.baseTexture is now Texture.source"),this._source}}Q.EMPTY=new Q({label:"EMPTY",source:new dt({label:"EMPTY"})}),Q.EMPTY.destroy=Wv,Q.WHITE=new Q({source:new Xu({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"}),Q.WHITE.destroy=Wv;function Yv(r,e,t){const{width:i,height:n}=t.orig,s=t.trim;if(s){const o=s.width,a=s.height;r.minX=s.x-e._x*i,r.maxX=r.minX+o,r.minY=s.y-e._y*n,r.maxY=r.minY+a}else r.minX=-e._x*i,r.maxX=r.minX+i,r.minY=-e._y*n,r.maxY=r.minY+n}const j3=new ae;class Dt{constructor(e=1/0,t=1/0,i=-1/0,n=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=j3,this.minX=e,this.minY=t,this.maxX=i,this.maxY=n}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new he);const e=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(e.x=0,e.y=0,e.width=0,e.height=0):e.copyFromBounds(this),e}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=j3,this}set(e,t,i,n){this.minX=e,this.minY=t,this.maxX=i,this.maxY=n}addFrame(e,t,i,n,s){s||(s=this.matrix);const o=s.a,a=s.b,l=s.c,u=s.d,c=s.tx,h=s.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=o*e+l*t+c,v=a*e+u*t+h;g<d&&(d=g),v<f&&(f=v),g>p&&(p=g),v>m&&(m=v),g=o*i+l*t+c,v=a*i+u*t+h,g<d&&(d=g),v<f&&(f=v),g>p&&(p=g),v>m&&(m=v),g=o*e+l*n+c,v=a*e+u*n+h,g<d&&(d=g),v<f&&(f=v),g>p&&(p=g),v>m&&(m=v),g=o*i+l*n+c,v=a*i+u*n+h,g<d&&(d=g),v<f&&(f=v),g>p&&(p=g),v>m&&(m=v),this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addRect(e,t){this.addFrame(e.x,e.y,e.x+e.width,e.y+e.height,t)}addBounds(e,t){this.addFrame(e.minX,e.minY,e.maxX,e.maxY,t)}addBoundsMask(e){this.minX=this.minX>e.minX?this.minX:e.minX,this.minY=this.minY>e.minY?this.minY:e.minY,this.maxX=this.maxX<e.maxX?this.maxX:e.maxX,this.maxY=this.maxY<e.maxY?this.maxY:e.maxY}applyMatrix(e){const t=this.minX,i=this.minY,n=this.maxX,s=this.maxY,{a:o,b:a,c:l,d:u,tx:c,ty:h}=e;let d=o*t+l*i+c,f=a*t+u*i+h;this.minX=d,this.minY=f,this.maxX=d,this.maxY=f,d=o*n+l*i+c,f=a*n+u*i+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*t+l*s+c,f=a*t+u*s+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*n+l*s+c,f=a*n+u*s+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(e){return this.minX<e.left&&(this.minX=e.left),this.maxX>e.right&&(this.maxX=e.right),this.minY<e.top&&(this.minY=e.top),this.maxY>e.bottom&&(this.maxY=e.bottom),this}fitBounds(e,t,i,n){return this.minX<e&&(this.minX=e),this.maxX>t&&(this.maxX=t),this.minY<i&&(this.minY=i),this.maxY>n&&(this.maxY=n),this}pad(e,t=e){return this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new Dt(this.minX,this.minY,this.maxX,this.maxY)}scale(e,t=e){return this.minX*=e,this.minY*=t,this.maxX*=e,this.maxY*=t,this}get x(){return this.minX}set x(e){const t=this.maxX-this.minX;this.minX=e,this.maxX=e+t}get y(){return this.minY}set y(e){const t=this.maxY-this.minY;this.minY=e,this.maxY=e+t}get width(){return this.maxX-this.minX}set width(e){this.maxX=this.minX+e}get height(){return this.maxY-this.minY}set height(e){this.maxY=this.minY+e}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(e,t,i,n){let s=this.minX,o=this.minY,a=this.maxX,l=this.maxY;n||(n=this.matrix);const u=n.a,c=n.b,h=n.c,d=n.d,f=n.tx,p=n.ty;for(let m=t;m<i;m+=2){const g=e[m],v=e[m+1],x=u*g+h*v+f,y=c*g+d*v+p;s=x<s?x:s,o=y<o?y:o,a=x>a?x:a,l=y>l?y:l}this.minX=s,this.minY=o,this.maxX=a,this.maxY=l}containsPoint(e,t){return this.minX<=e&&this.minY<=t&&this.maxX>=e&&this.maxY>=t}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}copyFrom(e){return this.minX=e.minX,this.minY=e.minY,this.maxX=e.maxX,this.maxY=e.maxY,this}}var xG={grad:.9,turn:360,rad:360/(2*Math.PI)},Wi=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Gt=function(r,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*r)/t+0},qr=function(r,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),r>t?t:r>e?r:e},K3=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},Q3=function(r){return{r:qr(r.r,0,255),g:qr(r.g,0,255),b:qr(r.b,0,255),a:qr(r.a)}},qv=function(r){return{r:Gt(r.r),g:Gt(r.g),b:Gt(r.b),a:Gt(r.a,3)}},yG=/^#([0-9a-f]{3,8})$/i,Yu=function(r){var e=r.toString(16);return e.length<2?"0"+e:e},Z3=function(r){var e=r.r,t=r.g,i=r.b,n=r.a,s=Math.max(e,t,i),o=s-Math.min(e,t,i),a=o?s===e?(t-i)/o:s===t?2+(i-e)/o:4+(e-t)/o:0;return{h:60*(a<0?a+6:a),s:s?o/s*100:0,v:s/255*100,a:n}},J3=function(r){var e=r.h,t=r.s,i=r.v,n=r.a;e=e/360*6,t/=100,i/=100;var s=Math.floor(e),o=i*(1-t),a=i*(1-(e-s)*t),l=i*(1-(1-e+s)*t),u=s%6;return{r:255*[i,a,o,o,l,i][u],g:255*[l,i,i,a,o,o][u],b:255*[o,o,l,i,i,a][u],a:n}},$3=function(r){return{h:K3(r.h),s:qr(r.s,0,100),l:qr(r.l,0,100),a:qr(r.a)}},eT=function(r){return{h:Gt(r.h),s:Gt(r.s),l:Gt(r.l),a:Gt(r.a,3)}},tT=function(r){return J3((t=(e=r).s,{h:e.h,s:(t*=((i=e.l)<50?i:100-i)/100)>0?2*t/(i+t)*100:0,v:i+t,a:e.a}));var e,t,i},La=function(r){return{h:(e=Z3(r)).h,s:(n=(200-(t=e.s))*(i=e.v)/100)>0&&n<200?t*i/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,t,i,n},bG=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_G=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,wG=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,SG=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,jv={string:[[function(r){var e=yG.exec(r);return e?(r=e[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?Gt(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?Gt(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var e=wG.exec(r)||SG.exec(r);return e?e[2]!==e[4]||e[4]!==e[6]?null:Q3({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(r){var e=bG.exec(r)||_G.exec(r);if(!e)return null;var t,i,n=$3({h:(t=e[1],i=e[2],i===void 0&&(i="deg"),Number(t)*(xG[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return tT(n)},"hsl"]],object:[[function(r){var e=r.r,t=r.g,i=r.b,n=r.a,s=n===void 0?1:n;return Wi(e)&&Wi(t)&&Wi(i)?Q3({r:Number(e),g:Number(t),b:Number(i),a:Number(s)}):null},"rgb"],[function(r){var e=r.h,t=r.s,i=r.l,n=r.a,s=n===void 0?1:n;if(!Wi(e)||!Wi(t)||!Wi(i))return null;var o=$3({h:Number(e),s:Number(t),l:Number(i),a:Number(s)});return tT(o)},"hsl"],[function(r){var e=r.h,t=r.s,i=r.v,n=r.a,s=n===void 0?1:n;if(!Wi(e)||!Wi(t)||!Wi(i))return null;var o=(function(a){return{h:K3(a.h),s:qr(a.s,0,100),v:qr(a.v,0,100),a:qr(a.a)}})({h:Number(e),s:Number(t),v:Number(i),a:Number(s)});return J3(o)},"hsv"]]},rT=function(r,e){for(var t=0;t<e.length;t++){var i=e[t][0](r);if(i)return[i,e[t][1]]}return[null,void 0]},TG=function(r){return typeof r=="string"?rT(r.trim(),jv.string):typeof r=="object"&&r!==null?rT(r,jv.object):[null,void 0]},Kv=function(r,e){var t=La(r);return{h:t.h,s:qr(t.s+100*e,0,100),l:t.l,a:t.a}},Qv=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},iT=function(r,e){var t=La(r);return{h:t.h,s:t.s,l:qr(t.l+100*e,0,100),a:t.a}},Zv=(function(){function r(e){this.parsed=TG(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return this.parsed!==null},r.prototype.brightness=function(){return Gt(Qv(this.rgba),2)},r.prototype.isDark=function(){return Qv(this.rgba)<.5},r.prototype.isLight=function(){return Qv(this.rgba)>=.5},r.prototype.toHex=function(){return e=qv(this.rgba),t=e.r,i=e.g,n=e.b,o=(s=e.a)<1?Yu(Gt(255*s)):"","#"+Yu(t)+Yu(i)+Yu(n)+o;var e,t,i,n,s,o},r.prototype.toRgb=function(){return qv(this.rgba)},r.prototype.toRgbString=function(){return e=qv(this.rgba),t=e.r,i=e.g,n=e.b,(s=e.a)<1?"rgba("+t+", "+i+", "+n+", "+s+")":"rgb("+t+", "+i+", "+n+")";var e,t,i,n,s},r.prototype.toHsl=function(){return eT(La(this.rgba))},r.prototype.toHslString=function(){return e=eT(La(this.rgba)),t=e.h,i=e.s,n=e.l,(s=e.a)<1?"hsla("+t+", "+i+"%, "+n+"%, "+s+")":"hsl("+t+", "+i+"%, "+n+"%)";var e,t,i,n,s},r.prototype.toHsv=function(){return e=Z3(this.rgba),{h:Gt(e.h),s:Gt(e.s),v:Gt(e.v),a:Gt(e.a,3)};var e},r.prototype.invert=function(){return wi({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},r.prototype.saturate=function(e){return e===void 0&&(e=.1),wi(Kv(this.rgba,e))},r.prototype.desaturate=function(e){return e===void 0&&(e=.1),wi(Kv(this.rgba,-e))},r.prototype.grayscale=function(){return wi(Kv(this.rgba,-1))},r.prototype.lighten=function(e){return e===void 0&&(e=.1),wi(iT(this.rgba,e))},r.prototype.darken=function(e){return e===void 0&&(e=.1),wi(iT(this.rgba,-e))},r.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},r.prototype.alpha=function(e){return typeof e=="number"?wi({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):Gt(this.rgba.a,3);var t},r.prototype.hue=function(e){var t=La(this.rgba);return typeof e=="number"?wi({h:e,s:t.s,l:t.l,a:t.a}):Gt(t.h)},r.prototype.isEqual=function(e){return this.toHex()===wi(e).toHex()},r})(),wi=function(r){return r instanceof Zv?r:new Zv(r)},nT=[],CG=function(r){r.forEach(function(e){nT.indexOf(e)<0&&(e(Zv,jv),nT.push(e))})};function AG(r,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var n in t)i[t[n]]=n;var s={};r.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,l,u=i[this.toHex()];if(u)return u;if(o?.closest){var c=this.toRgb(),h=1/0,d="black";if(!s.length)for(var f in t)s[f]=new r(t[f]).toRgb();for(var p in t){var m=(a=c,l=s[p],Math.pow(a.r-l.r,2)+Math.pow(a.g-l.g,2)+Math.pow(a.b-l.b,2));m<h&&(h=m,d=p)}return d}},e.string.push([function(o){var a=o.toLowerCase(),l=a==="transparent"?"#0000":t[a];return l?new r(l).toRgb():null},"name"])}CG([AG]);const ao=class Dl{constructor(e=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=e}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(e){return this.value=e,this}set value(e){if(e instanceof Dl)this._value=this._cloneSource(e._value),this._int=e._int,this._components.set(e._components);else{if(e===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,e))&&(this._value=this._cloneSource(e),this._normalize(this._value))}}get value(){return this._value}_cloneSource(e){return typeof e=="string"||typeof e=="number"||e instanceof Number||e===null?e:Array.isArray(e)||ArrayBuffer.isView(e)?e.slice(0):typeof e=="object"&&e!==null?{...e}:e}_isSourceEqual(e,t){const i=typeof e;if(i!==typeof t)return!1;if(i==="number"||i==="string"||e instanceof Number)return e===t;if(Array.isArray(e)&&Array.isArray(t)||ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return e.length!==t.length?!1:e.every((s,o)=>s===t[o]);if(e!==null&&t!==null){const s=Object.keys(e),o=Object.keys(t);return s.length!==o.length?!1:s.every(a=>e[a]===t[a])}return e===t}toRgba(){const[e,t,i,n]=this._components;return{r:e,g:t,b:i,a:n}}toRgb(){const[e,t,i]=this._components;return{r:e,g:t,b:i}}toRgbaString(){const[e,t,i]=this.toUint8RgbArray();return`rgba(${e},${t},${i},${this.alpha})`}toUint8RgbArray(e){const[t,i,n]=this._components;return this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb),e[0]=Math.round(t*255),e[1]=Math.round(i*255),e[2]=Math.round(n*255),e}toArray(e){this._arrayRgba||(this._arrayRgba=[]),e||(e=this._arrayRgba);const[t,i,n,s]=this._components;return e[0]=t,e[1]=i,e[2]=n,e[3]=s,e}toRgbArray(e){this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb);const[t,i,n]=this._components;return e[0]=t,e[1]=i,e[2]=n,e}toNumber(){return this._int}toBgrNumber(){const[e,t,i]=this.toUint8RgbArray();return(i<<16)+(t<<8)+e}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,i,n,s]=Dl._temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=i,this._components[2]*=n,this._components[3]*=s,this._refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this._refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let i=this._int>>16&255,n=this._int>>8&255,s=this._int&255;return t&&(i=i*e+.5|0,n=n*e+.5|0,s=s*e+.5|0),(e*255<<24)+(i<<16)+(n<<8)+s}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const t=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-t.length)+t}setAlpha(e){return this._components[3]=this._clamp(e),this}_normalize(e){let t,i,n,s;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const o=e;t=(o>>16&255)/255,i=(o>>8&255)/255,n=(o&255)/255,s=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,i,n,s=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,i,n,s=255]=e,t/=255,i/=255,n/=255,s/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const a=Dl.HEX_PATTERN.exec(e);a&&(e=`#${a[2]}`)}const o=wi(e);o.isValid()&&({r:t,g:i,b:n,a:s}=o.rgba,t/=255,i/=255,n/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=i,this._components[2]=n,this._components[3]=s,this._refreshInt();else throw new Error(`Unable to convert color ${e}`)}_refreshInt(){this._clamp(this._components);const[e,t,i]=this._components;this._int=(e*255<<16)+(t*255<<8)+(i*255|0)}_clamp(e,t=0,i=1){return typeof e=="number"?Math.min(Math.max(e,t),i):(e.forEach((n,s)=>{e[s]=Math.min(Math.max(n,t),i)}),e)}static isColorLike(e){return typeof e=="number"||typeof e=="string"||e instanceof Number||e instanceof Dl||Array.isArray(e)||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Float32Array||e.r!==void 0&&e.g!==void 0&&e.b!==void 0||e.r!==void 0&&e.g!==void 0&&e.b!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0&&e.a!==void 0}};ao.shared=new ao,ao._temp=new ao,ao.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let ye=ao;const sT={cullArea:null,cullable:!1,cullableChildren:!0};let Jv=0;const oT=500;function de(...r){Jv!==oT&&(Jv++,Jv===oT?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...r))}const cs={_registeredResources:new Set,register(r){this._registeredResources.add(r)},unregister(r){this._registeredResources.delete(r)},release(){this._registeredResources.forEach(r=>r.clear())},get registeredCount(){return this._registeredResources.size},isRegistered(r){return this._registeredResources.has(r)},reset(){this._registeredResources.clear()}};class aT{constructor(e,t){this._pool=[],this._count=0,this._index=0,this._classType=e,t&&this.prepopulate(t)}prepopulate(e){for(let t=0;t<e;t++)this._pool[this._index++]=new this._classType;this._count+=e}get(e){let t;return this._index>0?t=this._pool[--this._index]:(t=new this._classType,this._count++),t.init?.(e),t}return(e){e.reset?.(),this._pool[this._index++]=e}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){if(this._pool.length>0&&this._pool[0].destroy)for(let e=0;e<this._index;e++)this._pool[e].destroy();this._pool.length=0,this._count=0,this._index=0}}class lT{constructor(){this._poolsByClass=new Map}prepopulate(e,t){this.getPool(e).prepopulate(t)}get(e,t){return this.getPool(e).get(t)}return(e){this.getPool(e.constructor).return(e)}getPool(e){return this._poolsByClass.has(e)||this._poolsByClass.set(e,new aT(e)),this._poolsByClass.get(e)}stats(){const e={};return this._poolsByClass.forEach(t=>{const i=e[t._classType.name]?t._classType.name+t._classType.ID:t._classType.name;e[i]={free:t.totalFree,used:t.totalUsed,size:t.totalSize}}),e}clear(){this._poolsByClass.forEach(e=>e.clear()),this._poolsByClass.clear()}}const Pt=new lT;cs.register(Pt);const uT={get isCachedAsTexture(){return!!this.renderGroup?.isCachedAsTexture},cacheAsTexture(r){typeof r=="boolean"&&r===!1?this.disableRenderGroup():(this.enableRenderGroup(),this.renderGroup.enableCacheAsTexture(r===!0?{}:r))},updateCacheTexture(){this.renderGroup?.updateCacheTexture()},get cacheAsBitmap(){return this.isCachedAsTexture},set cacheAsBitmap(r){J("v8.6.0","cacheAsBitmap is deprecated, use cacheAsTexture instead."),this.cacheAsTexture(r)}};function $v(r,e,t){const i=r.length;let n;if(e>=i||t===0)return;t=e+t>i?i-e:t;const s=i-t;for(n=e;n<s;++n)r[n]=r[n+t];r.length=s}const cT={allowChildren:!0,removeChildren(r=0,e){const t=e??this.children.length,i=t-r,n=[];if(i>0&&i<=t){for(let o=t-1;o>=r;o--){const a=this.children[o];a&&(n.push(a),a.parent=null)}$v(this.children,r,t);const s=this.renderGroup||this.parentRenderGroup;s&&s.removeChildren(n);for(let o=0;o<n.length;++o){const a=n[o];a.parentRenderLayer?.detach(a),this.emit("childRemoved",a,this,o),n[o].emit("removed",this)}return n.length>0&&this._didViewChangeTick++,n}else if(i===0&&this.children.length===0)return n;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(r){const e=this.getChildAt(r);return this.removeChild(e)},getChildAt(r){if(r<0||r>=this.children.length)throw new Error(`getChildAt: Index (${r}) does not exist.`);return this.children[r]},setChildIndex(r,e){if(e<0||e>=this.children.length)throw new Error(`The index ${e} supplied is out of bounds ${this.children.length}`);this.getChildIndex(r),this.addChildAt(r,e)},getChildIndex(r){const e=this.children.indexOf(r);if(e===-1)throw new Error("The supplied Container must be a child of the caller");return e},addChildAt(r,e){this.allowChildren||J(Te,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:t}=this;if(e<0||e>t.length)throw new Error(`${r}addChildAt: The index ${e} supplied is out of bounds ${t.length}`);if(r.parent){const n=r.parent.children.indexOf(r);if(r.parent===this&&n===e)return r;n!==-1&&r.parent.children.splice(n,1)}e===t.length?t.push(r):t.splice(e,0,r),r.parent=this,r.didChange=!0,r._updateFlags=15;const i=this.renderGroup||this.parentRenderGroup;return i&&i.addChild(r),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",r,this,e),r.emit("added",this),r},swapChildren(r,e){if(r===e)return;const t=this.getChildIndex(r),i=this.getChildIndex(e);this.children[t]=e,this.children[i]=r;const n=this.renderGroup||this.parentRenderGroup;n&&(n.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){this.parent?.removeChild(this)},reparentChild(...r){return r.length===1?this.reparentChildAt(r[0],this.children.length):(r.forEach(e=>this.reparentChildAt(e,this.children.length)),r[0])},reparentChildAt(r,e){if(r.parent===this)return this.setChildIndex(r,e),r;const t=r.worldTransform.clone();r.removeFromParent(),this.addChildAt(r,e);const i=this.worldTransform.clone();return i.invert(),t.prepend(i),r.setFromMatrix(t),r},replaceChild(r,e){r.updateLocalTransform(),this.addChildAt(e,this.getChildIndex(r)),e.setFromMatrix(r.localTransform),e.updateLocalTransform(),this.removeChild(r)}},hT={collectRenderables(r,e,t){this.parentRenderLayer&&this.parentRenderLayer!==t||this.globalDisplayStatus<7||!this.includeInBuild||(this.sortableChildren&&this.sortChildren(),this.isSimple?this.collectRenderablesSimple(r,e,t):this.renderGroup?e.renderPipes.renderGroup.addRenderGroup(this.renderGroup,r):this.collectRenderablesWithEffects(r,e,t))},collectRenderablesSimple(r,e,t){const i=this.children,n=i.length;for(let s=0;s<n;s++)i[s].collectRenderables(r,e,t)},collectRenderablesWithEffects(r,e,t){const{renderPipes:i}=e;for(let n=0;n<this.effects.length;n++){const s=this.effects[n];i[s.pipe].push(s,this,r)}this.collectRenderablesSimple(r,e,t);for(let n=this.effects.length-1;n>=0;n--){const s=this.effects[n];i[s.pipe].pop(s,this,r)}}};class Na{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let e=0;e<this.filters.length;e++)this.filters[e].destroy();this.filters=null,this.filterArea=null}}class dT{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(e=>{this.add({test:e.test,maskClass:e})}))}add(e){this._tests.push(e)}getMaskEffect(e){this._initialized||this.init();for(let t=0;t<this._tests.length;t++){const i=this._tests[t];if(i.test(e))return Pt.get(i.maskClass,e)}return e}returnMaskEffect(e){Pt.return(e)}}const qu=new dT;xe.handleByList(F.MaskEffect,qu._effectClasses);const fT={_maskEffect:null,_maskOptions:{inverse:!1},_filterEffect:null,effects:[],_markStructureAsChanged(){const r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0)},addEffect(r){this.effects.indexOf(r)===-1&&(this.effects.push(r),this.effects.sort((t,i)=>t.priority-i.priority),this._markStructureAsChanged(),this._updateIsSimple())},removeEffect(r){const e=this.effects.indexOf(r);e!==-1&&(this.effects.splice(e,1),this._markStructureAsChanged(),this._updateIsSimple())},set mask(r){const e=this._maskEffect;e?.mask!==r&&(e&&(this.removeEffect(e),qu.returnMaskEffect(e),this._maskEffect=null),r!=null&&(this._maskEffect=qu.getMaskEffect(r),this.addEffect(this._maskEffect)))},get mask(){return this._maskEffect?.mask},setMask(r){this._maskOptions={...this._maskOptions,...r},r.mask&&(this.mask=r.mask),this._markStructureAsChanged()},set filters(r){!Array.isArray(r)&&r&&(r=[r]);const e=this._filterEffect||(this._filterEffect=new Na);r=r;const t=r?.length>0,i=e.filters?.length>0,n=t!==i;r=Array.isArray(r)?r.slice(0):r,e.filters=Object.freeze(r),n&&(t?this.addEffect(e):(this.removeEffect(e),e.filters=r??null))},get filters(){return this._filterEffect?.filters},set filterArea(r){this._filterEffect||(this._filterEffect=new Na),this._filterEffect.filterArea=r},get filterArea(){return this._filterEffect?.filterArea}},pT={label:null,get name(){return J(Te,"Container.name property has been removed, use Container.label instead"),this.label},set name(r){J(Te,"Container.name property has been removed, use Container.label instead"),this.label=r},getChildByName(r,e=!1){return this.getChildByLabel(r,e)},getChildByLabel(r,e=!1){const t=this.children;for(let i=0;i<t.length;i++){const n=t[i];if(n.label===r||r instanceof RegExp&&r.test(n.label))return n}if(e)for(let i=0;i<t.length;i++){const s=t[i].getChildByLabel(r,!0);if(s)return s}return null},getChildrenByLabel(r,e=!1,t=[]){const i=this.children;for(let n=0;n<i.length;n++){const s=i[n];(s.label===r||r instanceof RegExp&&r.test(s.label))&&t.push(s)}if(e)for(let n=0;n<i.length;n++)i[n].getChildrenByLabel(r,!0,t);return t}},Zt=Pt.getPool(ae),Si=Pt.getPool(Dt),EG=new ae,mT={getFastGlobalBounds(r,e){e||(e=new Dt),e.clear(),this._getGlobalBoundsRecursive(!!r,e,this.parentRenderLayer),e.isValid||e.set(0,0,0,0);const t=this.renderGroup||this.parentRenderGroup;return e.applyMatrix(t.worldTransform),e},_getGlobalBoundsRecursive(r,e,t){let i=e;if(r&&this.parentRenderLayer&&this.parentRenderLayer!==t||this.localDisplayStatus!==7||!this.measurable)return;const n=!!this.effects.length;if((this.renderGroup||n)&&(i=Si.get().clear()),this.boundsArea)e.addRect(this.boundsArea,this.worldTransform);else{if(this.renderPipeId){const o=this.bounds;i.addFrame(o.minX,o.minY,o.maxX,o.maxY,this.groupTransform)}const s=this.children;for(let o=0;o<s.length;o++)s[o]._getGlobalBoundsRecursive(r,i,t)}if(n){let s=!1;const o=this.renderGroup||this.parentRenderGroup;for(let a=0;a<this.effects.length;a++)this.effects[a].addBounds&&(s||(s=!0,i.applyMatrix(o.worldTransform)),this.effects[a].addBounds(i,!0));s&&i.applyMatrix(o.worldTransform.copyTo(EG).invert()),e.addBounds(i),Si.return(i)}else this.renderGroup&&(e.addBounds(i,this.relativeGroupTransform),Si.return(i))}};function Ga(r,e,t){t.clear();let i,n;return r.parent?e?i=r.parent.worldTransform:(n=Zt.get().identity(),i=ju(r,n)):i=ae.IDENTITY,gT(r,t,i,e),n&&Zt.return(n),t.isValid||t.set(0,0,0,0),t}function gT(r,e,t,i){if(!r.visible||!r.measurable)return;let n;i?n=r.worldTransform:(r.updateLocalTransform(),n=Zt.get(),n.appendFrom(r.localTransform,t));const s=e,o=!!r.effects.length;if(o&&(e=Si.get().clear()),r.boundsArea)e.addRect(r.boundsArea,n);else{const a=r.bounds;a&&!a.isEmpty()&&(e.matrix=n,e.addBounds(a));for(let l=0;l<r.children.length;l++)gT(r.children[l],e,n,i)}if(o){for(let a=0;a<r.effects.length;a++)r.effects[a].addBounds?.(e);s.addBounds(e,ae.IDENTITY),Si.return(e)}i||Zt.return(n)}function ju(r,e){const t=r.parent;return t&&(ju(t,e),t.updateLocalTransform(),e.append(t.localTransform)),e}function ex(r,e){if(r===16777215||!e)return e;if(e===16777215||!r)return r;const t=r>>16&255,i=r>>8&255,n=r&255,s=e>>16&255,o=e>>8&255,a=e&255,l=t*s/255|0,u=i*o/255|0,c=n*a/255|0;return(l<<16)+(u<<8)+c}const vT=16777215;function Ha(r,e){return r===vT?e:e===vT?r:ex(r,e)}function lo(r){return((r&255)<<16)+(r&65280)+(r>>16&255)}const xT={getGlobalAlpha(r){if(r)return this.renderGroup?this.renderGroup.worldAlpha:this.parentRenderGroup?this.parentRenderGroup.worldAlpha*this.alpha:this.alpha;let e=this.alpha,t=this.parent;for(;t;)e*=t.alpha,t=t.parent;return e},getGlobalTransform(r=new ae,e){if(e)return r.copyFrom(this.worldTransform);this.updateLocalTransform();const t=ju(this,Zt.get().identity());return r.appendFrom(this.localTransform,t),Zt.return(t),r},getGlobalTint(r){if(r)return this.renderGroup?lo(this.renderGroup.worldColor):this.parentRenderGroup?lo(Ha(this.localColor,this.parentRenderGroup.worldColor)):this.tint;let e=this.localColor,t=this.parent;for(;t;)e=Ha(e,t.localColor),t=t.parent;return lo(e)}};function Ku(r,e,t){return e.clear(),t||(t=ae.IDENTITY),yT(r,e,t,r,!0),e.isValid||e.set(0,0,0,0),e}function yT(r,e,t,i,n){let s;if(n)s=Zt.get(),s=t.copyTo(s);else{if(!r.visible||!r.measurable)return;r.updateLocalTransform();const l=r.localTransform;s=Zt.get(),s.appendFrom(l,t)}const o=e,a=!!r.effects.length;if(a&&(e=Si.get().clear()),r.boundsArea)e.addRect(r.boundsArea,s);else{r.renderPipeId&&(e.matrix=s,e.addBounds(r.bounds));const l=r.children;for(let u=0;u<l.length;u++)yT(l[u],e,s,i,!1)}if(a){for(let l=0;l<r.effects.length;l++)r.effects[l].addLocalBounds?.(e,i);o.addBounds(e,ae.IDENTITY),Si.return(e)}Zt.return(s)}function tx(r,e){const t=r.children;for(let i=0;i<t.length;i++){const n=t[i],s=n.uid,o=(n._didViewChangeTick&65535)<<16|n._didContainerChangeTick&65535,a=e.index;(e.data[a]!==s||e.data[a+1]!==o)&&(e.data[e.index]=s,e.data[e.index+1]=o,e.didChange=!0),e.index=a+2,n.children.length&&tx(n,e)}return e.didChange}const PG=new ae,bT={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(r,e){const t=Math.sign(this.scale.x)||1;e!==0?this.scale.x=r/e*t:this.scale.x=t},_setHeight(r,e){const t=Math.sign(this.scale.y)||1;e!==0?this.scale.y=r/e*t:this.scale.y=t},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new Dt});const r=this._localBoundsCacheData;return r.index=1,r.didChange=!1,r.data[0]!==this._didViewChangeTick&&(r.didChange=!0,r.data[0]=this._didViewChangeTick),tx(this,r),r.didChange&&Ku(this,r.localBounds,PG),r.localBounds},getBounds(r,e){return Ga(this,r,e||new Dt)}},_T={_onRender:null,set onRender(r){const e=this.renderGroup||this.parentRenderGroup;if(!r){this._onRender&&e?.removeOnRender(this),this._onRender=null;return}this._onRender||e?.addOnRender(this),this._onRender=r},get onRender(){return this._onRender}},wT={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(r){this._zIndex!==r&&(this._zIndex=r,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(IG))}};function IG(r,e){return r._zIndex-e._zIndex}const ST={getGlobalPosition(r=new me,e=!1){return this.parent?this.parent.toGlobal(this._position,r,e):(r.x=this._position.x,r.y=this._position.y),r},toGlobal(r,e,t=!1){const i=this.getGlobalTransform(Zt.get(),t);return e=i.apply(r,e),Zt.return(i),e},toLocal(r,e,t,i){e&&(r=e.toGlobal(r,t,i));const n=this.getGlobalTransform(Zt.get(),i);return t=n.applyInverse(r,t),Zt.return(n),t}};class rx{constructor(){this.uid=tt("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.gcTick=0}reset(){this.instructionSize=0}destroy(){this.instructions.length=0,this.renderables.length=0,this.renderPipes=null,this.gcTick=0}add(e){this.instructions[this.instructionSize++]=e}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}let BG=0;class TT{constructor(e){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this.textureStyle=new kr(this.textureOptions)}createTexture(e,t,i){const n=new dt({...this.textureOptions,width:e,height:t,resolution:1,antialias:i,autoGarbageCollect:!1});return new Q({source:n,label:`texturePool_${BG++}`})}getOptimalTexture(e,t,i=1,n){let s=Math.ceil(e*i-1e-6),o=Math.ceil(t*i-1e-6);s=us(s),o=us(o);const a=(s<<17)+(o<<1)+(n?1:0);this._texturePool[a]||(this._texturePool[a]=[]);let l=this._texturePool[a].pop();return l||(l=this.createTexture(s,o,n)),l.source._resolution=i,l.source.width=s/i,l.source.height=o/i,l.source.pixelWidth=s,l.source.pixelHeight=o,l.frame.x=0,l.frame.y=0,l.frame.width=e,l.frame.height=t,l.updateUvs(),this._poolKeyHash[l.uid]=a,l}getSameSizeTexture(e,t=!1){const i=e.source;return this.getOptimalTexture(e.width,e.height,i._resolution,t)}returnTexture(e,t=!1){const i=this._poolKeyHash[e.uid];t&&(e.source.style=this.textureStyle),this._texturePool[i].push(e)}clear(e){if(e=e!==!1,e)for(const t in this._texturePool){const i=this._texturePool[t];if(i)for(let n=0;n<i.length;n++)i[n].destroy(!0)}this._texturePool={}}}const ze=new TT;cs.register(ze);class Qu{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new ae,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.gcTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new rx,this._onRenderContainers=[],this.textureNeedsUpdate=!0,this.isCachedAsTexture=!1,this._matrixDirty=7}init(e){this.root=e,e._onRender&&this.addOnRender(e),e.didChange=!0;const t=e.children;for(let i=0;i<t.length;i++){const n=t[i];n._updateFlags=15,this.addChild(n)}}enableCacheAsTexture(e={}){this.textureOptions=e,this.isCachedAsTexture=!0,this.textureNeedsUpdate=!0}disableCacheAsTexture(){this.isCachedAsTexture=!1,this.texture&&(ze.returnTexture(this.texture,!0),this.texture=null)}updateCacheTexture(){this.textureNeedsUpdate=!0;const e=this._parentCacheAsTextureRenderGroup;e&&!e.textureNeedsUpdate&&e.updateCacheTexture()}reset(){this.renderGroupChildren.length=0;for(const e in this.childrenToUpdate){const t=this.childrenToUpdate[e];t.list.fill(null),t.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null,this.disableCacheAsTexture()}get localTransform(){return this.root.localTransform}addRenderGroupChild(e){e.renderGroupParent&&e.renderGroupParent._removeRenderGroupChild(e),e.renderGroupParent=this,this.renderGroupChildren.push(e)}_removeRenderGroupChild(e){const t=this.renderGroupChildren.indexOf(e);t>-1&&this.renderGroupChildren.splice(t,1),e.renderGroupParent=null}addChild(e){if(this.structureDidChange=!0,e.parentRenderGroup=this,e.updateTick=-1,e.parent===this.root?e.relativeRenderGroupDepth=1:e.relativeRenderGroupDepth=e.parent.relativeRenderGroupDepth+1,e.didChange=!0,this.onChildUpdate(e),e.renderGroup){this.addRenderGroupChild(e.renderGroup);return}e._onRender&&this.addOnRender(e);const t=e.children;for(let i=0;i<t.length;i++)this.addChild(t[i])}removeChild(e){if(this.structureDidChange=!0,e._onRender&&(e.renderGroup||this.removeOnRender(e)),e.parentRenderGroup=null,e.renderGroup){this._removeRenderGroupChild(e.renderGroup);return}const t=e.children;for(let i=0;i<t.length;i++)this.removeChild(t[i])}removeChildren(e){for(let t=0;t<e.length;t++)this.removeChild(e[t])}onChildUpdate(e){let t=this.childrenToUpdate[e.relativeRenderGroupDepth];t||(t=this.childrenToUpdate[e.relativeRenderGroupDepth]={index:0,list:[]}),t.list[t.index++]=e}updateRenderable(e){e.globalDisplayStatus<7||(this.instructionSet.renderPipes[e.renderPipeId].updateRenderable(e),e.didViewUpdate=!1)}onChildViewUpdate(e){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=e}get isRenderable(){return this.root.localDisplayStatus===7&&this.worldAlpha>0}addOnRender(e){this._onRenderContainers.push(e)}removeOnRender(e){this._onRenderContainers.splice(this._onRenderContainers.indexOf(e),1)}runOnRender(e){for(let t=0;t<this._onRenderContainers.length;t++)this._onRenderContainers[t]._onRender(e)}destroy(){this.disableCacheAsTexture(),this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet=null}getChildren(e=[]){const t=this.root.children;for(let i=0;i<t.length;i++)this._getChildren(t[i],e);return e}_getChildren(e,t=[]){if(t.push(e),e.renderGroup)return t;const i=e.children;for(let n=0;n<i.length;n++)this._getChildren(i[n],t);return t}invalidateMatrices(){this._matrixDirty=7}get inverseWorldTransform(){return(this._matrixDirty&1)===0?this._inverseWorldTransform:(this._matrixDirty&=-2,this._inverseWorldTransform||(this._inverseWorldTransform=new ae),this._inverseWorldTransform.copyFrom(this.worldTransform).invert())}get textureOffsetInverseTransform(){return(this._matrixDirty&2)===0?this._textureOffsetInverseTransform:(this._matrixDirty&=-3,this._textureOffsetInverseTransform||(this._textureOffsetInverseTransform=new ae),this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(-this._textureBounds.x,-this._textureBounds.y))}get inverseParentTextureTransform(){if((this._matrixDirty&4)===0)return this._inverseParentTextureTransform;this._matrixDirty&=-5;const e=this._parentCacheAsTextureRenderGroup;return e?(this._inverseParentTextureTransform||(this._inverseParentTextureTransform=new ae),this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(e.inverseWorldTransform).translate(-e._textureBounds.x,-e._textureBounds.y)):this.worldTransform}get cacheToLocalTransform(){return this.isCachedAsTexture?this.textureOffsetInverseTransform:this._parentCacheAsTextureRenderGroup?this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform:null}}function Zu(r,e,t={}){for(const i in e)!t[i]&&e[i]!==void 0&&(r[i]=e[i])}const ix=new ot(null),Ju=new ot(null),nx=new ot(null,1,1),$u=new ot(null),Wa=1,ec=2,uo=4,kG=8;class Pe extends fr{constructor(e={}){super(),this.uid=tt("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.parentRenderLayer=null,this.updateTick=-1,this.localTransform=new ae,this.relativeGroupTransform=new ae,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new ot(this,0,0),this._scale=nx,this._pivot=Ju,this._origin=$u,this._skew=ix,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],Zu(this,e,{children:!0,parent:!0,effects:!0}),e.children?.forEach(t=>this.addChild(t)),e.parent?.addChild(this)}static mixin(e){J("8.8.0","Container.mixin is deprecated, please use extensions.mixin instead."),xe.mixin(Pe,e)}set _didChangeId(e){this._didViewChangeTick=e>>12&4095,this._didContainerChangeTick=e&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...e){if(this.allowChildren||J(Te,"addChild: Only Containers will be allowed to add children in v8.0.0"),e.length>1){for(let n=0;n<e.length;n++)this.addChild(e[n]);return e[0]}const t=e[0],i=this.renderGroup||this.parentRenderGroup;return t.parent===this?(this.children.splice(this.children.indexOf(t),1),this.children.push(t),i&&(i.structureDidChange=!0),t):(t.parent&&t.parent.removeChild(t),this.children.push(t),this.sortableChildren&&(this.sortDirty=!0),t.parent=this,t.didChange=!0,t._updateFlags=15,i&&i.addChild(t),this.emit("childAdded",t,this,this.children.length-1),t.emit("added",this),this._didViewChangeTick++,t._zIndex!==0&&t.depthOfChildModified(),t)}removeChild(...e){if(e.length>1){for(let n=0;n<e.length;n++)this.removeChild(e[n]);return e[0]}const t=e[0],i=this.children.indexOf(t);return i>-1&&(this._didViewChangeTick++,this.children.splice(i,1),this.renderGroup?this.renderGroup.removeChild(t):this.parentRenderGroup&&this.parentRenderGroup.removeChild(t),t.parentRenderLayer&&t.parentRenderLayer.detach(t),t.parent=null,this.emit("childRemoved",t,this,i),t.emit("removed",this)),t}_onUpdate(e){e&&e===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(e){!!this.renderGroup!==e&&(e?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const e=this.parentRenderGroup;e?.removeChild(this),this.renderGroup=Pt.get(Qu,this),this.groupTransform=ae.IDENTITY,e?.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const e=this.parentRenderGroup;e?.removeChild(this),Pt.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,e?.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new ae),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(e){this._position.x=e}get y(){return this._position.y}set y(e){this._position.y=e}get position(){return this._position}set position(e){this._position.copyFrom(e)}get rotation(){return this._rotation}set rotation(e){this._rotation!==e&&(this._rotation=e,this._onUpdate(this._skew))}get angle(){return this.rotation*N3}set angle(e){this.rotation=e*ns}get pivot(){return this._pivot===Ju&&(this._pivot=new ot(this,0,0)),this._pivot}set pivot(e){this._pivot===Ju&&(this._pivot=new ot(this,0,0),this._origin!==$u&&de("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof e=="number"?this._pivot.set(e):this._pivot.copyFrom(e)}get skew(){return this._skew===ix&&(this._skew=new ot(this,0,0)),this._skew}set skew(e){this._skew===ix&&(this._skew=new ot(this,0,0)),this._skew.copyFrom(e)}get scale(){return this._scale===nx&&(this._scale=new ot(this,1,1)),this._scale}set scale(e){this._scale===nx&&(this._scale=new ot(this,0,0)),typeof e=="string"&&(e=parseFloat(e)),typeof e=="number"?this._scale.set(e):this._scale.copyFrom(e)}get origin(){return this._origin===$u&&(this._origin=new ot(this,0,0)),this._origin}set origin(e){this._origin===$u&&(this._origin=new ot(this,0,0),this._pivot!==Ju&&de("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof e=="number"?this._origin.set(e):this._origin.copyFrom(e)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(e){const t=this.getLocalBounds().width;this._setWidth(e,t)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(e){const t=this.getLocalBounds().height;this._setHeight(e,t)}getSize(e){e||(e={});const t=this.getLocalBounds();return e.width=Math.abs(this.scale.x*t.width),e.height=Math.abs(this.scale.y*t.height),e}setSize(e,t){const i=this.getLocalBounds();typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,i.width),t!==void 0&&this._setHeight(t,i.height)}_updateSkew(){const e=this._rotation,t=this._skew;this._cx=Math.cos(e+t._y),this._sx=Math.sin(e+t._y),this._cy=-Math.sin(e-t._x),this._sy=Math.cos(e-t._x)}updateTransform(e){return this.position.set(typeof e.x=="number"?e.x:this.position.x,typeof e.y=="number"?e.y:this.position.y),this.scale.set(typeof e.scaleX=="number"?e.scaleX||1:this.scale.x,typeof e.scaleY=="number"?e.scaleY||1:this.scale.y),this.rotation=typeof e.rotation=="number"?e.rotation:this.rotation,this.skew.set(typeof e.skewX=="number"?e.skewX:this.skew.x,typeof e.skewY=="number"?e.skewY:this.skew.y),this.pivot.set(typeof e.pivotX=="number"?e.pivotX:this.pivot.x,typeof e.pivotY=="number"?e.pivotY:this.pivot.y),this.origin.set(typeof e.originX=="number"?e.originX:this.origin.x,typeof e.originY=="number"?e.originY:this.origin.y),this}setFromMatrix(e){e.decompose(this)}updateLocalTransform(){const e=this._didContainerChangeTick;if(this._didLocalTransformChangeId===e)return;this._didLocalTransformChangeId=e;const t=this.localTransform,i=this._scale,n=this._pivot,s=this._origin,o=this._position,a=i._x,l=i._y,u=n._x,c=n._y,h=-s._x,d=-s._y;t.a=this._cx*a,t.b=this._sx*a,t.c=this._cy*l,t.d=this._sy*l,t.tx=o._x-(u*t.a+c*t.c)+(h*t.a+d*t.c)-h,t.ty=o._y-(u*t.b+c*t.d)+(h*t.b+d*t.d)-d}set alpha(e){e!==this.localAlpha&&(this.localAlpha=e,this._updateFlags|=Wa,this._onUpdate())}get alpha(){return this.localAlpha}set tint(e){const i=ye.shared.setValue(e??16777215).toBgrNumber();i!==this.localColor&&(this.localColor=i,this._updateFlags|=Wa,this._onUpdate())}get tint(){return lo(this.localColor)}set blendMode(e){this.localBlendMode!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=ec,this.localBlendMode=e,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(e){const t=e?2:0;(this.localDisplayStatus&2)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=uo,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(e){const t=e?0:4;(this.localDisplayStatus&4)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=uo,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(e){const t=e?1:0;(this.localDisplayStatus&1)!==t&&(this._updateFlags|=uo,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(e=!1){if(this.destroyed)return;this.destroyed=!0;let t;if(this.children.length&&(t=this.removeChildren(0,this.children.length)),this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._origin=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),(typeof e=="boolean"?e:e?.children)&&t)for(let n=0;n<t.length;++n)t[n].destroy(e);this.renderGroup?.destroy(),this.renderGroup=null}}xe.mixin(Pe,cT,mT,ST,_T,bT,fT,pT,wT,sT,uT,xT,hT);class Ti extends Pe{constructor(e){super(e),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=-1,this._gpuData=Object.create(null),this._bounds=new Dt(0,1,0,0),this._boundsDirty=!0}get bounds(){return this._boundsDirty?(this.updateBounds(),this._boundsDirty=!1,this._bounds):this._bounds}get roundPixels(){return!!this._roundPixels}set roundPixels(e){this._roundPixels=e?1:0}containsPoint(e){const t=this.bounds,{x:i,y:n}=e;return i>=t.minX&&i<=t.maxX&&n>=t.minY&&n<=t.maxY}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const e=this.renderGroup||this.parentRenderGroup;e&&e.onChildViewUpdate(this)}destroy(e){super.destroy(e),this._bounds=null;for(const t in this._gpuData)this._gpuData[t].destroy?.();this._gpuData=null}collectRenderablesSimple(e,t,i){const{renderPipes:n}=t;n.blendMode.pushBlendMode(this,this.groupBlendMode,e),n[this.renderPipeId].addRenderable(this,e),this.didViewUpdate=!1;const o=this.children,a=o.length;for(let l=0;l<a;l++)o[l].collectRenderables(e,t,i);n.blendMode.popBlendMode(e)}}class Je extends Ti{constructor(e=Q.EMPTY){e instanceof Q&&(e={texture:e});const{texture:t=Q.EMPTY,anchor:i,roundPixels:n,width:s,height:o,...a}=e;super({label:"Sprite",...a}),this.renderPipeId="sprite",this.batched=!0,this._visualBounds={minX:0,maxX:1,minY:0,maxY:0},this._anchor=new ot({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:t.defaultAnchor&&(this.anchor=t.defaultAnchor),this.texture=t,this.allowChildren=!1,this.roundPixels=n??!1,s!==void 0&&(this.width=s),o!==void 0&&(this.height=o)}static from(e,t=!1){return e instanceof Q?new Je(e):new Je(Q.from(e,t))}set texture(e){e||(e=Q.EMPTY);const t=this._texture;t!==e&&(t&&t.dynamic&&t.off("update",this.onViewUpdate,this),e.dynamic&&e.on("update",this.onViewUpdate,this),this._texture=e,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get visualBounds(){return Yv(this._visualBounds,this._anchor,this._texture),this._visualBounds}get sourceBounds(){return J("8.6.1","Sprite.sourceBounds is deprecated, use visualBounds instead."),this.visualBounds}updateBounds(){const e=this._anchor,t=this._texture,i=this._bounds,{width:n,height:s}=t.orig;i.minX=-e._x*n,i.maxX=i.minX+n,i.minY=-e._y*s,i.maxY=i.minY+s}destroy(e=!1){if(super.destroy(e),typeof e=="boolean"?e:e?.texture){const i=typeof e=="boolean"?e:e?.textureSource;this._texture.destroy(i)}this._texture=null,this._visualBounds=null,this._bounds=null,this._anchor=null,this._gpuData=null}get anchor(){return this._anchor}set anchor(e){typeof e=="number"?this._anchor.set(e):this._anchor.copyFrom(e)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(e){this._setWidth(e,this._texture.orig.width),this._width=e}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(e){this._setHeight(e,this._texture.orig.height),this._height=e}getSize(e){return e||(e={}),e.width=Math.abs(this.scale.x)*this._texture.orig.width,e.height=Math.abs(this.scale.y)*this._texture.orig.height,e}setSize(e,t){typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,this._texture.orig.width),t!==void 0&&this._setHeight(t,this._texture.orig.height)}}const RG=new Dt;function tc(r,e,t){const i=RG;r.measurable=!0,Ga(r,t,i),e.addBoundsMask(i),r.measurable=!1}function rc(r,e,t){const i=Si.get();r.measurable=!0;const n=Zt.get().identity(),s=CT(r,t,n);Ku(r,i,s),r.measurable=!1,e.addBoundsMask(i),Zt.return(n),Si.return(i)}function CT(r,e,t){return r?(r!==e&&(CT(r.parent,e,t),r.updateLocalTransform(),t.append(r.localTransform)),t):(de("Mask bounds, renderable is not inside the root container"),t)}class sx{constructor(e){this.priority=0,this.inverse=!1,this.pipe="alphaMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.renderMaskToTexture=!(e instanceof Je),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}addBounds(e,t){this.inverse||tc(this.mask,e,t)}addLocalBounds(e,t){rc(this.mask,e,t)}containsPoint(e,t){const i=this.mask;return t(i,e)}destroy(){this.reset()}static test(e){return e instanceof Je}}sx.extension=F.MaskEffect;class ox{constructor(e){this.priority=0,this.pipe="colorMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e}destroy(){}static test(e){return typeof e=="number"}}ox.extension=F.MaskEffect;class ax{constructor(e){this.priority=0,this.pipe="stencilMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null)}addBounds(e,t){tc(this.mask,e,t)}addLocalBounds(e,t){rc(this.mask,e,t)}containsPoint(e,t){const i=this.mask;return t(i,e)}destroy(){this.reset()}static test(e){return e instanceof Pe}}ax.extension=F.MaskEffect;const AT={createCanvas:(r,e)=>{const t=document.createElement("canvas");return t.width=r,t.height=e,t},createImage:()=>new Image,getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(r,e)=>fetch(r,e),parseXML:r=>new DOMParser().parseFromString(r,"text/xml")};let ET=AT;const Ee={get(){return ET},set(r){ET=r}};class Ci extends dt{constructor(e){e.resource||(e.resource=Ee.get().createCanvas()),e.width||(e.width=e.resource.width,e.autoDensity||(e.width/=e.resolution)),e.height||(e.height=e.resource.height,e.autoDensity||(e.height/=e.resolution)),super(e),this.uploadMethodId="image",this.autoDensity=e.autoDensity,this.resizeCanvas(),this.transparent=!!e.transparent}resizeCanvas(){this.autoDensity&&"style"in this.resource&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(e=this.width,t=this.height,i=this._resolution){const n=super.resize(e,t,i);return n&&this.resizeCanvas(),n}static test(e){return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&e instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}Ci.extension=F.TextureSource;class jr extends dt{constructor(e){super(e),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(e){return globalThis.HTMLImageElement&&e instanceof HTMLImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||globalThis.VideoFrame&&e instanceof VideoFrame}}jr.extension=F.TextureSource;var Ai=(r=>(r[r.INTERACTION=50]="INTERACTION",r[r.HIGH=25]="HIGH",r[r.NORMAL=0]="NORMAL",r[r.LOW=-25]="LOW",r[r.UTILITY=-50]="UTILITY",r))(Ai||{});class ic{constructor(e,t=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=e,this._context=t,this.priority=i,this._once=n}match(e,t=null){return this._fn===e&&this._context===t}emit(e){this._fn&&(this._context?this._fn.call(this._context,e):this._fn(e));const t=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const PT=class Or{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new ic(null,null,1/0),this.deltaMS=1/Or.targetFPMS,this.elapsedMS=1/Or.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=Ai.NORMAL){return this._addListener(new ic(e,t,i))}addOnce(e,t,i=Ai.NORMAL){return this._addListener(new ic(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const s=e-this._lastFrame|0;if(s<this._minElapsedMS)return;this._lastFrame=e-s%this._minElapsedMS}this.deltaMS=t,this.deltaTime=this.deltaMS*Or.targetFPMS;const i=this._head;let n=i.next;for(;n;)n=n.emit(this);i.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=e}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(e){const t=Math.min(this.maxFPS,e),i=Math.min(Math.max(0,t)/1e3,Or.targetFPMS);this._maxElapsedMS=1/i}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(e){if(e===0)this._minElapsedMS=0;else{const t=Math.max(this.minFPS,e);this._minElapsedMS=1/(t/1e3)}}static get shared(){if(!Or._shared){const e=Or._shared=new Or;e.autoStart=!0,e._protected=!0}return Or._shared}static get system(){if(!Or._system){const e=Or._system=new Or;e.autoStart=!0,e._protected=!0}return Or._system}};PT.targetFPMS=.06;let Ft=PT,lx;async function ux(){return lx??(lx=(async()=>{const e=Ee.get().createCanvas(1,1).getContext("webgl");if(!e)return"premultiply-alpha-on-upload";const t=await new Promise(o=>{const a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!t)return"premultiply-alpha-on-upload";const i=e.createTexture();e.bindTexture(e.TEXTURE_2D,i);const n=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,i,0),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.NONE),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t);const s=new Uint8Array(4);return e.readPixels(0,0,1,1,e.RGBA,e.UNSIGNED_BYTE,s),e.deleteFramebuffer(n),e.deleteTexture(i),e.getExtension("WEBGL_lose_context")?.loseContext(),s[0]<=s[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),lx}const nc=class iR extends dt{constructor(e){super(e),this.isReady=!1,this.uploadMethodId="video",e={...iR.defaultOptions,...e},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=e.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=e.autoPlay!==!1,this.alphaMode=e.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),e.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const e=Ft.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-e)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const e=this.resource,t=this.options;return(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(t.preload||e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlayThrough),e.addEventListener("error",this._onError,!0)),this.alphaMode=await ux(),this._load=new Promise((i,n)=>{this.isValid?i(this):(this._resolve=i,this._reject=n,t.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${t.preloadTimeoutMs}ms`))})),e.load())}),this._load}_onError(e){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.resource;return!e.paused&&!e.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const e=this.resource;this.isValid&&(this.isReady=!0,this.resize(e.videoWidth,e.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const e=this.resource;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlayThrough),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Ft.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Ft.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Ft.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement}};nc.extension=F.TextureSource,nc.defaultOptions={...dt.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1},nc.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let co=nc;const Kr=(r,e,t=!1)=>(Array.isArray(r)||(r=[r]),e?r.map(i=>typeof i=="string"||t?e(i):i):r);class FG{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||de(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=Kr(e);let n;for(let l=0;l<this.parsers.length;l++){const u=this.parsers[l];if(u.test(t)){n=u.getCacheableAssets(i,t);break}}const s=new Map(Object.entries(n||{}));n||i.forEach(l=>{s.set(l,t)});const o=[...s.keys()],a={cacheKeys:o,keys:i};i.forEach(l=>{this._cacheMap.set(l,a)}),o.forEach(l=>{const u=n?n[l]:t;this._cache.has(l)&&this._cache.get(l)!==u&&de("[Cache] already has key:",l),this._cache.set(l,s.get(l))})}remove(e){if(!this._cacheMap.has(e)){de(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(n=>{this._cache.delete(n)}),t.keys.forEach(n=>{this._cacheMap.delete(n)})}get parsers(){return this._parsers}}const Ke=new FG,cx=[];xe.handleByList(F.TextureSource,cx);function MG(r={}){return hx(r)}function hx(r={}){const e=r&&r.resource,t=e?r.resource:r,i=e?r:{resource:r};for(let n=0;n<cx.length;n++){const s=cx[n];if(s.test(t))return new s(i)}throw new Error(`Could not find a source type for resource: ${i.resource}`)}function IT(r={},e=!1){const t=r&&r.resource,i=t?r.resource:r,n=t?r:{resource:r};if(!e&&Ke.has(i))return Ke.get(i);const s=new Q({source:hx(n)});return s.on("destroy",()=>{Ke.has(i)&&Ke.remove(i)}),e||Ke.set(i,s),s}function BT(r,e=!1){return typeof r=="string"?Ke.get(r):r instanceof dt?new Q({source:r}):IT(r,e)}Q.from=BT,dt.from=hx,xe.add(sx,ox,ax,co,jr,Ci,Xu);var Rr=(r=>(r[r.Low=0]="Low",r[r.Normal=1]="Normal",r[r.High=2]="High",r))(Rr||{});function si(r){if(typeof r!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(r)}`)}function Va(r){return r.split("?")[0].split("#")[0]}function DG(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function OG(r,e,t){return r.replace(new RegExp(DG(e),"g"),t)}function UG(r,e){let t="",i=0,n=-1,s=0,o=-1;for(let a=0;a<=r.length;++a){if(a<r.length)o=r.charCodeAt(a);else{if(o===47)break;o=47}if(o===47){if(!(n===a-1||s===1))if(n!==a-1&&s===2){if(t.length<2||i!==2||t.charCodeAt(t.length-1)!==46||t.charCodeAt(t.length-2)!==46){if(t.length>2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",i=0):(t=t.slice(0,l),i=t.length-1-t.lastIndexOf("/")),n=a,s=0;continue}}else if(t.length===2||t.length===1){t="",i=0,n=a,s=0;continue}}}else t.length>0?t+=`/${r.slice(n+1,a)}`:t=r.slice(n+1,a),i=a-n-1;n=a,s=0}else o===46&&s!==-1?++s:s=-1}return t}const pr={toPosix(r){return OG(r,"\\","/")},isUrl(r){return/^https?:/.test(this.toPosix(r))},isDataUrl(r){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(r)},isBlobUrl(r){return r.startsWith("blob:")},hasProtocol(r){return/^[^/:]+:/.test(this.toPosix(r))},getProtocol(r){si(r),r=this.toPosix(r);const e=/^file:\/\/\//.exec(r);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(r);return t?t[0]:""},toAbsolute(r,e,t){if(si(r),this.isDataUrl(r)||this.isBlobUrl(r))return r;const i=Va(this.toPosix(e??Ee.get().getBaseUrl())),n=Va(this.toPosix(t??this.rootname(i)));return r=this.toPosix(r),r.startsWith("/")?pr.join(n,r.slice(1)):this.isAbsolute(r)?r:this.join(i,r)},normalize(r){if(si(r),r.length===0)return".";if(this.isDataUrl(r)||this.isBlobUrl(r))return r;r=this.toPosix(r);let e="";const t=r.startsWith("/");this.hasProtocol(r)&&(e=this.rootname(r),r=r.slice(e.length));const i=r.endsWith("/");return r=UG(r),r.length>0&&i&&(r+="/"),t?`/${r}`:e+r},isAbsolute(r){return si(r),r=this.toPosix(r),this.hasProtocol(r)?!0:r.startsWith("/")},join(...r){if(r.length===0)return".";let e;for(let t=0;t<r.length;++t){const i=r[t];if(si(i),i.length>0)if(e===void 0)e=i;else{const n=r[t-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${i}`:e+=`/${i}`}}return e===void 0?".":this.normalize(e)},dirname(r){if(si(r),r.length===0)return".";r=this.toPosix(r);let e=r.charCodeAt(0);const t=e===47;let i=-1,n=!0;const s=this.getProtocol(r),o=r;r=r.slice(s.length);for(let a=r.length-1;a>=1;--a)if(e=r.charCodeAt(a),e===47){if(!n){i=a;break}}else n=!1;return i===-1?t?"/":this.isUrl(o)?s+r:s:t&&i===1?"//":s+r.slice(0,i)},rootname(r){si(r),r=this.toPosix(r);let e="";if(r.startsWith("/")?e="/":e=this.getProtocol(r),this.isUrl(r)){const t=r.indexOf("/",e.length);t!==-1?e=r.slice(0,t):e=r,e.endsWith("/")||(e+="/")}return e},basename(r,e){si(r),e&&si(e),r=Va(this.toPosix(r));let t=0,i=-1,n=!0,s;if(e!==void 0&&e.length>0&&e.length<=r.length){if(e.length===r.length&&e===r)return"";let o=e.length-1,a=-1;for(s=r.length-1;s>=0;--s){const l=r.charCodeAt(s);if(l===47){if(!n){t=s+1;break}}else a===-1&&(n=!1,a=s+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(i=s):(o=-1,i=a))}return t===i?i=a:i===-1&&(i=r.length),r.slice(t,i)}for(s=r.length-1;s>=0;--s)if(r.charCodeAt(s)===47){if(!n){t=s+1;break}}else i===-1&&(n=!1,i=s+1);return i===-1?"":r.slice(t,i)},extname(r){si(r),r=Va(this.toPosix(r));let e=-1,t=0,i=-1,n=!0,s=0;for(let o=r.length-1;o>=0;--o){const a=r.charCodeAt(o);if(a===47){if(!n){t=o+1;break}continue}i===-1&&(n=!1,i=o+1),a===46?e===-1?e=o:s!==1&&(s=1):e!==-1&&(s=-1)}return e===-1||i===-1||s===0||s===1&&e===i-1&&e===t+1?"":r.slice(e,i)},parse(r){si(r);const e={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return e;r=Va(this.toPosix(r));let t=r.charCodeAt(0);const i=this.isAbsolute(r);let n;e.root=this.rootname(r),i||this.hasProtocol(r)?n=1:n=0;let s=-1,o=0,a=-1,l=!0,u=r.length-1,c=0;for(;u>=n;--u){if(t=r.charCodeAt(u),t===47){if(!l){o=u+1;break}continue}a===-1&&(l=!1,a=u+1),t===46?s===-1?s=u:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||a===-1||c===0||c===1&&s===a-1&&s===o+1?a!==-1&&(o===0&&i?e.base=e.name=r.slice(1,a):e.base=e.name=r.slice(o,a)):(o===0&&i?(e.name=r.slice(1,s),e.base=r.slice(1,a)):(e.name=r.slice(o,s),e.base=r.slice(o,a)),e.ext=r.slice(s,a)),e.dir=this.dirname(r),e},sep:"/",delimiter:":",joinExtensions:[".html"]};function kT(r,e,t,i,n){const s=e[t];for(let o=0;o<s.length;o++){const a=s[o];t<e.length-1?kT(r.replace(i[t],a),e,t+1,i,n):n.push(r.replace(i[t],a))}}function RT(r){const e=/\{(.*?)\}/g,t=r.match(e),i=[];if(t){const n=[];t.forEach(s=>{const o=s.substring(1,s.length-1).split(",");n.push(o)}),kT(r,n,0,t,i)}else i.push(r);return i}const Xa=r=>!Array.isArray(r);class An{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,src:i}=e;return Kr(t||i,s=>typeof s=="string"?s:Array.isArray(s)?s.map(o=>o?.src??o):s?.src?s.src:s,!0)}addManifest(e){this._manifest&&de("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];let n=t;Array.isArray(t)||(n=Object.entries(t).map(([s,o])=>typeof o=="string"||Array.isArray(o)?{alias:s,src:o}:{alias:s,...o})),n.forEach(s=>{const o=s.src,a=s.alias;let l;if(typeof a=="string"){const u=this._createBundleAssetId(e,a);i.push(u),l=[a,u]}else{const u=a.map(c=>this._createBundleAssetId(e,c));i.push(...u),l=[...a,...u]}this.add({...s,alias:l,src:o})}),this._bundles[e]=i}add(e){const t=[];Array.isArray(e)?t.push(...e):t.push(e);let i;i=s=>{this.hasKey(s)&&de(`[Resolver] already has key: ${s} overwriting`)},Kr(t).forEach(s=>{const{src:o}=s;let{data:a,format:l,loadParser:u,parser:c}=s;const h=Kr(o).map(m=>typeof m=="string"?RT(m):Array.isArray(m)?m:[m]),d=this.getAlias(s);Array.isArray(d)?d.forEach(i):i(d);const f=[],p=m=>({...this._parsers.find(v=>v.test(m))?.parse(m),src:m});h.forEach(m=>{m.forEach(g=>{let v={};if(typeof g!="object"?v=p(g):(a=g.data??a,l=g.format??l,(g.loadParser||g.parser)&&(u=g.loadParser??u,c=g.parser??c),v={...p(g.src),...g}),!d)throw new Error(`[Resolver] alias is undefined for this asset: ${v.src}`);v=this._buildResolvedAsset(v,{aliases:d,data:a,format:l,loadParser:u,parser:c,progressSize:s.progressSize}),f.push(v)})}),d.forEach(m=>{this._assetMap[m]=f})})}resolveBundle(e){const t=Xa(e);e=Kr(e);const i={};return e.forEach(n=>{const s=this._bundles[n];if(s){const o=this.resolve(s),a={};for(const l in o){const u=o[l];a[this._extractAssetIdFromBundle(n,l)]=u}i[n]=a}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const n in t)i[n]=t[n].src;return i}return t.src}resolve(e){const t=Xa(e);e=Kr(e);const i={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let s=this._assetMap[n];const o=this._getPreferredOrder(s);o?.priority.forEach(a=>{o.params[a].forEach(l=>{const u=s.filter(c=>c[a]?c[a]===l:!1);u.length&&(s=u)})}),this._resolverHash[n]=s[0]}else this._resolverHash[n]=this._buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;t<e.length;t++){const i=e[t],n=this._preferredOrder.find(s=>s.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}_buildResolvedAsset(e,t){const{aliases:i,data:n,loadParser:s,parser:o,format:a,progressSize:l}=t;return(this._basePath||this._rootPath)&&(e.src=pr.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=s??e.loadParser,e.parser=o??e.parser,e.format=a??e.format??FT(e.src),l!==void 0&&(e.progressSize=l),e}}An.RETINA_PREFIX=/@([0-9\.]+)x/;function FT(r){return r.split(".").pop().split("?").shift().split("#").shift()}const sc=(r,e)=>{const t=e.split("?")[1];return t&&(r+=`?${t}`),r},MT=class Ol{constructor(e,t){this.linkedSheets=[];let i=e;e?.source instanceof dt&&(i={texture:e,data:t});const{texture:n,data:s,cachePrefix:o=""}=i;this.cachePrefix=o,this._texture=n instanceof Q?n:null,this.textureSource=n.source,this.textures={},this.animations={},this.data=s;const a=parseFloat(s.meta.scale);a?(this.resolution=a,n.source.resolution=this.resolution):this.resolution=n.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Ol.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Ol.BATCH_SIZE;for(;t-e<i&&t<this._frameKeys.length;){const n=this._frameKeys[t],s=this._frames[n],o=s.frame;if(o){let a=null,l=null;const u=s.trimmed!==!1&&s.sourceSize?s.sourceSize:s.frame,c=new he(0,0,Math.floor(u.w)/this.resolution,Math.floor(u.h)/this.resolution);s.rotated?a=new he(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.h)/this.resolution,Math.floor(o.w)/this.resolution):a=new he(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution),s.trimmed!==!1&&s.spriteSourceSize&&(l=new he(Math.floor(s.spriteSourceSize.x)/this.resolution,Math.floor(s.spriteSourceSize.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution)),this.textures[n]=new Q({source:this.textureSource,frame:a,orig:c,trim:l,rotate:s.rotated?2:0,defaultAnchor:s.anchor,defaultBorders:s.borders,label:n.toString()})}t++}}_processAnimations(){const e=this.data.animations||{};for(const t in e){this.animations[t]=[];for(let i=0;i<e[t].length;i++){const n=e[t][i];this.animations[t].push(this.textures[n])}}}_parseComplete(){const e=this._callback;this._callback=null,this._batchIndex=0,e.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*Ol.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*Ol.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(e=!1){for(const t in this.textures)this.textures[t].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,e&&(this._texture?.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};MT.BATCH_SIZE=1e3;let dx=MT;const zG=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function DT(r,e,t){const i={};if(r.forEach(n=>{i[n]=e}),Object.keys(e.textures).forEach(n=>{i[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=pr.dirname(r[0]);e.linkedSheets.forEach((s,o)=>{const a=DT([`${n}/${e.data.meta.related_multi_packs[o]}`],s,!0);Object.assign(i,a)})}return i}const OT={extension:F.Asset,cache:{test:r=>r instanceof dx,getCacheableAssets:(r,e)=>DT(r,e,!1)},resolver:{extension:{type:F.ResolveParser,name:"resolveSpritesheet"},test:r=>{const t=r.split("?")[0].split("."),i=t.pop(),n=t.pop();return i==="json"&&zG.includes(n)},parse:r=>{const e=r.split(".");return{resolution:parseFloat(An.RETINA_PREFIX.exec(r)?.[1]??"1"),format:e[e.length-2],src:r}}},loader:{name:"spritesheetLoader",id:"spritesheet",extension:{type:F.LoadParser,priority:Rr.Normal,name:"spritesheetLoader"},async testParse(r,e){return pr.extname(e.src).toLowerCase()===".json"&&!!r.frames},async parse(r,e,t){const{texture:i,imageFilename:n,textureOptions:s,cachePrefix:o}=e?.data??{};let a=pr.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let l;if(i instanceof Q)l=i;else{const h=sc(a+(n??r.meta.image),e.src);l=(await t.load([{src:h,data:s}]))[h]}const u=new dx({texture:l.source,data:r,cachePrefix:o});await u.parse();const c=r?.meta?.related_multi_packs;if(Array.isArray(c)){const h=[];for(const f of c){if(typeof f!="string")continue;let p=a+f;e.data?.ignoreMultiPack||(p=sc(p,e.src),h.push(t.load({src:p,data:{textureOptions:s,ignoreMultiPack:!0}})))}const d=await Promise.all(h);u.linkedSheets=d,d.forEach(f=>{f.linkedSheets=[u].concat(u.linkedSheets.filter(p=>p!==f))})}return u},async unload(r,e,t){await t.unload(r.textureSource._sourceOrigin),r.destroy(!1)}}};xe.add(OT);class fx{constructor(e){this._lastTransform="",this._observer=null,this._tickerAttached=!1,this.updateTranslation=()=>{if(!this._canvas)return;const t=this._canvas.getBoundingClientRect(),i=this._canvas.width,n=this._canvas.height,s=t.width/i*this._renderer.resolution,o=t.height/n*this._renderer.resolution,a=t.left,l=t.top,u=`translate(${a}px, ${l}px) scale(${s}, ${o})`;u!==this._lastTransform&&(this._domElement.style.transform=u,this._lastTransform=u)},this._domElement=e.domElement,this._renderer=e.renderer,!(globalThis.OffscreenCanvas&&this._renderer.canvas instanceof OffscreenCanvas)&&(this._canvas=this._renderer.canvas,this._attachObserver())}get canvas(){return this._canvas}ensureAttached(){!this._domElement.parentNode&&this._canvas.parentNode&&(this._canvas.parentNode.appendChild(this._domElement),this.updateTranslation())}_attachObserver(){"ResizeObserver"in globalThis?(this._observer&&(this._observer.disconnect(),this._observer=null),this._observer=new ResizeObserver(e=>{for(const t of e){if(t.target!==this._canvas)continue;const i=this.canvas.width,n=this.canvas.height,s=t.contentRect.width/i*this._renderer.resolution,o=t.contentRect.height/n*this._renderer.resolution;(this._lastScaleX!==s||this._lastScaleY!==o)&&(this.updateTranslation(),this._lastScaleX=s,this._lastScaleY=o)}}),this._observer.observe(this._canvas)):this._tickerAttached||Ft.shared.add(this.updateTranslation,this,Ai.HIGH)}destroy(){this._observer?(this._observer.disconnect(),this._observer=null):this._tickerAttached&&Ft.shared.remove(this.updateTranslation),this._domElement=null,this._renderer=null,this._canvas=null,this._tickerAttached=!1,this._lastTransform="",this._lastScaleX=null,this._lastScaleY=null}}class ho{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=ho.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new me,this.page=new me,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,n,s){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var px=/iPhone/i,UT=/iPod/i,zT=/iPad/i,LT=/\biOS-universal(?:.+)Mac\b/i,mx=/\bAndroid(?:.+)Mobile\b/i,NT=/Android/i,fo=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,oc=/Silk/i,Vi=/Windows Phone/i,GT=/\bWindows(?:.+)ARM\b/i,HT=/BlackBerry/i,WT=/BB10/i,VT=/Opera Mini/i,XT=/\b(CriOS|Chrome)(?:.+)Mobile/i,YT=/Mobile(?:.+)Firefox\b/i,qT=function(r){return typeof r<"u"&&r.platform==="MacIntel"&&typeof r.maxTouchPoints=="number"&&r.maxTouchPoints>1&&typeof MSStream>"u"};function LG(r){return function(e){return e.test(r)}}function jT(r){var e={userAgent:"",platform:"",maxTouchPoints:0};!r&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof r=="string"?e.userAgent=r:r&&r.userAgent&&(e={userAgent:r.userAgent,platform:r.platform,maxTouchPoints:r.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=LG(t),s={apple:{phone:n(px)&&!n(Vi),ipod:n(UT),tablet:!n(px)&&(n(zT)||qT(e))&&!n(Vi),universal:n(LT),device:(n(px)||n(UT)||n(zT)||n(LT)||qT(e))&&!n(Vi)},amazon:{phone:n(fo),tablet:!n(fo)&&n(oc),device:n(fo)||n(oc)},android:{phone:!n(Vi)&&n(fo)||!n(Vi)&&n(mx),tablet:!n(Vi)&&!n(fo)&&!n(mx)&&(n(oc)||n(NT)),device:!n(Vi)&&(n(fo)||n(oc)||n(mx)||n(NT))||n(/\bokhttp\b/i)},windows:{phone:n(Vi),tablet:n(GT),device:n(Vi)||n(GT)},other:{blackberry:n(HT),blackberry10:n(WT),opera:n(VT),firefox:n(YT),chrome:n(XT),device:n(HT)||n(WT)||n(VT)||n(YT)||n(XT)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}const KT=(jT.default??jT)(globalThis.navigator),NG=9,QT=100,GG=0,HG=0,ZT=2,JT=1,WG=-1e3,VG=-1e3,XG=2,gx=class nR{constructor(e,t=KT){this._mobileInfo=t,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pools={},this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._isRunningTests=!1,this._boundOnKeyDown=this._onKeyDown.bind(this),this._boundOnMouseMove=this._onMouseMove.bind(this),this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook(),this._renderer=e}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}get div(){return this._div}_createTouchHook(){const e=document.createElement("button");e.style.width=`${JT}px`,e.style.height=`${JT}px`,e.style.position="absolute",e.style.top=`${WG}px`,e.style.left=`${VG}px`,e.style.zIndex=XG.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(this._isActive)return;this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.position="absolute",this._div.style.top=`${GG}px`,this._div.style.left=`${HG}px`,this._div.style.pointerEvents="none",this._div.style.zIndex=ZT.toString(),this._canvasObserver=new fx({domElement:this._div,renderer:this._renderer})),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._deactivateOnMouseMove&&globalThis.document.addEventListener("mousemove",this._boundOnMouseMove,!0);const e=this._renderer.view.canvas;if(e.parentNode)this._canvasObserver.ensureAttached(),this._initAccessibilitySetup();else{const t=new MutationObserver(()=>{e.parentNode&&(t.disconnect(),this._canvasObserver.ensureAttached(),this._initAccessibilitySetup())});t.observe(document.body,{childList:!0,subtree:!0})}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(!(!this._isActive||this._isMobileAccessibility)){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._renderer.runners.postrender.remove(this);for(const e of this._children)e._accessibleDiv?.parentNode&&(e._accessibleDiv.parentNode.removeChild(e._accessibleDiv),e._accessibleDiv=null),e._accessibleActive=!1;for(const e in this._pools)this._pools[e].forEach(i=>{i.parentNode&&i.parentNode.removeChild(i)}),delete this._pools[e];this._div?.parentNode&&this._div.parentNode.removeChild(this._div),this._pools={},this._children=[]}}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i<t.length;i++)this._updateAccessibleObjects(t[i])}init(e){const i={accessibilityOptions:{...nR.defaultOptions,...e?.accessibilityOptions||{}}};this.debug=i.accessibilityOptions.debug,this._activateOnTab=i.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=i.accessibilityOptions.deactivateOnMouseMove,i.accessibilityOptions.enabledByDefault&&this._activate(),this._renderer.runners.postrender.remove(this)}postrender(){const e=performance.now();if(this._mobileInfo.android.device&&e<this._androidUpdateCount||(this._androidUpdateCount=e+this._androidUpdateFrequency,(!this._renderer.renderingToScreen||!this._renderer.view.canvas)&&!this._isRunningTests))return;const t=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(const i of this._children)i._renderId===this._renderId&&t.add(this._children.indexOf(i))}for(let i=this._children.length-1;i>=0;i--){const n=this._children[i];t.has(i)||(n._accessibleDiv&&n._accessibleDiv.parentNode&&(n._accessibleDiv.parentNode.removeChild(n._accessibleDiv),this._getPool(n.accessibleType).push(n._accessibleDiv),n._accessibleDiv=null),n._accessibleActive=!1,$v(this._children,i,1))}this._renderer.renderingToScreen&&this._canvasObserver.ensureAttached();for(let i=0;i<this._children.length;i++){const n=this._children[i];if(!n._accessibleActive||!n._accessibleDiv)continue;const s=n._accessibleDiv,o=n.hitArea||n.getBounds().rectangle;if(n.hitArea){const a=n.worldTransform;s.style.left=`${a.tx+o.x*a.a}px`,s.style.top=`${a.ty+o.y*a.d}px`,s.style.width=`${o.width*a.a}px`,s.style.height=`${o.height*a.d}px`}else this._capHitArea(o),s.style.left=`${o.x}px`,s.style.top=`${o.y}px`,s.style.width=`${o.width}px`,s.style.height=`${o.height}px`}this._renderId++}_updateDebugHTML(e){e.innerHTML=`type: ${e.type}</br> title : ${e.title}</br> tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let i=this._getPool(e.accessibleType).pop();i?(i.innerHTML="",i.removeAttribute("title"),i.removeAttribute("aria-label"),i.tabIndex=0):(e.accessibleType==="button"?i=document.createElement("button"):(i=document.createElement(e.accessibleType),i.style.cssText=`
@@ -3506,7 +3506,7 @@ fn mainFragment(
3506
3506
  `)}function yk(r,e,t,i,n){const{domElement:s,styleElement:o,svgRoot:a}=n;s.innerHTML=`<style>${e.cssStyle}</style><div style='padding:0;'>${r}</div>`,s.setAttribute("style",`transform: scale(${t});transform-origin: top left; display: inline-block`),o.textContent=i;const{width:l,height:u}=n.image;return a.setAttribute("width",l.toString()),a.setAttribute("height",u.toString()),new XMLSerializer().serializeToString(a)}function bk(r,e){const t=Pi.getOptimalCanvasAndContext(r.width,r.height,e),{context:i}=t;return i.clearRect(0,0,r.width,r.height),i.drawImage(r,0,0),t}function _k(r,e,t){return new Promise(async i=>{t&&await new Promise(n=>setTimeout(n,100)),r.onload=()=>{i()},r.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(e)}`,r.crossOrigin="anonymous"})}class Ub{constructor(e){this._activeTextures={},this._renderer=e,this._createCanvas=e.type===mr.WEBGPU}getTexture(e){return this.getTexturePromise(e)}getManagedTexture(e){const t=e.styleKey;if(this._activeTextures[t])return this._increaseReferenceCount(t),this._activeTextures[t].promise;const i=this._buildTexturePromise(e).then(n=>(this._activeTextures[t].texture=n,n));return this._activeTextures[t]={texture:null,promise:i,usageCount:1},i}getReferenceCount(e){return this._activeTextures[e]?.usageCount??null}_increaseReferenceCount(e){this._activeTextures[e].usageCount++}decreaseReferenceCount(e){const t=this._activeTextures[e];t&&(t.usageCount--,t.usageCount===0&&(t.texture?this._cleanUp(t.texture):t.promise.then(i=>{t.texture=i,this._cleanUp(t.texture)}).catch(()=>{de("HTMLTextSystem: Failed to clean texture")}),this._activeTextures[e]=null))}getTexturePromise(e){return this._buildTexturePromise(e)}async _buildTexturePromise(e){const{text:t,style:i,resolution:n,textureStyle:s}=e,o=Pt.get(Jy),a=mk(t,i),l=await xk(a),u=$y(t,i,l,o),c=Math.ceil(Math.ceil(Math.max(1,u.width)+i.padding*2)*n),h=Math.ceil(Math.ceil(Math.max(1,u.height)+i.padding*2)*n),d=o.image,f=2;d.width=(c|0)+f,d.height=(h|0)+f;const p=yk(t,i,n,l,o);await _k(d,p,pk()&&a.length>0);const m=d;let g;this._createCanvas&&(g=bk(d,n));const v=Ob(g?g.canvas:m,d.width-f,d.height-f,n);return s&&(v.source.style=s),this._createCanvas&&(this._renderer.texture.initSource(v.source),Pi.returnCanvasAndContext(g)),Pt.return(o),v}returnTexturePromise(e){e.then(t=>{this._cleanUp(t)}).catch(()=>{de("HTMLTextSystem: Failed to clean texture")})}_cleanUp(e){ze.returnTexture(e,!0),e.source.resource=null,e.source.uploadMethodId="unknown"}destroy(){this._renderer=null;for(const e in this._activeTextures)this._activeTextures[e]&&this.returnTexturePromise(this._activeTextures[e].promise);this._activeTextures=null}}Ub.extension={type:[F.WebGLSystem,F.WebGPUSystem,F.CanvasSystem],name:"htmlText"};class zb extends Pe{constructor(e){const{text:t,style:i,autoSplit:n,lineAnchor:s,wordAnchor:o,charAnchor:a,...l}=e;super(l),this._dirty=!1,this._canReuseChars=!1,this.chars=[],this.words=[],this.lines=[],this._originalText=t,this._autoSplit=n,this._lineAnchor=s,this._wordAnchor=o,this._charAnchor=a,this.style=i}split(){const e=this.splitFn();this.chars=e.chars,this.words=e.words,this.lines=e.lines,this.addChild(...this.lines),this.charAnchor=this._charAnchor,this.wordAnchor=this._wordAnchor,this.lineAnchor=this._lineAnchor,this._dirty=!1,this._canReuseChars=!0}get text(){return this._originalText}set text(e){this._originalText=e,this.lines.forEach(t=>t.destroy({children:!0})),this.lines.length=0,this.words.length=0,this.chars.length=0,this._canReuseChars=!1,this.onTextUpdate()}_setOrigin(e,t,i){let n;typeof e=="number"?n={x:e,y:e}:n={x:e.x,y:e.y},t.forEach(s=>{const o=s.getLocalBounds(),a=o.minX+o.width*n.x,l=o.minY+o.height*n.y;s.origin.set(a,l)}),this[i]=e}get lineAnchor(){return this._lineAnchor}set lineAnchor(e){this._setOrigin(e,this.lines,"_lineAnchor")}get wordAnchor(){return this._wordAnchor}set wordAnchor(e){this._setOrigin(e,this.words,"_wordAnchor")}get charAnchor(){return this._charAnchor}set charAnchor(e){this._setOrigin(e,this.chars,"_charAnchor")}get style(){return this._style}set style(e){e||(e={}),this._style=new It(e),this.words.forEach(t=>t.destroy()),this.words.length=0,this.lines.forEach(t=>t.destroy()),this.lines.length=0,this._canReuseChars=!0,this.onTextUpdate()}onTextUpdate(){this._dirty=!0,this._autoSplit&&this.split()}destroy(e){super.destroy(e),this.chars=[],this.words=[],this.lines=[],(typeof e=="boolean"?e:e?.style)&&this._style.destroy(e),this._style=null,this._originalText=""}}const wk=class Rh extends zb{constructor(e){const t={...Rh.defaultOptions,...e};super(t)}static from(e,t){const i={...Rh.defaultOptions,...t,text:e.text,style:new It(e.style)};return new Rh({...i})}splitFn(){return dk({text:this._originalText,style:this._style,chars:this._canReuseChars?this.chars:[]})}};wk.defaultOptions={autoSplit:!0,lineAnchor:0,wordAnchor:0,charAnchor:0};let Il=wk;function aV(r,e,t){switch(r){case"center":return(t-e)/2;case"right":return t-e;case"left":default:return 0}}function Sk(r){return r==="\r"||r===`
3507
3507
  `||r===`\r
3508
3508
  `}function lV(r,e,t){const i=[];let n=e.lines[0],s="",o=[],a=0;return t.wordWrap=!1,r.forEach(l=>{const u=/^\s*$/.test(l),c=Sk(l),h=s.length===0&&u;if(u&&!c&&h)return;c||(s+=l);const d=Ht.measureText(l,t);o.push({char:l,metric:d}),s.length>=n.length&&(i.push({line:s,chars:o,width:o.reduce((f,p)=>f+p.metric.width,0)}),o=[],s="",a++,n=e.lines[a])}),i}function Tk(r){const{text:e,style:t,chars:i}=r,n=t,s=Ht.measureText(e,n),o=Ht.graphemeSegmenter(e),a=lV(o,s,n.clone()),l=n.align,u=s.lineWidths.reduce((g,v)=>Math.max(g,v),0),c=[],h=[],d=[];let f=0;const p=n.stroke?.width||0,m=n.dropShadow?.distance||0;return a.forEach((g,v)=>{const x=new Pe({label:`line-${v}`});x.y=f,h.push(x);const y=s.lineWidths[v];let b=aV(l,y,u),T=new Pe({label:"word"});T.x=b,g.chars.forEach((P,A)=>{if(P.metric.width!==0){if(Sk(P.char)){b+=P.metric.width-p;return}if(P.char===" ")T.children.length>0&&(d.push(T),x.addChild(T)),b+=P.metric.width+n.letterSpacing-p,T=new Pe({label:"word"}),T.x=b;else{let E;i.length>0?(E=i.shift(),E.text=P.char,E.style=n,E.setFromMatrix(ae.IDENTITY),E.x=b-T.x-m*A):E=new Kc({text:P.char,style:n,x:b-T.x-m*A}),c.push(E),T.addChild(E),b+=P.metric.width+n.letterSpacing-p}}}),T.children.length>0&&(d.push(T),x.addChild(T)),f+=s.lineHeight}),{chars:c,lines:h,words:d}}const Ck=class Fh extends zb{constructor(e){const t={...Fh.defaultOptions,...e};super(t)}static from(e,t){const i={...Fh.defaultOptions,...t,text:e.text,style:new It(e.style)};return new Fh({...i})}splitFn(){return Tk({text:this._originalText,style:this._style,chars:this._canReuseChars?this.chars:[]})}};Ck.defaultOptions={autoSplit:!0,lineAnchor:0,wordAnchor:0,charAnchor:0};let uV=Ck;class Ak extends Al{constructor(e){super(),this._renderer=e,e.runners.resolutionChange.add(this)}resolutionChange(){const e=this.renderable;e._autoResolution&&e.onViewUpdate()}destroy(){const{canvasText:e}=this._renderer;e.getReferenceCount(this.currentKey)>0?e.decreaseReferenceCount(this.currentKey):this.texture&&e.returnTexture(this.texture),this._renderer.runners.resolutionChange.remove(this),this._renderer=null}}class Lb{constructor(e){this._renderer=e}validateRenderable(e){const t=this._getGpuText(e),i=e.styleKey;return t.currentKey!==i?!0:e._didTextUpdate}addRenderable(e,t){const i=this._getGpuText(e);if(e._didTextUpdate){const n=e._autoResolution?this._renderer.resolution:e.resolution;(i.currentKey!==e.styleKey||e.resolution!==n)&&this._updateGpuText(e),e._didTextUpdate=!1,mh(i,e)}this._renderer.renderPipes.batch.addToBatch(i,t)}updateRenderable(e){const t=this._getGpuText(e);t._batcher.updateElement(t)}_updateGpuText(e){const t=this._getGpuText(e);t.texture&&this._renderer.canvasText.decreaseReferenceCount(t.currentKey),e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,t.texture=this._renderer.canvasText.getManagedTexture(e),t.currentKey=e.styleKey}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){const t=new Ak(this._renderer);return t.currentKey="--",t.renderable=e,t.transform=e.groupTransform,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}}Lb.extension={type:[F.WebGLPipes,F.WebGPUPipes,F.CanvasPipes],name:"text"};class Nb{constructor(e){this._activeTextures={},this._renderer=e}getTexture(e,t,i,n){typeof e=="string"&&(J("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),e={text:e,style:i,resolution:t}),e.style instanceof It||(e.style=new It(e.style)),e.textureStyle instanceof kr||(e.textureStyle=new kr(e.textureStyle)),typeof e.text!="string"&&(e.text=e.text.toString());const{text:s,style:o,textureStyle:a}=e,l=e.resolution??this._renderer.resolution,{frame:u,canvasAndContext:c}=Mo.getCanvasAndContext({text:s,style:o,resolution:l}),h=Ob(c.canvas,u.width,u.height,l);if(a&&(h.source.style=a),o.trim&&(u.pad(o.padding),h.frame.copyFrom(u),h.frame.scale(1/l),h.updateUvs()),o.filters){const d=this._applyFilters(h,o.filters);return this.returnTexture(h),Mo.returnCanvasAndContext(c),d}return this._renderer.texture.initSource(h._source),Mo.returnCanvasAndContext(c),h}returnTexture(e){const t=e.source;t.resource=null,t.uploadMethodId="unknown",t.alphaMode="no-premultiply-alpha",ze.returnTexture(e,!0)}renderTextToCanvas(){J("8.10.0","CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead")}getManagedTexture(e){e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;const t=e.styleKey;if(this._activeTextures[t])return this._increaseReferenceCount(t),this._activeTextures[t].texture;const i=this.getTexture({text:e.text,style:e.style,resolution:e._resolution,textureStyle:e.textureStyle});return this._activeTextures[t]={texture:i,usageCount:1},i}decreaseReferenceCount(e){const t=this._activeTextures[e];t.usageCount--,t.usageCount===0&&(this.returnTexture(t.texture),this._activeTextures[e]=null)}getReferenceCount(e){return this._activeTextures[e]?.usageCount??0}_increaseReferenceCount(e){this._activeTextures[e].usageCount++}_applyFilters(e,t){const i=this._renderer.renderTarget.renderTarget,n=this._renderer.filter.generateFilteredTexture({texture:e,filters:t});return this._renderer.renderTarget.bind(i,!1),n}destroy(){this._renderer=null;for(const e in this._activeTextures)this._activeTextures[e]&&this.returnTexture(this._activeTextures[e].texture);this._activeTextures=null}}Nb.extension={type:[F.WebGLSystem,F.WebGPUSystem,F.CanvasSystem],name:"canvasText"};const Ek=["align","breakWords","cssOverrides","fontVariant","fontWeight","leading","letterSpacing","lineHeight","padding","textBaseline","trim","whiteSpace","wordWrap","wordWrapWidth","fontFamily","fontStyle","fontSize"];function cV(r){const e=[];let t=0;for(let i=0;i<Ek.length;i++){const n=`_${Ek[i]}`;e[t++]=r[n]}return t=Pk(r._fill,e,t),t=dV(r._stroke,e,t),t=fV(r.dropShadow,e,t),t=hV(r.filters,e,t),e.join("-")}function hV(r,e,t){if(!r)return t;for(const i of r)e[t++]=i.uid;return t}function Pk(r,e,t){return r&&(e[t++]=r.color,e[t++]=r.alpha,e[t++]=r.fill?.styleKey),t}function dV(r,e,t){return r&&(t=Pk(r,e,t),e[t++]=r.width,e[t++]=r.alignment,e[t++]=r.cap,e[t++]=r.join,e[t++]=r.miterLimit),t}function fV(r,e,t){return r&&(e[t++]=r.alpha,e[t++]=r.angle,e[t++]=r.blur,e[t++]=r.distance,e[t++]=ye.shared.setValue(r.color).toNumber()),t}async function pV(r,e,t=200){const i=await e.extract.base64(r);await e.encoder.commandFinished;const n=t;console.log(`logging texture ${r.source.width}px ${r.source.height}px`);const s=["font-size: 1px;",`padding: ${n}px 300px;`,`background: url(${i}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",s)}const mV=["#000080","#228B22","#8B0000","#4169E1","#008080","#800000","#9400D3","#FF8C00","#556B2F","#8B008B"];let gV=0;function Ik(r,e=0,t={color:"#000000"}){r.renderGroup&&(t.color=mV[gV++]);let i="";for(let o=0;o<e;o++)i+=" ";let n=r.label;!n&&r instanceof Je&&(n=`sprite:${r.texture.label}`);let s=`%c ${i}|- ${n} (worldX:${r.worldTransform.tx}, relativeRenderX:${r.relativeGroupTransform.tx}, renderX:${r.groupTransform.tx}, localX:${r.x})`;r.renderGroup&&(s+=" (RenderGroup)"),r.filters&&(s+="(*filters)"),console.log(s,`color:${t.color}; font-weight:bold;`),e++;for(let o=0;o<r.children.length;o++){const a=r.children[o];Ik(a,e,{...t})}}function Bk(r,e=0,t={index:0,color:"#000000"}){let i="";for(let s=0;s<e;s++)i+=" ";const n=`%c ${i}- ${t.index}: ${r.root.label} worldX:${r.worldTransform.tx}`;console.log(n,`color:${t.color}; font-weight:bold;`),e++;for(let s=0;s<r.renderGroupChildren.length;s++){const o=r.renderGroupChildren[s];Bk(o,e,{...t,index:s})}}xe.add(O3,U3);const vV=Object.freeze(Object.defineProperty({__proto__:null,AbstractBitmapFont:zx,AbstractRenderer:$a,AbstractSplitText:zb,AbstractText:qc,AccessibilitySystem:$T,AlphaFilter:vP,AlphaMask:sx,AlphaMaskPipe:n2,AnimatedSprite:Tl,Application:gc,ApplicationInitHook:Mx,Assets:gs,AssetsClass:HE,BLEND_TO_NPM:lA,BUFFER_TYPE:Cl,BackgroundLoader:xE,BackgroundSystem:ZI,Batch:hA,BatchGeometry:vA,BatchTextureArray:cA,BatchableGraphics:Bc,BatchableHTMLText:fk,BatchableMesh:fh,BatchableSprite:Al,BatchableText:Ak,Batcher:mA,BatcherPipe:i2,BigPool:Pt,BindGroup:Ei,BindGroupSystem:rb,BitmapFont:vy,BitmapFontManager:Ao,BitmapText:Zy,BitmapTextGraphics:ck,BitmapTextPipe:Mb,BlendModeFilter:wt,BlendModePipe:V2,BlurFilter:ys,BlurFilterPass:ko,Bounds:Dt,BrowserAdapter:AT,Buffer:vr,BufferImageSource:Xu,BufferResource:th,BufferUsage:Ge,CLEAR:gr,Cache:Ke,CanvasObserver:fx,CanvasPool:Pi,CanvasPoolClass:dE,CanvasSource:Ci,CanvasTextGenerator:Mo,CanvasTextMetrics:Ht,CanvasTextPipe:Lb,CanvasTextSystem:Nb,Circle:sl,Color:ye,ColorBlend:wC,ColorBurnBlend:SC,ColorDodgeBlend:TC,ColorMask:ox,ColorMaskPipe:s2,ColorMatrixFilter:Ro,CompressedSource:ml,Container:Pe,Culler:nP,CullerPlugin:sP,CustomRenderPipe:U2,D3D10_RESOURCE_DIMENSION:Ry,D3DFMT:xr,DATA_URI:p7,DDS:Ce,DEG_TO_RAD:ns,DEPRECATED_SCALE_MODES:ch,DEPRECATED_WRAP_MODES:uh,DOMAdapter:Ee,DOMContainer:bH,DOMPipe:Oy,DRAW_MODES:FW,DXGI_FORMAT:ky,DXGI_TO_TEXTURE_FORMAT:yr,DarkenBlend:CC,DefaultBatcher:Pc,DefaultShader:Zx,DifferenceBlend:AC,DisplacementFilter:MH,DivideBlend:EC,DynamicBitmapFont:gy,Ellipse:vc,EventBoundary:fP,EventEmitter:fr,EventSystem:Ly,EventsTicker:Ii,ExclusionBlend:PC,ExtensionType:F,ExtractSystem:JI,FOURCC_TO_TEXTURE_FORMAT:Fy,FederatedContainer:pP,FederatedEvent:ho,FederatedMouseEvent:_l,FederatedPointerEvent:Zr,FederatedWheelEvent:xs,FillGradient:Dr,FillPattern:nl,Filter:ge,FilterEffect:Na,FilterPipe:Yy,FilterSystem:Ky,FontStylePromiseCache:gh,GAUSSIAN_VALUES:Gy,GL_FORMATS:$c,GL_INTERNAL_FORMAT:QE,GL_TARGETS:c2,GL_TYPES:Xe,GL_WRAP_MODES:uI,GenerateTextureSystem:q2,Geometry:fs,GlBackBufferSystem:dI,GlBatchAdaptor:e2,GlBuffer:aI,GlBufferSystem:a2,GlColorMaskSystem:f2,GlContextSystem:lI,GlEncoderSystem:p2,GlGeometrySystem:h2,GlGraphicsAdaptor:D2,GlLimitsSystem:m2,GlMeshAdaptor:O2,GlParticleContainerAdaptor:UB,GlParticleContainerPipe:Cb,GlProgram:ue,GlProgramData:SI,GlRenderTarget:fI,GlRenderTargetAdaptor:xI,GlRenderTargetSystem:T2,GlShaderSystem:I2,GlStateSystem:UI,GlStencilSystem:g2,GlTexture:zI,GlTextureSystem:M2,GlUboSystem:_2,GlUniformGroupSystem:B2,GlobalResourceRegistry:cs,GlobalUniformSystem:j2,GpuBatchAdaptor:t2,GpuBlendModesToPixi:nr,GpuBufferSystem:ib,GpuColorMaskSystem:nb,GpuDeviceSystem:lh,GpuEncoderSystem:sb,GpuGraphicsAdaptor:vb,GpuGraphicsContext:XA,GpuLimitsSystem:ob,GpuMeshAdapter:xb,GpuMipmapGenerator:xB,GpuParticleContainerAdaptor:zB,GpuParticleContainerPipe:Ab,GpuProgram:pe,GpuRenderTarget:fB,GpuRenderTargetAdaptor:pB,GpuRenderTargetSystem:hb,GpuShaderSystem:db,GpuStateSystem:fb,GpuStencilModesToPixi:ji,GpuStencilSystem:ab,GpuTextureSystem:gb,GpuUboSystem:lb,GpuUniformBatchPipe:ub,Graphics:Ze,GraphicsContext:ir,GraphicsContextRenderData:YA,GraphicsContextSystem:kc,GraphicsGpuData:TB,GraphicsPath:ai,GraphicsPipe:yb,HTMLText:tI,HTMLTextPipe:Db,HTMLTextRenderData:Jy,HTMLTextStyle:Qc,HTMLTextSystem:Ub,HardLightBlend:IC,HardMixBlend:BC,HelloSystem:ah,IGLUniformData:JH,ImageSource:jr,InstructionSet:rx,KTX:Tt,LightenBlend:kC,LinearBurnBlend:RC,LinearDodgeBlend:FC,LinearLightBlend:MC,Loader:PE,LoaderParserPriority:Rr,LuminosityBlend:DC,MaskEffectManager:qu,MaskEffectManagerClass:dT,MaskFilter:DP,Matrix:ae,Mesh:Fo,MeshGeometry:Bn,MeshGpuData:bb,MeshPipe:_b,MeshPlane:ZW,MeshRope:JW,MeshSimple:$W,NOOP:Wv,NegationBlend:OC,NineSliceGeometry:Fn,NineSlicePlane:sV,NineSliceSprite:KB,NineSliceSpriteGpuData:QB,NineSliceSpritePipe:Pb,NoiseFilter:DH,ObservablePoint:ot,OverlayBlend:UC,PI_2:L3,Particle:rV,ParticleBuffer:GB,ParticleContainer:nV,ParticleContainerPipe:Tb,ParticleShader:VB,PassthroughFilter:BP,PerspectiveMesh:QW,PerspectivePlaneGeometry:RB,PinLightBlend:zC,PipelineSystem:cb,PlaneGeometry:hh,Point:me,Polygon:vo,Pool:aT,PoolGroupClass:lT,PrepareBase:UP,PrepareQueue:YP,PrepareSystem:iI,PrepareUpload:rI,QuadGeometry:ek,RAD_TO_DEG:N3,Rectangle:he,RenderContainer:LW,RenderGroup:Qu,RenderGroupPipe:z2,RenderGroupSystem:G2,RenderLayer:VW,RenderTarget:eh,RenderTargetSystem:S2,RenderTexture:Ot,RenderableGCSystem:iB,RendererInitHook:Dx,RendererType:mr,ResizePlugin:Ox,Resolver:An,RopeGeometry:DB,RoundedRectangle:yc,SCALE_MODES:DW,STENCIL_MODES:St,SVGParser:sE,SaturationBlend:LC,SchedulerSystem:K2,ScissorMask:qH,SdfShader:uk,Shader:Fr,ShaderStage:mo,ShapePath:$A,SharedRenderPipes:tb,SharedSystems:eb,SoftLightBlend:NC,SplitBitmapText:Il,SplitText:uV,Sprite:Je,SpritePipe:H2,Spritesheet:dx,State:Mr,StencilMask:ax,StencilMaskPipe:o2,SubtractBlend:GC,SystemRunner:Fx,TEXTURE_FORMAT_BLOCK_SIZE:jE,Text:Kc,TextStyle:It,Texture:Q,TextureGCSystem:nB,TextureMatrix:Xv,TexturePool:ze,TexturePoolClass:TT,TextureSource:dt,TextureStyle:kr,TextureUvs:OW,Ticker:Ft,TickerListener:ic,TickerPlugin:Ux,TilingSprite:GP,TilingSpriteGpuData:nk,TilingSpritePipe:kb,TilingSpriteShader:$B,Transform:LP,Triangle:jy,UNIFORM_TO_ARRAY_SETTERS:FI,UNIFORM_TO_SINGLE_SETTERS:RI,UNIFORM_TYPES_MAP:pC,UNIFORM_TYPES_VALUES:bx,UPDATE_BLEND:ec,UPDATE_COLOR:Wa,UPDATE_PRIORITY:Ai,UPDATE_TRANSFORM:kG,UPDATE_VISIBLE:uo,UboBatch:uB,UboSystem:v2,UniformGroup:ft,VERSION:rl,VideoSource:co,ViewContainer:Ti,ViewSystem:$2,ViewableBuffer:ds,VividLightBlend:HC,WGSL_ALIGN_SIZE_DATA:Pl,WGSL_TO_STD40_SIZE:x2,WRAP_MODES:MW,WebGLRenderer:lB,WebGPURenderer:wB,WebWorkerAdapter:AH,WorkerManager:Sy,accessibilityTarget:eC,addBits:Vx,addMaskBounds:tc,addMaskLocalBounds:rc,addProgramDefines:iC,alphaFrag:mP,alphaWgsl:Ny,appendSVGPath:fy,applyMatrix:rk,applyProjectiveTransformationToPlane:EB,applyStyleParams:F2,assignWithIgnore:Zu,autoDetectEnvironment:QG,autoDetectRenderer:JC,autoDetectSource:MG,basisTranscoderUrls:Gc,bgr2rgb:lo,bitmapFontCachePlugin:gE,bitmapFontTextParser:Dc,bitmapFontXMLParser:xy,bitmapFontXMLStringParser:yy,bitmapTextSplit:dk,blendTemplateFrag:xC,blendTemplateVert:yC,blendTemplateWgsl:bC,blockDataMap:pb,blurTemplateWgsl:_P,boundsPool:Si,browserExt:O3,buildAdaptiveBezier:ny,buildAdaptiveQuadratic:qA,buildArc:ay,buildArcTo:jA,buildArcToSvg:QA,buildCircle:To,buildContextBatches:WA,buildEllipse:FA,buildGeometryFromPath:WW,buildLine:UA,buildPixelLine:zA,buildPolygon:LA,buildRectangle:NA,buildRoundedRectangle:MA,buildSimpleUvs:$x,buildTriangle:GA,buildUvs:Jx,cacheAsTextureMixin:uT,cacheTextureArray:yE,calculatePathArea:nE,calculateProjection:yI,canvasTextSplit:Tk,checkChildrenDidChange:tx,checkDataUrl:ms,checkExtension:Qr,checkForNestedPattern:rE,checkMaxIfStatementsInShader:Hx,childrenHelperMixin:cT,cleanArray:rB,cleanHash:tB,clearList:oh,closePointEps:ey,collectAllRenderables:NW,collectRenderablesMixin:hT,color32BitToUniform:Uo,colorBit:Sc,colorBitGl:Tc,colorMatrixFilterFrag:TP,colorMatrixFilterWgsl:Hy,colorToUniform:xW,compareModeToGlCompare:WI,compileHighShader:_A,compileHighShaderGl:wA,compileHighShaderGlProgram:_o,compileHighShaderGpuProgram:bo,compileHooks:Xx,compileInputs:Yx,compileOutputs:bA,compileShader:C2,compute2DProjection:kB,convertFormatIfRequired:uH,convertToList:Kr,copySearchParams:sc,createIdFromString:po,createIndicesForQuads:wb,createLevelBuffers:V9,createLevelBuffersFromKTX:cH,createStringVariations:RT,createTexture:In,createUboElementsSTD40:pI,createUboElementsWGSL:cB,createUboSyncFunction:y2,createUboSyncFunctionSTD40:vI,createUboSyncFunctionWGSL:dB,crossOrigin:UE,cullingMixin:sT,curveEps:ty,defaultFilterVert:Sl,defaultValue:E2,definedProps:ni,deprecation:J,detectAvif:bE,detectBasis:L9,detectCompressed:vH,detectDefaults:wE,detectMp4:SE,detectOgv:TE,detectVideoAlphaMode:ux,detectWebm:CE,detectWebp:AE,determineCrossOrigin:LE,displacementFrag:CP,displacementVert:AP,displacementWgsl:Wy,earcut:KC,effectsMixin:fT,ensureAttributes:u2,ensureIsBuffer:Wx,ensurePrecision:nC,ensureTextOptions:jc,executeInstructions:sh,extensions:xe,extractAttributesFromGlProgram:AI,extractAttributesFromGpuProgram:cC,extractFontFamilies:mk,extractStructAndGroups:uc,extractSubpaths:iE,extractSvgUrlId:cy,fastCopy:_c,findMixin:pT,fontStringFromTextStyle:il,formatShader:VH,fragmentGPUTemplate:AA,fragmentGlTemplate:PA,generateArraySyncSTD40:gI,generateArraySyncWGSL:hB,generateBlurFragSource:xP,generateBlurGlProgram:bP,generateBlurProgram:wP,generateBlurVertSource:yP,generateGPULayout:HH,generateGpuLayoutGroups:hC,generateLayout:WH,generateLayoutHash:dC,generateParticleUpdateFunction:LB,generateProgram:kI,generateShaderSyncCode:wI,generateTextStyleKey:cV,generateTextureBatchBit:Cc,generateTextureBatchBitGl:Ac,generateTextureMatrix:HA,generateUniformsSync:MI,getAdjustedBlendModeBlend:xo,getAttributeInfoFromFormat:Xi,getBatchSamplersUniformGroup:Ec,getBitmapTextLayout:Fc,getCanvasBoundingBox:VP,getCanvasFillStyle:fl,getCanvasTexture:w2,getDefaultUniformValue:mC,getFastGlobalBounds:zW,getFastGlobalBoundsMixin:mT,getFillInstructionData:n9,getFontCss:xk,getFontFamilyName:kE,getGeometryBounds:gA,getGlTypeFromFormat:hI,getGlobalBounds:Ga,getGlobalMixin:xT,getGlobalRenderableBounds:RP,getLocalBounds:Ku,getMaxFragmentPrecision:rC,getMaxTexturesPerBatch:uA,getOrientationOfPoints:DA,getPo2TextureFromSource:Ob,getResolutionOfUrl:Oc,getSVGUrl:yk,getSupportedCompressedTextureFormats:By,getSupportedGPUCompressedTextureFormats:Iy,getSupportedGlCompressedTextureFormats:Py,getSupportedTextureFormats:gl,getTemporaryCanvasFromImage:bk,getTestContext:xx,getTextureBatchBindGroup:bc,getTextureDefaultMatrix:eV,getTextureFormatFromKTXTexture:fH,getUboData:EI,getUniformData:PI,getUrlExtension:FT,glFormatToGPUFormat:rP,glUploadBufferImageResource:LI,glUploadCompressedTextureResource:NI,glUploadImageResource:k2,glUploadVideoResource:GI,globalUniformsBit:IA,globalUniformsBitGl:BA,globalUniformsUBOBitGl:M7,gpuFormatToBasisTranscoderFormat:Y9,gpuFormatToKTXBasisTranscoderFormat:mH,gpuUploadBufferImageResource:mB,gpuUploadCompressedTextureResource:gB,gpuUploadImageResource:mb,gpuUploadVideoResource:vB,groupD8:Be,hasCachedCanvasTexture:ZH,hslWgsl:zH,hslgl:cc,hslgpu:hc,injectBits:qx,insertVersion:sC,isMobile:KT,isPow2:Vv,isRenderingToScreen:bI,isSafari:pk,isSingleItem:Xa,isWebGLSupported:el,isWebGPUSupported:tl,ktxTranscoderUrls:Hc,loadBasis:W9,loadBasisOnWorker:qE,loadBitmapFont:vE,loadDDS:$9,loadEnvironmentExtensions:Ix,loadFontAsBase64:gk,loadFontCSS:vk,loadImageBitmap:OE,loadJson:IE,loadKTX:nH,loadKTX2:lH,loadKTX2onWorker:eP,loadSVGImage:_k,loadSvg:FE,loadTextures:Ty,loadTxt:BE,loadVideoTextures:NE,loadWebFont:RE,localUniformBit:Do,localUniformBitGl:Jc,localUniformBitGroup2:nI,localUniformMSDFBit:sk,localUniformMSDFBitGl:ok,log2:gG,logDebugTexture:pV,logProgramError:BI,logRenderGroupScene:Bk,logScene:Ik,mSDFBit:ak,mSDFBitGl:lk,mapFormatToGlFormat:VI,mapFormatToGlInternalFormat:XI,mapFormatToGlType:YI,mapGlToVertexFormat:CI,mapSize:rW,mapType:P2,mapWebGLBlendModesToPixi:DI,maskFrag:FP,maskVert:MP,maskWgsl:Qy,matrixPool:Zt,measureHtmlText:$y,measureMixin:bT,migrateFragmentFromV7toV8:eW,mipmapScaleModeToGlFilter:HI,multiplyColors:Ha,multiplyHexColors:ex,nextPow2:us,noiseFrag:EP,noiseWgsl:Vy,nonCompressedFormats:VE,normalizeExtensionPriority:Ua,onRenderMixin:_T,parseDDS:KE,parseFunctionBody:UW,parseKTX:ZE,parseSVGDefinitions:eE,parseSVGFloatAttribute:xt,parseSVGPath:oA,parseSVGStyle:dy,particleData:Eb,particlesFrag:HB,particlesVert:WB,particlesWgsl:Sb,passthroughFrag:IP,passthroughWgsl:Xy,path:pr,pointInTriangle:qy,preloadVideo:zE,removeItems:$v,removeStructAndGroupDuplicates:fC,resetUids:mG,resolveCharacters:mE,resolveCompressedTextureUrl:gH,resolveJsonUrl:GE,resolveTextureUrl:Ey,resourceToTexture:IT,roundPixelsBit:wo,roundPixelsBitGl:So,roundedShapeArc:ZA,roundedShapeQuadraticCurve:JA,sayHello:eB,scaleModeToGlFilter:R2,setBasisTranscoderPath:G9,setKTXTranscoderPath:oH,setPositions:tk,setProgramName:oC,setUvs:ik,shapeBuilders:Co,sortMixin:wT,spritesheetAsset:OT,squaredDistanceToLineSegment:ol,stripVersion:aC,styleAttributes:hy,testImageFormat:by,testVideoFormat:pl,textStyleToCSS:qP,textureBit:sI,textureBitGl:oI,textureFrom:BT,tilingBit:ZB,tilingBitGl:JB,toFillStyle:Pn,toLocalGlobalMixin:ST,toStrokeStyle:dl,transformVertices:Ic,triangulateWithHoles:ry,uboSyncFunctionsSTD40:b2,uboSyncFunctionsWGSL:mI,uid:tt,uniformParsers:kn,unpremultiplyAlpha:cW,unsafeEvalSupported:Bx,updateLocalTransform:GW,updateQuadBounds:Yv,updateRenderGroupTransform:jI,updateRenderGroupTransforms:L2,updateTextBounds:mh,updateTransformAndChildren:N2,updateTransformBackwards:ju,updateWorldTransform:HW,v8_0_0:Te,v8_3_4:W3,validFormats:Wc,validateRenderables:QI,vertexGPUTemplate:CA,vertexGlTemplate:EA,vkFormatToGPUFormat:iP,warn:de,webworkerExt:U3,wrapModeToGlAddress:nh},Symbol.toStringTag,{value:"Module"}));Fv.registerPlugin(Uv),Uv.registerPIXI(vV);class Ct{id;type;options;params;timeline=null;lastTarget=null;constructor(e,t,i="gsap"){this.id=t.id||`gsap_${Math.random().toString(36).substr(2,9)}`,this.type=i,this.params=e,this.options={duration:t.duration,delay:t.delay??0,easing:t.easing??"none",iterCount:t.iterCount??1,id:this.id,disableGlobalEasing:t.disableGlobalEasing??!1}}getTransform(e){return{}}getTargetCount(e){if(!e)return 0;const{type:t}=this.params;if(t==="character"){const i=(n,s=!1)=>{if(!n.children||n.children.length===0)return s?0:1;let o=0;for(const a of n.children)o+=i(a);return o};return i(e,!0)}else if(t==="word")return e.children?e.children.length:0;return 1}apply(e,t){const{duration:i,delay:n}=this.options,s=t-n;let o=this.lastTarget!==e||!this.timeline;const a=this.getCurrentTargets(e);if(!o&&this.timeline){const c=this.timeline.getChildren();if(c.length===0)e&&e.children&&e.children.length>0&&(o=!0);else{const h=c[0],d=typeof h.targets=="function"?h.targets():[],f=this.getTargetCount(e);if(d.length!==f)o=!0;else if(d&&d.length>0&&a.length>0)if(d[0]===e&&e.children&&e.children.length>0)o=!0;else for(let p=0;p<d.length;p++){const m=d[p];if(m.destroyed||!m.parent){o=!0;break}if(p<a.length&&m!==a[p]){o=!0;break}}else e&&e.children&&e.children.length>0&&(o=!0)}}if(o&&(this.initTimeline(e),this.lastTarget=e),!this.timeline)return;if(s<0){this.timeline.pause(0);return}const l=this.options.iterCount===1/0?i:i/this.options.iterCount;if(this.options.iterCount!==1/0&&s>=i){this.timeline.progress(1);return}const u=s%l/l;this.timeline.progress(u)}getCurrentTargets(e){if(!e||!e.children)return[e];const{type:t}=this.params;if(t==="character"){const i=(n,s=!1)=>{if(!n.children||n.children.length===0)return s?[]:[n];let o=[];for(const a of n.children)o=o.concat(i(a));return o};return i(e,!0)}else if(t==="word")return[...e.children||[]];return[e]}initTimeline(e){const{from:t,to:i,stagger:n,type:s}=this.params,o=this.options.duration/1e6;let a=[];if(e&&e.children)if(s==="character"){const f=(p,m=!1)=>{if(!p.children||p.children.length===0)return m?[]:[p];let g=[];for(const v of p.children)g=g.concat(f(v));return g};a=f(e,!0)}else s==="word"?a=e.children||[]:a=[e];else a=[e];if((s==="character"||s==="word")&&a.length===0){this.timeline&&(this.timeline.kill(),this.timeline=null);return}this.timeline&&this.timeline.kill(),this.timeline=Fv.timeline({paused:!0}),a.forEach(f=>{if(f.anchor){if(f.anchor.x!==.5||f.anchor.y!==.5){const p=f.anchor.x,m=f.anchor.y;f.anchor.set(.5,.5);const g=f.width/(f.scale?.x||1),v=f.height/(f.scale?.y||1);f.x+=(.5-p)*g*(f.scale?.x||1),f.y+=(.5-m)*v*(f.scale?.y||1)}}else if(f.pivot&&f.getLocalBounds){const p=f.getLocalBounds(),m=p.x+p.width/2,g=p.y+p.height/2;if(f.pivot.x!==m||f.pivot.y!==g){const v=f.pivot.x,x=f.pivot.y;f.pivot.set(m,g),f.x+=(m-v)*(f.scale?.x||1),f.y+=(g-x)*(f.scale?.y||1)}}});const l=["scale","scaleX","scaleY","rotation","skewX","skewY","skew","pivotX","pivotY","pivot","anchorX","anchorY","anchor","blur","brightness","contrast","grayscale","hueRotate","invert","saturate","threshold","matrix"],u=f=>f&&Object.keys(f).some(p=>l.includes(p)),c=f=>{if(!u(f))return f;const p={...f},m={};return l.forEach(g=>{g in p&&(m[g]=p[g],delete p[g])}),p.pixi=m,p},h=c(t),d=c(i);this.timeline.fromTo(a,h,{duration:o,stagger:n||0,ease:this.options.easing,...d})}destroy(){this.timeline&&(this.timeline.kill(),this.timeline=null)}}function L(r){return r&&r.presetParams?{...r.presetParams,...r}:r}const xV=(r,e)=>{const t=L(e),i=Math.max(r.duration/1e6,1),n=t?.easing||r.easing||"easeOutQuad",s=V("pulse",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,iterCount:i*3,easing:n},"pulse"):new B(s,{...r,easing:n,iterCount:i*3},"pulse")},yV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fadeIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fadeIn"):new B(n,{...r,easing:i},"fadeIn")},bV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeInQuad",n=V("fadeOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fadeOut"):new B(n,{...r,easing:i},"fadeOut")},_V=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutCubic",n=V("slideIn",e);if(t&&(t["0%"]||t["100%"]))return new B(t,{...r,easing:i},"slideIn");const s=new B(n,{...r,easing:i},"slideIn");return s.presetParams=e,s},wV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeInCubic",n=V("slideOut",e);if(t&&(t["0%"]||t["100%"]))return new B(t,{...r,easing:i},"slideOut");const s=new B(n,{...r,easing:i},"slideOut");return s.presetParams=e,s},SV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutBack",n=V("zoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomIn"):new B(n,{...r,easing:i},"zoomIn")},TV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeInBack",n=V("zoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomOut"):new B(n,{...r,easing:i},"zoomOut")},CV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurIn"):new B(n,{...r,easing:i},"blurIn")},AV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeInQuad",n=V("blurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurOut"):new B(n,{...r,easing:i},"blurOut")},EV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("motionBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"motionBlurIn"):new B(n,{...r,easing:i},"motionBlurIn")},PV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeInQuad",n=V("motionBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"motionBlurOut"):new B(n,{...r,easing:i},"motionBlurOut")},IV=(r,e)=>{const t=L(e);return new Ct({type:"character",from:{alpha:0,scale:.5},to:{alpha:1,scale:1},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"back.out"},"charFadeIn")},BV=(r,e)=>{const t=L(e);return new Ct({type:"character",from:{alpha:0,y:"+=50"},to:{alpha:1,y:"-=50"},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"power2.out"},"charSlideUp")},kV=(r,e)=>{const t=L(e);return new Ct({type:"character",from:{alpha:0},to:{alpha:1,duration:.001},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"none"},"charTypewriter")},RV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0},to:{alpha:1},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"none"},"fadeByWord")},FV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,x:"+=50"},to:{alpha:1,x:"-=50"},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"none"},"slideFadeByWord")},MV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{scale:0,immediateRender:!0},to:{keyframes:{"0%":{scale:0},"50%":{scale:1.2},"100%":{scale:1}},ease:"none"},stagger:t?.stagger??.05},{...r,easing:t?.easing||r.easing||"none"},"popByWord")},DV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,scale:.7},to:{alpha:1,scale:1},stagger:t?.stagger??.08},{...r,easing:t?.easing||r.easing||"back.out(1.5)"},"scaleFadeByWord")},OV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,y:"-=30",scale:.8},to:{alpha:1,y:"+=30",scale:1},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"bounce.out"},"bounceByWord")},UV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,rotation:-10},to:{alpha:1,rotation:0},stagger:t?.stagger??.08},{...r,easing:t?.easing||r.easing||"power2.out"},"rotateInByWord")},zV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,x:"-=50"},to:{alpha:1,x:"+=50"},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"power2.out"},"slideRightByWord")},LV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,x:"+=50"},to:{alpha:1,x:"-=50"},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"power2.out"},"slideLeftByWord")},NV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,rotation:90},to:{alpha:1,rotation:0},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"power2.out"},"fadeRotateByWord")},GV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,skewX:45},to:{alpha:1,skewX:0},stagger:t?.stagger??.08},{...r,easing:t?.easing||r.easing||"power3.out"},"skewByWord")},HV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,y:"+=20"},to:{alpha:1,y:"-=20",repeat:1,yoyo:!0},stagger:t?.stagger??.12},{...r,easing:t?.easing||r.easing||"sine.inOut"},"waveByWord")},WV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,blur:10},to:{alpha:1,blur:0},stagger:t?.stagger??.08},{...r,easing:t?.easing||r.easing||"power2.out"},"blurInByWord")},VV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,y:"-=60",scaleY:2},to:{alpha:1,y:"+=60",scaleY:1},stagger:t?.stagger??.09},{...r,easing:t?.easing||r.easing||"power3.out"},"dropSoftByWord")},XV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,scale:0},to:{alpha:1,scale:1},stagger:t?.stagger??.07},{...r,easing:t?.easing||r.easing||"elastic.out(1, 0.5)"},"elasticPopByWord")},YV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,skewX:-20},to:{alpha:1,skewX:0},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"power2.out"},"flipUpByWord")},qV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,rotation:-180,scale:.5},to:{alpha:1,rotation:0,scale:1},stagger:t?.stagger??.09},{...r,easing:t?.easing||r.easing||"power3.out"},"spinInByWord")},jV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,scaleX:1.5,scaleY:.5},to:{alpha:1,scaleX:1,scaleY:1},stagger:t?.stagger??.08},{...r,easing:t?.easing||r.easing||"power2.out"},"stretchInByWord")},KV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,scale:1.4},to:{alpha:1,scale:1},stagger:t?.stagger??.1},{...r,easing:t?.easing||r.easing||"power4.out"},"revealZoomByWord")},QV=(r,e)=>{const t=L(e);return new Ct({type:"word",from:{alpha:0,y:"+=25"},to:{alpha:1,y:"-=25"},stagger:t?.stagger??.15},{...r,easing:t?.easing||r.easing||"sine.out"},"floatWaveByWord")},ZV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideRightIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideRightIn"):new B(n,{...r,easing:i},"blurSlideRightIn")},JV=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("wobbleZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"wobbleZoomIn"):new B(n,{...r,easing:i},"wobbleZoomIn")},$V=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spinZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spinZoomIn"):new B(n,{...r,easing:i},"spinZoomIn")},eX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideLeftIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideLeftIn"):new B(n,{...r,easing:i},"blurSlideLeftIn")},tX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideRightStrongIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideRightStrongIn"):new B(n,{...r,easing:i},"blurSlideRightStrongIn")},rX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("cinematicZoomSlideIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"cinematicZoomSlideIn"):new B(n,{...r,easing:i},"cinematicZoomSlideIn")},iX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("elasticTwistIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"elasticTwistIn"):new B(n,{...r,easing:i},"elasticTwistIn")},nX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spinFadeIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spinFadeIn"):new B(n,{...r,easing:i},"spinFadeIn")},sX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("flashZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"flashZoomIn"):new B(n,{...r,easing:i},"flashZoomIn")},oX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltSlideRightIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltSlideRightIn"):new B(n,{...r,easing:i},"tiltSlideRightIn")},aX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltZoomIn"):new B(n,{...r,easing:i},"tiltZoomIn")},lX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("glitchSlideIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"glitchSlideIn"):new B(n,{...r,easing:i},"glitchSlideIn")},uX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dropBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dropBlurIn"):new B(n,{...r,easing:i},"dropBlurIn")},cX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fallZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fallZoomIn"):new B(n,{...r,easing:i},"fallZoomIn")},hX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomSpinIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomSpinIn"):new B(n,{...r,easing:i},"zoomSpinIn")},dX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dramaticSpinSlideIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dramaticSpinSlideIn"):new B(n,{...r,easing:i},"dramaticSpinSlideIn")},fX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltSlideRightOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltSlideRightOut"):new B(n,{...r,easing:i},"tiltSlideRightOut")},pX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltZoomOut"):new B(n,{...r,easing:i},"tiltZoomOut")},mX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("glitchSlideOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"glitchSlideOut"):new B(n,{...r,easing:i},"glitchSlideOut")},gX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dropBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dropBlurOut"):new B(n,{...r,easing:i},"dropBlurOut")},vX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fallZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fallZoomOut"):new B(n,{...r,easing:i},"fallZoomOut")},xX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomSpinOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomSpinOut"):new B(n,{...r,easing:i},"zoomSpinOut")},yX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dramaticSpinSlideOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dramaticSpinSlideOut"):new B(n,{...r,easing:i},"dramaticSpinSlideOut")},bX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideRightOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideRightOut"):new B(n,{...r,easing:i},"blurSlideRightOut")},_X=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("wobbleZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"wobbleZoomOut"):new B(n,{...r,easing:i},"wobbleZoomOut")},wX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spinZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spinZoomOut"):new B(n,{...r,easing:i},"spinZoomOut")},SX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideLeftOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideLeftOut"):new B(n,{...r,easing:i},"blurSlideLeftOut")},TX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("blurSlideRightStrongOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"blurSlideRightStrongOut"):new B(n,{...r,easing:i},"blurSlideRightStrongOut")},CX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("cinematicZoomSlideOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"cinematicZoomSlideOut"):new B(n,{...r,easing:i},"cinematicZoomSlideOut")},AX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("elasticTwistOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"elasticTwistOut"):new B(n,{...r,easing:i},"elasticTwistOut")},EX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spinFadeOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spinFadeOut"):new B(n,{...r,easing:i},"spinFadeOut")},PX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("flashZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"flashZoomOut"):new B(n,{...r,easing:i},"flashZoomOut")},IX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideRotateIn"):new B(n,{...r,easing:i},"slideRotateIn")},BX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideRotateOut"):new B(n,{...r,easing:i},"slideRotateOut")},kX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideBlurIn"):new B(n,{...r,easing:i},"slideBlurIn")},RX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideBlurOut"):new B(n,{...r,easing:i},"slideBlurOut")},FX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomRotateIn"):new B(n,{...r,easing:i},"zoomRotateIn")},MX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomRotateOut"):new B(n,{...r,easing:i},"zoomRotateOut")},DX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomBlurIn"):new B(n,{...r,easing:i},"zoomBlurIn")},OX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomBlurOut"):new B(n,{...r,easing:i},"zoomBlurOut")},UX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideZoomIn"):new B(n,{...r,easing:i},"slideZoomIn")},zX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideZoomOut"):new B(n,{...r,easing:i},"slideZoomOut")},LX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("verticalBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"verticalBlurIn"):new B(n,{...r,easing:i},"verticalBlurIn")},NX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("verticalBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"verticalBlurOut"):new B(n,{...r,easing:i},"verticalBlurOut")},GX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("rotateBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"rotateBlurIn"):new B(n,{...r,easing:i},"rotateBlurIn")},HX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("rotateBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"rotateBlurOut"):new B(n,{...r,easing:i},"rotateBlurOut")},WX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("cinematicSlideZoomBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"cinematicSlideZoomBlurIn"):new B(n,{...r,easing:i},"cinematicSlideZoomBlurIn")},VX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("cinematicSlideZoomBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"cinematicSlideZoomBlurOut"):new B(n,{...r,easing:i},"cinematicSlideZoomBlurOut")},XX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("brightnessZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"brightnessZoomIn"):new B(n,{...r,easing:i},"brightnessZoomIn")},YX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("brightnessZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"brightnessZoomOut"):new B(n,{...r,easing:i},"brightnessZoomOut")},qX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("brightnessSlideIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"brightnessSlideIn"):new B(n,{...r,easing:i},"brightnessSlideIn")},jX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("brightnessSlideOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"brightnessSlideOut"):new B(n,{...r,easing:i},"brightnessSlideOut")},KX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltZoomBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltZoomBlurIn"):new B(n,{...r,easing:i},"tiltZoomBlurIn")},QX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("tiltZoomBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"tiltZoomBlurOut"):new B(n,{...r,easing:i},"tiltZoomBlurOut")},ZX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dropRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dropRotateIn"):new B(n,{...r,easing:i},"dropRotateIn")},JX=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("dropRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"dropRotateOut"):new B(n,{...r,easing:i},"dropRotateOut")},$X=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spiralIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spiralIn"):new B(n,{...r,easing:i},"spiralIn")},eY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("spiralOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"spiralOut"):new B(n,{...r,easing:i},"spiralOut")},tY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("flashSlideIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"flashSlideIn"):new B(n,{...r,easing:i},"flashSlideIn")},rY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("flashSlideOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"flashSlideOut"):new B(n,{...r,easing:i},"flashSlideOut")},iY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("heavyCinematicIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"heavyCinematicIn"):new B(n,{...r,easing:i},"heavyCinematicIn")},nY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("heavyCinematicOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"heavyCinematicOut"):new B(n,{...r,easing:i},"heavyCinematicOut")},sY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("diagonalSlideRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"diagonalSlideRotateIn"):new B(n,{...r,easing:i},"diagonalSlideRotateIn")},oY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("diagonalSlideRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"diagonalSlideRotateOut"):new B(n,{...r,easing:i},"diagonalSlideRotateOut")},aY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("diagonalBlurZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"diagonalBlurZoomIn"):new B(n,{...r,easing:i},"diagonalBlurZoomIn")},lY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("diagonalBlurZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"diagonalBlurZoomOut"):new B(n,{...r,easing:i},"diagonalBlurZoomOut")},uY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("rotateBrightnessIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"rotateBrightnessIn"):new B(n,{...r,easing:i},"rotateBrightnessIn")},cY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("rotateBrightnessOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"rotateBrightnessOut"):new B(n,{...r,easing:i},"rotateBrightnessOut")},hY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomBrightnessBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomBrightnessBlurIn"):new B(n,{...r,easing:i},"zoomBrightnessBlurIn")},dY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("zoomBrightnessBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"zoomBrightnessBlurOut"):new B(n,{...r,easing:i},"zoomBrightnessBlurOut")},fY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideUpRotateZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideUpRotateZoomIn"):new B(n,{...r,easing:i},"slideUpRotateZoomIn")},pY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideUpRotateZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideUpRotateZoomOut"):new B(n,{...r,easing:i},"slideUpRotateZoomOut")},mY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fallBlurRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fallBlurRotateIn"):new B(n,{...r,easing:i},"fallBlurRotateIn")},gY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fallBlurRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fallBlurRotateOut"):new B(n,{...r,easing:i},"fallBlurRotateOut")},vY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("sideStretchZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"sideStretchZoomIn"):new B(n,{...r,easing:i},"sideStretchZoomIn")},xY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("sideStretchZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"sideStretchZoomOut"):new B(n,{...r,easing:i},"sideStretchZoomOut")},yY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("darkSlideBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"darkSlideBlurIn"):new B(n,{...r,easing:i},"darkSlideBlurIn")},bY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("darkSlideBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"darkSlideBlurOut"):new B(n,{...r,easing:i},"darkSlideBlurOut")},_Y=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("liftZoomRotateIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"liftZoomRotateIn"):new B(n,{...r,easing:i},"liftZoomRotateIn")},wY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("liftZoomRotateOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"liftZoomRotateOut"):new B(n,{...r,easing:i},"liftZoomRotateOut")},SY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("overexposedZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"overexposedZoomIn"):new B(n,{...r,easing:i},"overexposedZoomIn")},TY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("overexposedZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"overexposedZoomOut"):new B(n,{...r,easing:i},"overexposedZoomOut")},CY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("pushDownZoomBlurIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"pushDownZoomBlurIn"):new B(n,{...r,easing:i},"pushDownZoomBlurIn")},AY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("pushDownZoomBlurOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"pushDownZoomBlurOut"):new B(n,{...r,easing:i},"pushDownZoomBlurOut")},EY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("twistSlideBrightnessIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"twistSlideBrightnessIn"):new B(n,{...r,easing:i},"twistSlideBrightnessIn")},PY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("twistSlideBrightnessOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"twistSlideBrightnessOut"):new B(n,{...r,easing:i},"twistSlideBrightnessOut")},IY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("collapseRotateZoomIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"collapseRotateZoomIn"):new B(n,{...r,easing:i},"collapseRotateZoomIn")},BY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("collapseRotateZoomOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"collapseRotateZoomOut"):new B(n,{...r,easing:i},"collapseRotateZoomOut")},kY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("ultraCinematicIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"ultraCinematicIn"):new B(n,{...r,easing:i},"ultraCinematicIn")},RY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("ultraCinematicOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"ultraCinematicOut"):new B(n,{...r,easing:i},"ultraCinematicOut")},FY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("popCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"popCaption"):new B(n,{...r,easing:i},"popCaption")},MY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("bounceCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"bounceCaption"):new B(n,{...r,easing:i},"bounceCaption")},DY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("scaleCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"scaleCaption"):new B(n,{...r,easing:i},"scaleCaption")},OY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideLeftCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideLeftCaption"):new B(n,{...r,easing:i},"slideLeftCaption")},UY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideRightCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideRightCaption"):new B(n,{...r,easing:i},"slideRightCaption")},zY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideUpCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideUpCaption"):new B(n,{...r,easing:i},"slideUpCaption")},LY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("slideDownCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"slideDownCaption"):new B(n,{...r,easing:i},"slideDownCaption")},NY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("fadeCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"fadeCaption"):new B(n,{...r,easing:i},"fadeCaption")},GY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("scaleMidCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"scaleMidCaption"):new B(n,{...r,easing:i},"scaleMidCaption")},HY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("scaleDownCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"scaleDownCaption"):new B(n,{...r,easing:i},"scaleDownCaption")},WY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("upDownCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i,iterCount:1/0},"upDownCaption"):new B(n,{...r,easing:i,iterCount:1/0},"upDownCaption")},VY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"easeOutQuad",n=V("upLeftCaption",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i,iterCount:1/0},"upLeftCaption"):new B(n,{...r,easing:i,iterCount:1/0},"upLeftCaption")},XY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboZoom1",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboZoom1"):new B(n,{...r,easing:i},"comboZoom1")},YY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboZoom2",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboZoom2"):new B(n,{...r,easing:i},"comboZoom2")},qY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboPendulum1",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboPendulum1"):new B(n,{...r,easing:i},"comboPendulum1")},jY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboPendulum2",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboPendulum2"):new B(n,{...r,easing:i},"comboPendulum2")},KY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboRightDistort",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboRightDistort"):new B(n,{...r,easing:i},"comboRightDistort")},QY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboLeftDistort",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboLeftDistort"):new B(n,{...r,easing:i},"comboLeftDistort")},ZY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboWobble",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboWobble"):new B(n,{...r,easing:i},"comboWobble")},JY=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboSpinningTop1",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboSpinningTop1"):new B(n,{...r,easing:i},"comboSpinningTop1")},$Y=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboSwayOut",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboSwayOut"):new B(n,{...r,easing:i},"comboSwayOut")},eq=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboBounce1",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboBounce1"):new B(n,{...r,easing:i},"comboBounce1")},tq=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboSwayIn",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboSwayIn"):new B(n,{...r,easing:i},"comboSwayIn")},rq=(r,e)=>{const t=L(e),i=t?.easing||r.easing||"linear",n=V("comboSpinningTop2",e);return t&&(t["0%"]||t["100%"])?new B(t,{...r,easing:i},"comboSpinningTop2"):new B(n,{...r,easing:i},"comboSpinningTop2")};z.register("fadeIn",yV),z.register("fadeOut",bV),z.register("slideIn",_V),z.register("slideOut",wV),z.register("zoomIn",SV),z.register("zoomOut",TV),z.register("charFadeIn",IV),z.register("charSlideUp",BV),z.register("charTypewriter",kV),z.register("fadeByWord",RV),z.register("slideFadeByWord",FV),z.register("popByWord",MV),z.register("scaleFadeByWord",DV),z.register("bounceByWord",OV),z.register("rotateInByWord",UV),z.register("slideRightByWord",zV),z.register("slideLeftByWord",LV),z.register("fadeRotateByWord",NV),z.register("skewByWord",GV),z.register("waveByWord",HV),z.register("blurInByWord",WV),z.register("dropSoftByWord",VV),z.register("elasticPopByWord",XV),z.register("flipUpByWord",YV),z.register("spinInByWord",qV),z.register("stretchInByWord",jV),z.register("revealZoomByWord",KV),z.register("floatWaveByWord",QV),z.register("pulse",xV),z.register("blurIn",CV),z.register("blurOut",AV),z.register("blurSlideRightIn",ZV),z.register("wobbleZoomIn",JV),z.register("spinZoomIn",$V),z.register("blurSlideLeftIn",eX),z.register("blurSlideRightStrongIn",tX),z.register("cinematicZoomSlideIn",rX),z.register("elasticTwistIn",iX),z.register("spinFadeIn",nX),z.register("flashZoomIn",sX),z.register("tiltSlideRightIn",oX),z.register("tiltZoomIn",aX),z.register("glitchSlideIn",lX),z.register("dropBlurIn",uX),z.register("fallZoomIn",cX),z.register("zoomSpinIn",hX),z.register("dramaticSpinSlideIn",dX),z.register("tiltSlideRightOut",fX),z.register("tiltZoomOut",pX),z.register("glitchSlideOut",mX),z.register("dropBlurOut",gX),z.register("fallZoomOut",vX),z.register("zoomSpinOut",xX),z.register("dramaticSpinSlideOut",yX),z.register("blurSlideRightOut",bX),z.register("wobbleZoomOut",_X),z.register("spinZoomOut",wX),z.register("blurSlideLeftOut",SX),z.register("blurSlideRightStrongOut",TX),z.register("cinematicZoomSlideOut",CX),z.register("elasticTwistOut",AX),z.register("spinFadeOut",EX),z.register("flashZoomOut",PX),z.register("slideRotateIn",IX),z.register("slideRotateOut",BX),z.register("slideBlurIn",kX),z.register("slideBlurOut",RX),z.register("zoomRotateIn",FX),z.register("zoomRotateOut",MX),z.register("zoomBlurIn",DX),z.register("zoomBlurOut",OX),z.register("slideZoomIn",UX),z.register("slideZoomOut",zX),z.register("verticalBlurIn",LX),z.register("verticalBlurOut",NX),z.register("rotateBlurIn",GX),z.register("rotateBlurOut",HX),z.register("cinematicSlideZoomBlurIn",WX),z.register("cinematicSlideZoomBlurOut",VX),z.register("brightnessZoomIn",XX),z.register("brightnessZoomOut",YX),z.register("brightnessSlideIn",qX),z.register("brightnessSlideOut",jX),z.register("tiltZoomBlurIn",KX),z.register("tiltZoomBlurOut",QX),z.register("dropRotateIn",ZX),z.register("dropRotateOut",JX),z.register("spiralIn",$X),z.register("spiralOut",eY),z.register("flashSlideIn",tY),z.register("flashSlideOut",rY),z.register("heavyCinematicIn",iY),z.register("heavyCinematicOut",nY),z.register("diagonalSlideRotateIn",sY),z.register("diagonalSlideRotateOut",oY),z.register("diagonalBlurZoomIn",aY),z.register("diagonalBlurZoomOut",lY),z.register("rotateBrightnessIn",uY),z.register("rotateBrightnessOut",cY),z.register("zoomBrightnessBlurIn",hY),z.register("zoomBrightnessBlurOut",dY),z.register("slideUpRotateZoomIn",fY),z.register("slideUpRotateZoomOut",pY),z.register("fallBlurRotateIn",mY),z.register("fallBlurRotateOut",gY),z.register("sideStretchZoomIn",vY),z.register("sideStretchZoomOut",xY),z.register("darkSlideBlurIn",yY),z.register("darkSlideBlurOut",bY),z.register("liftZoomRotateIn",_Y),z.register("liftZoomRotateOut",wY),z.register("overexposedZoomIn",SY),z.register("overexposedZoomOut",TY),z.register("pushDownZoomBlurIn",CY),z.register("pushDownZoomBlurOut",AY),z.register("twistSlideBrightnessIn",EY),z.register("twistSlideBrightnessOut",PY),z.register("collapseRotateZoomIn",IY),z.register("collapseRotateZoomOut",BY),z.register("ultraCinematicIn",kY),z.register("ultraCinematicOut",RY),z.register("motionBlurIn",EV),z.register("motionBlurOut",PV),z.register("popCaption",FY),z.register("bounceCaption",MY),z.register("scaleCaption",DY),z.register("slideLeftCaption",OY),z.register("slideRightCaption",UY),z.register("slideUpCaption",zY),z.register("slideDownCaption",LY),z.register("fadeCaption",NY),z.register("scaleMidCaption",GY),z.register("scaleDownCaption",HY),z.register("upDownCaption",WY),z.register("upLeftCaption",VY),z.register("comboZoom1",XY),z.register("comboZoom2",YY),z.register("comboPendulum1",qY),z.register("comboPendulum2",jY),z.register("comboRightDistort",KY),z.register("comboLeftDistort",QY),z.register("comboWobble",ZY),z.register("comboSpinningTop1",JY),z.register("comboSwayOut",$Y),z.register("comboBounce1",eq),z.register("comboSwayIn",tq),z.register("comboSpinningTop2",rq);function V(r,e){const t=L(e),i=t?.mirror||0,n=t?.opacityInit||null,s=t?.opacityEnd||null,o=t?.xPositionInit||null,a=t?.xPositionEnd||null,l=t?.yPositionInit||null,u=t?.yPositionEnd||null,c=t?.angleInit||null,h=t?.angleEnd||null,d=t?.blurInit||null,f=t?.blurEnd||null,p=t?.scaleInit||null,m=t?.scaleEnd||null,g=t?.brightnessInit||null,v=t?.brightnessEnd||null,x=t?.motionBlurInit||null,y=t?.motionBlurEnd||null;switch(r){case"fadeIn":return{"0%":{opacity:n??0,scale:.9,mirror:i},"100%":{opacity:s??1,scale:1,mirror:i}};case"fadeOut":return{"0%":{opacity:n??1,mirror:i},"100%":{opacity:s??0,mirror:i}};case"zoomIn":return{"0%":{scale:p??0,opacity:n??0,mirror:i},"100%":{scale:m??1,opacity:s??1,mirror:i}};case"zoomOut":return{"0%":{scale:p??1,opacity:n??1,mirror:i},"100%":{scale:m??0,opacity:s??0,mirror:i}};case"slideIn":{const b=t?.direction||"left",T=t?.distance||300;return{"0%":{x:b==="left"?-T:b==="right"?T:o??0,y:b==="top"?-T:b==="bottom"?T:l??0,opacity:n??0,mirror:i},"100%":{x:a??0,y:u??0,opacity:s??1,mirror:i}}}case"slideOut":{const b=t?.direction||"left",T=t?.distance||300;return{"0%":{x:o??0,y:l??0,opacity:n??1,mirror:i},"100%":{x:b==="left"?-T:b==="right"?T:a??0,y:b==="top"?-T:b==="bottom"?T:u??0,opacity:s??0,mirror:i}}}case"pulse":return{"0%":{scale:p??1,mirror:i},"25%":{scale:m??.9,mirror:i},"50%":{scale:p??1,mirror:i},"75%":{scale:m??.9,mirror:i},"100%":{scale:p??1,mirror:i}};case"blurIn":return{"0%":{blur:d??20,opacity:n??0,mirror:i},"100%":{blur:f??0,opacity:s??1,mirror:i}};case"blurOut":return{"0%":{blur:d??0,opacity:n??1,mirror:i},"100%":{blur:f??20,opacity:s??0,mirror:i}};case"motionBlurIn":return{"0%":{motionBlur:x??40,opacity:n??0,mirror:i},"100%":{motionBlur:y??0,opacity:s??1,mirror:i}};case"motionBlurOut":return{"0%":{motionBlur:x??0,opacity:n??1,mirror:i},"100%":{motionBlur:y??40,opacity:s??0,mirror:i}};case"blurSlideRightIn":return{"0%":{blur:d??20,x:o??300,scale:p??.7,mirror:i},"40%":{blur:5,x:20,scale:1.05,mirror:i},"100%":{blur:f??0,x:a??0,scale:m??1,mirror:i}};case"wobbleZoomIn":return{"0%":{scale:p??1.3,angle:c??-8,mirror:i},"15%":{scale:.95,angle:4,mirror:i},"30%":{scale:1.05,angle:-2,mirror:i},"100%":{scale:m??1,angle:h??0,mirror:i}};case"spinZoomIn":return{"0%":{blur:d??15,angle:c??180,scale:p??.7,mirror:i},"60%":{blur:5,angle:-10,scale:1.1,mirror:i},"100%":{blur:f??0,angle:h??0,scale:m??1,mirror:i}};case"blurSlideLeftIn":return{"0%":{x:o??-400,blur:d??25,scale:p??.7,mirror:i},"30%":{x:a??0,blur:0,scale:m??1,mirror:i},"100%":{x:a??0,blur:0,scale:m??1,mirror:i}};case"blurSlideRightStrongIn":return{"0%":{x:o??600,blur:d??40,scale:p??.8,mirror:i},"25%":{x:-20,blur:10,scale:m??1,mirror:i},"100%":{x:0,blur:0,scale:m??1,mirror:i}};case"cinematicZoomSlideIn":return{"0%":{scale:p??1.5,blur:d??20,x:o??100,mirror:i},"40%":{scale:1.1,blur:5,x:a??0,mirror:i},"100%":{scale:m??1,blur:f??0,x:a??0,mirror:i}};case"elasticTwistIn":return{"0%":{scale:p??.7,blur:d??15,angle:c??45,mirror:i},"50%":{scale:1.2,blur:0,angle:-10,mirror:i},"75%":{scale:.95,blur:0,angle:5,mirror:i},"100%":{scale:m??1,blur:f??0,angle:h??0,mirror:i}};case"spinFadeIn":return{"0%":{blur:d??30,angle:c??90,scale:p??.7,mirror:i},"100%":{blur:f??0,angle:h??0,scale:m??1,mirror:i}};case"flashZoomIn":return{"0%":{scale:1,brightness:6,mirror:i},"15%":{scale:1.3,brightness:4,mirror:i},"30%":{scale:1,brightness:1,mirror:i},"100%":{scale:1,brightness:1,mirror:i}};case"tiltSlideRightIn":return{"0%":{angle:c??-12,x:o??-400,scale:p??1.1,mirror:i},"30%":{angle:3,x:10,scale:1,mirror:i},"100%":{angle:h??0,x:a??0,scale:m??1,mirror:i}};case"tiltZoomIn":return{"0%":{angle:c??15,scale:p??.7,mirror:i},"100%":{angle:h??0,scale:m??1,mirror:i}};case"glitchSlideIn":return{"0%":{x:o??600,angle:c??25,scale:p??.7,mirror:i},"20%":{x:50,angle:-10,scale:1.1,mirror:i},"40%":{x:-30,angle:5,scale:1.05,mirror:i},"100%":{x:a??0,angle:h??0,scale:m??1,mirror:i}};case"dropBlurIn":return{"0%":{y:l??-500,blur:d??30,scale:p??.9,mirror:i},"100%":{y:u??0,blur:f??0,scale:m??1,mirror:i}};case"fallZoomIn":return{"0%":{y:l??-400,scale:p??1.5,mirror:i},"30%":{y:20,scale:1.05,mirror:i},"100%":{y:u??0,scale:m??1,mirror:i}};case"zoomSpinIn":return{"0%":{scale:p??3,angle:c??-45,blur:d??15,mirror:i},"100%":{scale:m??1,angle:h??0,blur:f??0,mirror:i}};case"dramaticSpinSlideIn":return{"0%":{x:o??800,angle:c??-60,blur:d??40,scale:p??.7,mirror:i},"30%":{x:-50,angle:5,blur:0,scale:1,mirror:i},"100%":{x:a??0,angle:h??0,blur:f??0,scale:m??1,mirror:i}};case"blurSlideRightOut":return{"0%":{blur:d??0,x:o??0,scale:p??1,mirror:i},"40%":{blur:5,x:-20,scale:1.05,mirror:i},"100%":{blur:f??20,x:a??300,scale:m??.7,mirror:i}};case"wobbleZoomOut":return{"0%":{scale:p??1,angle:c??0,mirror:i},"15%":{scale:1.05,angle:-4,mirror:i},"30%":{scale:.95,angle:2,mirror:i},"100%":{scale:m??1.3,angle:h??8,mirror:i}};case"spinZoomOut":return{"0%":{blur:d??0,angle:c??0,scale:p??1,mirror:i},"60%":{blur:5,angle:10,scale:1.1,mirror:i},"100%":{blur:f??15,angle:h??-180,scale:m??.7,mirror:i}};case"blurSlideLeftOut":return{"0%":{x:o??0,blur:d??0,scale:p??1,mirror:i},"30%":{x:0,blur:5,scale:1,mirror:i},"100%":{x:a??-400,blur:f??25,scale:m??.7,mirror:i}};case"blurSlideRightStrongOut":return{"0%":{x:o??0,blur:d??0,scale:p??1,mirror:i},"25%":{x:20,blur:10,scale:1,mirror:i},"100%":{x:a??600,blur:f??40,scale:m??.8,mirror:i}};case"cinematicZoomSlideOut":return{"0%":{scale:p??1,blur:d??0,x:o??0,mirror:i},"40%":{scale:1.1,blur:5,x:-50,mirror:i},"100%":{scale:m??1.5,blur:f??20,x:a??-100,mirror:i}};case"elasticTwistOut":return{"0%":{scale:p??1,blur:d??0,angle:c??0,mirror:i},"50%":{scale:.9,blur:0,angle:10,mirror:i},"75%":{scale:1.1,blur:5,angle:-5,mirror:i},"100%":{scale:m??.7,blur:f??15,angle:h??-45,mirror:i}};case"spinFadeOut":return{"0%":{blur:d??0,angle:c??0,scale:p??1,mirror:i},"100%":{blur:f??30,angle:h??-90,scale:m??.7,mirror:i}};case"flashZoomOut":return{"0%":{scale:p??1,brightness:g??1,mirror:i},"15%":{scale:1.3,brightness:3,mirror:i},"30%":{scale:1,brightness:5,mirror:i},"100%":{scale:m??1,brightness:v??6,mirror:i}};case"tiltSlideRightOut":return{"0%":{angle:c??0,x:o??0,scale:p??1,mirror:i},"30%":{angle:-3,x:-10,scale:1,mirror:i},"100%":{angle:h??12,x:a??400,scale:m??1.1,mirror:i}};case"tiltZoomOut":return{"0%":{angle:c??0,scale:p??1,mirror:i},"100%":{angle:h??-15,scale:m??.7,mirror:i}};case"glitchSlideOut":return{"0%":{x:o??0,angle:c??0,scale:p??1,mirror:i},"20%":{x:-30,angle:5,scale:1.05,mirror:i},"40%":{x:50,angle:-10,scale:1.1,mirror:i},"100%":{x:a??-600,angle:h??-25,scale:m??.7,mirror:i}};case"dropBlurOut":return{"0%":{y:l??0,blur:d??0,scale:p??1,mirror:i},"100%":{y:u??500,blur:f??30,scale:m??.9,mirror:i}};case"fallZoomOut":return{"0%":{y:l??0,scale:p??1,mirror:i},"30%":{y:-20,scale:1.05,mirror:i},"100%":{y:u??400,scale:m??1.5,mirror:i}};case"zoomSpinOut":return{"0%":{scale:p??1,angle:c??0,blur:d??0,mirror:i},"100%":{scale:m??3,angle:h??45,blur:f??15,mirror:i}};case"dramaticSpinSlideOut":return{"0%":{x:o??0,angle:c??0,blur:d??0,scale:p??1,mirror:i},"30%":{x:50,angle:-5,blur:0,scale:1,mirror:i},"100%":{x:a??-800,angle:h??60,blur:f??40,scale:m??.7,mirror:i}};case"slideRotateIn":return{"0%":{x:o??-200,angle:c??-15,mirror:i},"100%":{x:a??0,angle:h??0,mirror:i}};case"slideRotateOut":return{"0%":{x:o??0,angle:c??0,mirror:i},"100%":{x:a??-200,angle:h??-15,mirror:i}};case"slideBlurIn":return{"0%":{x:o??250,blur:d??20,mirror:i},"100%":{x:a??0,blur:f??0,mirror:i}};case"slideBlurOut":return{"0%":{x:o??0,blur:d??0,mirror:i},"100%":{x:a??250,blur:f??20,mirror:i}};case"zoomRotateIn":return{"0%":{scale:p??1.4,angle:c??20,mirror:i},"100%":{scale:m??1,angle:h??0,mirror:i}};case"zoomRotateOut":return{"0%":{scale:p??1,angle:c??0,mirror:i},"100%":{scale:m??1.4,angle:h??20,mirror:i}};case"zoomBlurIn":return{"0%":{scale:p??1.6,blur:d??30,mirror:i},"100%":{scale:m??1,blur:f??0,mirror:i}};case"zoomBlurOut":return{"0%":{scale:p??1,blur:d??0,mirror:i},"100%":{scale:m??1.6,blur:f??30,mirror:i}};case"slideZoomIn":return{"0%":{x:o??-300,scale:p??.7,mirror:i},"100%":{x:a??0,scale:m??1,mirror:i}};case"slideZoomOut":return{"0%":{x:o??0,scale:p??1,mirror:i},"100%":{x:a??-300,scale:m??.7,mirror:i}};case"verticalBlurIn":return{"0%":{y:l??200,blur:d??25,mirror:i},"100%":{y:u??0,blur:f??0,mirror:i}};case"verticalBlurOut":return{"0%":{y:l??0,blur:d??0,mirror:i},"100%":{y:u??200,blur:f??25,mirror:i}};case"rotateBlurIn":return{"0%":{angle:c??45,blur:d??20,mirror:i},"100%":{angle:h??0,blur:f??0,mirror:i}};case"rotateBlurOut":return{"0%":{angle:c??0,blur:d??0,mirror:i},"100%":{angle:h??45,blur:f??20,mirror:i}};case"cinematicSlideZoomBlurIn":return{"0%":{x:o??300,scale:p??.7,blur:d??40,mirror:i},"100%":{x:a??0,scale:m??1,blur:f??0,mirror:i}};case"cinematicSlideZoomBlurOut":return{"0%":{x:o??0,scale:p??1,blur:d??0,mirror:i},"100%":{x:a??300,scale:m??.7,blur:f??40,mirror:i}};case"brightnessZoomIn":return{"0%":{scale:p??1.3,brightness:g??3,mirror:i},"100%":{scale:m??1,brightness:v??1,mirror:i}};case"brightnessZoomOut":return{"0%":{scale:p??1,brightness:g??1,mirror:i},"100%":{scale:m??1.3,brightness:v??3,mirror:i}};case"brightnessSlideIn":return{"0%":{x:o??-200,brightness:g??.3,mirror:i},"100%":{x:a??0,brightness:v??1,mirror:i}};case"brightnessSlideOut":return{"0%":{x:o??0,brightness:g??1,mirror:i},"100%":{x:a??-200,brightness:v??.3,mirror:i}};case"tiltZoomBlurIn":return{"0%":{angle:c??-10,scale:p??1.4,blur:d??20,mirror:i},"100%":{angle:h??0,scale:m??1,blur:f??0,mirror:i}};case"tiltZoomBlurOut":return{"0%":{angle:c??0,scale:p??1,blur:d??0,mirror:i},"100%":{angle:h??-10,scale:m??1.4,blur:f??20,mirror:i}};case"dropRotateIn":return{"0%":{y:l??-250,angle:c??15,mirror:i},"100%":{y:u??0,angle:h??0,mirror:i}};case"dropRotateOut":return{"0%":{y:l??0,angle:c??0,mirror:i},"100%":{y:u??-250,angle:h??15,mirror:i}};case"spiralIn":return{"0%":{scale:p??.7,angle:c??90,blur:d??30,mirror:i},"100%":{scale:m??1,angle:h??0,blur:f??0,mirror:i}};case"spiralOut":return{"0%":{scale:p??1,angle:c??0,blur:d??0,mirror:i},"100%":{scale:m??.7,angle:h??90,blur:f??30,mirror:i}};case"flashSlideIn":return{"0%":{x:o??150,brightness:g??4,mirror:i},"100%":{x:a??0,brightness:v??1,mirror:i}};case"flashSlideOut":return{"0%":{x:o??0,brightness:g??1,mirror:i},"100%":{x:a??150,brightness:v??4,mirror:i}};case"heavyCinematicIn":return{"0%":{x:o??-300,scale:p??.7,angle:c??-20,blur:d??50,mirror:i},"100%":{x:a??0,scale:m??1,angle:h??0,blur:f??0,mirror:i}};case"heavyCinematicOut":return{"0%":{x:o??0,scale:p??1,angle:c??0,blur:d??0,mirror:i},"100%":{x:a??-300,scale:m??.7,angle:h??-20,blur:f??50,mirror:i}};case"diagonalSlideRotateIn":return{"0%":{x:o??-200,y:l??150,angle:c??-20,mirror:i},"100%":{x:a??0,y:u??0,angle:h??0,mirror:i}};case"diagonalSlideRotateOut":return{"0%":{x:o??0,y:l??0,angle:c??0,mirror:i},"100%":{x:a??-200,y:u??150,angle:h??-20,mirror:i}};case"diagonalBlurZoomIn":return{"0%":{x:o??150,y:l??-150,scale:p??.7,blur:d??30,mirror:i},"100%":{x:a??0,y:u??0,scale:m??1,blur:f??0,mirror:i}};case"diagonalBlurZoomOut":return{"0%":{x:o??0,y:l??0,scale:p??1,blur:d??0,mirror:i},"100%":{x:a??150,y:u??-150,scale:m??.7,blur:f??30,mirror:i}};case"rotateBrightnessIn":return{"0%":{angle:c??60,brightness:g??.2,mirror:i},"100%":{angle:h??0,brightness:v??1,mirror:i}};case"rotateBrightnessOut":return{"0%":{angle:c??0,brightness:g??1,mirror:i},"100%":{angle:h??60,brightness:v??.2,mirror:i}};case"zoomBrightnessBlurIn":return{"0%":{scale:p??1.8,brightness:g??3,blur:d??25,mirror:i},"100%":{scale:m??1,brightness:v??1,blur:f??0,mirror:i}};case"zoomBrightnessBlurOut":return{"0%":{scale:p??1,brightness:g??1,blur:d??0,mirror:i},"100%":{scale:m??1.8,brightness:v??3,blur:f??25,mirror:i}};case"slideUpRotateZoomIn":return{"0%":{y:l??250,angle:c??-15,scale:p??.7,mirror:i},"100%":{y:u??0,angle:h??0,scale:m??1,mirror:i}};case"slideUpRotateZoomOut":return{"0%":{y:l??0,angle:c??0,scale:p??1,mirror:i},"100%":{y:u??250,angle:h??-15,scale:m??.7,mirror:i}};case"fallBlurRotateIn":return{"0%":{y:l??-300,blur:d??40,angle:c??25,mirror:i},"100%":{y:u??0,blur:f??0,angle:h??0,mirror:i}};case"fallBlurRotateOut":return{"0%":{y:l??0,blur:d??0,angle:c??0,mirror:i},"100%":{y:u??-300,blur:f??40,angle:h??25,mirror:i}};case"sideStretchZoomIn":return{"0%":{x:o??300,scale:p??1.6,mirror:i},"100%":{x:a??0,scale:m??1,mirror:i}};case"sideStretchZoomOut":return{"0%":{x:o??0,scale:p??1,mirror:i},"100%":{x:a??300,scale:m??1.6,mirror:i}};case"darkSlideBlurIn":return{"0%":{x:o??-250,blur:d??35,brightness:g??.3,mirror:i},"100%":{x:a??0,blur:f??0,brightness:v??1,mirror:i}};case"darkSlideBlurOut":return{"0%":{x:o??0,blur:d??0,brightness:g??1,mirror:i},"100%":{x:a??-250,blur:f??35,brightness:v??.3,mirror:i}};case"liftZoomRotateIn":return{"0%":{y:l??200,scale:p??.7,angle:c??12,mirror:i},"100%":{y:u??0,scale:m??1,angle:h??0,mirror:i}};case"liftZoomRotateOut":return{"0%":{y:l??0,scale:p??1,angle:c??0,mirror:i},"100%":{y:u??200,scale:m??.7,angle:h??12,mirror:i}};case"overexposedZoomIn":return{"0%":{scale:p??1.4,brightness:g??4,mirror:i},"100%":{scale:m??1,brightness:v??1,mirror:i}};case"overexposedZoomOut":return{"0%":{scale:p??1,brightness:g??1,mirror:i},"100%":{scale:m??1.4,brightness:v??4,mirror:i}};case"driftRotateBlurIn":return{"0%":{x:o??120,angle:c??-30,blur:d??25,mirror:i},"100%":{x:a??0,angle:h??0,blur:f??0,mirror:i}};case"driftRotateBlurOut":return{"0%":{x:o??0,angle:c??0,blur:d??0,mirror:i},"100%":{x:a??120,angle:h??-30,blur:f??25,mirror:i}};case"pushDownZoomBlurIn":return{"0%":{y:l??-180,scale:p??1.5,blur:d??20,mirror:i},"100%":{y:u??0,scale:m??1,blur:f??0,mirror:i}};case"pushDownZoomBlurOut":return{"0%":{y:l??0,scale:p??1,blur:d??0,mirror:i},"100%":{y:u??-180,scale:m??1.5,blur:f??20,mirror:i}};case"twistSlideBrightnessIn":return{"0%":{x:o??200,angle:c??25,brightness:g??.4,mirror:i},"100%":{x:a??0,angle:h??0,brightness:v??1,mirror:i}};case"twistSlideBrightnessOut":return{"0%":{x:o??0,angle:c??0,brightness:g??1,mirror:i},"100%":{x:a??200,angle:h??25,brightness:v??.4,mirror:i}};case"collapseRotateZoomIn":return{"0%":{scale:p??.7,angle:c??-45,mirror:i},"100%":{scale:m??1,angle:h??0,mirror:i}};case"collapseRotateZoomOut":return{"0%":{scale:p??1,angle:c??0,mirror:i},"100%":{scale:m??.7,angle:h??-45,mirror:i}};case"ultraCinematicIn":return{"0%":{x:o??400,y:l??200,scale:p??.7,blur:d??60,angle:c??30,mirror:i},"100%":{x:a??0,y:u??0,scale:m??1,blur:f??0,angle:h??0,mirror:i}};case"ultraCinematicOut":return{"0%":{x:o??0,y:l??0,scale:p??1,blur:d??0,angle:c??0,mirror:i},"100%":{x:a??400,y:u??200,scale:m??.7,blur:f??60,angle:h??30,mirror:i}};case"popCaption":return{"0%":{scale:p??.7},"50%":{scale:1.1},"100%":{scale:m??1}};case"bounceCaption":return{"0%":{y:0,scaleY:1,scaleX:1},"20%":{y:30,scaleY:.8,scaleX:1.2},"40%":{y:15,scaleY:1,scaleX:1},"60%":{y:20,scaleY:.9,scaleX:1.1},"80%":{y:10,scaleY:1,scaleX:1},"100%":{y:0,scaleY:1,scaleX:1}};case"scaleCaption":return{"0%":{scale:p??0},"100%":{scale:m??1}};case"slideLeftCaption":return{"0%":{x:o??50},"100%":{x:a??0}};case"slideRightCaption":return{"0%":{x:o??-50},"100%":{x:a??0}};case"slideUpCaption":return{"0%":{y:l??50},"100%":{y:u??0}};case"slideDownCaption":return{"0%":{y:l??-50},"100%":{y:u??0}};case"fadeCaption":return{"0%":{opacity:n??0},"100%":{opacity:s??1}};case"scaleMidCaption":return{"0%":{scale:p??.8},"100%":{scale:m??1}};case"scaleDownCaption":return{"0%":{scale:p??1.2},"100%":{scale:m??1}};case"upDownCaption":return{"0%":{y:0},"50%":{y:-300},"100%":{y:0}};case"upLeftCaption":return{"0%":{x:0,y:0},"50%":{x:-50,y:-50},"100%":{x:0,y:0}};case"comboZoom1":return{"0%":{scale:p??2.5,motionBlur:x??8,angle:c??0,mirror:1},"30%":{scale:1.2,motionBlur:0,angle:0,mirror:1},"60%":{scale:1,motionBlur:0,angle:0,mirror:1},"100%":{scale:m??2.5,motionBlur:y??8,angle:h??0,mirror:1}};case"comboZoom2":return{"0%":{scale:p??.7,motionBlur:x??8,angle:c??0,mirror:1},"30%":{scale:1,motionBlur:0,angle:0,mirror:1},"60%":{scale:1,motionBlur:0,angle:0,mirror:1},"100%":{scale:m??.7,motionBlur:y??8,angle:h??0,mirror:1}};case"comboPendulum1":return{"0%":{x:-250,blur:d??7,angle:c??5,mirror:1},"45%":{x:-40,blur:1,angle:2,mirror:1},"55%":{x:0,blur:0,angle:0,mirror:1},"60%":{x:0,blur:0,angle:0,mirror:1},"85%":{x:-40,blur:0,angle:-2,mirror:1},"100%":{x:-250,blur:f??0,angle:h??-5,mirror:1}};case"comboPendulum2":return{"0%":{x:250,blur:d??7,angle:c??-5,mirror:1},"45%":{x:40,blur:1,angle:-2,mirror:1},"55%":{x:0,blur:0,angle:0,mirror:1},"60%":{x:0,blur:0,angle:0,mirror:1},"85%":{x:40,blur:0,angle:2,mirror:1},"100%":{x:250,blur:f??0,angle:h??5,mirror:1}};case"comboRightDistort":return{"0%":{scale:p??3,angle:c??-15,blur:d??5,mirror:1},"40%":{blur:1,angle:-6,scale:1.5,mirror:1},"60%":{blur:0,angle:0,scale:1,mirror:1},"70%":{blur:0,angle:0,scale:1,mirror:1},"85%":{scale:.95,mirror:1},"100%":{scale:m??.8,mirror:1}};case"comboLeftDistort":return{"0%":{scale:p??2.5,blur:d??5,mirror:1,angle:0},"45%":{blur:0,scale:1,mirror:1,angle:0},"50%":{blur:0,scale:1,mirror:1,angle:0},"60%":{blur:0,angle:-3,scale:1,mirror:1},"75%":{blur:0,angle:-6,scale:1,mirror:1},"100%":{scale:m??.7,angle:-6,blur:0,mirror:1}};case"comboWobble":return{"0%":{scale:p??1.2,angle:c??15,x:o??-400,blur:d??5,mirror:1},"6%":{scale:1,mirror:1,angle:0,blur:0,x:0},"18%":{scale:1,mirror:1,angle:-10,x:-100},"30%":{angle:-10,scale:1,mirror:1,x:0},"35%":{angle:0,scale:1,mirror:1,x:0},"45%":{angle:5,scale:1,mirror:1,x:0},"55%":{angle:0,scale:1,mirror:1,x:0},"60%":{angle:0,scale:1,mirror:1,blur:0,x:0},"100%":{scale:m??2.5,blur:f??5,mirror:1}};case"comboSpinningTop1":return{"0%":{scale:p??3,blur:d??5,mirror:1},"25%":{scale:1,mirror:1,blur:0,angle:0},"55%":{scale:.7,mirror:1,angle:8},"100%":{angle:h??90,scale:m??.7,mirror:1}};case"comboSwayOut":return{"0%":{scale:p??3,blur:d??5,mirror:1},"50%":{scale:1,mirror:1,blur:0,angle:0},"100%":{mirror:1,angle:h??45,scale:m??3,blur:f??5}};case"comboBounce1":return{"0%":{scale:p??1.2,blur:d??5,mirror:1},"18%":{scale:1,mirror:1,blur:0,angle:0},"50%":{scale:1.5,mirror:1,blur:0,angle:-5},"55%":{scale:1.5,mirror:1,blur:0,angle:-5},"100%":{mirror:1,angle:h??0,scale:m??.9}};case"comboSwayIn":return{"0%":{scale:p??3,blur:d??5,angle:c??-45,mirror:1},"50%":{scale:1,mirror:1,blur:0,angle:0},"100%":{mirror:1,scale:m??3,blur:f??5}};case"comboSpinningTop2":return{"0%":{scale:p??.8,angle:c??-90,mirror:1},"40%":{scale:.8,mirror:1,angle:-15},"60%":{scale:1,mirror:1,angle:0,blur:0},"100%":{scale:m??3,blur:f??5,mirror:1}};case"custom":default:return{"0%":{},"100%":{}}}}class iq extends X0{id="";name="";display={from:0,to:0};duration=0;playbackRate=1;trim={from:0,to:0};constructor(){super()}_left=0;get left(){return this._left}set left(e){const t=this._left!==e;this._left=e,t&&this.emit("propsChange",{left:e})}_top=0;get top(){return this._top}set top(e){const t=this._top!==e;this._top=e,t&&this.emit("propsChange",{top:e})}_width=0;get width(){return this._width}set width(e){const t=this._width!==e;this._width=e,t&&this.emit("propsChange",{width:e})}_height=0;get height(){return this._height}set height(e){const t=this._height!==e;this._height=e,t&&this.emit("propsChange",{height:e})}_angle=0;get angle(){return this._angle}set angle(e){const t=this._angle!==e;this._angle=e,t&&this.emit("propsChange",{angle:e})}get center(){return{x:this.left+this.width/2,y:this.top+this.height/2}}_zIndex=0;get zIndex(){return this._zIndex}set zIndex(e){const t=this._zIndex!==e;this._zIndex=e,t&&this.emit("propsChange",{zIndex:e})}_opacity=1;get opacity(){return this._opacity}set opacity(e){const t=this._opacity!==e;this._opacity=e,t&&this.emit("propsChange",{opacity:e})}_volume=1;get volume(){return this._volume}set volume(e){const t=this._volume!==e;this._volume=e,t&&this.emit("propsChange",{volume:e})}_locked=!1;get locked(){return this._locked}set locked(e){const t=this._locked!==e;this._locked=e,t&&this.emit("propsChange",{locked:e})}flip=null;effects=[];chromaKey={enabled:!1,color:"#00FF00",similarity:.1,spill:0};_style={};get style(){return this._style}set style(e){this._style=e}animatKeyFrame=null;animatOpts=null;animations=[];renderTransform={x:0,y:0,width:0,height:0,scale:1,scaleX:1,scaleY:1,opacity:1,angle:0,blur:0,brightness:1,mirror:0,motionBlur:0};_render(e){const{center:t}=this;e.setTransform(this.flip==="horizontal"?-1:1,0,0,this.flip==="vertical"?-1:1,t.x,t.y),e.globalAlpha=this.opacity*(this.renderTransform.opacity??1)*(this.renderTransform.brightness??1);const i=this.renderTransform.x??0,n=this.renderTransform.y??0,s=this.renderTransform.angle??0,o=this.renderTransform.scale??1,a=this.renderTransform.scaleX??1,l=this.renderTransform.scaleY??1;e.translate(i,n),e.scale(o*a,o*l),e.rotate((this.flip==null?1:-1)*(s*Math.PI)/180)}setAnimation(e,t){this.animatKeyFrame=Object.entries(e).map(([i,n])=>{const s={from:0,to:100}[i]??Number(i.slice(0,-1));if(isNaN(s)||s>100||s<0)throw Error("keyFrame must between 0~100");return[s/100,n]}),this.animatOpts=Object.assign({},this.animatOpts,{duration:t.duration,delay:t.delay??0,iterCount:t.iterCount??1/0}),this.emit("propsChange",{animations:this.animations})}animate(e,t){this.renderTransform={x:0,y:0,width:0,height:0,scale:1,scaleX:1,scaleY:1,opacity:1,angle:0,blur:0,brightness:1,mirror:0,motionBlur:0};for(const n of this.animations){const s=n.getTransform(e);s.x!==void 0&&(this.renderTransform.x+=s.x),s.y!==void 0&&(this.renderTransform.y+=s.y),s.width!==void 0&&(this.renderTransform.width+=s.width),s.height!==void 0&&(this.renderTransform.height+=s.height),s.angle!==void 0&&(this.renderTransform.angle+=s.angle),s.blur!==void 0&&(this.renderTransform.blur+=s.blur),s.motionBlur!==void 0&&(this.renderTransform.motionBlur+=s.motionBlur),s.scale!==void 0&&(this.renderTransform.scale*=s.scale),s.scaleX!==void 0&&(this.renderTransform.scaleX*=s.scaleX),s.scaleY!==void 0&&(this.renderTransform.scaleY*=s.scaleY),s.opacity!==void 0&&(this.renderTransform.opacity*=s.opacity),s.brightness!==void 0&&(this.renderTransform.brightness*=s.brightness),s.mirror!==void 0&&(this.renderTransform.mirror=Math.max(this.renderTransform.mirror||0,s.mirror)),t&&n.apply&&n.apply(t,e)}if(this.animatKeyFrame==null||this.animatOpts==null||e<this.animatOpts.delay)return;const i=nq(e,this.animatKeyFrame,this.animatOpts);for(const n in i)switch(n){case"opacity":this.opacity=i[n];break;case"x":this.left=i[n];break;case"y":this.top=i[n];break;case"w":this.width=i[n];break;case"h":this.height=i[n];break;case"angle":this.angle=i[n];break}}addAnimation(e,t,i){const n=z.create(e,t,i);return this.animations.push(n),this.emit("propsChange",{animations:this.animations}),n.id}removeAnimation(e){this.animations=this.animations.filter(t=>t.id!==e),this.emit("propsChange",{animations:this.animations})}clearAnimations(){this.animations=[],this.emit("propsChange",{animations:this.animations})}updateAnimation(e,t,i,n){const s=this.animations.findIndex(a=>a.id===e);if(s===-1)return;const o=z.create(t,{...i,id:e},n);this.animations[s]=o,this.emit("propsChange",{animations:this.animations})}copyStateTo(e){e.animatKeyFrame=this.animatKeyFrame,e.animatOpts=this.animatOpts,e.zIndex=this.zIndex,e.opacity=this.opacity,e.volume=this.volume,e.flip=this.flip,e.left=this.left,e.top=this.top,e.width=this.width,e.height=this.height,e.angle=this.angle,e.display={...this.display},e.duration=this.duration,e.playbackRate=this.playbackRate,e.trim={...this.trim},e.style=JSON.parse(JSON.stringify(this.style||{})),e.animations=[...this.animations],e.chromaKey={...this.chromaKey},e.locked=this.locked,"src"in this&&"src"in e&&(e.src=this.src)}update(e){Object.assign(this,e),this.emit("propsChange",e)}destroy(){this.all.clear()}}function nq(r,e,t){const i=r-t.delay,n=i%t.duration,s=i/t.duration>=t.iterCount||i===t.duration?1:n/t.duration,o=e.findIndex(f=>f[0]>=s);if(o===-1)return{};const a=e[o-1],l=e[o],u=l[1];if(a==null)return u;const c=a[1],h={},d=(s-a[0])/(l[0]-a[0]);for(const f in u){if(!Object.hasOwn(u,f)||typeof f!="string")continue;const p=f;c[p]!=null&&(h[p]=(u[p]-c[p])*d+c[p])}return h}class Mn extends iq{lastVf=null;destroyed=!1;src="";transition;constructor(){super()}async getFrame(e){const t=e*this.playbackRate,{video:i,audio:n,state:s}=await this.tick(t);let o=n??[];n!=null&&this.playbackRate!==1&&(o=n.map(l=>tS(l,this.playbackRate)));let a=null;return i!=null?(this.lastVf?.close(),i instanceof VideoFrame?(a=await createImageBitmap(i),i.close()):a=i,this.lastVf=a):this.lastVf!=null&&(a=this.lastVf),{video:a,audio:o,done:s==="done"}}async offscreenRender(e,t){const i=t*this.playbackRate;this.animate(i),super._render(e);const{width:n,height:s}=this,{video:o,audio:a,state:l}=await this.tick(i);let u=a??[];if(a!=null&&this.playbackRate!==1&&(u=a.map(h=>tS(h,this.playbackRate))),l==="done")return{audio:u,done:!0};const c=o??this.lastVf;if(c!=null){const h=this.style.borderRadius||0,d=this.style.dropShadow;if(e.save(),d&&(d.blur>0||d.distance>0)){const p=d.distance??0,m=d.angle??0;e.shadowColor=d.color||"#000000",e.shadowBlur=d.blur||0,e.shadowOffsetX=Math.cos(m)*p,e.shadowOffsetY=Math.sin(m)*p}if(h>0){const p=Math.min(h,n/2,s/2);e.beginPath(),e.roundRect(-n/2,-s/2,n,s,p),e.clip()}e.drawImage(c,-n/2,-s/2,n,s),e.restore();const f=this.style.stroke;if(f&&f.width>0){if(e.save(),e.strokeStyle=f.color,e.lineWidth=f.width,h>0){const p=Math.min(h,n/2,s/2);e.beginPath(),e.roundRect(-n/2,-s/2,n,s,p),e.stroke()}else e.strokeRect(-n/2,-s/2,n,s);e.restore()}}return o!=null&&(this.lastVf?.close(),o instanceof ImageBitmap&&(this.lastVf=o)),{audio:u,done:!1}}set(e,t=30){if(e.display&&(e.display.from!==void 0&&(this.display.from=e.display.from<1e6?e.display.from/t*1e6:e.display.from),e.display.to!==void 0&&(this.display.to=e.display.to<1e6?e.display.to/t*1e6:e.display.to)),e.x!==void 0&&(this.left=e.x),e.y!==void 0&&(this.top=e.y),e.width!==void 0&&(this.width=e.width),e.height!==void 0&&(this.height=e.height),e.duration!==void 0){const i=e.duration<1e6?e.duration/t*1e6:e.duration;this.duration=i,this.display.from!==void 0&&(this.display.to=this.display.from+i)}return this}toJSON(e=!1){const t=this.animatKeyFrame&&this.animatOpts?{keyFrames:this.animatKeyFrame.reduce((n,[s,o])=>{const a=s===0?"from":s===1?"to":`${Math.round(s*100)}%`;return n[a]=o,n},{}),opts:this.animatOpts}:void 0,i=this.animations.map(n=>"toJSON"in n&&typeof n.toJSON=="function"?n.toJSON():{type:n.type,opts:n.options,params:n.params||{}});return{type:this.constructor.name,id:this.id,name:this.name,src:this.src,display:{from:this.display.from,to:this.display.to},playbackRate:this.playbackRate,duration:this.duration,left:this.left,top:this.top,width:this.width,height:this.height,angle:this.angle,zIndex:this.zIndex,opacity:this.opacity,flip:this.flip,style:this.style,trim:{from:this.trim.from,to:this.trim.to},...t&&{animation:t},...i.length>0&&{animations:i},...e&&{main:!0},chromaKey:this.chromaKey,locked:this.locked}}getVisibleHandles(){return["tl","tr","bl","br","ml","mr","mt","mb","rot"]}async scaleToFit(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.min(e/i,t/n);this.width=i*s,this.height=n*s}async scaleToFill(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.max(e/i,t/n);this.width=i*s,this.height=n*s}centerInScene(e,t){this.left=(e-this.width)/2,this.top=(t-this.height)/2}destroy(){this.destroyed||(this.destroyed=!0,Ue.info("BaseClip destroy"),super.destroy(),this.lastVf?.close(),this.lastVf=null)}}let Gb=null;async function kk(){return Gb===null&&(Gb=fL()),await Gb}const rt={get codec(){return bu()?.codec??"mp4a.40.2"},get codecType(){return bu()?.codecType??"aac"},get sampleRate(){return bu()?.sampleRate??48e3},get channelCount(){return bu()?.channelCount??2}};class zo{static async getCacheKey(e){const i=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-1",i);return Array.from(new Uint8Array(n)).map(o=>o.toString(16).padStart(2,"0")).join("")}static getPath(e){return`assets/${e}`}static async get(e){const t=await this.getCacheKey(e),i=this.getPath(t),n=jn(i);return await n.exists()?n:null}static async put(e,t){const i=await this.getCacheKey(e),n=this.getPath(i),s=jn(n);return await Vs(s,t),s}}class Lo{resources=new Map;loadingPromises=new Map;async preload(e){const i=[...new Set(e)].filter(n=>n&&!n.startsWith("data:")&&!n.startsWith("blob:")).map(n=>this.loadResource(n));await Promise.allSettled(i)}static async getReadableStream(e){const t=await zo.get(e);if(t){const a=await t.getOriginFile();if(a)return a.stream()}const i=await fetch(e);if(!i.ok)throw new Error(`Failed to fetch: ${i.status} ${i.statusText}`);const n=i.body;if(!n)throw new Error("Response body is null");if(e.startsWith("data:")||e.startsWith("blob:"))return n;const[s,o]=n.tee();return zo.put(e,o).catch(a=>{console.error(`ResourceManager: Failed to cache ${e}`,a)}),s}static async getImageBitmap(e){const t=await zo.get(e);if(t){const l=await t.getOriginFile();if(l)return await createImageBitmap(l)}if(e.startsWith("data:")||e.startsWith("blob:")){const u=await(await fetch(e)).blob();return await createImageBitmap(u)}const i=await fetch(e);if(!i.ok)throw new Error(`Failed to fetch: ${i.status} ${i.statusText}`);const n=i.body;if(!n)throw new Error("Response body is null");const[s,o]=n.tee(),a=(async()=>{const u=await new Response(s).blob();return await createImageBitmap(u)})();return zo.put(e,o).catch(l=>{console.error(`ResourceManager: Failed to cache ${e}`,l)}),await a}async loadResource(e){const t=this.loadingPromises.get(e);if(t)return t;if(this.resources.has(e)){const n=this.resources.get(e);if(n.status==="completed")return n}const i=(async()=>{const n={url:e,status:"loading"};this.resources.set(e,n);try{const s=await zo.get(e);if(s)return n.status="completed",n.localFile=s,n;const o=await fetch(e);if(!o.ok)throw new Error(`Fetch failed: ${o.status}`);const a=o.body;if(!a)throw new Error("No body");const l=await zo.put(e,a);return n.status="completed",n.localFile=l,n}catch(s){return n.status="failed",n.error=s instanceof Error?s:new Error(String(s)),n}finally{this.loadingPromises.delete(e)}})();return this.loadingPromises.set(e,i),i}async resolve(e){if(!e||e.startsWith("data:")||e.startsWith("blob:"))return e;const t=await this.loadResource(e);return t.status==="completed"&&t.localFile?t.localFile:e}getStatus(e){return this.resources.get(e)}clear(){this.resources.clear(),this.loadingPromises.clear()}}class Jr extends Mn{type="Audio";static ctx=null;ready;_meta={duration:0,width:0,height:0};get meta(){return{...this._meta,sampleRate:rt.sampleRate,chanCount:2}}chan0Buf=new Float32Array;chan1Buf=new Float32Array;getPCMData(){return[this.chan0Buf,this.chan1Buf]}opts;loop=!1;static async fromUrl(e,t={}){const i=await Lo.getReadableStream(e);return new Jr(i,t,e)}static async fromObject(e){if(e.type!=="Audio")throw new Error(`Expected Audio, got ${e.type}`);if(!e.src||e.src.trim()==="")throw new Error("Audio requires a valid source URL");const t={};e.loop!==void 0&&(t.loop=e.loop),e.volume!==void 0&&(t.volume=e.volume);const i=await Jr.fromUrl(e.src,t);return i.left=e.left,i.top=e.top,i.width=e.width,i.height=e.height,i.angle=e.angle,i.display.from=e.display.from,i.display.to=e.display.to,i.duration=e.duration,i.playbackRate=e.playbackRate,i.zIndex=e.zIndex,i.opacity=e.opacity,i.flip=e.flip,e.animation&&i.setAnimation(e.animation.keyFrames,e.animation.opts),i}constructor(e,t={},i){super(),this.src=i!==void 0?i:"",this.opts={loop:!1,volume:1,...t},this.loop=this.opts.loop??!1,this.volume=this.opts.volume??1,this.ready=this.init(e).then(n=>{const s={width:0,height:0,duration:t.loop?1/0:this._meta.duration};return this.width=this.width===0?s.width:this.width,this.height=this.height===0?s.height:this.height,this.duration=this.duration===0?s.duration:this.duration,this.display.to=this.display.from+this.duration,s})}async init(e){Jr.ctx==null&&(Jr.ctx=new AudioContext({sampleRate:rt.sampleRate}));const t=performance.now(),i=e instanceof ReadableStream?await oq(e,Jr.ctx):e;Ue.info("Audio clip decoded complete:",performance.now()-t),this._meta.duration=i[0].length/rt.sampleRate*1e6,this.chan0Buf=i[0],this.chan1Buf=i[1]??this.chan0Buf,Ue.info("Audio clip convert to AudioData, time:",performance.now()-t)}tickInterceptor=async(e,t)=>t;timestamp=0;frameOffset=0;async tick(e){if(!this.opts.loop&&e>=this._meta.duration)return await this.tickInterceptor(e,{audio:[],state:"done"});const t=e-this.timestamp;if(e<this.timestamp||t>3e6)return this.timestamp=e,this.frameOffset=Math.ceil(this.timestamp/1e6*rt.sampleRate),await this.tickInterceptor(e,{audio:[new Float32Array(0),new Float32Array(0)],state:"success"});this.timestamp=e;const i=Math.ceil(t/1e6*rt.sampleRate),n=this.frameOffset+i,s=this.opts.loop?[W0(this.chan0Buf,this.frameOffset,n),W0(this.chan1Buf,this.frameOffset,n)]:[this.chan0Buf.slice(this.frameOffset,n),this.chan1Buf.slice(this.frameOffset,n)];if(this.volume!==1)for(const o of s)for(let a=0;a<o.length;a++)o[a]*=this.volume;return this.frameOffset=n,await this.tickInterceptor(e,{audio:s,state:"success"})}async split(e){await this.ready;const t=Math.ceil(e/1e6*rt.sampleRate),i=new Jr(this.getPCMData().map(s=>s.slice(0,t)),this.opts,this.src),n=new Jr(this.getPCMData().map(s=>s.slice(t)),this.opts,this.src);return[i,n]}async clone(){await this.ready;const e=new Jr(this.getPCMData(),this.opts,this.src);return await e.ready,this.copyStateTo(e),e}destroy(){this.chan0Buf=new Float32Array(0),this.chan1Buf=new Float32Array(0),Ue.info("---- audioclip destroy ----"),super.destroy()}toJSON(e=!1){return{...super.toJSON(e),type:"Audio",loop:this.loop,id:this.id,volume:this.volume}}static concatAudio=sq;async createPlaybackElement(){if(await this.ready,!this.src||this.src.trim()==="")throw new Error("Audio requires a source URL for playback");const e=this.src.startsWith("blob:")?this.src:void 0,t=document.createElement("audio");return t.crossOrigin="anonymous",t.autoplay=!1,t.preload="auto",t.loop=this.opts.loop||!1,t.src=this.src,await new Promise((i,n)=>{const s=()=>{t.removeEventListener("loadeddata",s),t.removeEventListener("error",o),t.pause(),t.currentTime=0,i()},o=()=>{t.removeEventListener("loadeddata",s),t.removeEventListener("error",o),n(new Error("Failed to load audio"))};t.addEventListener("loadeddata",s,{once:!0}),t.addEventListener("error",o,{once:!0}),t.load()}),{element:t,objectUrl:e}}async play(e,t){const i=e;if(Math.abs(i.currentTime-t)>.1&&(i.currentTime=t),i.paused)try{await i.play()}catch{try{await i.play()}catch(s){console.warn("Failed to play audio:",s)}}}pause(e){e.pause()}async seek(e,t){const i=e;return i.pause(),i.currentTime=t,new Promise(n=>{if(Math.abs(i.currentTime-t)<.01){n();return}const s=()=>{i.removeEventListener("seeked",s),n()};i.addEventListener("seeked",s,{once:!0}),setTimeout(()=>{i.removeEventListener("seeked",s),n()},500)})}syncPlayback(e,t,i){const n=e,s=this.meta.duration/1e6,o=i>=0&&i<s;n.volume=this.volume,t&&o?n.paused&&this.play(n,i).catch(console.warn):(n.paused||n.pause(),o&&Math.abs(n.currentTime-i)>.1&&(n.currentTime=i))}cleanupPlayback(e,t){const i=e;i.pause(),i.removeAttribute("src"),i.load(),t&&t.startsWith("blob:")&&URL.revokeObjectURL(t)}}async function sq(r,e){const t=[];for(const i of r)await i.ready,t.push(i.getPCMData());return new Jr(Jw(t),e)}async function oq(r,e){const t=await new Response(r).arrayBuffer();return H0(await e.decodeAudioData(t))}function yt(r){if(r!=null){if(typeof r=="number")return r;if(typeof r=="string"){if(r==="transparent")return;if(r.startsWith("#")){const t=parseInt(r.slice(1),16);if(!isNaN(t))return t}if(r.startsWith("0x")){const t=parseInt(r,16);if(!isNaN(t))return t}const e=parseInt(r,16);if(!isNaN(e))return e;try{return new ye(r).toNumber()}catch{return}}}}const Rk=r=>r==="transparent",Dn=(r,e=16777215)=>Rk(r)?{color:e,alpha:0}:{color:yt(r)??e,alpha:1};function Fk(r){try{const t=new ye(r).toRgbArray();return{r:Math.round(t[0]*255),g:Math.round(t[1]*255),b:Math.round(t[2]*255)}}catch{return null}}class On extends Mn{type="Caption";_meta={duration:1/0,width:0,height:0};get meta(){return{...this._meta}}animate(e){super.animate(e,this.pixiTextContainer)}_visualPaddingX=20;_visualPaddingY=15;_lastTickTime=0;get width(){return this._width}set width(e){Math.abs(this._width-e)<.1||(this._width=e,e>0?(this._isWidthConstrained=!0,this.opts.wordWrapWidth=e,this.opts.wordWrap=!0,this.originalOpts&&(this.originalOpts.wordWrapWidth=e,this.originalOpts.wordWrap=!0)):(this._isWidthConstrained=!1,this.opts.wordWrapWidth=0,this.opts.wordWrap=!1,this.originalOpts&&(this.originalOpts.wordWrapWidth=0,this.originalOpts.wordWrap=!1)),this.refreshCaptions().then(()=>{this.emit("propsChange",{width:e})}))}get height(){return this._height}set height(e){Math.abs(this._height-e)<.1||(this._height=e,this.refreshCaptions().then(()=>{this.emit("propsChange",{height:e})}))}get left(){return this._left}set left(e){Math.abs(this._left-e)<.1||(this._left=e,this._refreshing||(this._isXPositionedManually=!0),this.emit("propsChange",{left:e}))}get top(){return this._top}set top(e){Math.abs(this._top-e)<.1||(this._top=e,this.emit("propsChange",{top:e}))}_initialLayoutApplied=!1;_isXPositionedManually=!1;_isWidthConstrained=!1;_lastContentWidth=0;_lastContentHeight=0;_lastProcessedText="";_text="";get text(){return this._text}set text(e){if(this._text===e)return;this._text=e;const i=(this.opts?.words||[]).map(s=>s.text).join(" "),n=s=>s.replace(/\s+/g," ").trim();if(n(e)!==n(i)){const s=this.duration>0&&this.duration!==1/0?this.duration/1e3:5e3,o=e.split(`
3509
- `),a=[];if(o.forEach((l,u)=>{l.trim().split(/\s+/).filter(h=>h!=="").forEach(h=>{a.push({text:h,paragraphIndex:u})})}),a.length===0)this.opts.words=[];else{const l=s/a.length;this.opts.words=a.map((u,c)=>({text:u.text,from:c*l,to:(c+1)*l,isKeyWord:!1,paragraphIndex:u.paragraphIndex}))}}this.originalOpts&&(this.originalOpts.caption?this.originalOpts.caption.words=this.opts.words:this.originalOpts.words=this.opts.words),this.originalOpts&&this.textStyle&&this.refreshCaptions().then(()=>{this.emit("propsChange",{text:e})})}get style(){if(!this.originalOpts)return{};const e=this.originalOpts;return{fontSize:e.fontSize,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontStyle:e.fontStyle,color:e.fill,align:e.align,textCase:e.textCase,verticalAlign:e.verticalAlign,wordsPerLine:e.wordsPerLine,wordAnimation:e.wordAnimation,stroke:e.stroke?typeof e.stroke=="object"?{color:e.stroke.color,width:e.stroke.width}:{color:e.stroke,width:e.strokeWidth??0}:void 0,shadow:e.dropShadow?{color:e.dropShadow.color??"#000000",alpha:e.dropShadow.alpha??.5,blur:e.dropShadow.blur??4,distance:e.dropShadow.distance??0,angle:e.dropShadow.angle??0}:void 0}}set style(e){this.updateStyle(e)}get wordsPerLine(){return this.opts.wordsPerLine}set wordsPerLine(e){this.updateStyle({wordsPerLine:e})}get fontFamily(){return this.opts.fontFamily}set fontFamily(e){this.updateStyle({fontFamily:e})}get fontUrl(){return this.opts.fontUrl}set fontUrl(e){this.updateStyle({fontUrl:e})}get fontSize(){return this.opts.fontSize}set fontSize(e){this.updateStyle({fontSize:e})}get fontWeight(){return this.opts.fontWeight}set fontWeight(e){this.updateStyle({fontWeight:e})}get fontStyle(){return this.opts.fontStyle}set fontStyle(e){this.updateStyle({fontStyle:e})}get fill(){return this.opts.fill}set fill(e){this.updateStyle({fill:e})}get align(){return this.opts.align}set align(e){this.updateStyle({align:e})}get stroke(){return this.originalOpts?.stroke}set stroke(e){this.updateStyle({stroke:e})}get strokeWidth(){return this.opts.strokeWidth}set strokeWidth(e){this.updateStyle({strokeWidth:e})}get dropShadow(){return this.originalOpts?.dropShadow}set dropShadow(e){this.updateStyle({dropShadow:e})}get caption(){return this.originalOpts?.caption}set caption(e){this.updateStyle({caption:e})}get textBoxStyle(){return this.originalOpts?.caption?.textBoxStyle??this.originalOpts?.textBoxStyle??{}}set textBoxStyle(e){this.updateStyle({textBoxStyle:e})}bottomOffset;get textCase(){return this.originalOpts?.textCase||"none"}set textCase(e){this.updateStyle({textCase:e})}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;get mediaId(){return this.opts.mediaId}set mediaId(e){this.opts.mediaId=e,this.originalOpts&&(this.originalOpts.mediaId=e)}effects=[];get words(){return this.opts.words}set words(e){const t=e??[];this.opts.words=t,this.originalOpts&&(this.originalOpts.caption?this.originalOpts.caption.words=e:this.originalOpts.words=e);const i=t.map(n=>n.text).filter(n=>n&&n.trim()!=="").join(" ");this._text!==i?this.text=i:this.refreshCaptions().then(()=>{this.emit("propsChange",{words:e})})}opts;pixiTextContainer=null;renderTexture=null;wordTexts=[];textStyle;textStyleBase;_refreshing=!1;_needsRefresh=!1;externalRenderer=null;pixiApp=null;originalOpts=null;constructor(e,t={},i){super(),this.originalOpts={...t},this.externalRenderer=i??null,this.opts={fontSize:t.fontSize??30,fontFamily:t.fontFamily??"Arial",fontUrl:t.fontUrl??"",fontWeight:t.fontWeight??"normal",fontStyle:t.fontStyle??"normal",fill:t.fill??"#ffffff",strokeWidth:t.strokeWidth??0,align:t.align??"center",wordWrapWidth:t.wordWrapWidth??0,wordWrap:t.wordWrap??!1,lineHeight:t.lineHeight??1,letterSpacing:t.letterSpacing??0,textCase:t.textCase??"none",videoWidth:t.caption?.positioning?.videoWidth??t.videoWidth??1280,videoHeight:t.caption?.positioning?.videoHeight??t.videoHeight??720,bottomOffset:t.caption?.positioning?.bottomOffset??t.bottomOffset??30,keyword:t.caption?.colors?.keyword??t.colors?.keyword??"#ffff00",background:t.caption?.colors?.background??t.colors?.background??"#000000",active:t.caption?.colors?.active??t.colors?.active??"#ffffff",activeFill:t.caption?.colors?.activeFill??t.colors?.activeFill??"#00ff00",appeared:t.caption?.colors?.appeared??t.colors?.appeared??"#ffffff",words:t.caption?.words??t.words??[],preserveKeywordColor:t.caption?.preserveKeywordColor??t.preserveKeywordColor??!1,mediaId:t.mediaId,wordsPerLine:t.wordsPerLine??"multiple",wordAnimation:t.caption?.wordAnimation??t.wordAnimation,textBoxStyle:t.caption?.textBoxStyle??t.textBoxStyle??{}},this._initialLayoutApplied=t.initialLayoutApplied??!1,this._initialLayoutApplied&&(this._isXPositionedManually=!0),this.opts.wordWrapWidth>0&&(this._isWidthConstrained=!0,this._width=this.opts.wordWrapWidth,this.opts.wordWrap=!0),this.text=e,this._lastProcessedText=this._text;const n={fontSize:this.opts.fontSize,fontFamily:this.opts.fontFamily,fontWeight:this.opts.fontWeight,fontStyle:this.opts.fontStyle,align:this.opts.align};if(t.fill&&typeof t.fill=="object"&&t.fill.type==="gradient"){const c=new Dr(t.fill.x0,t.fill.y0,t.fill.x1,t.fill.y1);t.fill.colors.forEach(({ratio:h,color:d})=>{const f=typeof d=="number"?d:yt(d)??16777215;c.addColorStop(h,f)}),n.fill={fill:c}}else{let c;t.fill==="transparent"?c=16777215:(typeof t.fill=="string"||typeof t.fill=="number")&&(c=yt(t.fill)),n.fill=c??16777215}const s=c=>c==="transparent";if(t.stroke&&typeof t.stroke=="object"&&"color"in t.stroke){if(!s(t.stroke.color)){const c=yt(t.stroke.color);c!==void 0&&(n.stroke={color:c,width:t.stroke.width},t.stroke.join&&(n.stroke.join=t.stroke.join))}}else{const c=t.stroke??void 0;if(!s(c)){const h=yt(c);h!==void 0?n.stroke={color:h,width:this.opts.strokeWidth??0}:this.opts.strokeWidth&&this.opts.strokeWidth>0&&(n.stroke={color:0,width:this.opts.strokeWidth})}}if(t.dropShadow){const c=yt(t.dropShadow.color);c!==void 0&&(n.dropShadow={color:c,alpha:t.dropShadow.alpha??.5,blur:t.dropShadow.blur??4,angle:t.dropShadow.angle??Math.PI/6,distance:t.dropShadow.distance??2})}const o=new It(n);this.textStyle=o;const{align:a,fill:l,...u}=n;this.textStyleBase=new It(u),this.ready=(async()=>{await this.refreshCaptions();const c={...this._meta};return Ue.info("CaptionClip ready:",c),c})()}async updateStyle(e){this.originalOpts||(this.originalOpts={});let t={...e};e.style&&(t={...t,...e.style},delete t.style),this.originalOpts={...this.originalOpts,...t},t.fontSize!==void 0&&(this.opts.fontSize=t.fontSize),t.fontFamily!==void 0&&(this.opts.fontFamily=t.fontFamily),t.fontUrl!==void 0&&(this.opts.fontUrl=t.fontUrl),t.fontWeight!==void 0&&(this.opts.fontWeight=t.fontWeight),t.fontStyle!==void 0&&(this.opts.fontStyle=t.fontStyle),t.fill!==void 0&&(this.opts.fill=t.fill),t.align!==void 0&&(this.opts.align=t.align),t.letterSpacing!==void 0&&(this.opts.letterSpacing=t.letterSpacing),t.lineHeight!==void 0&&(this.opts.lineHeight=t.lineHeight),t.textCase!==void 0&&(this.opts.textCase=t.textCase),t.wordWrapWidth!==void 0&&(this.opts.wordWrapWidth=t.wordWrapWidth,t.wordWrapWidth>0&&(this._isWidthConstrained=!0,this.opts.wordWrap=!0)),t.wordsPerLine!==void 0&&(this.opts.wordsPerLine=t.wordsPerLine),t.wordAnimation!==void 0&&(this.opts.wordAnimation=t.wordAnimation),t.textBoxStyle!==void 0&&(this.opts.textBoxStyle=t.textBoxStyle),t.caption?.colors&&(t.caption.colors.appeared!==void 0&&(this.opts.appeared=t.caption.colors.appeared),t.caption.colors.active!==void 0&&(this.opts.active=t.caption.colors.active),t.caption.colors.activeFill!==void 0&&(this.opts.activeFill=t.caption.colors.activeFill),t.caption.colors.background!==void 0&&(this.opts.background=t.caption.colors.background),t.caption.colors.keyword!==void 0&&(this.opts.keyword=t.caption.colors.keyword),t.caption.wordAnimation!==void 0&&(this.opts.wordAnimation=t.caption.wordAnimation)),t.caption?.preserveKeywordColor!==void 0&&(this.opts.preserveKeywordColor=t.caption.preserveKeywordColor);const i={fontSize:this.opts.fontSize,fontFamily:this.opts.fontFamily,fontWeight:this.opts.fontWeight,fontStyle:this.opts.fontStyle,align:this.opts.align};if(this.opts.fill&&typeof this.opts.fill=="object"&&this.opts.fill.type==="gradient"){const u=new Dr(this.opts.fill.x0,this.opts.fill.y0,this.opts.fill.x1,this.opts.fill.y1);this.opts.fill.colors.forEach(({ratio:c,color:h})=>{const d=typeof h=="number"?h:yt(h)??16777215;u.addColorStop(c,d)}),i.fill={fill:u}}else i.fill=16777215;if(e.stroke!==void 0||e.strokeWidth!==void 0||this.originalOpts.stroke||this.originalOpts.strokeWidth){if(this.originalOpts.stroke&&typeof this.originalOpts.stroke=="object"&&"color"in this.originalOpts.stroke){const u=yt(this.originalOpts.stroke.color);u!==void 0&&(i.stroke={color:u,width:this.originalOpts.stroke.width},this.originalOpts.stroke.join&&(i.stroke.join=this.originalOpts.stroke.join))}else if(this.originalOpts?.stroke){const u=this.originalOpts.stroke,c=yt(typeof u=="object"&&u!==null&&"color"in u?u.color:u),h=e.strokeWidth!==void 0?e.strokeWidth:this.originalOpts.strokeWidth!==void 0?this.originalOpts.strokeWidth:0;c!==void 0?i.stroke={color:c,width:h}:h>0&&(i.stroke={color:0,width:h})}}const s=e.dropShadow!==void 0?e.dropShadow:this.originalOpts.dropShadow;if(s){const u=yt(s.color);u!==void 0&&(i.dropShadow={color:u,alpha:s.alpha!==void 0?s.alpha:.5,blur:s.blur!==void 0?s.blur:4,angle:s.angle!==void 0?s.angle:Math.PI/6,distance:s.distance!==void 0?s.distance:2})}this.textStyle=new It(i);const{align:o,fill:a,...l}=i;this.textStyleBase=new It(l),await this.refreshCaptions(),this.emit("propsChange",e)}async refreshCaptions(){if(this._refreshing){this._needsRefresh=!0;return}this._refreshing=!0,this._needsRefresh=!1;try{typeof document<"u"&&await document.fonts.ready;const e=this._width,t=this._height,i=this.originalOpts?.verticalAlign||"center";this.pixiTextContainer?this.pixiTextContainer.removeChildren():this.pixiTextContainer=new Pe,this.wordTexts.forEach(G=>{G.destroyed||G.destroy()}),this.wordTexts=[];const n=Ht.measureText(" ",this.textStyle),s=[];this.opts.words.forEach((G,ne)=>{const oe=this.opts.textCase;let te=G.text||"";oe==="uppercase"?te=te.toUpperCase():oe==="lowercase"?te=te.toLowerCase():oe==="title"&&(te=te.replace(/\w\S*/g,Le=>Le.charAt(0).toUpperCase()+Le.substring(1).toLowerCase())),te.split(/\s+/).filter(Le=>Le.length>0).forEach(Le=>{const ke=new Il({text:Le,style:this.textStyle});ke.segmentIndex=ne;const Ae="#ffffff",je=typeof Ae=="object"&&Ae!==null&&"type"in Ae?16777215:Ae,Fe=yt(je);ke.tint=Fe??16777215,s.push(ke)})}),this.wordTexts=s;const o=this._visualPaddingX,a=this._visualPaddingY,l=this.opts.lineHeight*(this.opts.fontSize||30),u=new Il({text:" ",style:this.textStyleBase}),c=Math.ceil(u.getLocalBounds().width||u.width||n.width);u.destroy();const h=!this._isWidthConstrained&&(this.width===0||this._lastContentWidth===0||Math.abs(this.width-this._lastContentWidth)<2),d=this.opts.videoWidth||1280;let f=0;this.opts.wordWrapWidth>0&&this.opts.wordsPerLine!=="single"?f=this.opts.wordWrapWidth-o*2:this.opts.wordsPerLine==="single"?f=d*5:!h&&this.width>0?f=this.width+10:f=d*5,(isNaN(f)||f<=0)&&(f=d);let p=[];const m=this.opts.textBoxStyle.textAlign||this.opts.align,g=this.opts.textBoxStyle,v=g.style==="tiktok",x=[],y=g.horizontalPadding??0,b=g.verticalPadding??0;let T=[],P=0,A=0;this.wordTexts.forEach((G,ne)=>{const oe=G.getLocalBounds(),te=Math.ceil(oe.width||G.width),be=Math.ceil(oe.height||G.height),Le=G.segmentIndex,ke=this.opts.words[Le],Ae=ne>0?this.wordTexts[ne-1]:null,je=Ae?this.opts.words[Ae.segmentIndex]:null,Fe=je&&ke&&ke.paragraphIndex!==void 0&&ke.paragraphIndex!==je.paragraphIndex||this.opts.wordsPerLine==="single",at=P+(P>0?c:0)+te;!Fe&&(at<=f+1||T.length===0)?(T.push(G),P=at,A=Math.max(A,be)):(T.length>0&&p.push({words:T,width:P,height:Math.max(A,l)+b*2}),T=[G],P=te,A=be)}),T.length>0&&p.push({words:T,width:P,height:Math.max(A,l)+b*2}),this.opts.textBoxStyle.maxLines&&this.opts.textBoxStyle.maxLines>0&&(p=p.slice(0,this.opts.textBoxStyle.maxLines));let E=0,_=0;p.forEach(G=>{E=Math.max(E,G.width),_+=G.height});const S=E,I=_,M=S+Math.max(o,y)*2,O=I,U=this._text!==this._lastProcessedText;this._lastProcessedText=this._text;let X=M,D=O;this._isWidthConstrained&&(U?X=M:X=Math.max(M,e),this.opts.wordWrapWidth>0&&(X=Math.min(X,this.opts.wordWrapWidth)));const k=X,Y=D,H=I;let $=0;const K=Math.max(a,b);i==="top"?$=K:i==="bottom"?$=Y-H-K:$=(Y-H)/2;let we=$;if(p.forEach(G=>{const ne=new Pe;ne.label="lineContainer",this.pixiTextContainer.addChild(ne);let oe=0;const te=G.width;let be=0;m==="center"?be=(k-te)/2:m==="right"?be=k-te-o:be=o,ne.x=be,ne.y=we,v&&x.push({x:be-y,y:we,w:te+y*2,h:G.height}),G.words.forEach((Le,ke)=>{const Ae=Le.getLocalBounds(),je=Ae.width||Le.width,Fe=Ae.height||Le.height;Le.pivot.set(je/2,Fe/2),Le.x=Math.round(oe+je/2),Le.y=Math.round(G.height/2),ne.addChild(Le),oe+=je+(ke<G.words.length-1?c:0)}),we+=G.height}),v&&x.length>0){const G=new Ze;G.label="tiktokBackground";const ne=yt(this.opts.background)??0,oe=g.borderRadius??10;this.drawRoundedTiktokPath(G,x,oe,ne),this.pixiTextContainer.addChildAt(G,0)}if(!v){const G=new Ze;G.label="containerBackground";const ne=this.opts.background==="transparent"||!this.opts.background,oe=ne?0:yt(this.opts.background),te=ne?0:1;G.roundRect(0,0,k,Y,10),G.fill({color:oe,alpha:te}),this.pixiTextContainer.addChildAt(G,0)}this.renderTexture?(Math.abs(this.renderTexture.width-k)>.5||Math.abs(this.renderTexture.height-Y)>.5)&&(this.renderTexture.destroy(),this.renderTexture=Ot.create({width:k,height:Y})):this.renderTexture=Ot.create({width:k,height:Y}),this.updateState(this._lastTickTime);try{(await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture})}catch(G){Ue.warn("CaptionClip: Could not render captions during refresh",G)}const Ie=!this._isWidthConstrained,ve=this.height===0||this._lastContentHeight===0||Math.abs(this.height-this._lastContentHeight)<2;if(Ie&&this._initialLayoutApplied&&e>0&&t>0){const G=X-e;Math.abs(G)>.1&&!this._isXPositionedManually&&this.opts.align==="center"?this.left-=G/2:Math.abs(G)>.1&&!this._isXPositionedManually&&this.opts.align==="right"&&(this.left-=G)}if(this._meta.width=S,this._meta.height=I,this._meta.duration=1/0,this._width=k,this._height=Y,this._lastContentWidth=this._width,this._lastContentHeight=this._height,!this._initialLayoutApplied&&(Ie||ve)){const G=this.opts.videoWidth,ne=this.opts.videoHeight,oe=this.opts.bottomOffset,te=ne-I-oe,be=(G-S)/2;this.top=te,this.left=be,this._initialLayoutApplied=!0}}finally{this._refreshing=!1,this._needsRefresh&&this.refreshCaptions()}}lastLoggedTime=-1;updateState(e){const t=e/1e3,i=Math.floor(e/1e6);i!==this.lastLoggedTime&&(this.lastLoggedTime=i),this.wordTexts.forEach(n=>{const s=n.segmentIndex,o=this.opts.words[s];if(!o)return;n.scale.set(1,1);const a=t>=o.from&&t<o.to,l=t>=o.to,u=this.opts.wordAnimation;let c=0,h=!1;if(u&&u.application!=="none"&&((u.application==="active"&&a||u.application==="keyword"&&o.isKeyWord)&&(h=!0),h)){if(u.mode==="dynamic"&&a){const v=o.to-o.from;if(v>0){const x=(t-o.from)/v,y=Math.max(0,Math.min(1,x));u.value<1?c=y:c=Math.sin(y*Math.PI)}else c=1}else c=1;if(u.type==="scale"){let v=1;u.value<1&&u.mode==="dynamic"&&a?v=u.value+(1-u.value)*c:v=1+(u.value-1)*c,n.scale.set(v,v)}}const d=o.isKeyWord&&!Rk(this.opts.keyword);let f=16777215,p=1;if(o.isKeyWord&&a&&d)({color:f,alpha:p}=Dn(this.opts.keyword,16776960));else if(a)p=Dn(this.opts.active,16777215).alpha,f=Dn(this.opts.active,16777215).color;else if(l&&this.opts.preserveKeywordColor&&d)({color:f,alpha:p}=Dn(this.opts.keyword));else if(l)({color:f,alpha:p}=Dn(this.opts.appeared));else{const v=this.opts.fill,x=typeof v=="object"&&v!==null&&"type"in v?16777215:v;({color:f,alpha:p}=Dn(x))}if(h&&u?.type==="opacity"){let v=1;u.value<1&&u.mode==="dynamic"&&a?v=u.value+(1-u.value)*c:v=1+(u.value-1)*c,p*=v}n.children.forEach(v=>{v.label!=="bgRect"&&(v.tint=f,v.alpha=p)});const m=n.getChildByLabel("bgRect"),g=this.opts.textBoxStyle.style==="tiktok";if(a&&!g){const{color:v,alpha:x}=Dn(this.opts.activeFill,16753920),y=15,b=40;m&&(m.visible=!1);const T=n.getLocalBounds();m&&(m.visible=!0);const P=10,A=m??new Ze;A.label="bgRect",A.clear(),A.roundRect(T.x-b/2,T.y-y/2,T.width+b,T.height+y,P),A.fill({color:v,alpha:x}),A.tint=16777215,m||n.addChildAt(A,0)}else m&&(n.removeChild(m),m.destroy())})}async getTexture(){return this.pixiTextContainer==null||this.renderTexture==null?null:((await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture}),this.renderTexture)}async offscreenRender(e,t){const i=t*this.playbackRate;this._lastTickTime=i*1e6,this.animate(i*1e6),this._render(e);const{width:n,height:s}=this,{video:o,audio:a,done:l}=await this.getFrame(t),u=a??[];return l?{audio:u,done:!0}:(o!=null&&(e.save(),e.drawImage(o,-n/2,-s/2,n,s),e.restore()),{audio:u,done:!1})}setRenderer(e){this.externalRenderer=e}async getRenderer(){if(this.externalRenderer!=null)return this.externalRenderer;if(this.pixiApp?.renderer==null)throw new Error("CaptionClip: No renderer available. Provide a renderer via setRenderer().");return this.pixiApp.renderer}async tick(e){if(await this.ready,this.pixiTextContainer==null||this.renderTexture==null)throw new Error("CaptionClip not initialized");this._lastTickTime=e,this.updateState(e);const t=await this.getRenderer();t.render({container:this.pixiTextContainer,target:this.renderTexture});const i=this.renderTexture.source?.resource?.source;let n;if(i instanceof HTMLCanvasElement)n=await createImageBitmap(i);else if(i instanceof OffscreenCanvas)n=await createImageBitmap(i);else{const o=t.extract.canvas(this.renderTexture);if(o instanceof HTMLCanvasElement||o instanceof OffscreenCanvas)n=await createImageBitmap(o);else throw new Error("Unable to extract canvas from render texture")}return{video:n,state:"success"}}async split(e){await this.ready;const t=await this.clone(),i=await this.clone();return[t,i]}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=this.originalOpts||{},t=new On(this.text,e);return this.copyStateTo(t),t.id=this.id,t.effects=[...this.effects],t}destroy(){if(!this.destroyed){Ue.info("Caption destroy");try{this.wordTexts.forEach(e=>{e!=null&&!e.destroyed&&e.destroy({children:!0})})}catch{}finally{this.wordTexts=[]}try{this.pixiTextContainer!=null&&(this.pixiTextContainer.destroyed||this.pixiTextContainer.destroy({children:!0}))}catch{}finally{this.pixiTextContainer=null}try{this.renderTexture!=null&&(this.renderTexture.destroyed||this.renderTexture.destroy(!0))}catch{}finally{this.renderTexture=null}if(this.externalRenderer=null,this.pixiApp!=null)try{const e=this.pixiApp;e.destroyed!==!0&&e.renderer!=null&&this.pixiApp.destroy(!0,{children:!0,texture:!0})}catch{}finally{this.pixiApp=null}super.destroy()}}toJSON(e=!1){const t=super.toJSON(e),i={};if(this.originalOpts){const f=this.originalOpts;f.fontSize!==void 0&&(i.fontSize=f.fontSize),f.fontFamily!==void 0&&(i.fontFamily=f.fontFamily),f.fontWeight!==void 0&&(i.fontWeight=f.fontWeight),f.fontStyle!==void 0&&(i.fontStyle=f.fontStyle),f.fill!==void 0&&(i.color=f.fill),f.align!==void 0&&(i.align=f.align),f.textCase!==void 0&&(i.textCase=f.textCase),f.fontUrl!==void 0&&(i.fontUrl=f.fontUrl),f.verticalAlign!==void 0&&(i.verticalAlign=f.verticalAlign),f.wordWrapWidth!==void 0&&(i.wordWrapWidth=f.wordWrapWidth),f.wordWrap!==void 0&&(i.wordWrap=f.wordWrap),f.wordAnimation!==void 0&&(i.wordAnimation=f.wordAnimation),f.textBoxStyle!==void 0&&(i.textBoxStyle=f.textBoxStyle),f.stroke&&(typeof f.stroke=="object"?i.stroke={color:f.stroke.color,width:f.stroke.width}:i.stroke={color:f.stroke,width:this.opts.strokeWidth??0}),f.dropShadow&&(i.shadow={color:f.dropShadow.color??"#000000",alpha:f.dropShadow.alpha??.5,blur:f.dropShadow.blur??4,distance:f.dropShadow.distance??0,angle:f.dropShadow.angle??0})}const n={};this.opts.words&&this.opts.words.length>0&&(n.words=this.opts.words);const s={},o=this.originalOpts?.caption?.colors??this.originalOpts?.colors;o?.appeared!==void 0&&(s.appeared=o.appeared),o?.active!==void 0&&(s.active=o.active),o?.activeFill!==void 0&&(s.activeFill=o.activeFill),o?.background!==void 0&&(s.background=o.background),o?.keyword!==void 0&&(s.keyword=o.keyword);let a;this.originalOpts?.caption?.preserveKeywordColor!==void 0?a=this.originalOpts.caption.preserveKeywordColor:this.originalOpts?.preserveKeywordColor!==void 0&&(a=this.originalOpts.preserveKeywordColor),Object.keys(s).length>0&&(n.colors=s),a!==void 0&&(n.preserveKeywordColor=a);const l={};this.bottomOffset!==void 0&&(l.bottomOffset=this.bottomOffset);const u=this.originalOpts?.caption?.positioning?.videoWidth??this.originalOpts?.videoWidth,c=this.originalOpts?.caption?.positioning?.videoHeight??this.originalOpts?.videoHeight;u!==void 0&&(l.videoWidth=u),c!==void 0&&(l.videoHeight=c),Object.keys(l).length>0&&(n.positioning=l);const h=this.originalOpts?.caption?.wordAnimation??this.originalOpts?.wordAnimation;h!==void 0&&(n.wordAnimation=h);const d=this.originalOpts?.caption?.textBoxStyle??this.originalOpts?.textBoxStyle;return d!==void 0&&(n.textBoxStyle=d),{...t,type:"Caption",text:this.text,style:i,caption:Object.keys(n).length>0?n:void 0,textBoxStyle:d,id:this.id,effects:this.effects,mediaId:this.mediaId,wordsPerLine:this.opts.wordsPerLine}}static async fromObject(e){if(e.type!=="Caption")throw new Error(`Expected Caption, got ${e.type}`);const t=e.text||"",i=e.style||{},n={};i.fontSize!==void 0&&(n.fontSize=i.fontSize),i.fontFamily!==void 0&&(n.fontFamily=i.fontFamily),i.fontWeight!==void 0&&(n.fontWeight=i.fontWeight),i.fontStyle!==void 0&&(n.fontStyle=i.fontStyle),i.color!==void 0&&(n.fill=i.color),i.align!==void 0&&(n.align=i.align),i.textCase!==void 0&&(n.textCase=i.textCase),i.verticalAlign!==void 0&&(n.verticalAlign=i.verticalAlign),i.wordWrapWidth!==void 0&&(n.wordWrapWidth=i.wordWrapWidth),i.wordWrap!==void 0&&(n.wordWrap=i.wordWrap),i.wordsPerLine!==void 0?n.wordsPerLine=i.wordsPerLine:e.wordsPerLine!==void 0&&(n.wordsPerLine=e.wordsPerLine),i.fontUrl!==void 0?n.fontUrl=i.fontUrl:e.fontUrl!==void 0&&(n.fontUrl=e.fontUrl),e.mediaId&&(n.mediaId=e.mediaId),i.stroke&&(n.stroke=i.stroke.color,n.strokeWidth=i.stroke.width),i.shadow&&(n.dropShadow={color:i.shadow.color,alpha:i.shadow.alpha,blur:i.shadow.blur,distance:i.shadow.distance,angle:i.shadow.angle}),i.wordAnimation!==void 0&&(n.wordAnimation=i.wordAnimation),e.textBoxStyle!==void 0?n.textBoxStyle=e.textBoxStyle:i.textBoxStyle!==void 0&&(n.textBoxStyle=i.textBoxStyle),e.caption?(n.caption=e.caption,e.caption.wordAnimation&&(n.wordAnimation=e.caption.wordAnimation),e.caption.textBoxStyle&&(n.textBoxStyle=e.caption.textBoxStyle)):(e.bottomOffset!==void 0&&(n.bottomOffset=e.bottomOffset),e.words!==void 0&&(n.words=e.words),(e.appearedColor!==void 0||e.activeColor!==void 0||e.activeFillColor!==void 0||e.backgroundColor!==void 0||e.isKeyWordColor!==void 0)&&(n.colors={},e.appearedColor!==void 0&&(n.colors.appeared=e.appearedColor),e.activeColor!==void 0&&(n.colors.active=e.activeColor),e.activeFillColor!==void 0&&(n.colors.activeFill=e.activeFillColor),e.backgroundColor!==void 0&&(n.colors.background=e.backgroundColor),e.isKeyWordColor!==void 0&&(n.colors.keyword=e.isKeyWordColor)),e.preservedColorKeyWord!==void 0&&(n.preserveKeywordColor=e.preservedColorKeyWord),e.videoWidth!==void 0&&(n.videoWidth=e.videoWidth),e.videoHeight!==void 0&&(n.videoHeight=e.videoHeight)),n.initialLayoutApplied=!0;const s=new On(t,n);return s.left=e.left,s.top=e.top,s.width=e.width,s.height=e.height,s.angle=e.angle,s.display.from=e.display.from,s.display.to=e.display.to,s.duration=e.duration,s.playbackRate=e.playbackRate,s.zIndex=e.zIndex,s.opacity=e.opacity,s.flip=e.flip,s.wordsPerLine=e.wordsPerLine??"multiple",e.animation&&s.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(s.id=e.id),e.effects&&(s.effects=e.effects),await s.ready,s}getVisibleHandles(){return["mr","mb","br","rot"]}drawRoundedTiktokPath(e,t,i,n){if(t.length===0)return;const s=[];s.push({x:t[0].x,y:t[0].y}),s.push({x:t[0].x+t[0].w,y:t[0].y});for(let l=0;l<t.length-1;l++){const u=t[l],c=t[l+1];if(Math.abs(u.x+u.w-(c.x+c.w))>.1){const h=(u.y+u.h+c.y)/2;s.push({x:u.x+u.w,y:h}),s.push({x:c.x+c.w,y:h})}}s.push({x:t[t.length-1].x+t[t.length-1].w,y:t[t.length-1].y+t[t.length-1].h}),s.push({x:t[t.length-1].x,y:t[t.length-1].y+t[t.length-1].h});for(let l=t.length-1;l>0;l--){const u=t[l],c=t[l-1];if(Math.abs(u.x-c.x)>.1){const h=(u.y+c.y+c.h)/2;s.push({x:u.x,y:h}),s.push({x:c.x,y:h})}}e.clear();const o=s[s.length-1],a=s[0];e.moveTo((o.x+a.x)/2,(o.y+a.y)/2);for(let l=0;l<s.length;l++){const u=s[l],c=s[(l+1)%s.length];e.arcTo(u.x,u.y,(u.x+c.x)/2,(u.y+c.y)/2,i)}e.fill({color:n,alpha:1})}}let Bl=class Nn extends Mn{type="Image";ready;_meta={duration:0,width:0,height:0};get meta(){return{...this._meta}}img=null;pixiTexture=null;frames=[];id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];static async fromUrl(e,t){let i=null,n;if(e.startsWith("blob:"))try{const o=await fetch(e);if(!o.ok)throw new Error(`Failed to fetch image: ${o.status} ${o.statusText}`);const a=await o.blob();n=await createImageBitmap(a);try{i=Q.from(n)}catch(l){Ue.warn("Failed to create Pixi texture from bitmap:",l)}}catch(o){throw Ue.error(`Failed to load blob image from ${e}`,o),o}else n=await Lo.getImageBitmap(e);if(!n)throw new Error(`Failed to load image from ${e}`);const s=new Nn(n,t||e);return i&&(s.pixiTexture=i),s}getTexture(){return this.pixiTexture}constructor(e,t){super(),this.src=t!==void 0?t:"";const i=n=>{this.img=n,this._meta.width=n.width,this._meta.height=n.height,this._meta.duration=1/0;const s={...this._meta};return this.width=this.width===0?s.width:this.width,this.height=this.height===0?s.height:this.height,this.duration===0&&s.duration!==1/0&&(this.duration=s.duration,this.display.to=this.display.from+this.duration),s};if(e instanceof ReadableStream)this.ready=new Response(e).blob().then(n=>createImageBitmap(n)).then(i);else if(e instanceof ImageBitmap)this.ready=Promise.resolve(i(e));else if(Array.isArray(e)&&e.every(n=>n instanceof VideoFrame)){this.frames=e;const n=this.frames[0];if(n==null)throw Error("The frame count must be greater than 0");this._meta={width:n.displayWidth,height:n.displayHeight,duration:this.frames.reduce((o,a)=>o+(a.duration??0),0)};const s={...this._meta,duration:1/0};this.width=this.width===0?s.width:this.width,this.height=this.height===0?s.height:this.height,this.duration===0&&s.duration!==1/0&&(this.duration=s.duration,this.display.to=this.display.from+this.duration),this.ready=Promise.resolve(s)}else if("type"in e)this.ready=this.initAnimateImg(e.stream,e.type).then(()=>{const n={width:this._meta.width,height:this._meta.height,duration:1/0};return this.width=this.width===0?n.width:this.width,this.height=this.height===0?n.height:this.height,this.duration===0&&n.duration!==1/0&&(this.duration=n.duration,this.display.to=this.display.from+this.duration),n});else throw Error("Illegal arguments")}async initAnimateImg(e,t){this.frames=await RL(e,t);const i=this.frames[0];if(i==null)throw Error("No frame available in gif");this._meta={duration:this.frames.reduce((n,s)=>n+(s.duration??0),0),width:i.codedWidth,height:i.codedHeight},Ue.info("Image ready:",this._meta)}tickInterceptor=async(e,t)=>t;async tick(e){if(this.img!=null)return await this.tickInterceptor(e,{video:await createImageBitmap(this.img),state:"success"});const t=e%this._meta.duration;return await this.tickInterceptor(e,{video:(this.frames.find(i=>t>=i.timestamp&&t<=i.timestamp+(i.duration??0))??this.frames[0]).clone(),state:"success"})}async split(e){if(await this.ready,this.img!=null)return[new Nn(await createImageBitmap(this.img),this.src),new Nn(await createImageBitmap(this.img),this.src)];let t=-1;for(let s=0;s<this.frames.length;s++){const o=this.frames[s];if(!(e>o.timestamp)){t=s;break}}if(t===-1)throw Error("Not found frame by time");const i=this.frames.slice(0,t).map(s=>new VideoFrame(s)),n=this.frames.slice(t).map(s=>new VideoFrame(s,{timestamp:s.timestamp-e}));return[new Nn(i,this.src),new Nn(n,this.src)]}async clone(){await this.ready;const e=this.img==null?this.frames.map(i=>i.clone()):await createImageBitmap(this.img),t=new Nn(e,this.src);return t.tickInterceptor=this.tickInterceptor,this.copyStateTo(t),t.id=this.id,t.effects=[...this.effects],t.transition=this.transition,t}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}destroy(){Ue.info("Image destroy"),this.img?.close(),this.frames.forEach(e=>e.close()),this.pixiTexture=null,super.destroy()}toJSON(e=!1){return{...super.toJSON(e),type:"Image",id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Image")throw new Error(`Expected Image, got ${e.type}`);if(!e.src||e.src.trim()==="")throw new Error("Image requires a valid source URL. Generated clips (like text-to-image) cannot be loaded from JSON without their source data.");let t;try{const i=await Lo.getImageBitmap(e.src);t=new Nn(i,e.src)}catch(i){throw i instanceof Error&&i.message.includes("could not be decoded")?new Error(`Failed to decode image from ${e.src}. The image may be decoded, in an unsupported format, or there may be CORS issues.`):i}return t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.style&&(t.style={...t.style,...e.style}),e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),e.effects&&(t.effects=e.effects),e.transition&&(t.transition=e.transition),e.chromaKey&&(t.chromaKey={...t.chromaKey,...e.chromaKey}),e.locked!==void 0&&(t.locked=e.locked),t}};function Hb(r,e){const t={},i=e.videoTracks[0];if(i!=null){const s=lq(r.getTrackById(i.id))?.buffer,o=aq(i.codec);o&&(t.videoTrackConf={timescale:i.timescale,duration:i.duration,width:i.video.width,height:i.video.height,brands:e.brands,type:o.type,[o.descKey]:s}),t.videoDecoderConf={codec:i.codec,codedHeight:i.video.height,codedWidth:i.video.width,description:s}}const n=e.audioTracks[0];if(n!=null){const s=uq(r),o=s?cq(s):{};t.audioTrackConf={timescale:n.timescale,samplerate:o.sampleRate??n.audio.sample_rate,channel_count:o.numberOfChannels??n.audio.channel_count,hdlr:"soun",type:n.codec.startsWith("mp4a")?"mp4a":n.codec,description:s},t.audioDecoderConf={codec:o.codec??rt.codec,numberOfChannels:o.numberOfChannels??n.audio.channel_count,sampleRate:o.sampleRate??n.audio.sample_rate}}return t}function aq(r){return r.startsWith("avc1")?{descKey:"avcDecoderConfigRecord",type:"avc1"}:r.startsWith("hvc1")?{descKey:"hevcDecoderConfigRecord",type:"hvc1"}:null}function lq(r){for(const e of r.mdia.minf.stbl.stsd.entries){const t=e.avcC??e.hvcC??e.av1C??e.vpcC;if(t!=null){const i=new qn.DataStream(void 0,0,void 0);return t.write(i),new Uint8Array(i.buffer.slice(8))}}}function uq(r,e="mp4a"){return r.moov?.traks.flatMap(t=>t.mdia.minf.stbl.stsd.entries).find(t=>t.type===e)}function cq(r){const e=r.esd?.descs?.[0];if(!e)return{};let t=`mp4a.${e.oti.toString(16)}`;const i=e.descs?.[0];if(!i)return t.endsWith(".40")&&(t+=".2"),{codec:t};const n=i.data;if(!n)return{codec:t};const s=(n[0]&248)>>3;t+=`.${s}`;const o=(n[0]&7)<<1|n[1]>>7,a=(n[1]&120)>>3;return{codec:t,sampleRate:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][o],numberOfChannels:a}}async function hq(r,e,t){const i=qn.createFile(!1);i.onReady=o=>{e({mp4boxFile:i,info:o}),[o.videoTracks[0],o.audioTracks[0]].forEach(a=>{if(a){const l=a.video?"video":"audio";i.setExtractionOptions(a.id,l,{nbSamples:100})}}),i.start()},i.onSamples=t;let n=0;const s=30*1024*1024;for(;;){const o=await r.read(s,{at:n});if(o.byteLength===0)break;o.fileStart=n;const a=i.appendBuffer(o);if(a==null)break;n=a}i.stop()}function dq(r){if(r?.length!==9)return{};const e=new Int32Array(r.buffer),t=c=>c/65536,i=t(e[0]),n=t(e[1]),s=t(e[3]),o=t(e[4]),a=t(e[6]),l=t(e[7]),u=e[8]/(1<<30);return{scaleX:Math.sqrt(i*i+s*s),scaleY:Math.sqrt(n*n+o*o),rotationRad:Math.atan2(s,i),rotationDeg:Math.atan2(s,i)*180/Math.PI,translateX:a,translateY:l,perspective:u}}function fq(r,e,t){const i=(Math.round(t/90)*90+360)%360;if(i===0)return u=>u;const n=i===90||i===270,s=n?e:r,o=n?r:e,a=new OffscreenCanvas(s,o),l=a.getContext("2d");return l.translate(s/2,o/2),l.rotate(-i*Math.PI/180),l.translate(-r/2,-e/2),u=>{if(!u)return null;l.drawImage(u,0,0);const c=new VideoFrame(a,{timestamp:u.timestamp,duration:u.duration??void 0});return u.close(),c}}let Wb=0;function Vb(r){return r.kind==="file"&&r.createReader instanceof Function}class br extends Mn{type="Video";insId=Wb++;logger=Ue.create(`Video id:${this.insId},`);ready;_meta={duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0};get meta(){return{...this._meta}}localFile;headerBoxPos=[];async getFileHeaderBinData(){await this.ready;const e=await this.localFile.getOriginFile();if(e==null)throw Error("Video localFile is not origin file");return await new Blob(this.headerBoxPos.map(({start:t,size:i})=>e.slice(t,t+i))).arrayBuffer()}parsedMatrix={perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0};vfRotater=e=>e;videoSamples=[];audioSamples=[];videoFrameFinder=null;audioFrameFinder=null;decoderConf={video:null,audio:null};opts={audio:!0};audio=!0;id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];static async fromUrl(e,t={}){const i=await Lo.getReadableStream(e),n=new br(i,{},e);return await n.ready,t.x!==void 0&&(n.left=t.x),t.y!==void 0&&(n.top=t.y),t.width!==void 0&&(n.width=t.width),t.height!==void 0&&(n.height=t.height),n}constructor(e,t={},i){if(super(),this.src=i!==void 0?i:"",!(e instanceof ReadableStream)&&!Vb(e)&&!Array.isArray(e.videoSamples))throw Error("Illegal argument");this.opts={audio:!0,...t},this.audio=typeof this.opts.audio=="boolean"?this.opts.audio:!0,this.volume=typeof t.audio=="object"&&"volume"in t.audio?t.audio.volume:t.volume??1;const n=async s=>(await Vs(this.localFile,s),this.localFile);this.localFile=Vb(e)?e:"localFile"in e?e.localFile:G0(),this.ready=(e instanceof ReadableStream?n(e).then(s=>Mk(s,this.opts)):Vb(e)?Mk(e,this.opts):Promise.resolve(e)).then(async({videoSamples:s,audioSamples:o,decoderConf:a,headerBoxPos:l,parsedMatrix:u})=>{this.videoSamples=s,this.audioSamples=o,this.decoderConf=a,this.headerBoxPos=l,this.parsedMatrix=u;const{videoFrameFinder:c,audioFrameFinder:h}=mq({video:a.video==null?null:{...a.video,hardwareAcceleration:this.opts.__unsafe_hardwareAcceleration__},audio:a.audio},await this.localFile.createReader(),s,o,this.opts.audio!==!1?this.volume:0);this.videoFrameFinder=c,this.audioFrameFinder=h;const{codedWidth:d,codedHeight:f}=a.video??{};d&&f&&(this.vfRotater=fq(d,f,u.rotationDeg)),this._meta=pq(a,s,o,u.rotationDeg),this.logger.info("Video meta:",this._meta);const p={...this._meta};this.width=this.width===0?p.width:this.width,this.height=this.height===0?p.height:this.height,this.trim.to=this.trim.to===0?p.duration:Math.min(this.trim.to,p.duration),this.trim.from=Math.min(this.trim.from,this.trim.to);const m=(this.trim.to-this.trim.from)/this.playbackRate;return this.duration=this.duration===0?m:this.duration,Math.abs(this.duration-m)>1&&(this.duration=m),this.display.to=this.display.from+this.duration,this.on("propsChange",g=>{g.volume!==void 0&&this.audioFrameFinder&&this.audioFrameFinder.setVolume(g.volume)}),p})}tickInterceptor=async(e,t)=>t;async tick(e){const t=e+this.trim.from;if(t>=this.trim.to||t>=this._meta.duration)return await this.tickInterceptor(e,{audio:await this.audioFrameFinder?.find(t)??[],state:"done"});const[i,n]=await Promise.all([this.audioFrameFinder?.find(t)??[],this.videoFrameFinder?.find(t).then(this.vfRotater)]);return n==null?await this.tickInterceptor(e,{audio:i,state:"success"}):await this.tickInterceptor(e,{video:n,audio:i,state:"success"})}thumbAborter=new AbortController;thumbFinder=null;async thumbnails(e=100,t){this.thumbAborter.abort(),this.thumbAborter=new AbortController;const i=this.thumbAborter.signal;await this.ready;const n="generate thumbnails aborted";if(i.aborted)throw Error(n);const{width:s,height:o}=this._meta,a=Tq(e,Math.round(o*(e/s)),{quality:.1,type:"image/png"});return new Promise(async(l,u)=>{let c=[];const h=this.decoderConf.video;if(h==null||this.videoSamples.length===0){d();return}i.addEventListener("abort",()=>{u(Error(n))});async function d(){i.aborted||l(await Promise.all(c.map(async v=>({ts:v.ts,img:await v.img}))))}function f(v){c.push({ts:v.timestamp,img:a(v)})}const{start:p=0,end:m=this._meta.duration,step:g}=t??{};if(g){let v=p;for(this.thumbFinder&&(await this.thumbFinder.destroy(),this.thumbFinder=null),this.thumbFinder=new Ok(await this.localFile.createReader(),this.videoSamples,{...h,hardwareAcceleration:this.opts.__unsafe_hardwareAcceleration__});v<=m&&!i.aborted;){const x=await this.thumbFinder.find(v);x&&f(x),v+=g}await this.thumbFinder.destroy(),this.thumbFinder=null,d()}else await Sq(this.videoSamples,this.localFile,h,i,{start:p,end:m},(v,x)=>{v!=null&&f(v),x&&d()})})}async split(e){if(await this.ready,e<=0||e>=this._meta.duration)throw Error("time out of bounds");const[t,i]=bq(this.videoSamples,e),[n,s]=_q(this.audioSamples,e),o=new br({localFile:this.localFile,videoSamples:t??[],audioSamples:n??[],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src),a=new br({localFile:this.localFile,videoSamples:i??[],audioSamples:s??[],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);return await Promise.all([o.ready,a.ready]),[o,a]}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=new br({localFile:this.localFile,videoSamples:[...this.videoSamples],audioSamples:[...this.audioSamples],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);return await e.ready,e.tickInterceptor=this.tickInterceptor,this.copyStateTo(e),e.id=this.id,e.effects=[...this.effects],e}async splitTrack(){await this.ready;const e=[];if(this.videoSamples.length>0){const t=new br({localFile:this.localFile,videoSamples:[...this.videoSamples],audioSamples:[],decoderConf:{video:this.decoderConf.video,audio:null},headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);await t.ready,t.tickInterceptor=this.tickInterceptor,e.push(t)}if(this.audioSamples.length>0){const t=new br({localFile:this.localFile,videoSamples:[],audioSamples:[...this.audioSamples],decoderConf:{audio:this.decoderConf.audio,video:null},headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);await t.ready,t.tickInterceptor=this.tickInterceptor,e.push(t)}return e}cleanupThumbnails=async()=>{this.thumbAborter.abort(),this.thumbFinder&&(await this.thumbFinder.destroy(),this.thumbFinder=null)};destroy(){this.destroyed||(this.destroyed=!0,this.logger.info("Video destroy"),super.destroy(),this.thumbAborter.abort(),this.thumbFinder?.destroy(),this.thumbFinder=null,this.videoFrameFinder?.destroy(),this.audioFrameFinder?.destroy())}toJSON(e=!1){return{...super.toJSON(e),type:"Video",audio:this.audio,volume:this.volume,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Video")throw new Error(`Expected Video, got ${e.type}`);const t=e.audio!==void 0?{audio:e.audio,volume:e.volume}:{volume:e.volume},i=await Lo.getReadableStream(e.src),n=new br(i,t,e.src);return n.left=e.left,n.top=e.top,n.width=e.width,n.height=e.height,n.angle=e.angle,n.display.from=e.display.from,n.display.to=e.display.to,n.duration=e.duration,n.playbackRate=e.playbackRate,n.zIndex=e.zIndex,n.opacity=e.opacity,n.flip=e.flip,e.style&&(n.style={...n.style,...e.style}),e.animation&&n.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(n.id=e.id),e.effects&&(n.effects=e.effects),e.transition&&(n.transition=e.transition),e.trim&&(n.trim.from=e.trim.from<1e6?e.trim.from*1e6:e.trim.from,n.trim.to=e.trim.to<1e6?e.trim.to*1e6:e.trim.to),e.volume!==void 0&&(n.volume=e.volume),e.chromaKey&&(n.chromaKey={...n.chromaKey,...e.chromaKey}),e.locked!==void 0&&(n.locked=e.locked),n}async createPlaybackElement(){await this.ready;const t=this.localFile;if(!t||typeof t.getOriginFile!="function")throw new Error("Video does not have a local file for playback");const i=await t.getOriginFile();if(!i)throw new Error("Failed to get origin file from VideoClip");const n=URL.createObjectURL(i),s=document.createElement("video");return s.crossOrigin="anonymous",s.muted=!0,s.autoplay=!1,s.playsInline=!0,s.preload="auto",s.loop=!1,s.src=n,await new Promise((o,a)=>{const l=()=>{s.removeEventListener("loadeddata",l),s.removeEventListener("error",u),s.pause(),s.currentTime=0,o()},u=()=>{s.removeEventListener("loadeddata",l),s.removeEventListener("error",u),a(new Error("Failed to load video"))};s.addEventListener("loadeddata",l,{once:!0}),s.addEventListener("error",u,{once:!0}),s.load()}),{element:s,objectUrl:n}}async play(e,t){const i=e,n=t+this.trim.from/1e6;if(Math.abs(i.currentTime-n)>.1&&(i.currentTime=n),i.muted=!1,i.paused)try{await i.play()}catch{try{await i.play()}catch(o){console.warn("Failed to play video:",o)}}}pause(e){const t=e;t.pause(),t.muted=!0}async seek(e,t){const i=e,n=t+this.trim.from/1e6;return i.pause(),i.currentTime=n,new Promise(s=>{if(Math.abs(i.currentTime-t)<.01){s();return}const o=()=>{i.removeEventListener("seeked",o),s()};i.addEventListener("seeked",o,{once:!0}),setTimeout(()=>{i.removeEventListener("seeked",o),s()},500)})}syncPlayback(e,t,i){const n=e,s=(this.trim.to-this.trim.from)/1e6,o=i>=0&&i<s,a=i+this.trim.from/1e6;n.volume=this.volume,t&&o?n.paused?this.play(n,i).catch(console.warn):(n.muted&&(n.muted=!1),(n.ended||n.currentTime>=this.trim.to/1e6)&&(n.currentTime=a,n.play().catch(console.warn))):(n.paused||n.pause(),n.muted=!0,o&&Math.abs(n.currentTime-a)>.1&&(n.currentTime=a))}cleanupPlayback(e,t){const i=e;i.pause(),i.removeAttribute("src"),i.load(),t&&URL.revokeObjectURL(t)}async scaleToFit(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.min(e/i,t/n);this.width=i*s,this.height=n*s}async scaleToFill(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.max(e/i,t/n);this.width=i*s,this.height=n*s}centerInScene(e,t){this.left=(e-this.width)/2,this.top=(t-this.height)/2}}function pq(r,e,t,i){const n={duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0};if(r.video!=null&&e.length>0){n.width=r.video.codedWidth??0,n.height=r.video.codedHeight??0;const a=(Math.round(i/90)*90+360)%360;(a===90||a===270)&&([n.width,n.height]=[n.height,n.width])}r.audio!=null&&t.length>0&&(n.audioSampleRate=rt.sampleRate,n.audioChanCount=rt.channelCount);let s=0,o=0;if(e.length>0)for(let a=e.length-1;a>=0;a--){const l=e[a];if(!l.deleted){s=l.cts+l.duration;break}}if(t.length>0){const a=t.at(-1);o=a.cts+a.duration}return n.duration=Math.max(s,o),n}function mq(r,e,t,i,n){return{audioFrameFinder:n===0||r.audio==null||i.length===0?null:new vq(e,i,r.audio,{volume:n,targetSampleRate:rt.sampleRate}),videoFrameFinder:r.video==null||t.length===0?null:new Ok(e,t,r.video)}}async function Mk(r,e={}){let t=null;const i={video:null,audio:null};let n=[],s=[],o=[];const a={perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0};let l=-1,u=-1;const c=await r.createReader();await hq(c,async d=>{t=d.info;const f=d.mp4boxFile.ftyp;o.push({start:f.start,size:f.size});const p=d.mp4boxFile.moov;o.push({start:p.start,size:p.size}),Object.assign(a,dq(t.videoTracks[0]?.matrix));let{videoDecoderConf:m,audioDecoderConf:g}=Hb(d.mp4boxFile,d.info);if(i.video=m??null,i.audio=g??null,m==null&&g==null&&Ue.error("Video no video and audio track"),g!=null){const{supported:v}=await AudioDecoder.isConfigSupported(g);v||Ue.error(`Video audio codec is not supported: ${g.codec}`)}if(m!=null){const{supported:v}=await VideoDecoder.isConfigSupported(m);v||Ue.error(`Video video codec is not supported: ${m.codec}`)}Ue.info("mp4BoxFile moov ready",{...d.info,tracks:null,videoTracks:null,audioTracks:null},i)},(d,f,p)=>{if(f==="video"){l===-1&&(l=p[0].dts);for(const m of p)n.push(Dk(m,l,"video"))}else if(f==="audio"&&e.audio){u===-1&&(u=p[0].dts);for(const m of p)s.push(Dk(m,u,"audio"))}}),await c.close();const h=n.at(-1)??s.at(-1);if(t==null)throw Error("Video stream is done, but not emit ready");if(h==null)throw Error("Video stream not contain any sample");return Yb(n),Ue.info("mp4 stream parsed"),{videoSamples:n,audioSamples:s,decoderConf:i,headerBoxPos:o,parsedMatrix:a}}function Dk(r,e=0,t){let i=r.offset;const n=t==="video"&&r.is_sync?wq(r.data,r.description.type):-1;let s=r.size;return n>0&&(i+=n,s-=n),{...r,is_idr:n>=0,offset:i,size:s,cts:(r.cts-e)/r.timescale*1e6,dts:(r.dts-e)/r.timescale*1e6,duration:r.duration/r.timescale*1e6,timescale:1e6,data:t==="video"?null:r.data}}class Ok{constructor(e,t,i){this.localFileReader=e,this.samples=t,this.conf=i}decoder=null;timestamp=0;curAborter={abort:!1,st:performance.now()};find=async e=>{(this.decoder==null||this.decoder.state==="closed"||e<=this.timestamp||e-this.timestamp>3e6)&&this.reset(e),this.curAborter.abort=!0,this.timestamp=e,this.curAborter={abort:!1,st:performance.now()};const t=await this.parseFrame(e,this.decoder,this.curAborter);return this.sleepCnt=0,t};lastVfDur=0;downgradeSoftDecode=!1;videoDecCursorIdx=0;videoFrames=[];outputFrameCnt=0;inputChunkCnt=0;sleepCnt=0;predecodeErr=!1;parseFrame=async(e,t,i)=>{if(t==null||t.state==="closed"||i.abort)return null;if(this.videoFrames.length>0){const n=this.videoFrames[0];return e<n.timestamp?null:(this.videoFrames.shift(),e>n.timestamp+(n.duration??0)?(n.close(),await this.parseFrame(e,t,i)):(!this.predecodeErr&&this.videoFrames.length<10&&this.startDecode(t).catch(s=>{throw this.predecodeErr=!0,this.reset(e),s}),n))}if(this.decoding||this.outputFrameCnt<this.inputChunkCnt&&t.decodeQueueSize>0){if(performance.now()-i.st>6e3)throw Error(`Video.tick video timeout, ${JSON.stringify(this.getState())}`);this.sleepCnt+=1,await wu(15)}else{if(this.videoDecCursorIdx>=this.samples.length)return null;try{await this.startDecode(t)}catch(n){throw this.reset(e),n}}return await this.parseFrame(e,t,i)};decoding=!1;startDecode=async e=>{if(this.decoding||e.decodeQueueSize>600)return;let t=this.videoDecCursorIdx+1;if(t>this.samples.length)return;this.decoding=!0;let i=!1;for(;t<this.samples.length;t++){const n=this.samples[t];if(!i&&!n.deleted&&(i=!0),n.is_idr)break}if(i){const n=this.samples.slice(this.videoDecCursorIdx,t);if(n[0]?.is_idr!==!0)Ue.warn("First sample not idr frame");else{const s=performance.now(),o=await zk(n,this.localFileReader),a=performance.now()-s;if(a>1e3){const l=n[0],u=n.at(-1),c=u.offset+u.size-l.offset;Ue.warn(`Read video samples time cost: ${Math.round(a)}ms, file chunk size: ${c}`)}if(e.state==="closed")return;this.lastVfDur=o[0]?.duration??0,Xb(e,o,{onDecodingError:l=>{if(this.downgradeSoftDecode)throw l;this.outputFrameCnt===0&&(this.downgradeSoftDecode=!0,Ue.warn("Downgrade to software decode"),this.reset())}}),this.inputChunkCnt+=o.length}}this.videoDecCursorIdx=t,this.decoding=!1};reset=e=>{if(this.decoding=!1,this.videoFrames.forEach(i=>i.close()),this.videoFrames=[],e==null||e===0)this.videoDecCursorIdx=0;else{let i=0;for(let n=0;n<this.samples.length;n++){const s=this.samples[n];if(s.is_idr&&(i=n),!(s.cts<e)){this.videoDecCursorIdx=i;break}}}this.inputChunkCnt=0,this.outputFrameCnt=0,this.decoder?.state!=="closed"&&this.decoder?.close();const t={...this.conf,...this.downgradeSoftDecode?{hardwareAcceleration:"prefer-software"}:{}};this.decoder=new VideoDecoder({output:i=>{if(this.outputFrameCnt+=1,i.timestamp===-1){i.close();return}let n=i;i.duration==null&&(n=new VideoFrame(i,{duration:this.lastVfDur}),i.close()),this.videoFrames.push(n)},error:i=>{if(i.message.includes("Codec reclaimed due to inactivity")){this.decoder=null,Ue.warn(i.message);return}const n=`VideoFinder VideoDecoder err: ${i.message}, config: ${JSON.stringify(t)}, state: ${JSON.stringify(this.getState())}`;throw Ue.error(n),Error(n)}}),this.decoder.configure(t)};getState=()=>({time:this.timestamp,decState:this.decoder?.state,decQSize:this.decoder?.decodeQueueSize,decCursorIdx:this.videoDecCursorIdx,sampleLen:this.samples.length,inputCnt:this.inputChunkCnt,outputCnt:this.outputFrameCnt,cacheFrameLen:this.videoFrames.length,softDecode:this.downgradeSoftDecode,clipIdCnt:Wb,sleepCnt:this.sleepCnt,memInfo:Lk()});destroy=async()=>{if(this.curAborter.abort=!0,this.videoFrames.forEach(e=>e.close()),this.videoFrames=[],this.decoder&&this.decoder.state!=="closed"){try{await this.decoder.flush()}catch{}try{this.decoder.close()}catch{}}this.decoder=null,this.localFileReader.close()}}function gq(r,e){for(let t=0;t<e.length;t++){const i=e[t];if(r>=i.cts&&r<i.cts+i.duration)return t;if(i.cts>r)break}return 0}class vq{constructor(e,t,i,n){this.localFileReader=e,this.samples=t,this.conf=i,this.volume=n.volume,this.sampleRate=n.targetSampleRate}volume=1;sampleRate;setVolume(e){this.volume=e,this.reset()}decoder=null;curAborter={abort:!1,st:performance.now()};find=async e=>{const t=e<=this.timestamp||e-this.timestamp>1e5;(this.decoder==null||this.decoder.state==="closed"||t)&&this.reset(),t&&(this.timestamp=e,this.decCursorIdx=gq(e,this.samples)),this.curAborter.abort=!0;const i=e-this.timestamp;this.timestamp=e,this.curAborter={abort:!1,st:performance.now()};const n=await this.parseFrame(Math.ceil(i*(this.sampleRate/1e6)),this.decoder,this.curAborter);return this.sleepCnt=0,n};timestamp=0;decCursorIdx=0;pcmData={frameCnt:0,data:[]};sleepCnt=0;parseFrame=async(e,t=null,i)=>{if(t==null||i.abort||t.state==="closed"||e===0)return[];const n=this.pcmData.frameCnt-e;if(n>0)return n<rt.sampleRate/10&&this.startDecode(t),Uk(this.pcmData,e);if(t.decoding){if(performance.now()-i.st>3e3)throw i.abort=!0,Error(`Video.tick audio timeout, ${JSON.stringify(this.getState())}`);this.sleepCnt+=1,await wu(15)}else{if(this.decCursorIdx>=this.samples.length-1)return Uk(this.pcmData,this.pcmData.frameCnt);this.startDecode(t)}return this.parseFrame(e,t,i)};startDecode=e=>{if(e.decodeQueueSize>10)return;const i=[];let n=this.decCursorIdx;for(;n<this.samples.length;){const s=this.samples[n];if(n+=1,!s.deleted&&(i.push(s),i.length>=10))break}this.decCursorIdx=n,e.decode(i.map(s=>new EncodedAudioChunk({type:"key",timestamp:s.cts,duration:s.duration,data:s.data})))};reset=()=>{this.timestamp=0,this.decCursorIdx=0,this.pcmData={frameCnt:0,data:[]},this.decoder?.close(),this.decoder=xq(this.conf,{resampleRate:rt.sampleRate,volume:this.volume},e=>{this.pcmData.data.push(e),this.pcmData.frameCnt+=e[0].length})};getState=()=>({time:this.timestamp,decState:this.decoder?.state,decQSize:this.decoder?.decodeQueueSize,decCursorIdx:this.decCursorIdx,sampleLen:this.samples.length,pcmLen:this.pcmData.frameCnt,clipIdCnt:Wb,sleepCnt:this.sleepCnt,memInfo:Lk()});destroy=()=>{this.decoder=null,this.curAborter.abort=!0,this.pcmData={frameCnt:0,data:[]},this.localFileReader.close()}}function xq(r,e,t){let i=0,n=0;const s=c=>{if(n+=1,c.length!==0){if(e.volume!==1)for(const h of c)for(let d=0;d<h.length;d++)h[d]*=e.volume;c.length===1&&(c=[c[0],c[0]]),t(c)}},o=yq(s),a=e.resampleRate!==r.sampleRate;let l=new AudioDecoder({output:c=>{const h=$w(c);a?o(()=>uL(h,c.sampleRate,{rate:e.resampleRate,chanCount:c.numberOfChannels})):s(h),c.close()},error:c=>{c.message.includes("Codec reclaimed due to inactivity")||u("Video AudioDecoder err",c)}});l.configure(r);function u(c,h){const d=`${c}: ${h.message}, state: ${JSON.stringify({qSize:l.decodeQueueSize,state:l.state,inputCnt:i,outputCnt:n})}`;throw Ue.error(d),Error(d)}return{decode(c){i+=c.length;try{for(const h of c)l.decode(h)}catch(h){u("decode audio chunk error",h)}},close(){l.state!=="closed"&&l.close()},get decoding(){return i>n&&l.decodeQueueSize>0},get state(){return l.state},get decodeQueueSize(){return l.decodeQueueSize}}}function yq(r){const e=[];let t=0;function i(o,a){e[a]=o,n()}function n(){const o=e[t];o!=null&&(r(o),t+=1,n())}let s=0;return o=>{const a=s;s+=1,o().then(l=>i(l,a)).catch(l=>i(l,a))}}function Uk(r,e){const t=[new Float32Array(e),new Float32Array(e)];let i=0,n=0;for(;n<r.data.length;){const[s,o]=r.data[n];if(i+s.length>e){const a=e-i;t[0].set(s.subarray(0,a),i),t[1].set(o.subarray(0,a),i),r.data[n][0]=s.subarray(a,s.length),r.data[n][1]=o.subarray(a,o.length);break}else t[0].set(s,i),t[1].set(o,i),i+=s.length,n++}return r.data=r.data.slice(n),r.frameCnt-=e,t}async function zk(r,e){const t=r[0],i=r.at(-1);if(i==null)return[];const n=i.offset+i.size-t.offset;if(n<3e7){const s=new Uint8Array(await e.read(n,{at:t.offset}));return r.map(o=>{const a=o.offset-t.offset;return new EncodedVideoChunk({type:o.is_sync?"key":"delta",timestamp:o.cts,duration:o.duration,data:s.subarray(a,a+o.size)})})}return await Promise.all(r.map(async s=>new EncodedVideoChunk({type:s.is_sync?"key":"delta",timestamp:s.cts,duration:s.duration,data:await e.read(s.size,{at:s.offset})})))}function bq(r,e){if(r.length===0)return[];let t=0,i=0,n=-1;for(let l=0;l<r.length;l++){const u=r[l];if(n===-1&&e<u.cts&&(n=l-1),u.is_idr)if(n===-1)t=l;else{i=l;break}}const s=r[n];if(s==null)throw Error("Not found video sample by time");const o=r.slice(0,i===0?r.length:i).map(l=>({...l}));for(let l=t;l<o.length;l++){const u=o[l];e<u.cts&&(u.deleted=!0,u.cts=-1)}Yb(o);const a=r.slice(s.is_idr?n:t).map(l=>({...l,cts:l.cts-e}));for(const l of a)l.cts<0&&(l.deleted=!0,l.cts=-1);return Yb(a),[o,a]}function _q(r,e){if(r.length===0)return[];let t=-1;for(let s=0;s<r.length;s++){const o=r[s];if(!(e>o.cts)){t=s;break}}if(t===-1)throw Error("Not found audio sample by time");const i=r.slice(0,t).map(s=>({...s})),n=r.slice(t).map(s=>({...s,cts:s.cts-e}));return[i,n]}function Xb(r,e,t){if(r.state==="configured"){for(let i=0;i<e.length;i++)r.decode(e[i]);r.flush().catch(i=>{if(!(i instanceof Error))throw i;if(i.message.includes("Decoding error")&&t.onDecodingError!=null){t.onDecodingError(i);return}if(!i.message.includes("Aborted due to close"))throw i})}}function wq(r,e){if(e!=="avc1"&&e!=="hvc1")return 0;const t=new DataView(r.buffer);for(let i=0;i<r.byteLength-4;){if(e==="avc1"){const n=t.getUint8(i+4)&31;if(n===5||n===7||n===8)return i}else if(e==="hvc1"){const n=t.getUint8(i+4)>>1&63;if(n===19||n===20||n===32||n===33||n===34)return i}i+=t.getUint32(i)+4}return-1}function Yb(r){let e=0,t=null;for(const i of r)if(!i.deleted){if(i.is_sync&&(e+=1),e>=2)break;(t==null||i.cts<t.cts)&&(t=i)}t!=null&&t.cts<2e5&&(t.duration+=t.cts,t.cts=0)}function Lk(){try{const r=performance.memory;return{jsHeapSizeLimit:r.jsHeapSizeLimit,totalJSHeapSize:r.totalJSHeapSize,usedJSHeapSize:r.usedJSHeapSize,percentUsed:(r.usedJSHeapSize/r.jsHeapSizeLimit).toFixed(3),percentTotal:(r.totalJSHeapSize/r.jsHeapSizeLimit).toFixed(3)}}catch{return{}}}async function Sq(r,e,t,i,n,s){const o=await e.createReader(),a=await zk(r.filter(c=>!c.deleted&&c.is_sync&&c.cts>=n.start&&c.cts<=n.end),o);if(a.length===0||i.aborted){s(null,!0);return}let l=0;Xb(u(),a,{onDecodingError:c=>{Ue.warn("thumbnailsByKeyFrame",c),l===0?Xb(u(!0),a,{onDecodingError:h=>{o.close(),Ue.error("thumbnailsByKeyFrame retry soft deocde",h)}}):(s(null,!0),o.close())}});function u(c=!1){const h={...t,...c?{hardwareAcceleration:"prefer-software"}:{}},d=new VideoDecoder({output:f=>{l+=1;const p=l===a.length;s(f,p),p&&(o.close(),d.state!=="closed"&&d.close())},error:f=>{const p=`thumbnails decoder error: ${f.message}, config: ${JSON.stringify(h)}, state: ${JSON.stringify({qSize:d.decodeQueueSize,state:d.state,outputCnt:l,inputCnt:a.length})}`;throw Ue.error(p),Error(p)}});return i.addEventListener("abort",()=>{o.close(),d.state!=="closed"&&d.close()}),d.configure(h),d}}function Tq(r,e,t){const i=new OffscreenCanvas(r,e),n=i.getContext("2d");return async s=>(n.drawImage(s,0,0,r,e),s.close(),await i.convertToBlob(t))}class Ki extends Mn{type="Text";ready;_meta={duration:1/0,width:0,height:0};get meta(){return{...this._meta}}get width(){return this._width}set width(e){Math.abs(this.width-e)<.1||(this._width=e,this.refreshText().then(()=>{this.emit("propsChange",{width:e})}))}get height(){return this._height}set height(e){Math.abs(this.height-e)<.1||(this._height=e,this.refreshText().then(()=>{this.emit("propsChange",{height:e})}))}_lastContentWidth=0;_lastContentHeight=0;_text="";get text(){return this._text}set text(e){this._text!==e&&(this._text=e,this.originalOpts&&this.textStyle&&this.refreshText().then(()=>{this.emit("propsChange",{text:e})}))}get style(){return{fontSize:this.originalOpts.fontSize,fontFamily:this.originalOpts.fontFamily,fontWeight:this.originalOpts.fontWeight,fontStyle:this.originalOpts.fontStyle,fill:this.originalOpts.fill,align:this.originalOpts.align,stroke:this.originalOpts.stroke?typeof this.originalOpts.stroke=="object"?{color:this.originalOpts.stroke.color,width:this.originalOpts.stroke.width,join:this.originalOpts.stroke.join,cap:this.originalOpts.stroke.cap,miterLimit:this.originalOpts.stroke.miterLimit}:{color:this.originalOpts.stroke,width:this.originalOpts.strokeWidth??0}:void 0,dropShadow:this.originalOpts.dropShadow?{color:this.originalOpts.dropShadow.color??"#000000",alpha:this.originalOpts.dropShadow.alpha??.5,blur:this.originalOpts.dropShadow.blur??4,distance:this.originalOpts.dropShadow.distance??0,angle:this.originalOpts.dropShadow.angle??0}:void 0,wordWrap:this.originalOpts.wordWrap,wordWrapWidth:this.originalOpts.wordWrapWidth,lineHeight:this.originalOpts.lineHeight,letterSpacing:this.originalOpts.letterSpacing,textCase:this.originalOpts.textCase,textDecoration:this.originalOpts.textDecoration}}set style(e){this.updateStyle(e)}get textAlign(){return this.originalOpts.align||this.originalOpts.textAlign||"left"}set textAlign(e){this.updateStyle({align:e})}get verticalAlign(){return this.originalOpts.verticalAlign||this.originalOpts.textDecoration||"top"}set verticalAlign(e){["underline","overline","strikethrough","line-through"].includes(e)?(this.updateStyle({textDecoration:e==="strikethrough"?"line-through":e}),this.originalOpts.verticalAlign=e):this.updateStyle({verticalAlign:e})}get textCase(){return this.originalOpts.textCase||"none"}set textCase(e){this.updateStyle({textCase:e})}pixiTextContainer=null;wordTexts=[];textStyle;textStyleBase;renderTexture=null;externalRenderer=null;pixiApp=null;originalOpts;id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];constructor(e,t={},i){super(),this.originalOpts={...t},this.text=e,this.externalRenderer=i??null;const n=this.createStyleFromOpts(t),{wordWrap:s,wordWrapWidth:o,lineHeight:a,letterSpacing:l,fill:u,...c}=n,h=new It(n),d=new It(c);this.textStyle=h,this.textStyleBase=d,this.ready=(async()=>(await this.refreshText(),{...this._meta}))()}setRenderer(e){this.externalRenderer=e}async getRenderer(){if(this.externalRenderer!=null)return this.externalRenderer;if(this.pixiApp?.renderer==null)throw new Error("TextClip: Failed to create renderer. Please provide a renderer via constructor or setRenderer() method.");return this.pixiApp.renderer}async getTexture(){return this.pixiTextContainer==null||this.renderTexture==null?null:((await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture}),this.renderTexture)}async tick(e){if(await this.ready,this.pixiTextContainer==null||this.renderTexture==null)throw new Error("Text not initialized");if(this.renderTexture.width<=0||this.renderTexture.height<=0)throw new Error(`Invalid RenderTexture dimensions: ${this.renderTexture.width}x${this.renderTexture.height}`);(await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture});const i=this.renderTexture.source?.resource?.source;let n;if(i instanceof HTMLCanvasElement)n=await createImageBitmap(i);else if(i instanceof OffscreenCanvas)n=await createImageBitmap(i);else{const a=(await this.getRenderer()).extract.canvas(this.renderTexture);if(a instanceof HTMLCanvasElement||a instanceof OffscreenCanvas)n=await createImageBitmap(a);else{const l=this.renderTexture.width,u=this.renderTexture.height;throw new OffscreenCanvas(l,u).getContext("2d")==null?new Error("Failed to create 2d context for fallback rendering"):new Error("Unable to extract canvas from render texture")}}return{video:n,state:"success"}}async split(e){await this.ready;const t=await this.clone(),i=await this.clone();return[t,i]}animate(e){super.animate(e,this.pixiTextContainer)}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=this.textStyle,t=this.originalOpts||{},i=o=>{if(o!=null){if(typeof o=="number")return o;if(o instanceof ye)return o.toNumber()}},n={fontSize:t.fontSize??e.fontSize,fontFamily:t.fontFamily??(Array.isArray(e.fontFamily)?e.fontFamily[0]:typeof e.fontFamily=="string"?e.fontFamily:"Roboto"),fontWeight:t.fontWeight??e.fontWeight,fontStyle:t.fontStyle??e.fontStyle,align:t.align??(e.align==="justify"?"left":e.align),textCase:t.textCase,textDecoration:t.textDecoration};if(t.fill&&typeof t.fill=="object"&&"type"in t.fill&&t.fill.type==="gradient")n.fill=t.fill;else{const o=i(e.fill);n.fill=o??16777215}if(t.stroke&&typeof t.stroke=="object"&&"color"in t.stroke)n.stroke=t.stroke;else{const o=i(e.stroke);o!==void 0&&(n.stroke=o),n.strokeWidth=t.strokeWidth??e.strokeThickness??0}if(t.dropShadow)n.dropShadow=t.dropShadow;else if(e.dropShadow){const o=e.dropShadow,a=i(o.color);a!==void 0&&(n.dropShadow={color:a,alpha:o.alpha,blur:o.blur,angle:o.angle,distance:o.distance})}if(t.wordWrap!==void 0?(n.wordWrap=t.wordWrap,n.wordWrapWidth=t.wordWrapWidth):e.wordWrap&&(n.wordWrap=e.wordWrap,n.wordWrapWidth=e.wordWrapWidth),t.lineHeight!==void 0)n.lineHeight=t.lineHeight;else if(e.lineHeight!==void 0){const o=n.fontSize??e.fontSize??40;n.lineHeight=e.lineHeight/o}t.letterSpacing!==void 0?n.letterSpacing=t.letterSpacing:e.letterSpacing!==void 0&&(n.letterSpacing=e.letterSpacing);const s=new Ki(this.text,n);return await s.ready,this.copyStateTo(s),s.id=this.id,s.effects=[...this.effects],s}async updateStyle(e){let t={...e};e.style&&(t={...t,...e.style},delete t.style),this.originalOpts={...this.originalOpts,...t};const i=this.createStyleFromOpts(this.originalOpts),{wordWrap:n,wordWrapWidth:s,lineHeight:o,letterSpacing:a,fill:l,...u}=i,c=new It(u),h=new It(i);this.textStyle=h,this.textStyleBase=c,await this.refreshText(),this.emit("propsChange",e)}async refreshText(){const e=this.textStyle,t=this.textStyleBase;let i=this.text;const n=this.originalOpts.textCase;n==="uppercase"?i=i.toUpperCase():n==="lowercase"?i=i.toLowerCase():n==="title"&&(i=i.replace(/\w\S*/g,k=>k.charAt(0).toUpperCase()+k.substring(1).toLowerCase())),typeof document<"u"&&await document.fonts.ready,this.pixiTextContainer?this.pixiTextContainer.removeChildren():this.pixiTextContainer=new Pe;const s=i.split(/\s+/).filter(k=>k.length>0);this.wordTexts.forEach(k=>k.destroy()),this.wordTexts=s.map(k=>{const Y=new Il({text:k,style:this.textStyle});return this.pixiTextContainer.addChild(Y),Y});const o=this.originalOpts.textDecoration||this.originalOpts.verticalAlign,a=this.originalOpts.lineHeight??1,l=e.fontSize??40,u=l*a,c=Ht.measureText(" ",t),h=new Il({text:" ",style:this.textStyleBase}),d=Math.ceil(h.getLocalBounds().width||h.width||c.width);h.destroy();const f=e.wordWrap&&e.wordWrapWidth>0?e.wordWrapWidth:1e5,p=[];let m=[],g=0,v=0;this.wordTexts.forEach(k=>{const Y=k.getLocalBounds(),H=Math.ceil(Y.width||k.width),$=Math.ceil(Y.height||k.height),K=g+(g>0?d:0)+H;K<=f||m.length===0?(m.push(k),g=K,v=Math.max(v,$)):(m.length>0&&p.push({words:m,width:g,height:Math.max(v,u)}),m=[k],g=H,v=$)}),m.length>0&&p.push({words:m,width:g,height:Math.max(v,u)});let x=0,y=0;p.forEach(k=>{x=Math.max(x,k.width),y+=k.height});const b=x,T=y;let P=b;e.wordWrap&&e.wordWrapWidth>0&&(P=Math.max(P,e.wordWrapWidth));const A=T,E=this.width===0||Math.abs(this.width-this._lastContentWidth)<.1,_=this.height===0||Math.abs(this.height-this._lastContentHeight)<.1,S=E?P:Math.max(P,this.width||0),I=_?A:Math.max(A,this.height||0);this._lastContentWidth=P,this._lastContentHeight=A;let M=0;const O=this.originalOpts.verticalAlign||"top";O==="center"?M=(I-T)/2:O==="bottom"&&(M=I-T);let U=M;const X=new Ze;let D=!1;p.forEach(k=>{let Y=0;const H=this.textAlign;H==="center"?Y=(S-k.width)/2:H==="right"&&(Y=S-k.width);const $=Y;if(k.words.forEach((K,we)=>{K.x=Math.round(Y),K.y=Math.round(U),Y+=(K.getLocalBounds().width||K.width)+(we<k.words.length-1?d:0)}),o&&o!=="none"&&["underline","overline","strikethrough","line-through"].includes(o)){D=!0;const K=o==="strikethrough"?"line-through":o,we=Math.max(1,l/12);let Ie=16777215;typeof e.fill=="number"?Ie=e.fill:e.fill&&typeof e.fill=="object"&&"fill"in e.fill&&(Ie=16777215);let ve=0;K==="underline"?ve=k.height:K==="line-through"?ve=k.height/2:K==="overline"&&(ve=0),X.rect($,U+ve,k.width,we),X.fill(Ie)}U+=k.height}),D&&this.pixiTextContainer.addChild(X),this.renderTexture&&this.renderTexture.destroy(),this.renderTexture=Ot.create({width:S,height:I}),this._meta.width=S,this._meta.height=I,this._width=S,this._height=I,this.duration===0&&this._meta.duration!==1/0&&(this.duration=this._meta.duration,this.display.to=this.display.from+this.duration)}createStyleFromOpts(e){const t=e.fontSize??40,i=e.lineHeight??1,n={fontSize:t,fontFamily:e.fontFamily??"Roboto",fontWeight:e.fontWeight??"normal",fontStyle:e.fontStyle??"normal",align:e.align??"left",wordWrap:e.wordWrap??!1,wordWrapWidth:e.wordWrapWidth??100,lineHeight:t*i,letterSpacing:e.letterSpacing??0};if(e.fill&&typeof e.fill=="object"&&e.fill.type==="gradient"){const s=new Dr(e.fill.x0,e.fill.y0,e.fill.x1,e.fill.y1);e.fill.colors.forEach(({ratio:o,color:a})=>{const l=typeof a=="number"?a:yt(a)??16777215;s.addColorStop(o,l)}),n.fill={fill:s}}else{const{color:s,alpha:o}=Dn(e.fill);n.fill=s,o<1&&(n.fillAlpha=o)}if(e.stroke&&typeof e.stroke=="object"&&"color"in e.stroke){const s=yt(e.stroke.color);s!==void 0&&(n.stroke={color:s,width:e.stroke.width,join:e.stroke.join,cap:e.stroke.cap,miterLimit:e.stroke.miterLimit})}else{const s=yt(e.stroke),o=e.strokeWidth??0;s!==void 0&&o>0?n.stroke={color:s,width:o}:e.strokeWidth&&e.strokeWidth>0&&(n.stroke={color:0,width:e.strokeWidth})}if(e.dropShadow){const s=yt(e.dropShadow.color);s!==void 0&&(n.dropShadow={color:s,alpha:e.dropShadow.alpha??.5,blur:e.dropShadow.blur??4,angle:e.dropShadow.angle??Math.PI/6,distance:e.dropShadow.distance??2})}return n}destroy(){if(!this.destroyed){Ue.info("Text destroy");try{this.pixiTextContainer!=null&&(this.pixiTextContainer.destroyed||this.pixiTextContainer.destroy({children:!0}))}catch{}finally{this.pixiTextContainer=null}try{this.renderTexture!=null&&this.renderTexture.destroyed!==!0&&this.renderTexture.destroy(!0)}catch{}finally{this.renderTexture=null}if(this.externalRenderer=null,this.pixiApp!=null)try{const e=this.pixiApp;e.destroyed!==!0&&e.renderer!=null&&this.pixiApp.destroy(!0,{children:!0,texture:!0})}catch{}finally{this.pixiApp=null}super.destroy()}}toJSON(e=!1){const t=super.toJSON(e),i={};return this.originalOpts.fontSize!==void 0&&(i.fontSize=this.originalOpts.fontSize),this.originalOpts.fontFamily!==void 0&&(i.fontFamily=this.originalOpts.fontFamily),this.originalOpts.fontWeight!==void 0&&(i.fontWeight=this.originalOpts.fontWeight),this.originalOpts.fontStyle!==void 0&&(i.fontStyle=this.originalOpts.fontStyle),this.originalOpts.fill!==void 0&&(i.color=this.originalOpts.fill),this.originalOpts.align!==void 0&&(i.align=this.originalOpts.align),this.originalOpts.wordWrap!==void 0&&(i.wordWrap=this.originalOpts.wordWrap),this.originalOpts.wordWrapWidth!==void 0&&(i.wordWrapWidth=this.originalOpts.wordWrapWidth),this.originalOpts.lineHeight!==void 0&&(i.lineHeight=this.originalOpts.lineHeight),this.originalOpts.letterSpacing!==void 0&&(i.letterSpacing=this.originalOpts.letterSpacing),this.originalOpts.stroke&&(typeof this.originalOpts.stroke=="object"?i.stroke={color:this.originalOpts.stroke.color,width:this.originalOpts.stroke.width,join:this.originalOpts.stroke.join,cap:this.originalOpts.stroke.cap,miterLimit:this.originalOpts.stroke.miterLimit}:i.stroke={color:this.originalOpts.stroke,width:this.originalOpts.strokeWidth??0}),this.originalOpts.dropShadow&&(i.shadow={color:this.originalOpts.dropShadow.color??"#000000",alpha:this.originalOpts.dropShadow.alpha??.5,blur:this.originalOpts.dropShadow.blur??4,distance:this.originalOpts.dropShadow.distance??0,angle:this.originalOpts.dropShadow.angle??0}),{...t,type:"Text",text:this.text,style:i,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Text")throw new Error(`Expected Text, got ${e.type}`);const t=e.text||"",i=e.style||{},n={};i.fontSize!==void 0&&(n.fontSize=i.fontSize),i.fontFamily!==void 0&&(n.fontFamily=i.fontFamily),i.fontWeight!==void 0&&(n.fontWeight=i.fontWeight),i.fontStyle!==void 0&&(n.fontStyle=i.fontStyle),i.color!==void 0&&(n.fill=i.color),i.align!==void 0&&(n.align=i.align),i.wordWrap!==void 0&&(n.wordWrap=i.wordWrap),i.wordWrapWidth!==void 0&&(n.wordWrapWidth=i.wordWrapWidth),i.lineHeight!==void 0&&(n.lineHeight=i.lineHeight),i.letterSpacing!==void 0&&(n.letterSpacing=i.letterSpacing),i.stroke&&(i.stroke.join||i.stroke.cap||i.stroke.miterLimit!==void 0?n.stroke={color:i.stroke.color,width:i.stroke.width,join:i.stroke.join,cap:i.stroke.cap,miterLimit:i.stroke.miterLimit}:(n.stroke=i.stroke.color,n.strokeWidth=i.stroke.width)),i.shadow&&(n.dropShadow={color:i.shadow.color,alpha:i.shadow.alpha,blur:i.shadow.blur,distance:i.shadow.distance,angle:i.shadow.angle});const s=new Ki(t,n);return s.left=e.left,s.top=e.top,s.width=e.width,s.height=e.height,s.angle=e.angle,s.display.from=e.display.from,s.display.to=e.display.to,s.duration=e.duration,s.playbackRate=e.playbackRate,s.zIndex=e.zIndex,s.opacity=e.opacity,s.flip=e.flip,e.animation&&s.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(s.id=e.id),e.effects&&(s.effects=e.effects),await s.ready,s}getVisibleHandles(){return["mr","mb","br","rot"]}}class Qi extends Mn{type="Effect";ready;_meta={duration:5e6,width:0,height:0};get meta(){return{...this._meta}}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effect;constructor(e){super(),this.effect={id:`eff_${Date.now()}`,key:e,name:e},this.ready=Promise.resolve(this._meta),this.duration=this._meta.duration}async clone(){const e=new Qi(this.effect.key);return this.copyStateTo(e),e.effect={...this.effect},e.id=this.id,e}async tick(e){return{video:void 0,state:"success"}}async split(e){const t=await this.clone(),i=await this.clone();return[t,i]}toJSON(e=!1){return{...super.toJSON(e),type:"Effect",effect:this.effect,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Effect")throw new Error(`Expected Effect, got ${e.type}`);const t=new Qi(e.effect.key);return t.effect=e.effect,t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),await t.ready,t}}class kl extends Mn{type="Placeholder";meta={width:0,height:0,duration:0};constructor(e,t={},i="Placeholder"){super(),this.type=i,this.src=e,this.meta={width:t.width||1280,height:t.height||720,duration:t.duration||5e6},this.width=this.meta.width,this.height=this.meta.height,this.duration=this.meta.duration,this.trim.to=this.duration,this.display.to=this.display.from+this.duration,this.ready=Promise.resolve(this.meta)}placeholderFrame=null;async tick(e){if(!this.placeholderFrame){const t=document.createElement("canvas");t.width=this.meta.width,t.height=this.meta.height;const i=t.getContext("2d");i&&(i.fillStyle="#1e1e1e",i.fillRect(0,0,t.width,t.height),i.fillStyle="#ffffff",i.font=`${Math.floor(t.height/10)}px sans-serif`,i.textAlign="center",i.textBaseline="middle",i.fillText("Loading...",t.width/2,t.height/2),i.strokeStyle="#333333",i.lineWidth=10,i.strokeRect(0,0,t.width,t.height)),this.placeholderFrame=await createImageBitmap(t)}return{video:this.placeholderFrame,state:e>=this.duration?"done":"success",audio:[]}}async clone(){const e=new kl(this.src,this.meta);return this.copyStateTo(e),e.id=this.id,e}async split(e){const t=await this.clone(),i=await this.clone();return t.trim.to=e+this.trim.from,i.trim.from=e+this.trim.from,t.duration=t.trim.to-t.trim.from,i.duration=i.trim.to-i.trim.from,t.display.to=t.display.from+t.duration,i.display.from=t.display.to,i.display.to=i.display.from+i.duration,[t,i]}static async fromObject(e){if(e.type!=="Placeholder")throw new Error(`Expected Placeholder, got ${e.type}`);const t=new kl(e.src,{width:e.width,height:e.height,duration:e.duration});return t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.id&&(t.id=e.id),await t.ready,t}}class Bi extends Mn{type="Transition";ready;_meta={duration:2e6,width:0,height:0};get meta(){return{...this._meta}}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;transitionEffect;fromClipId=null;toClipId=null;constructor(e){super(),this.transitionEffect={id:`trans_${Date.now()}`,key:e,name:e},this.ready=Promise.resolve(this._meta),this.duration=this._meta.duration}async clone(){const e=new Bi(this.transitionEffect.key);return this.copyStateTo(e),e.fromClipId=this.fromClipId,e.toClipId=this.toClipId,e}async tick(e){return{video:void 0,state:"success"}}async split(e){const t=await this.clone(),i=await this.clone();return[t,i]}toJSON(e=!1){return{...super.toJSON(e),type:"Transition",transitionEffect:this.transitionEffect,fromClipId:this.fromClipId,toClipId:this.toClipId,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Transition")throw new Error(`Expected Transition, got ${e.type}`);const t=new Bi(e.transitionEffect.key);return t.transitionEffect=e.transitionEffect,t.fromClipId=e.fromClipId||null,t.toClipId=e.toClipId||null,t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),await t.ready,t}}function Nk(r,e){let t=!1;async function i(){const n=r.getReader();for(;!t;){const{value:s,done:o}=await n.read();if(o){e.onDone();return}await e.onChunk(s)}n.releaseLock(),await r.cancel()}return i().catch(console.error),()=>{t=!0}}class Gk{readable;writable;inputBufOffset=0;isStreamCancelled=!1;constructor(){const e=qn.createFile();this.readable=new ReadableStream({start:t=>this.initMP4Box(e,t),cancel:()=>{this.isStreamCancelled=!0,e.stop()}},{highWaterMark:50}),this.writable=new WritableStream({write:async t=>{if(this.isStreamCancelled)throw new Error("Stream cancelled");const i=t.buffer;i.fileStart=this.inputBufOffset,this.inputBufOffset+=i.byteLength,e.appendBuffer(i)},close:()=>{e.flush(),e.stop(),e.onFlush?.()},abort:t=>{Cq.error("SampleTransform writable aborted:",t),e.stop()}})}initMP4Box(e,t){e.onReady=n=>{[n.videoTracks[0],n.audioTracks[0]].forEach(s=>{s&&e.setExtractionOptions(s.id,s.video?"video":"audio",{nbSamples:100})}),t.enqueue({chunkType:"ready",data:{info:n,file:e}}),e.start()};const i={};e.onSamples=(n,s,o)=>{const a=o.map(l=>({...l}));t.enqueue({chunkType:"samples",data:{id:n,type:s,samples:a}}),i[n]=(i[n]??0)+o.length,e.releaseUsedSamples(n,i[n])},e.onFlush=()=>{t.close()},e.onError=n=>{t.error(new Error(`mp4box error: ${n}`))}}}const Cq={error:(...r)=>console.error("[SampleTransform]",...r)};function Aq(r){let e=0;const t=r.boxes,i=[];let n=0;async function s(){const p=f(t,e);e=t.length,i.forEach(({track:m,id:g})=>{const v=m.samples.at(-1);v!=null&&(n=Math.max(n,v.cts+v.duration)),r.releaseUsedSamples(g,m.samples.length),m.samples=[]}),r.mdats=[],r.moofs=[],p!=null&&await c?.write(p)}let o=[];function a(){if(o.length>0)return!0;const p=t.findIndex(m=>m.type==="moov");if(p===-1)return!1;if(o=t.slice(0,p+1),e=p+1,i.length===0)for(let m=1;;m+=1){const g=r.getTrackById(m);if(g==null)break;i.push({track:g,id:m})}return!0}let l=0;const u=G0();let c=null;const h=(async()=>{c=await u.createWriter(),l=self.setInterval(()=>{a()&&s()},100)})();let d=!1;return async()=>{if(d)throw Error("File exported");if(d=!0,await h,clearInterval(l),!a()||c==null)return null;r.flush(),await s(),await c?.close();const p=o.find(v=>v.type==="moov");if(p==null)return null;p.mvhd.duration=n;const m=G0(),g=f(o,0);return await Vs(m,g.slice()),await Vs(m,u,{overwrite:!1}),await m.stream()};function f(p,m){if(m>=p.length)return null;const g=new qn.DataStream;for(let v=m;v<p.length;v++)p[v]!==null&&(p[v].write(g),delete p[v]);return new Uint8Array(g.buffer).slice()}}function Eq(r){const e=new ArrayBuffer(r.byteLength);r.copyTo(e);const t=r.timestamp;return{duration:r.duration??0,dts:t,cts:t,is_sync:r.type==="key",data:e}}async function Hk(r){const e=qn.createFile(),t=Aq(e);await Pq(r,e);const i=await t();if(i==null)throw Error("Can not generate file from streams");return i}async function Pq(r,e){let t=0,i=0,n=0,s=0,o=0,a=0,l=null,u=null;for(const c of r){let h=null,d=null,f=null,p=null;if(await new Promise(async m=>{Nk(c.pipeThrough(new Gk),{onDone:m,onChunk:async({chunkType:g,data:v})=>{if(g==="ready"){const{videoTrackConf:x,audioTrackConf:y}=Hb(v.file,v.info);t===0&&x!=null&&(t=e.addTrack(x)),s===0&&y!=null&&(s=e.addTrack(y))}else if(g==="samples"){const{type:x,samples:y}=v,b=x==="video"?t:s,T=x==="video"?i:o,P=x==="video"?n:a;y.forEach(E=>{let _,S;x==="video"?(h===null&&(h=E.dts,d=E.cts),_=E.dts-h,S=E.cts-(d??0)):(f===null&&(f=E.dts,p=E.cts),_=E.dts-f,S=E.cts-(p??0)),e.addSample(b,new Uint8Array(E.data),{duration:E.duration,dts:_+T,cts:S+P,is_sync:E.is_sync})});const A=y.at(-1);if(A==null)return;x==="video"?l=A:x==="audio"&&(u=A)}}})}),l!=null&&h!==null&&d!==null){const m=l.dts-h+l.duration,g=l.cts-d+l.duration;i+=m,n+=g}if(u!=null&&l!=null){const m=u.timescale/l.timescale;o=Math.round(i*m),a=Math.round(n*m)}}}async function Iq(r){return await Hk([r])}function Bq(r){let e=[];const t=new AudioDecoder({output:i=>{e.push(i)},error:Ue.error});return t.configure(r),{decode:async i=>{i.forEach(s=>{t.decode(new EncodedAudioChunk({type:s.is_sync?"key":"delta",timestamp:1e6*s.cts/s.timescale,duration:1e6*s.duration/s.timescale,data:s.data}))}),await t.flush();const n=e;return e=[],n},close:()=>{t.close()}}}function kq(r,e){const t={codec:r.codec,sampleRate:r.sampleRate,numberOfChannels:r.numberOfChannels},i=new AudioEncoder({output:o=>{e(Eq(o))},error:o=>{Ue.error("AudioEncoder error:",o,", config:",t)}});i.configure(t);let n=null;function s(o,a){return new AudioData({timestamp:a,numberOfChannels:r.numberOfChannels,numberOfFrames:o.length/r.numberOfChannels,sampleRate:r.sampleRate,format:"f32-planar",data:new Float32Array(o)})}return{encode:async(o,a)=>{n!=null&&i.encode(s(n.data,n.ts)),n={data:o,ts:a}},stop:async()=>{n!=null&&(Rq(n.data,r.numberOfChannels,r.sampleRate),i.encode(s(n.data,n.ts)),n=null),await i.flush(),i.close()}}}function Rq(r,e,t){const i=r.length-1,n=Math.min(t/2,i);for(let s=0;s<n;s++)for(let o=1;o<=e;o++)r[Math.floor(i/o)-s]*=s/n}function Fq(r,e){Ue.info("mixinMP4AndAudio, opts:",{volume:e.volume,loop:e.loop});const t=qn.createFile();let i,n=0,s=0;const o=t.boxes;let a=!1;const l=()=>{if(!a)if(o.find(I=>I.type==="moof")!=null)a=!0;else return null;if(s>=o.length)return null;const E=new qn.DataStream;let _=s;try{for(;_<o.length;)o[_].write(E),delete o[_],_+=1}catch(I){throw I}if(t.moov!=null){for(var S=0;S<t.moov.traks.length;S++)t.moov.traks[S].samples=[];t.mdats=[],t.moofs=[]}return s=o.length,new Uint8Array(E.buffer)};let u=!1,c=!1,h=null;i=new ReadableStream({start(E){n=self.setInterval(()=>{const _=l();_!=null&&!c&&E.enqueue(_)},500),h=_=>{if(clearInterval(n),t.flush(),_!=null){E.error(_);return}const S=l();S!=null&&!c&&E.enqueue(S),c||E.close()}},cancel(){c=!0,clearInterval(n)}});const d=E=>{u||(u=!0,h?.(E))};let f=null,p=null,m=[],g=0,v=0,x=0,y=!0,b=rt.sampleRate;Nk(r.pipeThrough(new Gk),{onDone:async()=>{await p?.stop(),f?.close(),d()},onChunk:async({chunkType:E,data:_})=>{if(E==="ready"){const{videoTrackConf:S,audioTrackConf:I,audioDecoderConf:M}=Hb(_.file,_.info);g===0&&S!=null&&(g=t.addTrack(S));const O=I??{timescale:1e6,samplerate:b,channel_count:rt.channelCount,hdlr:"soun",name:"SoundHandler",type:"mp4a"};v===0&&(v=t.addTrack(O),b=I?.samplerate??b,y=I!=null);const U=new AudioContext({sampleRate:b});m=H0(await U.decodeAudioData(await new Response(e.stream).arrayBuffer())),M!=null&&(f=Bq(M)),p=kq(M??{codec:O.type==="mp4a"?rt.codec:O.type,numberOfChannels:O.channel_count,sampleRate:O.samplerate},X=>t.addSample(v,new Uint8Array(X.data),X))}else if(E==="samples"){const{id:S,type:I,samples:M}=_;if(I==="video"){M.forEach(O=>t.addSample(S,new Uint8Array(O.data),O)),y||await P(M);return}I==="audio"&&await A(M)}}});function T(E){const _=m.map(S=>e.loop?W0(S,x,x+E):S.slice(x,x+E));if(x+=E,e.volume!==1)for(const S of _)for(let I=0;I<S.length;I++)S[I]*=e.volume;return _}async function P(E){const _=E[0],S=E[E.length-1],I=Math.floor((S.cts+S.duration-_.cts)/_.timescale*b),M=eS([T(I)]);M.length!==0&&p?.encode(M,_.cts/_.timescale*1e6)}async function A(E){if(f==null)return;const _=(await f.decode(E)).map($w),S=Jw(_),I=T(S[0].length),M=E[0];p?.encode(eS([S,I]),M.cts/M.timescale*1e6)}return i}const qb=`
3509
+ `),a=[];if(o.forEach((l,u)=>{l.trim().split(/\s+/).filter(h=>h!=="").forEach(h=>{a.push({text:h,paragraphIndex:u})})}),a.length===0)this.opts.words=[];else{const l=s/a.length;this.opts.words=a.map((u,c)=>({text:u.text,from:c*l,to:(c+1)*l,isKeyWord:!1,paragraphIndex:u.paragraphIndex}))}}this.originalOpts&&(this.originalOpts.caption?this.originalOpts.caption.words=this.opts.words:this.originalOpts.words=this.opts.words),this.originalOpts&&this.textStyle&&this.refreshCaptions().then(()=>{this.emit("propsChange",{text:e})})}get style(){if(!this.originalOpts)return{};const e=this.originalOpts;return{fontSize:e.fontSize,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontStyle:e.fontStyle,color:e.fill,align:e.align,textCase:e.textCase,verticalAlign:e.verticalAlign,wordsPerLine:e.wordsPerLine,wordAnimation:e.wordAnimation,stroke:e.stroke?typeof e.stroke=="object"?{color:e.stroke.color,width:e.stroke.width}:{color:e.stroke,width:e.strokeWidth??0}:void 0,shadow:e.dropShadow?{color:e.dropShadow.color??"#000000",alpha:e.dropShadow.alpha??.5,blur:e.dropShadow.blur??4,distance:e.dropShadow.distance??0,angle:e.dropShadow.angle??0}:void 0}}set style(e){this.updateStyle(e)}get wordsPerLine(){return this.opts.wordsPerLine}set wordsPerLine(e){this.updateStyle({wordsPerLine:e})}get fontFamily(){return this.opts.fontFamily}set fontFamily(e){this.updateStyle({fontFamily:e})}get fontUrl(){return this.opts.fontUrl}set fontUrl(e){this.updateStyle({fontUrl:e})}get fontSize(){return this.opts.fontSize}set fontSize(e){this.updateStyle({fontSize:e})}get fontWeight(){return this.opts.fontWeight}set fontWeight(e){this.updateStyle({fontWeight:e})}get fontStyle(){return this.opts.fontStyle}set fontStyle(e){this.updateStyle({fontStyle:e})}get fill(){return this.opts.fill}set fill(e){this.updateStyle({fill:e})}get align(){return this.opts.align}set align(e){this.updateStyle({align:e})}get stroke(){return this.originalOpts?.stroke}set stroke(e){this.updateStyle({stroke:e})}get strokeWidth(){return this.opts.strokeWidth}set strokeWidth(e){this.updateStyle({strokeWidth:e})}get dropShadow(){return this.originalOpts?.dropShadow}set dropShadow(e){this.updateStyle({dropShadow:e})}get caption(){return this.originalOpts?.caption}set caption(e){this.updateStyle({caption:e})}get textBoxStyle(){return this.originalOpts?.caption?.textBoxStyle??this.originalOpts?.textBoxStyle??{}}set textBoxStyle(e){this.updateStyle({textBoxStyle:e})}bottomOffset;get textCase(){return this.originalOpts?.textCase||"none"}set textCase(e){this.updateStyle({textCase:e})}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;get mediaId(){return this.opts.mediaId}set mediaId(e){this.opts.mediaId=e,this.originalOpts&&(this.originalOpts.mediaId=e)}effects=[];get words(){return this.opts.words}set words(e){const t=e??[];this.opts.words=t,this.originalOpts&&(this.originalOpts.caption?this.originalOpts.caption.words=e:this.originalOpts.words=e);const i=t.map(n=>n.text).filter(n=>n&&n.trim()!=="").join(" ");this._text!==i?this.text=i:this.refreshCaptions().then(()=>{this.emit("propsChange",{words:e})})}opts;pixiTextContainer=null;renderTexture=null;wordTexts=[];textStyle;textStyleBase;_refreshing=!1;_needsRefresh=!1;externalRenderer=null;pixiApp=null;originalOpts=null;constructor(e,t={},i){super(),this.originalOpts={...t},this.externalRenderer=i??null,this.opts={fontSize:t.fontSize??30,fontFamily:t.fontFamily??"Arial",fontUrl:t.fontUrl??"",fontWeight:t.fontWeight??"normal",fontStyle:t.fontStyle??"normal",fill:t.fill??"#ffffff",strokeWidth:t.strokeWidth??0,align:t.align??"center",wordWrapWidth:t.wordWrapWidth??0,wordWrap:t.wordWrap??!1,lineHeight:t.lineHeight??1,letterSpacing:t.letterSpacing??0,textCase:t.textCase??"none",videoWidth:t.caption?.positioning?.videoWidth??t.videoWidth??1280,videoHeight:t.caption?.positioning?.videoHeight??t.videoHeight??720,bottomOffset:t.caption?.positioning?.bottomOffset??t.bottomOffset??30,keyword:t.caption?.colors?.keyword??t.colors?.keyword??"#ffff00",background:t.caption?.colors?.background??t.colors?.background??"#000000",active:t.caption?.colors?.active??t.colors?.active??"#ffffff",activeFill:t.caption?.colors?.activeFill??t.colors?.activeFill??"#00ff00",appeared:t.caption?.colors?.appeared??t.colors?.appeared??"#ffffff",words:t.caption?.words??t.words??[],preserveKeywordColor:t.caption?.preserveKeywordColor??t.preserveKeywordColor??!1,mediaId:t.mediaId,wordsPerLine:t.wordsPerLine??"multiple",wordAnimation:t.caption?.wordAnimation??t.wordAnimation,textBoxStyle:t.caption?.textBoxStyle??t.textBoxStyle??{}},this._initialLayoutApplied=t.initialLayoutApplied??!1,this._initialLayoutApplied&&(this._isXPositionedManually=!0),this.opts.wordWrapWidth>0&&(this._isWidthConstrained=!0,this._width=this.opts.wordWrapWidth,this.opts.wordWrap=!0),this.text=e,this._lastProcessedText=this._text;const n={fontSize:this.opts.fontSize,fontFamily:this.opts.fontFamily,fontWeight:this.opts.fontWeight,fontStyle:this.opts.fontStyle,align:this.opts.align};if(t.fill&&typeof t.fill=="object"&&t.fill.type==="gradient"){const c=new Dr(t.fill.x0,t.fill.y0,t.fill.x1,t.fill.y1);t.fill.colors.forEach(({ratio:h,color:d})=>{const f=typeof d=="number"?d:yt(d)??16777215;c.addColorStop(h,f)}),n.fill={fill:c}}else{let c;t.fill==="transparent"?c=16777215:(typeof t.fill=="string"||typeof t.fill=="number")&&(c=yt(t.fill)),n.fill=c??16777215}const s=c=>c==="transparent";if(t.stroke&&typeof t.stroke=="object"&&"color"in t.stroke){if(!s(t.stroke.color)){const c=yt(t.stroke.color);c!==void 0&&(n.stroke={color:c,width:t.stroke.width},t.stroke.join&&(n.stroke.join=t.stroke.join))}}else{const c=t.stroke??void 0;if(!s(c)){const h=yt(c);h!==void 0?n.stroke={color:h,width:this.opts.strokeWidth??0}:this.opts.strokeWidth&&this.opts.strokeWidth>0&&(n.stroke={color:0,width:this.opts.strokeWidth})}}if(t.dropShadow){const c=yt(t.dropShadow.color);c!==void 0&&(n.dropShadow={color:c,alpha:t.dropShadow.alpha??.5,blur:t.dropShadow.blur??4,angle:t.dropShadow.angle??Math.PI/6,distance:t.dropShadow.distance??2})}const o=new It(n);this.textStyle=o;const{align:a,fill:l,...u}=n;this.textStyleBase=new It(u),this.ready=(async()=>{await this.refreshCaptions();const c={...this._meta};return Ue.info("CaptionClip ready:",c),c})()}async updateStyle(e){this.originalOpts||(this.originalOpts={});let t={...e};e.style&&(t={...t,...e.style},delete t.style),this.originalOpts={...this.originalOpts,...t},t.fontSize!==void 0&&(this.opts.fontSize=t.fontSize),t.fontFamily!==void 0&&(this.opts.fontFamily=t.fontFamily),t.fontUrl!==void 0&&(this.opts.fontUrl=t.fontUrl),t.fontWeight!==void 0&&(this.opts.fontWeight=t.fontWeight),t.fontStyle!==void 0&&(this.opts.fontStyle=t.fontStyle),t.fill!==void 0&&(this.opts.fill=t.fill),t.align!==void 0&&(this.opts.align=t.align),t.letterSpacing!==void 0&&(this.opts.letterSpacing=t.letterSpacing),t.lineHeight!==void 0&&(this.opts.lineHeight=t.lineHeight),t.textCase!==void 0&&(this.opts.textCase=t.textCase),t.wordWrapWidth!==void 0&&(this.opts.wordWrapWidth=t.wordWrapWidth,t.wordWrapWidth>0&&(this._isWidthConstrained=!0,this.opts.wordWrap=!0)),t.wordsPerLine!==void 0&&(this.opts.wordsPerLine=t.wordsPerLine),t.wordAnimation!==void 0&&(this.opts.wordAnimation=t.wordAnimation),t.textBoxStyle!==void 0&&(this.opts.textBoxStyle=t.textBoxStyle),t.caption?.colors&&(t.caption.colors.appeared!==void 0&&(this.opts.appeared=t.caption.colors.appeared),t.caption.colors.active!==void 0&&(this.opts.active=t.caption.colors.active),t.caption.colors.activeFill!==void 0&&(this.opts.activeFill=t.caption.colors.activeFill),t.caption.colors.background!==void 0&&(this.opts.background=t.caption.colors.background),t.caption.colors.keyword!==void 0&&(this.opts.keyword=t.caption.colors.keyword),t.caption.wordAnimation!==void 0&&(this.opts.wordAnimation=t.caption.wordAnimation)),t.caption?.preserveKeywordColor!==void 0&&(this.opts.preserveKeywordColor=t.caption.preserveKeywordColor);const i={fontSize:this.opts.fontSize,fontFamily:this.opts.fontFamily,fontWeight:this.opts.fontWeight,fontStyle:this.opts.fontStyle,align:this.opts.align};if(this.opts.fill&&typeof this.opts.fill=="object"&&this.opts.fill.type==="gradient"){const u=new Dr(this.opts.fill.x0,this.opts.fill.y0,this.opts.fill.x1,this.opts.fill.y1);this.opts.fill.colors.forEach(({ratio:c,color:h})=>{const d=typeof h=="number"?h:yt(h)??16777215;u.addColorStop(c,d)}),i.fill={fill:u}}else i.fill=16777215;if(e.stroke!==void 0||e.strokeWidth!==void 0||this.originalOpts.stroke||this.originalOpts.strokeWidth){if(this.originalOpts.stroke&&typeof this.originalOpts.stroke=="object"&&"color"in this.originalOpts.stroke){const u=yt(this.originalOpts.stroke.color);u!==void 0&&(i.stroke={color:u,width:this.originalOpts.stroke.width},this.originalOpts.stroke.join&&(i.stroke.join=this.originalOpts.stroke.join))}else if(this.originalOpts?.stroke){const u=this.originalOpts.stroke,c=yt(typeof u=="object"&&u!==null&&"color"in u?u.color:u),h=e.strokeWidth!==void 0?e.strokeWidth:this.originalOpts.strokeWidth!==void 0?this.originalOpts.strokeWidth:0;c!==void 0?i.stroke={color:c,width:h}:h>0&&(i.stroke={color:0,width:h})}}const s=e.dropShadow!==void 0?e.dropShadow:this.originalOpts.dropShadow;if(s){const u=yt(s.color);u!==void 0&&(i.dropShadow={color:u,alpha:s.alpha!==void 0?s.alpha:.5,blur:s.blur!==void 0?s.blur:4,angle:s.angle!==void 0?s.angle:Math.PI/6,distance:s.distance!==void 0?s.distance:2})}this.textStyle=new It(i);const{align:o,fill:a,...l}=i;this.textStyleBase=new It(l),await this.refreshCaptions(),this.emit("propsChange",e)}async refreshCaptions(){if(this._refreshing){this._needsRefresh=!0;return}this._refreshing=!0,this._needsRefresh=!1;try{typeof document<"u"&&await document.fonts.ready;const e=this._width,t=this._height,i=this.originalOpts?.verticalAlign||"center";this.pixiTextContainer?this.pixiTextContainer.removeChildren():this.pixiTextContainer=new Pe,this.wordTexts.forEach(G=>{G.destroyed||G.destroy()}),this.wordTexts=[];const n=Ht.measureText(" ",this.textStyle),s=[];this.opts.words.forEach((G,ne)=>{const oe=this.opts.textCase;let te=G.text||"";oe==="uppercase"?te=te.toUpperCase():oe==="lowercase"?te=te.toLowerCase():oe==="title"&&(te=te.replace(/\w\S*/g,Le=>Le.charAt(0).toUpperCase()+Le.substring(1).toLowerCase())),te.split(/\s+/).filter(Le=>Le.length>0).forEach(Le=>{const ke=new Il({text:Le,style:this.textStyle});ke.segmentIndex=ne;const Ae="#ffffff",je=typeof Ae=="object"&&Ae!==null&&"type"in Ae?16777215:Ae,Fe=yt(je);ke.tint=Fe??16777215,s.push(ke)})}),this.wordTexts=s;const o=this._visualPaddingX,a=this._visualPaddingY,l=this.opts.lineHeight*(this.opts.fontSize||30),u=new Il({text:" ",style:this.textStyleBase}),c=Math.ceil(u.getLocalBounds().width||u.width||n.width);u.destroy();const h=!this._isWidthConstrained&&(this.width===0||this._lastContentWidth===0||Math.abs(this.width-this._lastContentWidth)<2),d=this.opts.videoWidth||1280;let f=0;this.opts.wordWrapWidth>0&&this.opts.wordsPerLine!=="single"?f=this.opts.wordWrapWidth-o*2:this.opts.wordsPerLine==="single"?f=d*5:!h&&this.width>0?f=this.width+10:f=d*5,(isNaN(f)||f<=0)&&(f=d);let p=[];const m=this.opts.textBoxStyle.textAlign||this.opts.align,g=this.opts.textBoxStyle,v=g.style==="tiktok",x=[],y=g.horizontalPadding??0,b=g.verticalPadding??0;let T=[],P=0,A=0;this.wordTexts.forEach((G,ne)=>{const oe=G.getLocalBounds(),te=Math.ceil(oe.width||G.width),be=Math.ceil(oe.height||G.height),Le=G.segmentIndex,ke=this.opts.words[Le],Ae=ne>0?this.wordTexts[ne-1]:null,je=Ae?this.opts.words[Ae.segmentIndex]:null,Fe=je&&ke&&ke.paragraphIndex!==void 0&&ke.paragraphIndex!==je.paragraphIndex||this.opts.wordsPerLine==="single",at=P+(P>0?c:0)+te;!Fe&&(at<=f+1||T.length===0)?(T.push(G),P=at,A=Math.max(A,be)):(T.length>0&&p.push({words:T,width:P,height:Math.max(A,l)+b*2}),T=[G],P=te,A=be)}),T.length>0&&p.push({words:T,width:P,height:Math.max(A,l)+b*2}),this.opts.textBoxStyle.maxLines&&this.opts.textBoxStyle.maxLines>0&&(p=p.slice(0,this.opts.textBoxStyle.maxLines));let E=0,_=0;p.forEach(G=>{E=Math.max(E,G.width),_+=G.height});const S=E,I=_,M=S+Math.max(o,y)*2,O=I,U=this._text!==this._lastProcessedText;this._lastProcessedText=this._text;let X=M,D=O;this._isWidthConstrained&&(U?X=M:X=Math.max(M,e),this.opts.wordWrapWidth>0&&(X=Math.min(X,this.opts.wordWrapWidth)));const k=X,Y=D,H=I;let $=0;const K=Math.max(a,b);i==="top"?$=K:i==="bottom"?$=Y-H-K:$=(Y-H)/2;let we=$;if(p.forEach(G=>{const ne=new Pe;ne.label="lineContainer",this.pixiTextContainer.addChild(ne);let oe=0;const te=G.width;let be=0;m==="center"?be=(k-te)/2:m==="right"?be=k-te-o:be=o,ne.x=be,ne.y=we,v&&x.push({x:be-y,y:we,w:te+y*2,h:G.height}),G.words.forEach((Le,ke)=>{const Ae=Le.getLocalBounds(),je=Ae.width||Le.width,Fe=Ae.height||Le.height;Le.pivot.set(je/2,Fe/2),Le.x=Math.round(oe+je/2),Le.y=Math.round(G.height/2),ne.addChild(Le),oe+=je+(ke<G.words.length-1?c:0)}),we+=G.height}),v&&x.length>0){const G=new Ze;G.label="tiktokBackground";const ne=yt(this.opts.background)??0,oe=g.borderRadius??10;this.drawRoundedTiktokPath(G,x,oe,ne),this.pixiTextContainer.addChildAt(G,0)}if(!v){const G=new Ze;G.label="containerBackground";const ne=this.opts.background==="transparent"||!this.opts.background,oe=ne?0:yt(this.opts.background),te=ne?0:1;G.roundRect(0,0,k,Y,10),G.fill({color:oe,alpha:te}),this.pixiTextContainer.addChildAt(G,0)}this.renderTexture?(Math.abs(this.renderTexture.width-k)>.5||Math.abs(this.renderTexture.height-Y)>.5)&&(this.renderTexture.destroy(),this.renderTexture=Ot.create({width:k,height:Y})):this.renderTexture=Ot.create({width:k,height:Y}),this.updateState(this._lastTickTime);try{(await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture})}catch(G){Ue.warn("CaptionClip: Could not render captions during refresh",G)}const Ie=!this._isWidthConstrained,ve=this.height===0||this._lastContentHeight===0||Math.abs(this.height-this._lastContentHeight)<2;if(Ie&&this._initialLayoutApplied&&e>0&&t>0){const G=X-e;Math.abs(G)>.1&&!this._isXPositionedManually&&this.opts.align==="center"?this.left-=G/2:Math.abs(G)>.1&&!this._isXPositionedManually&&this.opts.align==="right"&&(this.left-=G)}if(this._meta.width=S,this._meta.height=I,this._meta.duration=1/0,this._width=k,this._height=Y,this._lastContentWidth=this._width,this._lastContentHeight=this._height,!this._initialLayoutApplied&&(Ie||ve)){const G=this.opts.videoWidth,ne=this.opts.videoHeight,oe=this.opts.bottomOffset,te=ne-I-oe,be=(G-S)/2;this.top=te,this.left=be,this._initialLayoutApplied=!0}}finally{this._refreshing=!1,this._needsRefresh&&this.refreshCaptions()}}lastLoggedTime=-1;updateState(e){const t=e/1e3,i=Math.floor(e/1e6);i!==this.lastLoggedTime&&(this.lastLoggedTime=i),this.wordTexts.forEach(n=>{const s=n.segmentIndex,o=this.opts.words[s];if(!o)return;n.scale.set(1,1);const a=t>=o.from&&t<o.to,l=t>=o.to,u=this.opts.wordAnimation;let c=0,h=!1;if(u&&u.application!=="none"&&((u.application==="active"&&a||u.application==="keyword"&&o.isKeyWord)&&(h=!0),h)){if(u.mode==="dynamic"&&a){const v=o.to-o.from;if(v>0){const x=(t-o.from)/v,y=Math.max(0,Math.min(1,x));u.value<1?c=y:c=Math.sin(y*Math.PI)}else c=1}else c=1;if(u.type==="scale"){let v=1;u.value<1&&u.mode==="dynamic"&&a?v=u.value+(1-u.value)*c:v=1+(u.value-1)*c,n.scale.set(v,v)}}const d=o.isKeyWord&&!Rk(this.opts.keyword);let f=16777215,p=1;if(o.isKeyWord&&a&&d)({color:f,alpha:p}=Dn(this.opts.keyword,16776960));else if(a)p=Dn(this.opts.active,16777215).alpha,f=Dn(this.opts.active,16777215).color;else if(l&&this.opts.preserveKeywordColor&&d)({color:f,alpha:p}=Dn(this.opts.keyword));else if(l)({color:f,alpha:p}=Dn(this.opts.appeared));else{const v=this.opts.fill,x=typeof v=="object"&&v!==null&&"type"in v?16777215:v;({color:f,alpha:p}=Dn(x))}if(h&&u?.type==="opacity"){let v=1;u.value<1&&u.mode==="dynamic"&&a?v=u.value+(1-u.value)*c:v=1+(u.value-1)*c,p*=v}n.children.forEach(v=>{v.label!=="bgRect"&&(v.tint=f,v.alpha=p)});const m=n.getChildByLabel("bgRect"),g=this.opts.textBoxStyle.style==="tiktok";if(a&&!g){const{color:v,alpha:x}=Dn(this.opts.activeFill,16753920),y=15,b=40;m&&(m.visible=!1);const T=n.getLocalBounds();m&&(m.visible=!0);const P=10,A=m??new Ze;A.label="bgRect",A.clear(),A.roundRect(T.x-b/2,T.y-y/2,T.width+b,T.height+y,P),A.fill({color:v,alpha:x}),A.tint=16777215,m||n.addChildAt(A,0)}else m&&(n.removeChild(m),m.destroy())})}async getTexture(){return this.pixiTextContainer==null||this.renderTexture==null?null:((await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture}),this.renderTexture)}async offscreenRender(e,t){const i=t*this.playbackRate;this._lastTickTime=i*1e6,this.animate(i*1e6),this._render(e);const{width:n,height:s}=this,{video:o,audio:a,done:l}=await this.getFrame(t),u=a??[];return l?{audio:u,done:!0}:(o!=null&&(e.save(),e.drawImage(o,-n/2,-s/2,n,s),e.restore()),{audio:u,done:!1})}setRenderer(e){this.externalRenderer=e}async getRenderer(){if(this.externalRenderer!=null)return this.externalRenderer;if(this.pixiApp?.renderer==null)throw new Error("CaptionClip: No renderer available. Provide a renderer via setRenderer().");return this.pixiApp.renderer}async tick(e){if(await this.ready,this.pixiTextContainer==null||this.renderTexture==null)throw new Error("CaptionClip not initialized");this._lastTickTime=e,this.updateState(e);const t=await this.getRenderer();t.render({container:this.pixiTextContainer,target:this.renderTexture});const i=this.renderTexture.source?.resource?.source;let n;if(i instanceof HTMLCanvasElement)n=await createImageBitmap(i);else if(i instanceof OffscreenCanvas)n=await createImageBitmap(i);else{const o=t.extract.canvas(this.renderTexture);if(o instanceof HTMLCanvasElement||o instanceof OffscreenCanvas)n=await createImageBitmap(o);else throw new Error("Unable to extract canvas from render texture")}return{video:n,state:"success"}}async split(e){await this.ready;const t=await this.clone(),i=await this.clone();return[t,i]}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=this.originalOpts||{},t=new On(this.text,e);return this.copyStateTo(t),t.id=this.id,t.effects=[...this.effects],t}destroy(){if(!this.destroyed){Ue.info("Caption destroy");try{this.wordTexts.forEach(e=>{e!=null&&!e.destroyed&&e.destroy({children:!0})})}catch{}finally{this.wordTexts=[]}try{this.pixiTextContainer!=null&&(this.pixiTextContainer.destroyed||this.pixiTextContainer.destroy({children:!0}))}catch{}finally{this.pixiTextContainer=null}try{this.renderTexture!=null&&(this.renderTexture.destroyed||this.renderTexture.destroy(!0))}catch{}finally{this.renderTexture=null}if(this.externalRenderer=null,this.pixiApp!=null)try{const e=this.pixiApp;e.destroyed!==!0&&e.renderer!=null&&this.pixiApp.destroy(!0,{children:!0,texture:!0})}catch{}finally{this.pixiApp=null}super.destroy()}}toJSON(e=!1){const t=super.toJSON(e),i={};if(this.originalOpts){const f=this.originalOpts;f.fontSize!==void 0&&(i.fontSize=f.fontSize),f.fontFamily!==void 0&&(i.fontFamily=f.fontFamily),f.fontWeight!==void 0&&(i.fontWeight=f.fontWeight),f.fontStyle!==void 0&&(i.fontStyle=f.fontStyle),f.fill!==void 0&&(i.color=f.fill),f.align!==void 0&&(i.align=f.align),f.textCase!==void 0&&(i.textCase=f.textCase),f.fontUrl!==void 0&&(i.fontUrl=f.fontUrl),f.verticalAlign!==void 0&&(i.verticalAlign=f.verticalAlign),f.wordWrapWidth!==void 0&&(i.wordWrapWidth=f.wordWrapWidth),f.wordWrap!==void 0&&(i.wordWrap=f.wordWrap),f.wordAnimation!==void 0&&(i.wordAnimation=f.wordAnimation),f.textBoxStyle!==void 0&&(i.textBoxStyle=f.textBoxStyle),f.stroke&&(typeof f.stroke=="object"?i.stroke={color:f.stroke.color,width:f.stroke.width}:i.stroke={color:f.stroke,width:this.opts.strokeWidth??0}),f.dropShadow&&(i.shadow={color:f.dropShadow.color??"#000000",alpha:f.dropShadow.alpha??.5,blur:f.dropShadow.blur??4,distance:f.dropShadow.distance??0,angle:f.dropShadow.angle??0})}const n={};this.opts.words&&this.opts.words.length>0&&(n.words=this.opts.words);const s={},o=this.originalOpts?.caption?.colors??this.originalOpts?.colors;o?.appeared!==void 0&&(s.appeared=o.appeared),o?.active!==void 0&&(s.active=o.active),o?.activeFill!==void 0&&(s.activeFill=o.activeFill),o?.background!==void 0&&(s.background=o.background),o?.keyword!==void 0&&(s.keyword=o.keyword);let a;this.originalOpts?.caption?.preserveKeywordColor!==void 0?a=this.originalOpts.caption.preserveKeywordColor:this.originalOpts?.preserveKeywordColor!==void 0&&(a=this.originalOpts.preserveKeywordColor),Object.keys(s).length>0&&(n.colors=s),a!==void 0&&(n.preserveKeywordColor=a);const l={};this.bottomOffset!==void 0&&(l.bottomOffset=this.bottomOffset);const u=this.originalOpts?.caption?.positioning?.videoWidth??this.originalOpts?.videoWidth,c=this.originalOpts?.caption?.positioning?.videoHeight??this.originalOpts?.videoHeight;u!==void 0&&(l.videoWidth=u),c!==void 0&&(l.videoHeight=c),Object.keys(l).length>0&&(n.positioning=l);const h=this.originalOpts?.caption?.wordAnimation??this.originalOpts?.wordAnimation;h!==void 0&&(n.wordAnimation=h);const d=this.originalOpts?.caption?.textBoxStyle??this.originalOpts?.textBoxStyle;return d!==void 0&&(n.textBoxStyle=d),{...t,type:"Caption",text:this.text,style:i,caption:Object.keys(n).length>0?n:void 0,textBoxStyle:d,id:this.id,effects:this.effects,mediaId:this.mediaId,wordsPerLine:this.opts.wordsPerLine}}static async fromObject(e){if(e.type!=="Caption")throw new Error(`Expected Caption, got ${e.type}`);const t=e.text||"",i=e.style||{},n={};i.fontSize!==void 0&&(n.fontSize=i.fontSize),i.fontFamily!==void 0&&(n.fontFamily=i.fontFamily),i.fontWeight!==void 0&&(n.fontWeight=i.fontWeight),i.fontStyle!==void 0&&(n.fontStyle=i.fontStyle),i.color!==void 0&&(n.fill=i.color),i.align!==void 0&&(n.align=i.align),i.textCase!==void 0&&(n.textCase=i.textCase),i.verticalAlign!==void 0&&(n.verticalAlign=i.verticalAlign),i.wordWrapWidth!==void 0&&(n.wordWrapWidth=i.wordWrapWidth),i.wordWrap!==void 0&&(n.wordWrap=i.wordWrap),i.wordsPerLine!==void 0?n.wordsPerLine=i.wordsPerLine:e.wordsPerLine!==void 0&&(n.wordsPerLine=e.wordsPerLine),i.fontUrl!==void 0?n.fontUrl=i.fontUrl:e.fontUrl!==void 0&&(n.fontUrl=e.fontUrl),e.mediaId&&(n.mediaId=e.mediaId),i.stroke&&(n.stroke=i.stroke.color,n.strokeWidth=i.stroke.width),i.shadow&&(n.dropShadow={color:i.shadow.color,alpha:i.shadow.alpha,blur:i.shadow.blur,distance:i.shadow.distance,angle:i.shadow.angle}),i.wordAnimation!==void 0&&(n.wordAnimation=i.wordAnimation),e.textBoxStyle!==void 0?n.textBoxStyle=e.textBoxStyle:i.textBoxStyle!==void 0&&(n.textBoxStyle=i.textBoxStyle),e.caption?(n.caption=e.caption,e.caption.wordAnimation&&(n.wordAnimation=e.caption.wordAnimation),e.caption.textBoxStyle&&(n.textBoxStyle=e.caption.textBoxStyle)):(e.bottomOffset!==void 0&&(n.bottomOffset=e.bottomOffset),e.words!==void 0&&(n.words=e.words),(e.appearedColor!==void 0||e.activeColor!==void 0||e.activeFillColor!==void 0||e.backgroundColor!==void 0||e.isKeyWordColor!==void 0)&&(n.colors={},e.appearedColor!==void 0&&(n.colors.appeared=e.appearedColor),e.activeColor!==void 0&&(n.colors.active=e.activeColor),e.activeFillColor!==void 0&&(n.colors.activeFill=e.activeFillColor),e.backgroundColor!==void 0&&(n.colors.background=e.backgroundColor),e.isKeyWordColor!==void 0&&(n.colors.keyword=e.isKeyWordColor)),e.preservedColorKeyWord!==void 0&&(n.preserveKeywordColor=e.preservedColorKeyWord),e.videoWidth!==void 0&&(n.videoWidth=e.videoWidth),e.videoHeight!==void 0&&(n.videoHeight=e.videoHeight)),n.initialLayoutApplied=!0;const s=new On(t,n);return s.left=e.left,s.top=e.top,s.width=e.width,s.height=e.height,s.angle=e.angle,s.display.from=e.display.from,s.display.to=e.display.to,s.duration=e.duration,s.playbackRate=e.playbackRate,s.zIndex=e.zIndex,s.opacity=e.opacity,s.flip=e.flip,s.wordsPerLine=e.wordsPerLine??"multiple",e.animation&&s.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(s.id=e.id),e.effects&&(s.effects=e.effects),await s.ready,s}getVisibleHandles(){return["mr","mb","br","rot"]}drawRoundedTiktokPath(e,t,i,n){if(t.length===0)return;const s=[];s.push({x:t[0].x,y:t[0].y}),s.push({x:t[0].x+t[0].w,y:t[0].y});for(let l=0;l<t.length-1;l++){const u=t[l],c=t[l+1];if(Math.abs(u.x+u.w-(c.x+c.w))>.1){const h=(u.y+u.h+c.y)/2;s.push({x:u.x+u.w,y:h}),s.push({x:c.x+c.w,y:h})}}s.push({x:t[t.length-1].x+t[t.length-1].w,y:t[t.length-1].y+t[t.length-1].h}),s.push({x:t[t.length-1].x,y:t[t.length-1].y+t[t.length-1].h});for(let l=t.length-1;l>0;l--){const u=t[l],c=t[l-1];if(Math.abs(u.x-c.x)>.1){const h=(u.y+c.y+c.h)/2;s.push({x:u.x,y:h}),s.push({x:c.x,y:h})}}e.clear();const o=s[s.length-1],a=s[0];e.moveTo((o.x+a.x)/2,(o.y+a.y)/2);for(let l=0;l<s.length;l++){const u=s[l],c=s[(l+1)%s.length];e.arcTo(u.x,u.y,(u.x+c.x)/2,(u.y+c.y)/2,i)}e.fill({color:n,alpha:1})}}let Bl=class Nn extends Mn{type="Image";ready;_meta={duration:0,width:0,height:0};get meta(){return{...this._meta}}img=null;pixiTexture=null;frames=[];id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];static async fromUrl(e,t){let i=null,n;if(e.startsWith("blob:"))try{const o=await fetch(e);if(!o.ok)throw new Error(`Failed to fetch image: ${o.status} ${o.statusText}`);const a=await o.blob();n=await createImageBitmap(a);try{i=Q.from(n)}catch(l){Ue.warn("Failed to create Pixi texture from bitmap:",l)}}catch(o){throw Ue.error(`Failed to load blob image from ${e}`,o),o}else n=await Lo.getImageBitmap(e);if(!n)throw new Error(`Failed to load image from ${e}`);const s=new Nn(n,t||e);return i&&(s.pixiTexture=i),s}getTexture(){return this.pixiTexture}constructor(e,t){super(),this.src=t!==void 0?t:"";const i=n=>{this.img=n,this._meta.width=n.width,this._meta.height=n.height,this._meta.duration=1/0;const s={...this._meta};return this.width=this.width===0?s.width:this.width,this.height=this.height===0?s.height:this.height,this.duration===0&&s.duration!==1/0&&(this.duration=s.duration,this.display.to=this.display.from+this.duration),s};if(e instanceof ReadableStream)this.ready=new Response(e).blob().then(n=>createImageBitmap(n)).then(i);else if(e instanceof ImageBitmap)this.ready=Promise.resolve(i(e));else if(Array.isArray(e)&&e.every(n=>n instanceof VideoFrame)){this.frames=e;const n=this.frames[0];if(n==null)throw Error("The frame count must be greater than 0");this._meta={width:n.displayWidth,height:n.displayHeight,duration:this.frames.reduce((o,a)=>o+(a.duration??0),0)};const s={...this._meta,duration:1/0};this.width=this.width===0?s.width:this.width,this.height=this.height===0?s.height:this.height,this.duration===0&&s.duration!==1/0&&(this.duration=s.duration,this.display.to=this.display.from+this.duration),this.ready=Promise.resolve(s)}else if("type"in e)this.ready=this.initAnimateImg(e.stream,e.type).then(()=>{const n={width:this._meta.width,height:this._meta.height,duration:1/0};return this.width=this.width===0?n.width:this.width,this.height=this.height===0?n.height:this.height,this.duration===0&&n.duration!==1/0&&(this.duration=n.duration,this.display.to=this.display.from+this.duration),n});else throw Error("Illegal arguments")}async initAnimateImg(e,t){this.frames=await RL(e,t);const i=this.frames[0];if(i==null)throw Error("No frame available in gif");this._meta={duration:this.frames.reduce((n,s)=>n+(s.duration??0),0),width:i.codedWidth,height:i.codedHeight},Ue.info("Image ready:",this._meta)}tickInterceptor=async(e,t)=>t;async tick(e){if(this.img!=null)return await this.tickInterceptor(e,{video:await createImageBitmap(this.img),state:"success"});const t=e%this._meta.duration;return await this.tickInterceptor(e,{video:(this.frames.find(i=>t>=i.timestamp&&t<=i.timestamp+(i.duration??0))??this.frames[0]).clone(),state:"success"})}async split(e){if(await this.ready,this.img!=null)return[new Nn(await createImageBitmap(this.img),this.src),new Nn(await createImageBitmap(this.img),this.src)];let t=-1;for(let s=0;s<this.frames.length;s++){const o=this.frames[s];if(!(e>o.timestamp)){t=s;break}}if(t===-1)throw Error("Not found frame by time");const i=this.frames.slice(0,t).map(s=>new VideoFrame(s)),n=this.frames.slice(t).map(s=>new VideoFrame(s,{timestamp:s.timestamp-e}));return[new Nn(i,this.src),new Nn(n,this.src)]}async clone(){await this.ready;const e=this.img==null?this.frames.map(i=>i.clone()):await createImageBitmap(this.img),t=new Nn(e,this.src);return t.tickInterceptor=this.tickInterceptor,this.copyStateTo(t),t.id=this.id,t.effects=[...this.effects],t.transition=this.transition,t}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}destroy(){Ue.info("Image destroy"),this.img?.close(),this.frames.forEach(e=>e.close()),this.pixiTexture=null,super.destroy()}toJSON(e=!1){return{...super.toJSON(e),type:"Image",id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Image")throw new Error(`Expected Image, got ${e.type}`);if(!e.src||e.src.trim()==="")throw new Error("Image requires a valid source URL. Generated clips (like text-to-image) cannot be loaded from JSON without their source data.");let t;try{const i=await Lo.getImageBitmap(e.src);t=new Nn(i,e.src)}catch(i){throw i instanceof Error&&i.message.includes("could not be decoded")?new Error(`Failed to decode image from ${e.src}. The image may be decoded, in an unsupported format, or there may be CORS issues.`):i}return t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.style&&(t.style={...t.style,...e.style}),e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),e.effects&&(t.effects=e.effects),e.transition&&(t.transition=e.transition),e.chromaKey&&(t.chromaKey={...t.chromaKey,...e.chromaKey}),e.locked!==void 0&&(t.locked=e.locked),t}};function Hb(r,e){const t={},i=e.videoTracks[0];if(i!=null){const s=lq(r.getTrackById(i.id))?.buffer,o=aq(i.codec);o&&(t.videoTrackConf={timescale:i.timescale,duration:i.duration,width:i.video.width,height:i.video.height,brands:e.brands,type:o.type,[o.descKey]:s}),t.videoDecoderConf={codec:i.codec,codedHeight:i.video.height,codedWidth:i.video.width,description:s}}const n=e.audioTracks[0];if(n!=null){const s=uq(r),o=s?cq(s):{};t.audioTrackConf={timescale:n.timescale,samplerate:o.sampleRate??n.audio.sample_rate,channel_count:o.numberOfChannels??n.audio.channel_count,hdlr:"soun",type:n.codec.startsWith("mp4a")?"mp4a":n.codec,description:s},t.audioDecoderConf={codec:o.codec??rt.codec,numberOfChannels:o.numberOfChannels??n.audio.channel_count,sampleRate:o.sampleRate??n.audio.sample_rate}}return t}function aq(r){return r.startsWith("avc1")?{descKey:"avcDecoderConfigRecord",type:"avc1"}:r.startsWith("hvc1")?{descKey:"hevcDecoderConfigRecord",type:"hvc1"}:null}function lq(r){for(const e of r.mdia.minf.stbl.stsd.entries){const t=e.avcC??e.hvcC??e.av1C??e.vpcC;if(t!=null){const i=new qn.DataStream(void 0,0,void 0);return t.write(i),new Uint8Array(i.buffer.slice(8))}}}function uq(r,e="mp4a"){return r.moov?.traks.flatMap(t=>t.mdia.minf.stbl.stsd.entries).find(t=>t.type===e)}function cq(r){const e=r.esd?.descs?.[0];if(!e)return{};let t=`mp4a.${e.oti.toString(16)}`;const i=e.descs?.[0];if(!i)return t.endsWith(".40")&&(t+=".2"),{codec:t};const n=i.data;if(!n)return{codec:t};const s=(n[0]&248)>>3;t+=`.${s}`;const o=(n[0]&7)<<1|n[1]>>7,a=(n[1]&120)>>3;return{codec:t,sampleRate:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][o],numberOfChannels:a}}async function hq(r,e,t){const i=qn.createFile(!1);i.onReady=o=>{e({mp4boxFile:i,info:o}),[o.videoTracks[0],o.audioTracks[0]].forEach(a=>{if(a){const l=a.video?"video":"audio";i.setExtractionOptions(a.id,l,{nbSamples:100})}}),i.start()},i.onSamples=t;let n=0;const s=30*1024*1024;for(;;){const o=await r.read(s,{at:n});if(o.byteLength===0)break;o.fileStart=n;const a=i.appendBuffer(o);if(a==null)break;n=a}i.stop()}function dq(r){if(r?.length!==9)return{};const e=new Int32Array(r.buffer),t=c=>c/65536,i=t(e[0]),n=t(e[1]),s=t(e[3]),o=t(e[4]),a=t(e[6]),l=t(e[7]),u=e[8]/(1<<30);return{scaleX:Math.sqrt(i*i+s*s),scaleY:Math.sqrt(n*n+o*o),rotationRad:Math.atan2(s,i),rotationDeg:Math.atan2(s,i)*180/Math.PI,translateX:a,translateY:l,perspective:u}}function fq(r,e,t){const i=(Math.round(t/90)*90+360)%360;if(i===0)return u=>u;const n=i===90||i===270,s=n?e:r,o=n?r:e,a=new OffscreenCanvas(s,o),l=a.getContext("2d");return l.translate(s/2,o/2),l.rotate(-i*Math.PI/180),l.translate(-r/2,-e/2),u=>{if(!u)return null;l.drawImage(u,0,0);const c=new VideoFrame(a,{timestamp:u.timestamp,duration:u.duration??void 0});return u.close(),c}}let Wb=0;function Vb(r){return r.kind==="file"&&r.createReader instanceof Function}class br extends Mn{type="Video";insId=Wb++;logger=Ue.create(`Video id:${this.insId},`);ready;_meta={duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0};get meta(){return{...this._meta}}localFile;headerBoxPos=[];async getFileHeaderBinData(){await this.ready;const e=await this.localFile.getOriginFile();if(e==null)throw Error("Video localFile is not origin file");return await new Blob(this.headerBoxPos.map(({start:t,size:i})=>e.slice(t,t+i))).arrayBuffer()}parsedMatrix={perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0};vfRotater=e=>e;videoSamples=[];audioSamples=[];videoFrameFinder=null;audioFrameFinder=null;decoderConf={video:null,audio:null};opts={audio:!0};audio=!0;id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];static async fromUrl(e,t={}){const i=await Lo.getReadableStream(e),n=new br(i,{},e);return await n.ready,t.x!==void 0&&(n.left=t.x),t.y!==void 0&&(n.top=t.y),t.width!==void 0&&(n.width=t.width),t.height!==void 0&&(n.height=t.height),n}constructor(e,t={},i){if(super(),this.src=i!==void 0?i:"",!(e instanceof ReadableStream)&&!Vb(e)&&!Array.isArray(e.videoSamples))throw Error("Illegal argument");this.opts={audio:!0,...t},this.audio=typeof this.opts.audio=="boolean"?this.opts.audio:!0,this.volume=typeof t.audio=="object"&&"volume"in t.audio?t.audio.volume:t.volume??1;const n=async s=>(await Vs(this.localFile,s),this.localFile);this.localFile=Vb(e)?e:"localFile"in e?e.localFile:G0(),this.ready=(e instanceof ReadableStream?n(e).then(s=>Mk(s,this.opts)):Vb(e)?Mk(e,this.opts):Promise.resolve(e)).then(async({videoSamples:s,audioSamples:o,decoderConf:a,headerBoxPos:l,parsedMatrix:u})=>{this.videoSamples=s,this.audioSamples=o,this.decoderConf=a,this.headerBoxPos=l,this.parsedMatrix=u;const{videoFrameFinder:c,audioFrameFinder:h}=mq({video:a.video==null?null:{...a.video,hardwareAcceleration:this.opts.__unsafe_hardwareAcceleration__},audio:a.audio},await this.localFile.createReader(),s,o,this.opts.audio!==!1?this.volume:0);this.videoFrameFinder=c,this.audioFrameFinder=h;const{codedWidth:d,codedHeight:f}=a.video??{};d&&f&&(this.vfRotater=fq(d,f,u.rotationDeg)),this._meta=pq(a,s,o,u.rotationDeg),this.logger.info("Video meta:",this._meta);const p={...this._meta};this.width=this.width===0?p.width:this.width,this.height=this.height===0?p.height:this.height,this.trim.to=this.trim.to===0?p.duration:Math.min(this.trim.to,p.duration),this.trim.from=Math.min(this.trim.from,this.trim.to);const m=(this.trim.to-this.trim.from)/this.playbackRate;return this.duration=this.duration===0?m:this.duration,Math.abs(this.duration-m)>1&&(this.duration=m),this.display.to=this.display.from+this.duration,this.on("propsChange",g=>{g.volume!==void 0&&this.audioFrameFinder&&this.audioFrameFinder.setVolume(g.volume)}),p})}tickInterceptor=async(e,t)=>t;async tick(e){const t=e+this.trim.from;if(t>this.trim.to||t>this._meta.duration)return await this.tickInterceptor(e,{audio:await this.audioFrameFinder?.find(t)??[],state:"done"});const[i,n]=await Promise.all([this.audioFrameFinder?.find(t)??[],this.videoFrameFinder?.find(t).then(this.vfRotater)]);return n==null?await this.tickInterceptor(e,{audio:i,state:"success"}):await this.tickInterceptor(e,{video:n,audio:i,state:"success"})}thumbAborter=new AbortController;thumbFinder=null;async thumbnails(e=100,t){this.thumbAborter.abort(),this.thumbAborter=new AbortController;const i=this.thumbAborter.signal;await this.ready;const n="generate thumbnails aborted";if(i.aborted)throw Error(n);const{width:s,height:o}=this._meta,a=Tq(e,Math.round(o*(e/s)),{quality:.1,type:"image/png"});return new Promise(async(l,u)=>{let c=[];const h=this.decoderConf.video;if(h==null||this.videoSamples.length===0){d();return}i.addEventListener("abort",()=>{u(Error(n))});async function d(){i.aborted||l(await Promise.all(c.map(async v=>({ts:v.ts,img:await v.img}))))}function f(v){c.push({ts:v.timestamp,img:a(v)})}const{start:p=0,end:m=this._meta.duration,step:g}=t??{};if(g){let v=p;for(this.thumbFinder&&(await this.thumbFinder.destroy(),this.thumbFinder=null),this.thumbFinder=new Ok(await this.localFile.createReader(),this.videoSamples,{...h,hardwareAcceleration:this.opts.__unsafe_hardwareAcceleration__});v<=m&&!i.aborted;){const x=await this.thumbFinder.find(v);x&&f(x),v+=g}await this.thumbFinder.destroy(),this.thumbFinder=null,d()}else await Sq(this.videoSamples,this.localFile,h,i,{start:p,end:m},(v,x)=>{v!=null&&f(v),x&&d()})})}async split(e){if(await this.ready,e<=0||e>=this._meta.duration)throw Error("time out of bounds");const[t,i]=bq(this.videoSamples,e),[n,s]=_q(this.audioSamples,e),o=new br({localFile:this.localFile,videoSamples:t??[],audioSamples:n??[],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src),a=new br({localFile:this.localFile,videoSamples:i??[],audioSamples:s??[],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);return await Promise.all([o.ready,a.ready]),[o,a]}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=new br({localFile:this.localFile,videoSamples:[...this.videoSamples],audioSamples:[...this.audioSamples],decoderConf:this.decoderConf,headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);return await e.ready,e.tickInterceptor=this.tickInterceptor,this.copyStateTo(e),e.id=this.id,e.effects=[...this.effects],e}async splitTrack(){await this.ready;const e=[];if(this.videoSamples.length>0){const t=new br({localFile:this.localFile,videoSamples:[...this.videoSamples],audioSamples:[],decoderConf:{video:this.decoderConf.video,audio:null},headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);await t.ready,t.tickInterceptor=this.tickInterceptor,e.push(t)}if(this.audioSamples.length>0){const t=new br({localFile:this.localFile,videoSamples:[],audioSamples:[...this.audioSamples],decoderConf:{audio:this.decoderConf.audio,video:null},headerBoxPos:this.headerBoxPos,parsedMatrix:this.parsedMatrix},this.opts,this.src);await t.ready,t.tickInterceptor=this.tickInterceptor,e.push(t)}return e}cleanupThumbnails=async()=>{this.thumbAborter.abort(),this.thumbFinder&&(await this.thumbFinder.destroy(),this.thumbFinder=null)};destroy(){this.destroyed||(this.destroyed=!0,this.logger.info("Video destroy"),super.destroy(),this.thumbAborter.abort(),this.thumbFinder?.destroy(),this.thumbFinder=null,this.videoFrameFinder?.destroy(),this.audioFrameFinder?.destroy())}toJSON(e=!1){return{...super.toJSON(e),type:"Video",audio:this.audio,volume:this.volume,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Video")throw new Error(`Expected Video, got ${e.type}`);const t=e.audio!==void 0?{audio:e.audio,volume:e.volume}:{volume:e.volume},i=await Lo.getReadableStream(e.src),n=new br(i,t,e.src);return n.left=e.left,n.top=e.top,n.width=e.width,n.height=e.height,n.angle=e.angle,n.display.from=e.display.from,n.display.to=e.display.to,n.duration=e.duration,n.playbackRate=e.playbackRate,n.zIndex=e.zIndex,n.opacity=e.opacity,n.flip=e.flip,e.style&&(n.style={...n.style,...e.style}),e.animation&&n.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(n.id=e.id),e.effects&&(n.effects=e.effects),e.transition&&(n.transition=e.transition),e.trim&&(n.trim.from=e.trim.from<1e6?e.trim.from*1e6:e.trim.from,n.trim.to=e.trim.to<1e6?e.trim.to*1e6:e.trim.to),e.volume!==void 0&&(n.volume=e.volume),e.chromaKey&&(n.chromaKey={...n.chromaKey,...e.chromaKey}),e.locked!==void 0&&(n.locked=e.locked),n}async createPlaybackElement(){await this.ready;const t=this.localFile;if(!t||typeof t.getOriginFile!="function")throw new Error("Video does not have a local file for playback");const i=await t.getOriginFile();if(!i)throw new Error("Failed to get origin file from VideoClip");const n=URL.createObjectURL(i),s=document.createElement("video");return s.crossOrigin="anonymous",s.muted=!0,s.autoplay=!1,s.playsInline=!0,s.preload="auto",s.loop=!1,s.src=n,await new Promise((o,a)=>{const l=()=>{s.removeEventListener("loadeddata",l),s.removeEventListener("error",u),s.pause(),s.currentTime=0,o()},u=()=>{s.removeEventListener("loadeddata",l),s.removeEventListener("error",u),a(new Error("Failed to load video"))};s.addEventListener("loadeddata",l,{once:!0}),s.addEventListener("error",u,{once:!0}),s.load()}),{element:s,objectUrl:n}}async play(e,t){const i=e,n=t+this.trim.from/1e6;if(Math.abs(i.currentTime-n)>.1&&(i.currentTime=n),i.muted=!1,i.paused)try{await i.play()}catch{try{await i.play()}catch(o){console.warn("Failed to play video:",o)}}}pause(e){const t=e;t.pause(),t.muted=!0}async seek(e,t){const i=e,n=t+this.trim.from/1e6;return i.pause(),i.currentTime=n,new Promise(s=>{if(Math.abs(i.currentTime-t)<.01){s();return}const o=()=>{i.removeEventListener("seeked",o),s()};i.addEventListener("seeked",o,{once:!0}),setTimeout(()=>{i.removeEventListener("seeked",o),s()},500)})}syncPlayback(e,t,i){const n=e,s=(this.trim.to-this.trim.from)/1e6,o=i>=0&&i<s,a=i+this.trim.from/1e6;n.volume=this.volume,t&&o?n.paused?this.play(n,i).catch(console.warn):(n.muted&&(n.muted=!1),(n.ended||n.currentTime>=this.trim.to/1e6)&&(n.currentTime=a,n.play().catch(console.warn))):(n.paused||n.pause(),n.muted=!0,o&&Math.abs(n.currentTime-a)>.1&&(n.currentTime=a))}cleanupPlayback(e,t){const i=e;i.pause(),i.removeAttribute("src"),i.load(),t&&URL.revokeObjectURL(t)}async scaleToFit(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.min(e/i,t/n);this.width=i*s,this.height=n*s}async scaleToFill(e,t){await this.ready;const{width:i,height:n}=this.meta;if(i===0||n===0)return;const s=Math.max(e/i,t/n);this.width=i*s,this.height=n*s}centerInScene(e,t){this.left=(e-this.width)/2,this.top=(t-this.height)/2}}function pq(r,e,t,i){const n={duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0};if(r.video!=null&&e.length>0){n.width=r.video.codedWidth??0,n.height=r.video.codedHeight??0;const a=(Math.round(i/90)*90+360)%360;(a===90||a===270)&&([n.width,n.height]=[n.height,n.width])}r.audio!=null&&t.length>0&&(n.audioSampleRate=rt.sampleRate,n.audioChanCount=rt.channelCount);let s=0,o=0;if(e.length>0)for(let a=e.length-1;a>=0;a--){const l=e[a];if(!l.deleted){s=l.cts+l.duration;break}}if(t.length>0){const a=t.at(-1);o=a.cts+a.duration}return n.duration=Math.max(s,o),n}function mq(r,e,t,i,n){return{audioFrameFinder:n===0||r.audio==null||i.length===0?null:new vq(e,i,r.audio,{volume:n,targetSampleRate:rt.sampleRate}),videoFrameFinder:r.video==null||t.length===0?null:new Ok(e,t,r.video)}}async function Mk(r,e={}){let t=null;const i={video:null,audio:null};let n=[],s=[],o=[];const a={perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0};let l=-1,u=-1;const c=await r.createReader();await hq(c,async d=>{t=d.info;const f=d.mp4boxFile.ftyp;o.push({start:f.start,size:f.size});const p=d.mp4boxFile.moov;o.push({start:p.start,size:p.size}),Object.assign(a,dq(t.videoTracks[0]?.matrix));let{videoDecoderConf:m,audioDecoderConf:g}=Hb(d.mp4boxFile,d.info);if(i.video=m??null,i.audio=g??null,m==null&&g==null&&Ue.error("Video no video and audio track"),g!=null){const{supported:v}=await AudioDecoder.isConfigSupported(g);v||Ue.error(`Video audio codec is not supported: ${g.codec}`)}if(m!=null){const{supported:v}=await VideoDecoder.isConfigSupported(m);v||Ue.error(`Video video codec is not supported: ${m.codec}`)}Ue.info("mp4BoxFile moov ready",{...d.info,tracks:null,videoTracks:null,audioTracks:null},i)},(d,f,p)=>{if(f==="video"){l===-1&&(l=p[0].dts);for(const m of p)n.push(Dk(m,l,"video"))}else if(f==="audio"&&e.audio){u===-1&&(u=p[0].dts);for(const m of p)s.push(Dk(m,u,"audio"))}}),await c.close();const h=n.at(-1)??s.at(-1);if(t==null)throw Error("Video stream is done, but not emit ready");if(h==null)throw Error("Video stream not contain any sample");return Yb(n),Ue.info("mp4 stream parsed"),{videoSamples:n,audioSamples:s,decoderConf:i,headerBoxPos:o,parsedMatrix:a}}function Dk(r,e=0,t){let i=r.offset;const n=t==="video"&&r.is_sync?wq(r.data,r.description.type):-1;let s=r.size;return n>0&&(i+=n,s-=n),{...r,is_idr:n>=0,offset:i,size:s,cts:(r.cts-e)/r.timescale*1e6,dts:(r.dts-e)/r.timescale*1e6,duration:r.duration/r.timescale*1e6,timescale:1e6,data:t==="video"?null:r.data}}class Ok{constructor(e,t,i){this.localFileReader=e,this.samples=t,this.conf=i}decoder=null;timestamp=0;curAborter={abort:!1,st:performance.now()};find=async e=>{(this.decoder==null||this.decoder.state==="closed"||e<=this.timestamp||e-this.timestamp>3e6)&&this.reset(e),this.curAborter.abort=!0,this.timestamp=e,this.curAborter={abort:!1,st:performance.now()};const t=await this.parseFrame(e,this.decoder,this.curAborter);return this.sleepCnt=0,t};lastVfDur=0;downgradeSoftDecode=!1;videoDecCursorIdx=0;videoFrames=[];outputFrameCnt=0;inputChunkCnt=0;sleepCnt=0;predecodeErr=!1;parseFrame=async(e,t,i)=>{if(t==null||t.state==="closed"||i.abort)return null;if(this.videoFrames.length>0){const n=this.videoFrames[0];return e<n.timestamp?null:(this.videoFrames.shift(),e>n.timestamp+(n.duration??0)?(n.close(),await this.parseFrame(e,t,i)):(!this.predecodeErr&&this.videoFrames.length<10&&this.startDecode(t).catch(s=>{throw this.predecodeErr=!0,this.reset(e),s}),n))}if(this.decoding||this.outputFrameCnt<this.inputChunkCnt&&t.decodeQueueSize>0){if(performance.now()-i.st>6e3)throw Error(`Video.tick video timeout, ${JSON.stringify(this.getState())}`);this.sleepCnt+=1,await wu(15)}else{if(this.videoDecCursorIdx>=this.samples.length)return null;try{await this.startDecode(t)}catch(n){throw this.reset(e),n}}return await this.parseFrame(e,t,i)};decoding=!1;startDecode=async e=>{if(this.decoding||e.decodeQueueSize>600)return;let t=this.videoDecCursorIdx+1;if(t>this.samples.length)return;this.decoding=!0;let i=!1;for(;t<this.samples.length;t++){const n=this.samples[t];if(!i&&!n.deleted&&(i=!0),n.is_idr)break}if(i){const n=this.samples.slice(this.videoDecCursorIdx,t);if(n[0]?.is_idr!==!0)Ue.warn("First sample not idr frame");else{const s=performance.now(),o=await zk(n,this.localFileReader),a=performance.now()-s;if(a>1e3){const l=n[0],u=n.at(-1),c=u.offset+u.size-l.offset;Ue.warn(`Read video samples time cost: ${Math.round(a)}ms, file chunk size: ${c}`)}if(e.state==="closed")return;this.lastVfDur=o[0]?.duration??0,Xb(e,o,{onDecodingError:l=>{if(this.downgradeSoftDecode)throw l;this.outputFrameCnt===0&&(this.downgradeSoftDecode=!0,Ue.warn("Downgrade to software decode"),this.reset())}}),this.inputChunkCnt+=o.length}}this.videoDecCursorIdx=t,this.decoding=!1};reset=e=>{if(this.decoding=!1,this.videoFrames.forEach(i=>i.close()),this.videoFrames=[],e==null||e===0)this.videoDecCursorIdx=0;else{let i=0;for(let n=0;n<this.samples.length;n++){const s=this.samples[n];if(s.is_idr&&(i=n),!(s.cts<e)){this.videoDecCursorIdx=i;break}}}this.inputChunkCnt=0,this.outputFrameCnt=0,this.decoder?.state!=="closed"&&this.decoder?.close();const t={...this.conf,...this.downgradeSoftDecode?{hardwareAcceleration:"prefer-software"}:{}};this.decoder=new VideoDecoder({output:i=>{if(this.outputFrameCnt+=1,i.timestamp===-1){i.close();return}let n=i;i.duration==null&&(n=new VideoFrame(i,{duration:this.lastVfDur}),i.close()),this.videoFrames.push(n)},error:i=>{if(i.message.includes("Codec reclaimed due to inactivity")){this.decoder=null,Ue.warn(i.message);return}const n=`VideoFinder VideoDecoder err: ${i.message}, config: ${JSON.stringify(t)}, state: ${JSON.stringify(this.getState())}`;throw Ue.error(n),Error(n)}}),this.decoder.configure(t)};getState=()=>({time:this.timestamp,decState:this.decoder?.state,decQSize:this.decoder?.decodeQueueSize,decCursorIdx:this.videoDecCursorIdx,sampleLen:this.samples.length,inputCnt:this.inputChunkCnt,outputCnt:this.outputFrameCnt,cacheFrameLen:this.videoFrames.length,softDecode:this.downgradeSoftDecode,clipIdCnt:Wb,sleepCnt:this.sleepCnt,memInfo:Lk()});destroy=async()=>{if(this.curAborter.abort=!0,this.videoFrames.forEach(e=>e.close()),this.videoFrames=[],this.decoder&&this.decoder.state!=="closed"){try{await this.decoder.flush()}catch{}try{this.decoder.close()}catch{}}this.decoder=null,this.localFileReader.close()}}function gq(r,e){for(let t=0;t<e.length;t++){const i=e[t];if(r>=i.cts&&r<i.cts+i.duration)return t;if(i.cts>r)break}return 0}class vq{constructor(e,t,i,n){this.localFileReader=e,this.samples=t,this.conf=i,this.volume=n.volume,this.sampleRate=n.targetSampleRate}volume=1;sampleRate;setVolume(e){this.volume=e,this.reset()}decoder=null;curAborter={abort:!1,st:performance.now()};find=async e=>{const t=e<=this.timestamp||e-this.timestamp>1e5;(this.decoder==null||this.decoder.state==="closed"||t)&&this.reset(),t&&(this.timestamp=e,this.decCursorIdx=gq(e,this.samples)),this.curAborter.abort=!0;const i=e-this.timestamp;this.timestamp=e,this.curAborter={abort:!1,st:performance.now()};const n=await this.parseFrame(Math.ceil(i*(this.sampleRate/1e6)),this.decoder,this.curAborter);return this.sleepCnt=0,n};timestamp=0;decCursorIdx=0;pcmData={frameCnt:0,data:[]};sleepCnt=0;parseFrame=async(e,t=null,i)=>{if(t==null||i.abort||t.state==="closed"||e===0)return[];const n=this.pcmData.frameCnt-e;if(n>0)return n<rt.sampleRate/10&&this.startDecode(t),Uk(this.pcmData,e);if(t.decoding){if(performance.now()-i.st>3e3)throw i.abort=!0,Error(`Video.tick audio timeout, ${JSON.stringify(this.getState())}`);this.sleepCnt+=1,await wu(15)}else{if(this.decCursorIdx>=this.samples.length-1)return Uk(this.pcmData,this.pcmData.frameCnt);this.startDecode(t)}return this.parseFrame(e,t,i)};startDecode=e=>{if(e.decodeQueueSize>10)return;const i=[];let n=this.decCursorIdx;for(;n<this.samples.length;){const s=this.samples[n];if(n+=1,!s.deleted&&(i.push(s),i.length>=10))break}this.decCursorIdx=n,e.decode(i.map(s=>new EncodedAudioChunk({type:"key",timestamp:s.cts,duration:s.duration,data:s.data})))};reset=()=>{this.timestamp=0,this.decCursorIdx=0,this.pcmData={frameCnt:0,data:[]},this.decoder?.close(),this.decoder=xq(this.conf,{resampleRate:rt.sampleRate,volume:this.volume},e=>{this.pcmData.data.push(e),this.pcmData.frameCnt+=e[0].length})};getState=()=>({time:this.timestamp,decState:this.decoder?.state,decQSize:this.decoder?.decodeQueueSize,decCursorIdx:this.decCursorIdx,sampleLen:this.samples.length,pcmLen:this.pcmData.frameCnt,clipIdCnt:Wb,sleepCnt:this.sleepCnt,memInfo:Lk()});destroy=()=>{this.decoder=null,this.curAborter.abort=!0,this.pcmData={frameCnt:0,data:[]},this.localFileReader.close()}}function xq(r,e,t){let i=0,n=0;const s=c=>{if(n+=1,c.length!==0){if(e.volume!==1)for(const h of c)for(let d=0;d<h.length;d++)h[d]*=e.volume;c.length===1&&(c=[c[0],c[0]]),t(c)}},o=yq(s),a=e.resampleRate!==r.sampleRate;let l=new AudioDecoder({output:c=>{const h=$w(c);a?o(()=>uL(h,c.sampleRate,{rate:e.resampleRate,chanCount:c.numberOfChannels})):s(h),c.close()},error:c=>{c.message.includes("Codec reclaimed due to inactivity")||u("Video AudioDecoder err",c)}});l.configure(r);function u(c,h){const d=`${c}: ${h.message}, state: ${JSON.stringify({qSize:l.decodeQueueSize,state:l.state,inputCnt:i,outputCnt:n})}`;throw Ue.error(d),Error(d)}return{decode(c){i+=c.length;try{for(const h of c)l.decode(h)}catch(h){u("decode audio chunk error",h)}},close(){l.state!=="closed"&&l.close()},get decoding(){return i>n&&l.decodeQueueSize>0},get state(){return l.state},get decodeQueueSize(){return l.decodeQueueSize}}}function yq(r){const e=[];let t=0;function i(o,a){e[a]=o,n()}function n(){const o=e[t];o!=null&&(r(o),t+=1,n())}let s=0;return o=>{const a=s;s+=1,o().then(l=>i(l,a)).catch(l=>i(l,a))}}function Uk(r,e){const t=[new Float32Array(e),new Float32Array(e)];let i=0,n=0;for(;n<r.data.length;){const[s,o]=r.data[n];if(i+s.length>e){const a=e-i;t[0].set(s.subarray(0,a),i),t[1].set(o.subarray(0,a),i),r.data[n][0]=s.subarray(a,s.length),r.data[n][1]=o.subarray(a,o.length);break}else t[0].set(s,i),t[1].set(o,i),i+=s.length,n++}return r.data=r.data.slice(n),r.frameCnt-=e,t}async function zk(r,e){const t=r[0],i=r.at(-1);if(i==null)return[];const n=i.offset+i.size-t.offset;if(n<3e7){const s=new Uint8Array(await e.read(n,{at:t.offset}));return r.map(o=>{const a=o.offset-t.offset;return new EncodedVideoChunk({type:o.is_sync?"key":"delta",timestamp:o.cts,duration:o.duration,data:s.subarray(a,a+o.size)})})}return await Promise.all(r.map(async s=>new EncodedVideoChunk({type:s.is_sync?"key":"delta",timestamp:s.cts,duration:s.duration,data:await e.read(s.size,{at:s.offset})})))}function bq(r,e){if(r.length===0)return[];let t=0,i=0,n=-1;for(let l=0;l<r.length;l++){const u=r[l];if(n===-1&&e<u.cts&&(n=l-1),u.is_idr)if(n===-1)t=l;else{i=l;break}}const s=r[n];if(s==null)throw Error("Not found video sample by time");const o=r.slice(0,i===0?r.length:i).map(l=>({...l}));for(let l=t;l<o.length;l++){const u=o[l];e<u.cts&&(u.deleted=!0,u.cts=-1)}Yb(o);const a=r.slice(s.is_idr?n:t).map(l=>({...l,cts:l.cts-e}));for(const l of a)l.cts<0&&(l.deleted=!0,l.cts=-1);return Yb(a),[o,a]}function _q(r,e){if(r.length===0)return[];let t=-1;for(let s=0;s<r.length;s++){const o=r[s];if(!(e>o.cts)){t=s;break}}if(t===-1)throw Error("Not found audio sample by time");const i=r.slice(0,t).map(s=>({...s})),n=r.slice(t).map(s=>({...s,cts:s.cts-e}));return[i,n]}function Xb(r,e,t){if(r.state==="configured"){for(let i=0;i<e.length;i++)r.decode(e[i]);r.flush().catch(i=>{if(!(i instanceof Error))throw i;if(i.message.includes("Decoding error")&&t.onDecodingError!=null){t.onDecodingError(i);return}if(!i.message.includes("Aborted due to close"))throw i})}}function wq(r,e){if(e!=="avc1"&&e!=="hvc1")return 0;const t=new DataView(r.buffer);for(let i=0;i<r.byteLength-4;){if(e==="avc1"){const n=t.getUint8(i+4)&31;if(n===5||n===7||n===8)return i}else if(e==="hvc1"){const n=t.getUint8(i+4)>>1&63;if(n===19||n===20||n===32||n===33||n===34)return i}i+=t.getUint32(i)+4}return-1}function Yb(r){let e=0,t=null;for(const i of r)if(!i.deleted){if(i.is_sync&&(e+=1),e>=2)break;(t==null||i.cts<t.cts)&&(t=i)}t!=null&&t.cts<2e5&&(t.duration+=t.cts,t.cts=0)}function Lk(){try{const r=performance.memory;return{jsHeapSizeLimit:r.jsHeapSizeLimit,totalJSHeapSize:r.totalJSHeapSize,usedJSHeapSize:r.usedJSHeapSize,percentUsed:(r.usedJSHeapSize/r.jsHeapSizeLimit).toFixed(3),percentTotal:(r.totalJSHeapSize/r.jsHeapSizeLimit).toFixed(3)}}catch{return{}}}async function Sq(r,e,t,i,n,s){const o=await e.createReader(),a=await zk(r.filter(c=>!c.deleted&&c.is_sync&&c.cts>=n.start&&c.cts<=n.end),o);if(a.length===0||i.aborted){s(null,!0);return}let l=0;Xb(u(),a,{onDecodingError:c=>{Ue.warn("thumbnailsByKeyFrame",c),l===0?Xb(u(!0),a,{onDecodingError:h=>{o.close(),Ue.error("thumbnailsByKeyFrame retry soft deocde",h)}}):(s(null,!0),o.close())}});function u(c=!1){const h={...t,...c?{hardwareAcceleration:"prefer-software"}:{}},d=new VideoDecoder({output:f=>{l+=1;const p=l===a.length;s(f,p),p&&(o.close(),d.state!=="closed"&&d.close())},error:f=>{const p=`thumbnails decoder error: ${f.message}, config: ${JSON.stringify(h)}, state: ${JSON.stringify({qSize:d.decodeQueueSize,state:d.state,outputCnt:l,inputCnt:a.length})}`;throw Ue.error(p),Error(p)}});return i.addEventListener("abort",()=>{o.close(),d.state!=="closed"&&d.close()}),d.configure(h),d}}function Tq(r,e,t){const i=new OffscreenCanvas(r,e),n=i.getContext("2d");return async s=>(n.drawImage(s,0,0,r,e),s.close(),await i.convertToBlob(t))}class Ki extends Mn{type="Text";ready;_meta={duration:1/0,width:0,height:0};get meta(){return{...this._meta}}get width(){return this._width}set width(e){Math.abs(this.width-e)<.1||(this._width=e,this.refreshText().then(()=>{this.emit("propsChange",{width:e})}))}get height(){return this._height}set height(e){Math.abs(this.height-e)<.1||(this._height=e,this.refreshText().then(()=>{this.emit("propsChange",{height:e})}))}_lastContentWidth=0;_lastContentHeight=0;_text="";get text(){return this._text}set text(e){this._text!==e&&(this._text=e,this.originalOpts&&this.textStyle&&this.refreshText().then(()=>{this.emit("propsChange",{text:e})}))}get style(){return{fontSize:this.originalOpts.fontSize,fontFamily:this.originalOpts.fontFamily,fontWeight:this.originalOpts.fontWeight,fontStyle:this.originalOpts.fontStyle,fill:this.originalOpts.fill,align:this.originalOpts.align,stroke:this.originalOpts.stroke?typeof this.originalOpts.stroke=="object"?{color:this.originalOpts.stroke.color,width:this.originalOpts.stroke.width,join:this.originalOpts.stroke.join,cap:this.originalOpts.stroke.cap,miterLimit:this.originalOpts.stroke.miterLimit}:{color:this.originalOpts.stroke,width:this.originalOpts.strokeWidth??0}:void 0,dropShadow:this.originalOpts.dropShadow?{color:this.originalOpts.dropShadow.color??"#000000",alpha:this.originalOpts.dropShadow.alpha??.5,blur:this.originalOpts.dropShadow.blur??4,distance:this.originalOpts.dropShadow.distance??0,angle:this.originalOpts.dropShadow.angle??0}:void 0,wordWrap:this.originalOpts.wordWrap,wordWrapWidth:this.originalOpts.wordWrapWidth,lineHeight:this.originalOpts.lineHeight,letterSpacing:this.originalOpts.letterSpacing,textCase:this.originalOpts.textCase,textDecoration:this.originalOpts.textDecoration}}set style(e){this.updateStyle(e)}get textAlign(){return this.originalOpts.align||this.originalOpts.textAlign||"left"}set textAlign(e){this.updateStyle({align:e})}get verticalAlign(){return this.originalOpts.verticalAlign||this.originalOpts.textDecoration||"top"}set verticalAlign(e){["underline","overline","strikethrough","line-through"].includes(e)?(this.updateStyle({textDecoration:e==="strikethrough"?"line-through":e}),this.originalOpts.verticalAlign=e):this.updateStyle({verticalAlign:e})}get textCase(){return this.originalOpts.textCase||"none"}set textCase(e){this.updateStyle({textCase:e})}pixiTextContainer=null;wordTexts=[];textStyle;textStyleBase;renderTexture=null;externalRenderer=null;pixiApp=null;originalOpts;id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effects=[];constructor(e,t={},i){super(),this.originalOpts={...t},this.text=e,this.externalRenderer=i??null;const n=this.createStyleFromOpts(t),{wordWrap:s,wordWrapWidth:o,lineHeight:a,letterSpacing:l,fill:u,...c}=n,h=new It(n),d=new It(c);this.textStyle=h,this.textStyleBase=d,this.ready=(async()=>(await this.refreshText(),{...this._meta}))()}setRenderer(e){this.externalRenderer=e}async getRenderer(){if(this.externalRenderer!=null)return this.externalRenderer;if(this.pixiApp?.renderer==null)throw new Error("TextClip: Failed to create renderer. Please provide a renderer via constructor or setRenderer() method.");return this.pixiApp.renderer}async getTexture(){return this.pixiTextContainer==null||this.renderTexture==null?null:((await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture}),this.renderTexture)}async tick(e){if(await this.ready,this.pixiTextContainer==null||this.renderTexture==null)throw new Error("Text not initialized");if(this.renderTexture.width<=0||this.renderTexture.height<=0)throw new Error(`Invalid RenderTexture dimensions: ${this.renderTexture.width}x${this.renderTexture.height}`);(await this.getRenderer()).render({container:this.pixiTextContainer,target:this.renderTexture});const i=this.renderTexture.source?.resource?.source;let n;if(i instanceof HTMLCanvasElement)n=await createImageBitmap(i);else if(i instanceof OffscreenCanvas)n=await createImageBitmap(i);else{const a=(await this.getRenderer()).extract.canvas(this.renderTexture);if(a instanceof HTMLCanvasElement||a instanceof OffscreenCanvas)n=await createImageBitmap(a);else{const l=this.renderTexture.width,u=this.renderTexture.height;throw new OffscreenCanvas(l,u).getContext("2d")==null?new Error("Failed to create 2d context for fallback rendering"):new Error("Unable to extract canvas from render texture")}}return{video:n,state:"success"}}async split(e){await this.ready;const t=await this.clone(),i=await this.clone();return[t,i]}animate(e){super.animate(e,this.pixiTextContainer)}addEffect(e){this.effects.push(e)}editEffect(e,t){const i=this.effects.find(n=>n.id===e);i&&Object.assign(i,t)}removeEffect(e){const t=this.effects.findIndex(i=>i.id===e);t!==-1&&this.effects.splice(t,1)}async clone(){await this.ready;const e=this.textStyle,t=this.originalOpts||{},i=o=>{if(o!=null){if(typeof o=="number")return o;if(o instanceof ye)return o.toNumber()}},n={fontSize:t.fontSize??e.fontSize,fontFamily:t.fontFamily??(Array.isArray(e.fontFamily)?e.fontFamily[0]:typeof e.fontFamily=="string"?e.fontFamily:"Roboto"),fontWeight:t.fontWeight??e.fontWeight,fontStyle:t.fontStyle??e.fontStyle,align:t.align??(e.align==="justify"?"left":e.align),textCase:t.textCase,textDecoration:t.textDecoration};if(t.fill&&typeof t.fill=="object"&&"type"in t.fill&&t.fill.type==="gradient")n.fill=t.fill;else{const o=i(e.fill);n.fill=o??16777215}if(t.stroke&&typeof t.stroke=="object"&&"color"in t.stroke)n.stroke=t.stroke;else{const o=i(e.stroke);o!==void 0&&(n.stroke=o),n.strokeWidth=t.strokeWidth??e.strokeThickness??0}if(t.dropShadow)n.dropShadow=t.dropShadow;else if(e.dropShadow){const o=e.dropShadow,a=i(o.color);a!==void 0&&(n.dropShadow={color:a,alpha:o.alpha,blur:o.blur,angle:o.angle,distance:o.distance})}if(t.wordWrap!==void 0?(n.wordWrap=t.wordWrap,n.wordWrapWidth=t.wordWrapWidth):e.wordWrap&&(n.wordWrap=e.wordWrap,n.wordWrapWidth=e.wordWrapWidth),t.lineHeight!==void 0)n.lineHeight=t.lineHeight;else if(e.lineHeight!==void 0){const o=n.fontSize??e.fontSize??40;n.lineHeight=e.lineHeight/o}t.letterSpacing!==void 0?n.letterSpacing=t.letterSpacing:e.letterSpacing!==void 0&&(n.letterSpacing=e.letterSpacing);const s=new Ki(this.text,n);return await s.ready,this.copyStateTo(s),s.id=this.id,s.effects=[...this.effects],s}async updateStyle(e){let t={...e};e.style&&(t={...t,...e.style},delete t.style),this.originalOpts={...this.originalOpts,...t};const i=this.createStyleFromOpts(this.originalOpts),{wordWrap:n,wordWrapWidth:s,lineHeight:o,letterSpacing:a,fill:l,...u}=i,c=new It(u),h=new It(i);this.textStyle=h,this.textStyleBase=c,await this.refreshText(),this.emit("propsChange",e)}async refreshText(){const e=this.textStyle,t=this.textStyleBase;let i=this.text;const n=this.originalOpts.textCase;n==="uppercase"?i=i.toUpperCase():n==="lowercase"?i=i.toLowerCase():n==="title"&&(i=i.replace(/\w\S*/g,k=>k.charAt(0).toUpperCase()+k.substring(1).toLowerCase())),typeof document<"u"&&await document.fonts.ready,this.pixiTextContainer?this.pixiTextContainer.removeChildren():this.pixiTextContainer=new Pe;const s=i.split(/\s+/).filter(k=>k.length>0);this.wordTexts.forEach(k=>k.destroy()),this.wordTexts=s.map(k=>{const Y=new Il({text:k,style:this.textStyle});return this.pixiTextContainer.addChild(Y),Y});const o=this.originalOpts.textDecoration||this.originalOpts.verticalAlign,a=this.originalOpts.lineHeight??1,l=e.fontSize??40,u=l*a,c=Ht.measureText(" ",t),h=new Il({text:" ",style:this.textStyleBase}),d=Math.ceil(h.getLocalBounds().width||h.width||c.width);h.destroy();const f=e.wordWrap&&e.wordWrapWidth>0?e.wordWrapWidth:1e5,p=[];let m=[],g=0,v=0;this.wordTexts.forEach(k=>{const Y=k.getLocalBounds(),H=Math.ceil(Y.width||k.width),$=Math.ceil(Y.height||k.height),K=g+(g>0?d:0)+H;K<=f||m.length===0?(m.push(k),g=K,v=Math.max(v,$)):(m.length>0&&p.push({words:m,width:g,height:Math.max(v,u)}),m=[k],g=H,v=$)}),m.length>0&&p.push({words:m,width:g,height:Math.max(v,u)});let x=0,y=0;p.forEach(k=>{x=Math.max(x,k.width),y+=k.height});const b=x,T=y;let P=b;e.wordWrap&&e.wordWrapWidth>0&&(P=Math.max(P,e.wordWrapWidth));const A=T,E=this.width===0||Math.abs(this.width-this._lastContentWidth)<.1,_=this.height===0||Math.abs(this.height-this._lastContentHeight)<.1,S=E?P:Math.max(P,this.width||0),I=_?A:Math.max(A,this.height||0);this._lastContentWidth=P,this._lastContentHeight=A;let M=0;const O=this.originalOpts.verticalAlign||"top";O==="center"?M=(I-T)/2:O==="bottom"&&(M=I-T);let U=M;const X=new Ze;let D=!1;p.forEach(k=>{let Y=0;const H=this.textAlign;H==="center"?Y=(S-k.width)/2:H==="right"&&(Y=S-k.width);const $=Y;if(k.words.forEach((K,we)=>{K.x=Math.round(Y),K.y=Math.round(U),Y+=(K.getLocalBounds().width||K.width)+(we<k.words.length-1?d:0)}),o&&o!=="none"&&["underline","overline","strikethrough","line-through"].includes(o)){D=!0;const K=o==="strikethrough"?"line-through":o,we=Math.max(1,l/12);let Ie=16777215;typeof e.fill=="number"?Ie=e.fill:e.fill&&typeof e.fill=="object"&&"fill"in e.fill&&(Ie=16777215);let ve=0;K==="underline"?ve=k.height:K==="line-through"?ve=k.height/2:K==="overline"&&(ve=0),X.rect($,U+ve,k.width,we),X.fill(Ie)}U+=k.height}),D&&this.pixiTextContainer.addChild(X),this.renderTexture&&this.renderTexture.destroy(),this.renderTexture=Ot.create({width:S,height:I}),this._meta.width=S,this._meta.height=I,this._width=S,this._height=I,this.duration===0&&this._meta.duration!==1/0&&(this.duration=this._meta.duration,this.display.to=this.display.from+this.duration)}createStyleFromOpts(e){const t=e.fontSize??40,i=e.lineHeight??1,n={fontSize:t,fontFamily:e.fontFamily??"Roboto",fontWeight:e.fontWeight??"normal",fontStyle:e.fontStyle??"normal",align:e.align??"left",wordWrap:e.wordWrap??!1,wordWrapWidth:e.wordWrapWidth??100,lineHeight:t*i,letterSpacing:e.letterSpacing??0};if(e.fill&&typeof e.fill=="object"&&e.fill.type==="gradient"){const s=new Dr(e.fill.x0,e.fill.y0,e.fill.x1,e.fill.y1);e.fill.colors.forEach(({ratio:o,color:a})=>{const l=typeof a=="number"?a:yt(a)??16777215;s.addColorStop(o,l)}),n.fill={fill:s}}else{const{color:s,alpha:o}=Dn(e.fill);n.fill=s,o<1&&(n.fillAlpha=o)}if(e.stroke&&typeof e.stroke=="object"&&"color"in e.stroke){const s=yt(e.stroke.color);s!==void 0&&(n.stroke={color:s,width:e.stroke.width,join:e.stroke.join,cap:e.stroke.cap,miterLimit:e.stroke.miterLimit})}else{const s=yt(e.stroke),o=e.strokeWidth??0;s!==void 0&&o>0?n.stroke={color:s,width:o}:e.strokeWidth&&e.strokeWidth>0&&(n.stroke={color:0,width:e.strokeWidth})}if(e.dropShadow){const s=yt(e.dropShadow.color);s!==void 0&&(n.dropShadow={color:s,alpha:e.dropShadow.alpha??.5,blur:e.dropShadow.blur??4,angle:e.dropShadow.angle??Math.PI/6,distance:e.dropShadow.distance??2})}return n}destroy(){if(!this.destroyed){Ue.info("Text destroy");try{this.pixiTextContainer!=null&&(this.pixiTextContainer.destroyed||this.pixiTextContainer.destroy({children:!0}))}catch{}finally{this.pixiTextContainer=null}try{this.renderTexture!=null&&this.renderTexture.destroyed!==!0&&this.renderTexture.destroy(!0)}catch{}finally{this.renderTexture=null}if(this.externalRenderer=null,this.pixiApp!=null)try{const e=this.pixiApp;e.destroyed!==!0&&e.renderer!=null&&this.pixiApp.destroy(!0,{children:!0,texture:!0})}catch{}finally{this.pixiApp=null}super.destroy()}}toJSON(e=!1){const t=super.toJSON(e),i={};return this.originalOpts.fontSize!==void 0&&(i.fontSize=this.originalOpts.fontSize),this.originalOpts.fontFamily!==void 0&&(i.fontFamily=this.originalOpts.fontFamily),this.originalOpts.fontWeight!==void 0&&(i.fontWeight=this.originalOpts.fontWeight),this.originalOpts.fontStyle!==void 0&&(i.fontStyle=this.originalOpts.fontStyle),this.originalOpts.fill!==void 0&&(i.color=this.originalOpts.fill),this.originalOpts.align!==void 0&&(i.align=this.originalOpts.align),this.originalOpts.wordWrap!==void 0&&(i.wordWrap=this.originalOpts.wordWrap),this.originalOpts.wordWrapWidth!==void 0&&(i.wordWrapWidth=this.originalOpts.wordWrapWidth),this.originalOpts.lineHeight!==void 0&&(i.lineHeight=this.originalOpts.lineHeight),this.originalOpts.letterSpacing!==void 0&&(i.letterSpacing=this.originalOpts.letterSpacing),this.originalOpts.stroke&&(typeof this.originalOpts.stroke=="object"?i.stroke={color:this.originalOpts.stroke.color,width:this.originalOpts.stroke.width,join:this.originalOpts.stroke.join,cap:this.originalOpts.stroke.cap,miterLimit:this.originalOpts.stroke.miterLimit}:i.stroke={color:this.originalOpts.stroke,width:this.originalOpts.strokeWidth??0}),this.originalOpts.dropShadow&&(i.shadow={color:this.originalOpts.dropShadow.color??"#000000",alpha:this.originalOpts.dropShadow.alpha??.5,blur:this.originalOpts.dropShadow.blur??4,distance:this.originalOpts.dropShadow.distance??0,angle:this.originalOpts.dropShadow.angle??0}),{...t,type:"Text",text:this.text,style:i,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Text")throw new Error(`Expected Text, got ${e.type}`);const t=e.text||"",i=e.style||{},n={};i.fontSize!==void 0&&(n.fontSize=i.fontSize),i.fontFamily!==void 0&&(n.fontFamily=i.fontFamily),i.fontWeight!==void 0&&(n.fontWeight=i.fontWeight),i.fontStyle!==void 0&&(n.fontStyle=i.fontStyle),i.color!==void 0&&(n.fill=i.color),i.align!==void 0&&(n.align=i.align),i.wordWrap!==void 0&&(n.wordWrap=i.wordWrap),i.wordWrapWidth!==void 0&&(n.wordWrapWidth=i.wordWrapWidth),i.lineHeight!==void 0&&(n.lineHeight=i.lineHeight),i.letterSpacing!==void 0&&(n.letterSpacing=i.letterSpacing),i.stroke&&(i.stroke.join||i.stroke.cap||i.stroke.miterLimit!==void 0?n.stroke={color:i.stroke.color,width:i.stroke.width,join:i.stroke.join,cap:i.stroke.cap,miterLimit:i.stroke.miterLimit}:(n.stroke=i.stroke.color,n.strokeWidth=i.stroke.width)),i.shadow&&(n.dropShadow={color:i.shadow.color,alpha:i.shadow.alpha,blur:i.shadow.blur,distance:i.shadow.distance,angle:i.shadow.angle});const s=new Ki(t,n);return s.left=e.left,s.top=e.top,s.width=e.width,s.height=e.height,s.angle=e.angle,s.display.from=e.display.from,s.display.to=e.display.to,s.duration=e.duration,s.playbackRate=e.playbackRate,s.zIndex=e.zIndex,s.opacity=e.opacity,s.flip=e.flip,e.animation&&s.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(s.id=e.id),e.effects&&(s.effects=e.effects),await s.ready,s}getVisibleHandles(){return["mr","mb","br","rot"]}}function Cq(r){return r.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^./,e=>e.toUpperCase())}class Qi extends Mn{type="Effect";ready;_meta={duration:5e6,width:0,height:0};get meta(){return{...this._meta}}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;effect;constructor(e){super(),this.effect={id:`eff_${Date.now()}`,key:e,name:e},this.name=Cq(e),this.ready=Promise.resolve(this._meta),this.duration=this._meta.duration}async clone(){const e=new Qi(this.effect.key);return this.copyStateTo(e),e.effect={...this.effect},e.id=this.id,e}async tick(e){return{video:void 0,state:"success"}}async split(e){const t=await this.clone(),i=await this.clone();return[t,i]}toJSON(e=!1){return{...super.toJSON(e),type:"Effect",effect:this.effect,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Effect")throw new Error(`Expected Effect, got ${e.type}`);const t=new Qi(e.effect.key);return t.effect=e.effect,t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),await t.ready,t}}class kl extends Mn{type="Placeholder";meta={width:0,height:0,duration:0};constructor(e,t={},i="Placeholder"){super(),this.type=i,this.src=e,this.meta={width:t.width||1280,height:t.height||720,duration:t.duration||5e6},this.width=this.meta.width,this.height=this.meta.height,this.duration=this.meta.duration,this.trim.to=this.duration,this.display.to=this.display.from+this.duration,this.ready=Promise.resolve(this.meta)}placeholderFrame=null;async tick(e){if(!this.placeholderFrame){const t=document.createElement("canvas");t.width=this.meta.width,t.height=this.meta.height;const i=t.getContext("2d");i&&(i.fillStyle="#1e1e1e",i.fillRect(0,0,t.width,t.height),i.fillStyle="#ffffff",i.font=`${Math.floor(t.height/10)}px sans-serif`,i.textAlign="center",i.textBaseline="middle",i.fillText("Loading...",t.width/2,t.height/2),i.strokeStyle="#333333",i.lineWidth=10,i.strokeRect(0,0,t.width,t.height)),this.placeholderFrame=await createImageBitmap(t)}return{video:this.placeholderFrame,state:e>=this.duration?"done":"success",audio:[]}}async clone(){const e=new kl(this.src,this.meta);return this.copyStateTo(e),e.id=this.id,e}async split(e){const t=await this.clone(),i=await this.clone();return t.trim.to=e+this.trim.from,i.trim.from=e+this.trim.from,t.duration=t.trim.to-t.trim.from,i.duration=i.trim.to-i.trim.from,t.display.to=t.display.from+t.duration,i.display.from=t.display.to,i.display.to=i.display.from+i.duration,[t,i]}static async fromObject(e){if(e.type!=="Placeholder")throw new Error(`Expected Placeholder, got ${e.type}`);const t=new kl(e.src,{width:e.width,height:e.height,duration:e.duration});return t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.id&&(t.id=e.id),await t.ready,t}}class Bi extends Mn{type="Transition";ready;_meta={duration:2e6,width:0,height:0};get meta(){return{...this._meta}}id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;transitionEffect;fromClipId=null;toClipId=null;constructor(e){super(),this.transitionEffect={id:`trans_${Date.now()}`,key:e,name:e},this.ready=Promise.resolve(this._meta),this.duration=this._meta.duration}async clone(){const e=new Bi(this.transitionEffect.key);return this.copyStateTo(e),e.fromClipId=this.fromClipId,e.toClipId=this.toClipId,e}async tick(e){return{video:void 0,state:"success"}}async split(e){const t=await this.clone(),i=await this.clone();return[t,i]}toJSON(e=!1){return{...super.toJSON(e),type:"Transition",transitionEffect:this.transitionEffect,fromClipId:this.fromClipId,toClipId:this.toClipId,id:this.id,effects:this.effects}}static async fromObject(e){if(e.type!=="Transition")throw new Error(`Expected Transition, got ${e.type}`);const t=new Bi(e.transitionEffect.key);return t.transitionEffect=e.transitionEffect,t.fromClipId=e.fromClipId||null,t.toClipId=e.toClipId||null,t.left=e.left,t.top=e.top,t.width=e.width,t.height=e.height,t.angle=e.angle,t.display.from=e.display.from,t.display.to=e.display.to,t.duration=e.duration,t.playbackRate=e.playbackRate,t.zIndex=e.zIndex,t.opacity=e.opacity,t.flip=e.flip,e.animation&&t.setAnimation(e.animation.keyFrames,e.animation.opts),e.id&&(t.id=e.id),await t.ready,t}}function Nk(r,e){let t=!1;async function i(){const n=r.getReader();for(;!t;){const{value:s,done:o}=await n.read();if(o){e.onDone();return}await e.onChunk(s)}n.releaseLock(),await r.cancel()}return i().catch(console.error),()=>{t=!0}}class Gk{readable;writable;inputBufOffset=0;isStreamCancelled=!1;constructor(){const e=qn.createFile();this.readable=new ReadableStream({start:t=>this.initMP4Box(e,t),cancel:()=>{this.isStreamCancelled=!0,e.stop()}},{highWaterMark:50}),this.writable=new WritableStream({write:async t=>{if(this.isStreamCancelled)throw new Error("Stream cancelled");const i=t.buffer;i.fileStart=this.inputBufOffset,this.inputBufOffset+=i.byteLength,e.appendBuffer(i)},close:()=>{e.flush(),e.stop(),e.onFlush?.()},abort:t=>{Aq.error("SampleTransform writable aborted:",t),e.stop()}})}initMP4Box(e,t){e.onReady=n=>{[n.videoTracks[0],n.audioTracks[0]].forEach(s=>{s&&e.setExtractionOptions(s.id,s.video?"video":"audio",{nbSamples:100})}),t.enqueue({chunkType:"ready",data:{info:n,file:e}}),e.start()};const i={};e.onSamples=(n,s,o)=>{const a=o.map(l=>({...l}));t.enqueue({chunkType:"samples",data:{id:n,type:s,samples:a}}),i[n]=(i[n]??0)+o.length,e.releaseUsedSamples(n,i[n])},e.onFlush=()=>{t.close()},e.onError=n=>{t.error(new Error(`mp4box error: ${n}`))}}}const Aq={error:(...r)=>console.error("[SampleTransform]",...r)};function Eq(r){let e=0;const t=r.boxes,i=[];let n=0;async function s(){const p=f(t,e);e=t.length,i.forEach(({track:m,id:g})=>{const v=m.samples.at(-1);v!=null&&(n=Math.max(n,v.cts+v.duration)),r.releaseUsedSamples(g,m.samples.length),m.samples=[]}),r.mdats=[],r.moofs=[],p!=null&&await c?.write(p)}let o=[];function a(){if(o.length>0)return!0;const p=t.findIndex(m=>m.type==="moov");if(p===-1)return!1;if(o=t.slice(0,p+1),e=p+1,i.length===0)for(let m=1;;m+=1){const g=r.getTrackById(m);if(g==null)break;i.push({track:g,id:m})}return!0}let l=0;const u=G0();let c=null;const h=(async()=>{c=await u.createWriter(),l=self.setInterval(()=>{a()&&s()},100)})();let d=!1;return async()=>{if(d)throw Error("File exported");if(d=!0,await h,clearInterval(l),!a()||c==null)return null;r.flush(),await s(),await c?.close();const p=o.find(v=>v.type==="moov");if(p==null)return null;p.mvhd.duration=n;const m=G0(),g=f(o,0);return await Vs(m,g.slice()),await Vs(m,u,{overwrite:!1}),await m.stream()};function f(p,m){if(m>=p.length)return null;const g=new qn.DataStream;for(let v=m;v<p.length;v++)p[v]!==null&&(p[v].write(g),delete p[v]);return new Uint8Array(g.buffer).slice()}}function Pq(r){const e=new ArrayBuffer(r.byteLength);r.copyTo(e);const t=r.timestamp;return{duration:r.duration??0,dts:t,cts:t,is_sync:r.type==="key",data:e}}async function Hk(r){const e=qn.createFile(),t=Eq(e);await Iq(r,e);const i=await t();if(i==null)throw Error("Can not generate file from streams");return i}async function Iq(r,e){let t=0,i=0,n=0,s=0,o=0,a=0,l=null,u=null;for(const c of r){let h=null,d=null,f=null,p=null;if(await new Promise(async m=>{Nk(c.pipeThrough(new Gk),{onDone:m,onChunk:async({chunkType:g,data:v})=>{if(g==="ready"){const{videoTrackConf:x,audioTrackConf:y}=Hb(v.file,v.info);t===0&&x!=null&&(t=e.addTrack(x)),s===0&&y!=null&&(s=e.addTrack(y))}else if(g==="samples"){const{type:x,samples:y}=v,b=x==="video"?t:s,T=x==="video"?i:o,P=x==="video"?n:a;y.forEach(E=>{let _,S;x==="video"?(h===null&&(h=E.dts,d=E.cts),_=E.dts-h,S=E.cts-(d??0)):(f===null&&(f=E.dts,p=E.cts),_=E.dts-f,S=E.cts-(p??0)),e.addSample(b,new Uint8Array(E.data),{duration:E.duration,dts:_+T,cts:S+P,is_sync:E.is_sync})});const A=y.at(-1);if(A==null)return;x==="video"?l=A:x==="audio"&&(u=A)}}})}),l!=null&&h!==null&&d!==null){const m=l.dts-h+l.duration,g=l.cts-d+l.duration;i+=m,n+=g}if(u!=null&&l!=null){const m=u.timescale/l.timescale;o=Math.round(i*m),a=Math.round(n*m)}}}async function Bq(r){return await Hk([r])}function kq(r){let e=[];const t=new AudioDecoder({output:i=>{e.push(i)},error:Ue.error});return t.configure(r),{decode:async i=>{i.forEach(s=>{t.decode(new EncodedAudioChunk({type:s.is_sync?"key":"delta",timestamp:1e6*s.cts/s.timescale,duration:1e6*s.duration/s.timescale,data:s.data}))}),await t.flush();const n=e;return e=[],n},close:()=>{t.close()}}}function Rq(r,e){const t={codec:r.codec,sampleRate:r.sampleRate,numberOfChannels:r.numberOfChannels},i=new AudioEncoder({output:o=>{e(Pq(o))},error:o=>{Ue.error("AudioEncoder error:",o,", config:",t)}});i.configure(t);let n=null;function s(o,a){return new AudioData({timestamp:a,numberOfChannels:r.numberOfChannels,numberOfFrames:o.length/r.numberOfChannels,sampleRate:r.sampleRate,format:"f32-planar",data:new Float32Array(o)})}return{encode:async(o,a)=>{n!=null&&i.encode(s(n.data,n.ts)),n={data:o,ts:a}},stop:async()=>{n!=null&&(Fq(n.data,r.numberOfChannels,r.sampleRate),i.encode(s(n.data,n.ts)),n=null),await i.flush(),i.close()}}}function Fq(r,e,t){const i=r.length-1,n=Math.min(t/2,i);for(let s=0;s<n;s++)for(let o=1;o<=e;o++)r[Math.floor(i/o)-s]*=s/n}function Mq(r,e){Ue.info("mixinMP4AndAudio, opts:",{volume:e.volume,loop:e.loop});const t=qn.createFile();let i,n=0,s=0;const o=t.boxes;let a=!1;const l=()=>{if(!a)if(o.find(I=>I.type==="moof")!=null)a=!0;else return null;if(s>=o.length)return null;const E=new qn.DataStream;let _=s;try{for(;_<o.length;)o[_].write(E),delete o[_],_+=1}catch(I){throw I}if(t.moov!=null){for(var S=0;S<t.moov.traks.length;S++)t.moov.traks[S].samples=[];t.mdats=[],t.moofs=[]}return s=o.length,new Uint8Array(E.buffer)};let u=!1,c=!1,h=null;i=new ReadableStream({start(E){n=self.setInterval(()=>{const _=l();_!=null&&!c&&E.enqueue(_)},500),h=_=>{if(clearInterval(n),t.flush(),_!=null){E.error(_);return}const S=l();S!=null&&!c&&E.enqueue(S),c||E.close()}},cancel(){c=!0,clearInterval(n)}});const d=E=>{u||(u=!0,h?.(E))};let f=null,p=null,m=[],g=0,v=0,x=0,y=!0,b=rt.sampleRate;Nk(r.pipeThrough(new Gk),{onDone:async()=>{await p?.stop(),f?.close(),d()},onChunk:async({chunkType:E,data:_})=>{if(E==="ready"){const{videoTrackConf:S,audioTrackConf:I,audioDecoderConf:M}=Hb(_.file,_.info);g===0&&S!=null&&(g=t.addTrack(S));const O=I??{timescale:1e6,samplerate:b,channel_count:rt.channelCount,hdlr:"soun",name:"SoundHandler",type:"mp4a"};v===0&&(v=t.addTrack(O),b=I?.samplerate??b,y=I!=null);const U=new AudioContext({sampleRate:b});m=H0(await U.decodeAudioData(await new Response(e.stream).arrayBuffer())),M!=null&&(f=kq(M)),p=Rq(M??{codec:O.type==="mp4a"?rt.codec:O.type,numberOfChannels:O.channel_count,sampleRate:O.samplerate},X=>t.addSample(v,new Uint8Array(X.data),X))}else if(E==="samples"){const{id:S,type:I,samples:M}=_;if(I==="video"){M.forEach(O=>t.addSample(S,new Uint8Array(O.data),O)),y||await P(M);return}I==="audio"&&await A(M)}}});function T(E){const _=m.map(S=>e.loop?W0(S,x,x+E):S.slice(x,x+E));if(x+=E,e.volume!==1)for(const S of _)for(let I=0;I<S.length;I++)S[I]*=e.volume;return _}async function P(E){const _=E[0],S=E[E.length-1],I=Math.floor((S.cts+S.duration-_.cts)/_.timescale*b),M=eS([T(I)]);M.length!==0&&p?.encode(M,_.cts/_.timescale*1e6)}async function A(E){if(f==null)return;const _=(await f.decode(E)).map($w),S=Jw(_),I=T(S[0].length),M=E[0];p?.encode(eS([S,I]),M.cts/M.timescale*1e6)}return i}const qb=`
3510
3510
  in vec2 aPosition;
3511
3511
  out vec2 vTextureCoord;
3512
3512
 
@@ -3534,7 +3534,7 @@ void main(void)
3534
3534
  gl_Position = filterVertexPosition();
3535
3535
  vTextureCoord = filterTextureCoord();
3536
3536
  }
3537
- `,Mq=`
3537
+ `,Dq=`
3538
3538
  in vec2 vTextureCoord;
3539
3539
  in vec4 vColor;
3540
3540
 
@@ -3564,7 +3564,7 @@ void main(void)
3564
3564
  vec4 fg = texture2D(uTexture, uvs);
3565
3565
  gl_FragColor = fg;
3566
3566
  }
3567
- `,Dq={uTime:{value:0,type:"f32"},rotationCount:{value:4,type:"f32"}},Oq=`
3567
+ `,Oq={uTime:{value:0,type:"f32"},rotationCount:{value:4,type:"f32"}},Uq=`
3568
3568
  in vec2 vTextureCoord;
3569
3569
  in vec4 vColor;
3570
3570
 
@@ -3582,7 +3582,7 @@ void main(void)
3582
3582
  gl_FragColor = fg;
3583
3583
 
3584
3584
  }
3585
- `,Uq={uTime:{value:0,type:"f32"}},zq=`
3585
+ `,zq={uTime:{value:0,type:"f32"}},Lq=`
3586
3586
  in vec2 vTextureCoord;
3587
3587
  in vec4 vColor;
3588
3588
 
@@ -3647,7 +3647,7 @@ void main(void)
3647
3647
  fg.rgb += bubbleColor * bubbles;
3648
3648
  gl_FragColor = fg;
3649
3649
  }
3650
- `,Lq={uTime:{value:0,type:"f32"},bubbleColor:{value:[1,.85,.4],type:"vec3<f32>"},bubbleCount:{value:150,type:"f32"}},Nq=`
3650
+ `,Nq={uTime:{value:0,type:"f32"},bubbleColor:{value:[1,.85,.4],type:"vec3<f32>"},bubbleCount:{value:150,type:"f32"}},Gq=`
3651
3651
  in vec2 vTextureCoord;
3652
3652
  in vec4 vColor;
3653
3653
 
@@ -3671,7 +3671,7 @@ void main(void)
3671
3671
 
3672
3672
  gl_FragColor = color;
3673
3673
  }
3674
- `,Gq={uTime:{value:0,type:"f32"},maxIntensity:{value:1,type:"f32"}},Hq=`
3674
+ `,Hq={uTime:{value:0,type:"f32"},maxIntensity:{value:1,type:"f32"}},Wq=`
3675
3675
  in vec2 vTextureCoord;
3676
3676
  in vec4 vColor;
3677
3677
 
@@ -3700,7 +3700,7 @@ void main(void)
3700
3700
 
3701
3701
  gl_FragColor = fg;
3702
3702
  }
3703
- `,Wq={colorStart:{value:[1,0,0],type:"vec3<f32>"},colorEnd:{value:[0,0,1],type:"vec3<f32>"},direction:{value:0,type:"i32"}},Vq=`
3703
+ `,Vq={colorStart:{value:[1,0,0],type:"vec3<f32>"},colorEnd:{value:[0,0,1],type:"vec3<f32>"},direction:{value:0,type:"i32"}},Xq=`
3704
3704
  in vec2 vTextureCoord;
3705
3705
  in vec4 vColor;
3706
3706
 
@@ -3735,7 +3735,7 @@ void main(void)
3735
3735
 
3736
3736
  gl_FragColor = fg;
3737
3737
  }
3738
- `,Xq={intensity:{value:1,type:"f32"},direction:{value:0,type:"i32"}},Yq=`
3738
+ `,Yq={intensity:{value:1,type:"f32"},direction:{value:0,type:"i32"}},qq=`
3739
3739
  in vec2 vTextureCoord;
3740
3740
  in vec4 vColor;
3741
3741
 
@@ -3773,7 +3773,7 @@ void main(void)
3773
3773
 
3774
3774
  gl_FragColor = vec4(col, 1.0);
3775
3775
  }
3776
- `,qq={uTime:{value:0,type:"f32"},intensity:{value:.5,type:"f32"},sliceCount:{value:12,type:"f32"},rgbShift:{value:.01,type:"f32"}},Wk=`
3776
+ `,jq={uTime:{value:0,type:"f32"},intensity:{value:.5,type:"f32"},sliceCount:{value:12,type:"f32"},rgbShift:{value:.01,type:"f32"}},Wk=`
3777
3777
  in vec2 vTextureCoord;
3778
3778
  in vec4 vColor;
3779
3779
 
@@ -3804,7 +3804,7 @@ void main(void)
3804
3804
 
3805
3805
  gl_FragColor = color;
3806
3806
  }
3807
- `,Vk={pixelSize:{value:.02,type:"f32"},uTime:{value:0,type:"f32"},jitterStrength:{value:.8,type:"f32"}},jq=`
3807
+ `,Vk={pixelSize:{value:.02,type:"f32"},uTime:{value:0,type:"f32"},jitterStrength:{value:.8,type:"f32"}},Kq=`
3808
3808
  precision highp float;
3809
3809
 
3810
3810
  varying vec2 vTextureCoord;
@@ -3864,7 +3864,7 @@ void main(void)
3864
3864
 
3865
3865
  gl_FragColor = vec4(col, base.a);
3866
3866
  }
3867
- `,Kq={uTime:{value:0,type:"f32"},glitchStrength:{value:.02,type:"f32"},glitchSpeed:{value:2,type:"f32"}},Qq=`
3867
+ `,Qq={uTime:{value:0,type:"f32"},glitchStrength:{value:.02,type:"f32"},glitchSpeed:{value:2,type:"f32"}},Zq=`
3868
3868
  precision highp float;
3869
3869
 
3870
3870
  varying vec2 vTextureCoord;
@@ -3904,7 +3904,7 @@ void main(void)
3904
3904
 
3905
3905
  gl_FragColor = vec4(r, g, b, base.a);
3906
3906
  }
3907
- `,Zq={shiftAmount:{value:.01,type:"f32"},angle:{value:0,type:"f32"},uTime:{value:0,type:"f32"},wobbleAmount:{value:.003,type:"f32"},wobbleSpeed:{value:20,type:"f32"}},Jq=`
3907
+ `,Jq={shiftAmount:{value:.01,type:"f32"},angle:{value:0,type:"f32"},uTime:{value:0,type:"f32"},wobbleAmount:{value:.003,type:"f32"},wobbleSpeed:{value:20,type:"f32"}},$q=`
3908
3908
  in vec2 vTextureCoord;
3909
3909
  in vec4 vColor;
3910
3910
 
@@ -3944,7 +3944,7 @@ void main(void)
3944
3944
 
3945
3945
  gl_FragColor = texColor;
3946
3946
  }
3947
- `,$q={dotSize:{value:.03,type:"f32"},intensity:{value:1,type:"f32"},angle:{value:0,type:"f32"},uTime:{value:0,type:"f32"},vibrateStrength:{value:.2,type:"f32"}},ej=`
3947
+ `,ej={dotSize:{value:.03,type:"f32"},intensity:{value:1,type:"f32"},angle:{value:0,type:"f32"},uTime:{value:0,type:"f32"},vibrateStrength:{value:.2,type:"f32"}},tj=`
3948
3948
  in vec2 vTextureCoord;
3949
3949
  in vec4 vColor;
3950
3950
 
@@ -3970,7 +3970,7 @@ void main(void)
3970
3970
  vec4 color = texture2D(uTexture, uv + offset);
3971
3971
  gl_FragColor = color;
3972
3972
  }
3973
- `,tj={uTime:{value:0,type:"f32"},amplitude:{value:.02,type:"f32"},frequency:{value:3,type:"f32"},speed:{value:.5,type:"f32"},direction:{value:0,type:"i32"}},rj=`
3973
+ `,rj={uTime:{value:0,type:"f32"},amplitude:{value:.02,type:"f32"},frequency:{value:3,type:"f32"},speed:{value:.5,type:"f32"},direction:{value:0,type:"i32"}},ij=`
3974
3974
  in vec2 vTextureCoord;
3975
3975
  in vec4 vColor;
3976
3976
 
@@ -4004,7 +4004,7 @@ void main(void)
4004
4004
 
4005
4005
  gl_FragColor = color;
4006
4006
  }
4007
- `,ij={uTime:{value:0,type:"f32"},shineColor:{value:[1,1,1],type:"vec3<f32>"},rayWidth:{value:.05,type:"f32"},rayCount:{value:12,type:"f32"},rotationSpeed:{value:.5,type:"f32"}},nj=`
4007
+ `,nj={uTime:{value:0,type:"f32"},shineColor:{value:[1,1,1],type:"vec3<f32>"},rayWidth:{value:.05,type:"f32"},rayCount:{value:12,type:"f32"},rotationSpeed:{value:.5,type:"f32"}},sj=`
4008
4008
  in vec2 vTextureCoord;
4009
4009
  in vec4 vColor;
4010
4010
 
@@ -4025,7 +4025,7 @@ void main(void)
4025
4025
 
4026
4026
  gl_FragColor = color;
4027
4027
  }
4028
- `,sj={uTime:{value:0,type:"f32"},blinkSpeed:{value:2,type:"f32"},minIntensity:{value:.3,type:"f32"},maxIntensity:{value:1,type:"f32"}},oj=`
4028
+ `,oj={uTime:{value:0,type:"f32"},blinkSpeed:{value:2,type:"f32"},minIntensity:{value:.3,type:"f32"},maxIntensity:{value:1,type:"f32"}},aj=`
4029
4029
  in vec2 vTextureCoord;
4030
4030
  in vec4 vColor;
4031
4031
 
@@ -4049,7 +4049,7 @@ void main(void)
4049
4049
 
4050
4050
  gl_FragColor = color;
4051
4051
  }
4052
- `,aj={uTime:{value:0,type:"f32"},frequency:{value:2,type:"f32"},damping:{value:.8,type:"f32"},strength:{value:.04,type:"f32"}},lj=`
4052
+ `,lj={uTime:{value:0,type:"f32"},frequency:{value:2,type:"f32"},damping:{value:.8,type:"f32"},strength:{value:.04,type:"f32"}},uj=`
4053
4053
  in vec2 vTextureCoord;
4054
4054
  in vec4 vColor;
4055
4055
 
@@ -4068,7 +4068,7 @@ void main(void)
4068
4068
  tex.rgb = mix(tex.rgb, duo, intensity);
4069
4069
  gl_FragColor = tex;
4070
4070
  }
4071
- `,uj={colorA:{value:[.1,.1,.5],type:"vec3<f32>"},colorB:{value:[1,.8,.2],type:"vec3<f32>"},intensity:{value:1,type:"f32"}},cj=`
4071
+ `,cj={colorA:{value:[.1,.1,.5],type:"vec3<f32>"},colorB:{value:[1,.8,.2],type:"vec3<f32>"},intensity:{value:1,type:"f32"}},hj=`
4072
4072
  in vec2 vTextureCoord;
4073
4073
  in vec4 vColor;
4074
4074
 
@@ -4093,7 +4093,7 @@ void main(void)
4093
4093
 
4094
4094
  gl_FragColor = tex;
4095
4095
  }
4096
- `,hj={colorShadow:{value:[.1,0,.3],type:"vec3<f32>"},colorMid:{value:[.2,.8,.8],type:"vec3<f32>"},colorHighlight:{value:[1,.9,.4],type:"vec3<f32>"},intensity:{value:1,type:"f32"}},dj=`
4096
+ `,dj={colorShadow:{value:[.1,0,.3],type:"vec3<f32>"},colorMid:{value:[.2,.8,.8],type:"vec3<f32>"},colorHighlight:{value:[1,.9,.4],type:"vec3<f32>"},intensity:{value:1,type:"f32"}},fj=`
4097
4097
  in vec2 vTextureCoord;
4098
4098
  in vec4 vColor;
4099
4099
 
@@ -4132,7 +4132,7 @@ void main(void)
4132
4132
 
4133
4133
  gl_FragColor = tex;
4134
4134
  }
4135
- `,fj={uTime:{value:0,type:"f32"},amount:{value:1,type:"f32"}},pj=`
4135
+ `,pj={uTime:{value:0,type:"f32"},amount:{value:1,type:"f32"}},mj=`
4136
4136
  in vec2 vTextureCoord;
4137
4137
  in vec4 vColor;
4138
4138
 
@@ -4159,7 +4159,7 @@ void main(void)
4159
4159
 
4160
4160
  gl_FragColor = color;
4161
4161
  }
4162
- `,mj={uTime:{value:0,type:"f32"},uStrength:{value:.8,type:"f32"},swirl:{value:.3,type:"f32"}},gj=`
4162
+ `,gj={uTime:{value:0,type:"f32"},uStrength:{value:.8,type:"f32"},swirl:{value:.3,type:"f32"}},vj=`
4163
4163
  in vec2 vTextureCoord;
4164
4164
  in vec4 vColor;
4165
4165
 
@@ -4184,7 +4184,7 @@ void main(void)
4184
4184
 
4185
4185
  gl_FragColor = color;
4186
4186
  }
4187
- `,vj={uTime:{value:0,type:"f32"},uStrength:{value:.2,type:"f32"},direction:{value:0,type:"i32"}},xj=`
4187
+ `,xj={uTime:{value:0,type:"f32"},uStrength:{value:.2,type:"f32"},direction:{value:0,type:"i32"}},yj=`
4188
4188
  in vec2 vTextureCoord;
4189
4189
  in vec4 vColor;
4190
4190
 
@@ -4232,7 +4232,7 @@ void main(void)
4232
4232
 
4233
4233
  gl_FragColor = vec4(texR.r, texG.g, texB.b, 1.0);
4234
4234
  }
4235
- `,yj={uTime:{value:0,type:"f32"},uStrength:{value:.2,type:"f32"},uNoise:{value:.05,type:"f32"},direction:{value:0,type:"i32"}},bj=`
4235
+ `,bj={uTime:{value:0,type:"f32"},uStrength:{value:.2,type:"f32"},uNoise:{value:.05,type:"f32"},direction:{value:0,type:"i32"}},_j=`
4236
4236
  in vec2 vTextureCoord;
4237
4237
  in vec4 vColor;
4238
4238
 
@@ -4251,7 +4251,7 @@ void main(void)
4251
4251
 
4252
4252
  gl_FragColor = color;
4253
4253
  }
4254
- `,_j={uTime:{value:0,type:"f32"},maxPixelSize:{value:.05,type:"f32"}},wj=`
4254
+ `,wj={uTime:{value:0,type:"f32"},maxPixelSize:{value:.05,type:"f32"}},Sj=`
4255
4255
  in vec2 vTextureCoord;
4256
4256
  in vec4 vColor;
4257
4257
 
@@ -4288,7 +4288,7 @@ void main(void)
4288
4288
 
4289
4289
  gl_FragColor = color;
4290
4290
  }
4291
- `,Sj={uTime:{value:0,type:"f32"},maxBlur:{value:.01,type:"f32"}},Tj=`
4291
+ `,Tj={uTime:{value:0,type:"f32"},maxBlur:{value:.01,type:"f32"}},Cj=`
4292
4292
  precision highp float;
4293
4293
 
4294
4294
  varying vec2 vTextureCoord;
@@ -4309,7 +4309,7 @@ void main(void)
4309
4309
 
4310
4310
  gl_FragColor = tex;
4311
4311
  }
4312
- `,Cj={amount:{value:1,type:"f32"}},Aj=`
4312
+ `,Aj={amount:{value:1,type:"f32"}},Ej=`
4313
4313
  in vec2 vTextureCoord;
4314
4314
  in vec4 vColor;
4315
4315
 
@@ -4327,7 +4327,7 @@ void main(void)
4327
4327
 
4328
4328
  gl_FragColor = tex;
4329
4329
  }
4330
- `,Ej={amount:{value:1,type:"f32"}},Pj=`
4330
+ `,Pj={amount:{value:1,type:"f32"}},Ij=`
4331
4331
  in vec2 vTextureCoord;
4332
4332
 
4333
4333
  uniform sampler2D uTexture;
@@ -4346,7 +4346,7 @@ void main(void)
4346
4346
 
4347
4347
  gl_FragColor = color;
4348
4348
  }
4349
- `,Ij={uIntensity:{value:.5,type:"f32"},uSoftness:{value:.2,type:"f32"}},Bj=`
4349
+ `,Bj={uIntensity:{value:.5,type:"f32"},uSoftness:{value:.2,type:"f32"}},kj=`
4350
4350
  in vec2 vTextureCoord;
4351
4351
 
4352
4352
  uniform sampler2D uTexture;
@@ -4364,7 +4364,7 @@ void main(void)
4364
4364
 
4365
4365
  gl_FragColor = color;
4366
4366
  }
4367
- `,kj={uIntensity:{value:.005,type:"f32"},uDirection:{value:[1,0],type:"vec2<f32>"}},Rj=`
4367
+ `,Rj={uIntensity:{value:.005,type:"f32"},uDirection:{value:[1,0],type:"vec2<f32>"}},Fj=`
4368
4368
  in vec2 vTextureCoord;
4369
4369
  in vec4 vColor;
4370
4370
 
@@ -4457,7 +4457,7 @@ void main(void)
4457
4457
  gl_FragColor = color;
4458
4458
  }
4459
4459
 
4460
- `,Fj={uTime:{value:0,type:"f32"},rotationCount:{value:4,type:"f32"},swirlStrength:{value:.9,type:"f32"},swirlRadius:{value:1,type:"f32"},rainbowIntensity:{value:.25,type:"f32"}},Mj=`
4460
+ `,Mj={uTime:{value:0,type:"f32"},rotationCount:{value:4,type:"f32"},swirlStrength:{value:.9,type:"f32"},swirlRadius:{value:1,type:"f32"},rainbowIntensity:{value:.25,type:"f32"}},Dj=`
4461
4461
  in vec2 vTextureCoord;
4462
4462
  in vec4 vColor;
4463
4463
 
@@ -4518,7 +4518,7 @@ void main() {
4518
4518
  base.rgb += heartColor * hearts;
4519
4519
  gl_FragColor = base;
4520
4520
  }
4521
- `,Dj={uTime:{value:0,type:"f32"},heartColor:{value:[1,.2,.5],type:"vec3<f32>"},heartCount:{value:150,type:"f32"}},Oj=`
4521
+ `,Oj={uTime:{value:0,type:"f32"},heartColor:{value:[1,.2,.5],type:"vec3<f32>"},heartCount:{value:150,type:"f32"}},Uj=`
4522
4522
  in vec2 vTextureCoord;
4523
4523
  in vec4 vColor;
4524
4524
 
@@ -4585,7 +4585,7 @@ void main() {
4585
4585
  base.rgb += butterflyColor * butterflies;
4586
4586
  gl_FragColor = base;
4587
4587
  }
4588
- `,Uj={uTime:{value:0,type:"f32"},butterflyColor:{value:[.5,.6,1],type:"vec3<f32>"},butterflyCount:{value:120,type:"f32"}},zj=`
4588
+ `,zj={uTime:{value:0,type:"f32"},butterflyColor:{value:[.5,.6,1],type:"vec3<f32>"},butterflyCount:{value:120,type:"f32"}},Lj=`
4589
4589
  in vec2 vTextureCoord;
4590
4590
 
4591
4591
  uniform sampler2D uTexture;
@@ -4608,7 +4608,7 @@ void main() {
4608
4608
 
4609
4609
  gl_FragColor = texture2D(uTexture, p + offset);
4610
4610
  }
4611
- `,Lj={uTime:{value:0,type:"f32"},amplitude:{value:30,type:"f32"},speed:{value:30,type:"f32"}},Nj=`
4611
+ `,Nj={uTime:{value:0,type:"f32"},amplitude:{value:30,type:"f32"},speed:{value:30,type:"f32"}},Gj=`
4612
4612
  precision mediump float;
4613
4613
 
4614
4614
  uniform sampler2D uTexture;
@@ -4673,7 +4673,7 @@ void main() {
4673
4673
  gl_FragColor = baseColor;
4674
4674
  }
4675
4675
 
4676
- `,Gj={uTime:{value:0,type:"f32"},persp:{value:.7,type:"f32"},unzoom:{value:.3,type:"f32"},reflection:{value:0,type:"f32"},floating:{value:3,type:"f32"}},Hj=`
4676
+ `,Hj={uTime:{value:0,type:"f32"},persp:{value:.7,type:"f32"},unzoom:{value:.3,type:"f32"},reflection:{value:0,type:"f32"},floating:{value:3,type:"f32"}},Wj=`
4677
4677
  in vec2 vTextureCoord;
4678
4678
 
4679
4679
  uniform sampler2D uTexture;
@@ -4708,7 +4708,7 @@ void main() {
4708
4708
 
4709
4709
  gl_FragColor = texture2D(uTexture, uv);
4710
4710
  }
4711
- `,Wj={uTime:{value:0,type:"f32"},radius:{value:1,type:"f32"},spinPower:{value:18,type:"f32"},speed:{value:4,type:"f32"}},Vj=`
4711
+ `,Vj={uTime:{value:0,type:"f32"},radius:{value:1,type:"f32"},spinPower:{value:18,type:"f32"},speed:{value:4,type:"f32"}},Xj=`
4712
4712
  in vec2 vTextureCoord;
4713
4713
 
4714
4714
  uniform sampler2D uTexture;
@@ -4759,7 +4759,7 @@ void main() {
4759
4759
  }
4760
4760
  gl_FragColor = texture2D(uTexture, tiled);
4761
4761
  }
4762
- `,Xj={uTime:{value:0,type:"f32"},speed:{value:2,type:"f32"},intensity:{value:1.5,type:"f32"},endx:{value:2,type:"i32"},endy:{value:-1,type:"i32"}},Yj=`
4762
+ `,Yj={uTime:{value:0,type:"f32"},speed:{value:2,type:"f32"},intensity:{value:1.5,type:"f32"},endx:{value:2,type:"i32"},endy:{value:-1,type:"i32"}},qj=`
4763
4763
  precision highp float;
4764
4764
 
4765
4765
  in vec2 vTextureCoord;
@@ -4793,7 +4793,7 @@ void main() {
4793
4793
  gl_FragColor = color;
4794
4794
  }
4795
4795
 
4796
- `,qj={uTime:{value:0,type:"f32"},intensity:{value:.05,type:"f32"},speed:{value:2,type:"f32"},slices:{value:10,type:"i32"},randomness:{value:1,type:"f32"}},jj=`
4796
+ `,jj={uTime:{value:0,type:"f32"},intensity:{value:.05,type:"f32"},speed:{value:2,type:"f32"},slices:{value:10,type:"i32"},randomness:{value:1,type:"f32"}},Kj=`
4797
4797
  precision highp float;
4798
4798
 
4799
4799
  in vec2 vTextureCoord;
@@ -4819,7 +4819,7 @@ void main() {
4819
4819
 
4820
4820
  gl_FragColor = vec4(color.rgb * mask, color.a * mask);
4821
4821
  }
4822
- `,Kj={uTime:{value:0,type:"f32"},softness:{value:.2,type:"f32"}},Qj=`
4822
+ `,Qj={uTime:{value:0,type:"f32"},softness:{value:.2,type:"f32"}},Zj=`
4823
4823
  precision highp float;
4824
4824
 
4825
4825
  in vec2 vTextureCoord;
@@ -4894,7 +4894,7 @@ void main() {
4894
4894
  vec4 tex = texture(uTexture, uv);
4895
4895
  gl_FragColor = vec4(tex.rgb * mask, tex.a * mask);
4896
4896
  }
4897
- `,Zj={uTime:{value:0,type:"f32"},softness:{value:.2,type:"f32"},zoom:{value:8,type:"f32"}},Jj=`
4897
+ `,Jj={uTime:{value:0,type:"f32"},softness:{value:.2,type:"f32"},zoom:{value:8,type:"f32"}},$j=`
4898
4898
  precision highp float;
4899
4899
 
4900
4900
  in vec2 vTextureCoord;
@@ -4933,7 +4933,7 @@ void main() {
4933
4933
 
4934
4934
  gl_FragColor = tex;
4935
4935
  }
4936
- `,$j={uTime:{value:0,type:"f32"}},eK=`
4936
+ `,eK={uTime:{value:0,type:"f32"}},tK=`
4937
4937
  precision highp float;
4938
4938
 
4939
4939
  in vec2 vTextureCoord;
@@ -4957,7 +4957,7 @@ void main(void)
4957
4957
 
4958
4958
  gl_FragColor = vec4(color, tex.a);
4959
4959
  }
4960
- `,tK={uTime:{value:0,type:"f32"},speed:{value:10.2,type:"f32"},intensity:{value:1.5,type:"f32"}},rK=`
4960
+ `,rK={uTime:{value:0,type:"f32"},speed:{value:10.2,type:"f32"},intensity:{value:1.5,type:"f32"}},iK=`
4961
4961
  precision highp float;
4962
4962
 
4963
4963
  in vec2 vTextureCoord;
@@ -5038,7 +5038,7 @@ void main() {
5038
5038
 
5039
5039
  gl_FragColor = vec4(color, 1.0);
5040
5040
  }
5041
- `,iK={uTime:{value:0,type:"f32"},framesPerScreen:{value:2,type:"f32"},scrollSpeed:{value:.35,type:"f32"},gateWeave:{value:.6,type:"f32"}},nK=`
5041
+ `,nK={uTime:{value:0,type:"f32"},framesPerScreen:{value:2,type:"f32"},scrollSpeed:{value:.35,type:"f32"},gateWeave:{value:.6,type:"f32"}},sK=`
5042
5042
  precision highp float;
5043
5043
 
5044
5044
  in vec2 vTextureCoord;
@@ -5081,7 +5081,7 @@ void main(void)
5081
5081
  gl_FragColor = color;
5082
5082
  }
5083
5083
 
5084
- `,sK={uTime:{value:0,type:"f32"}},oK=`
5084
+ `,oK={uTime:{value:0,type:"f32"}},aK=`
5085
5085
  precision highp float;
5086
5086
 
5087
5087
  in vec2 vTextureCoord;
@@ -5114,7 +5114,7 @@ void main(void)
5114
5114
  gl_FragColor = color;
5115
5115
  }
5116
5116
 
5117
- `,aK={uTime:{value:0,type:"f32"},strength:{value:.08,type:"f32"},frequency:{value:18,type:"f32"},speed:{value:3.5,type:"f32"}},lK=`
5117
+ `,lK={uTime:{value:0,type:"f32"},strength:{value:.08,type:"f32"},frequency:{value:18,type:"f32"},speed:{value:3.5,type:"f32"}},uK=`
5118
5118
  precision highp float;
5119
5119
 
5120
5120
  in vec2 vTextureCoord;
@@ -5148,7 +5148,7 @@ void main(void)
5148
5148
  gl_FragColor = vec4(color.rgb * mask, color.a);
5149
5149
  }
5150
5150
 
5151
- `,uK={uTime:{value:0,type:"f32"},feather:{value:.03,type:"f32"}},cK=`
5151
+ `,cK={uTime:{value:0,type:"f32"},feather:{value:.03,type:"f32"}},hK=`
5152
5152
  precision highp float;
5153
5153
 
5154
5154
  in vec2 vTextureCoord;
@@ -5181,7 +5181,7 @@ void main(void)
5181
5181
  gl_FragColor = vec4(tex.rgb * mask, tex.a);
5182
5182
  }
5183
5183
 
5184
- `,hK={uTime:{value:0,type:"f32"}},dK=`
5184
+ `,dK={uTime:{value:0,type:"f32"}},fK=`
5185
5185
  precision highp float;
5186
5186
 
5187
5187
  in vec2 vTextureCoord;
@@ -5240,7 +5240,7 @@ void main(void)
5240
5240
  gl_FragColor = vec4(blurred.rgb * mask, blurred.a);
5241
5241
  }
5242
5242
 
5243
- `,fK={uTime:{value:0,type:"f32"}},pK=`
5243
+ `,pK={uTime:{value:0,type:"f32"}},mK=`
5244
5244
  precision highp float;
5245
5245
 
5246
5246
  in vec2 vTextureCoord;
@@ -5267,7 +5267,7 @@ void main(void)
5267
5267
 
5268
5268
  gl_FragColor = color;
5269
5269
  }
5270
- `,mK={uTime:{value:0,type:"f32"},strength:{value:.015,type:"f32"},frequency:{value:10,type:"f32"}},gK=`
5270
+ `,gK={uTime:{value:0,type:"f32"},strength:{value:.015,type:"f32"},frequency:{value:10,type:"f32"}},vK=`
5271
5271
  precision mediump float;
5272
5272
 
5273
5273
  varying vec2 vTextureCoord;
@@ -5303,7 +5303,7 @@ void main(void)
5303
5303
 
5304
5304
  gl_FragColor = vec4(base.rgb + lightningColor + explosionColor, base.a);
5305
5305
  }
5306
- `,vK={uTime:{value:0,type:"f32"}},xK=`
5306
+ `,xK={uTime:{value:0,type:"f32"}},yK=`
5307
5307
  precision mediump float;
5308
5308
 
5309
5309
  varying vec2 vTextureCoord;
@@ -5369,7 +5369,7 @@ void main(void)
5369
5369
  gl_FragColor =
5370
5370
  vec4(base.rgb + veinColor, base.a);
5371
5371
  }
5372
- `,yK={uTime:{value:0,type:"f32"}},bK=`
5372
+ `,bK={uTime:{value:0,type:"f32"}},_K=`
5373
5373
  precision mediump float;
5374
5374
 
5375
5375
  varying vec2 vTextureCoord;
@@ -5403,7 +5403,7 @@ void main(void)
5403
5403
 
5404
5404
  gl_FragColor = color;
5405
5405
  }
5406
- `,_K={uTime:{value:0,type:"f32"}},wK=`
5406
+ `,wK={uTime:{value:0,type:"f32"}},SK=`
5407
5407
  precision highp float;
5408
5408
 
5409
5409
  in vec2 vTextureCoord;
@@ -5437,7 +5437,7 @@ void main(void)
5437
5437
 
5438
5438
  gl_FragColor = base;
5439
5439
  }
5440
- `,SK={uTime:{value:0,type:"f32"},uIntensity:{value:1.8,type:"f32"},neonR:{value:.1,type:"f32"},neonG:{value:.9,type:"f32"},neonB:{value:1,type:"f32"}},TK=`
5440
+ `,TK={uTime:{value:0,type:"f32"},uIntensity:{value:1.8,type:"f32"},neonR:{value:.1,type:"f32"},neonG:{value:.9,type:"f32"},neonB:{value:1,type:"f32"}},CK=`
5441
5441
  precision highp float;
5442
5442
 
5443
5443
  in vec2 vTextureCoord;
@@ -5464,7 +5464,7 @@ void main(void)
5464
5464
 
5465
5465
  gl_FragColor = color;
5466
5466
  }
5467
- `,CK={uTime:{value:0,type:"f32"},uStrength:{value:.02,type:"f32"},uSpeed:{value:20,type:"f32"}},AK=`
5467
+ `,AK={uTime:{value:0,type:"f32"},uStrength:{value:.02,type:"f32"},uSpeed:{value:20,type:"f32"}},EK=`
5468
5468
  precision highp float;
5469
5469
 
5470
5470
  in vec2 vTextureCoord;
@@ -5518,7 +5518,7 @@ void main(void)
5518
5518
 
5519
5519
  gl_FragColor = color;
5520
5520
  }
5521
- `,EK={uTime:{value:0,type:"f32"}},PK=`
5521
+ `,PK={uTime:{value:0,type:"f32"}},IK=`
5522
5522
  precision highp float;
5523
5523
 
5524
5524
  in vec2 vTextureCoord;
@@ -5557,7 +5557,7 @@ void main(void)
5557
5557
 
5558
5558
  gl_FragColor = reflectColor;
5559
5559
  }
5560
- `,IK={uTime:{value:0,type:"f32"},uWaveStrength:{value:.02,type:"f32"},uWaveSpeed:{value:2.5,type:"f32"}},BK=`
5560
+ `,BK={uTime:{value:0,type:"f32"},uWaveStrength:{value:.02,type:"f32"},uWaveSpeed:{value:2.5,type:"f32"}},kK=`
5561
5561
  precision highp float;
5562
5562
 
5563
5563
  in vec2 vTextureCoord;
@@ -5601,7 +5601,7 @@ void main(void)
5601
5601
 
5602
5602
  gl_FragColor = color;
5603
5603
  }
5604
- `,kK={uTime:{value:0,type:"f32"},uStrength:{value:.08,type:"f32"}},RK=`
5604
+ `,RK={uTime:{value:0,type:"f32"},uStrength:{value:.08,type:"f32"}},FK=`
5605
5605
  precision highp float;
5606
5606
 
5607
5607
  in vec2 vTextureCoord;
@@ -5674,7 +5674,7 @@ void main(void)
5674
5674
 
5675
5675
  gl_FragColor = color;
5676
5676
  }
5677
- `,FK={uTime:{value:0,type:"f32"}},MK=`
5677
+ `,MK={uTime:{value:0,type:"f32"}},DK=`
5678
5678
  precision highp float;
5679
5679
 
5680
5680
  in vec2 vTextureCoord;
@@ -5773,7 +5773,7 @@ void main(void)
5773
5773
 
5774
5774
  gl_FragColor = result;
5775
5775
  }
5776
- `,DK={uTime:{value:0,type:"f32"},uCutPos:{value:.28,type:"f32"}},OK=`
5776
+ `,OK={uTime:{value:0,type:"f32"},uCutPos:{value:.28,type:"f32"}},UK=`
5777
5777
  #ifdef GL_ES
5778
5778
  precision mediump float;
5779
5779
  #endif
@@ -5858,7 +5858,7 @@ void main(void)
5858
5858
 
5859
5859
  gl_FragColor = vec4(Color, base.a);
5860
5860
  }
5861
- `,UK={uTime:{value:0,type:"f32"}},zK=`
5861
+ `,zK={uTime:{value:0,type:"f32"}},LK=`
5862
5862
  precision highp float;
5863
5863
 
5864
5864
  varying vec2 vTextureCoord;
@@ -5896,7 +5896,7 @@ void main() {
5896
5896
 
5897
5897
  gl_FragColor = vec4(color, baseColor.a);
5898
5898
  }
5899
- `,LK={uTime:{value:0,type:"f32"},uColor:{value:[1,0,.2],type:"vec3<f32>"},uThickness:{value:.02,type:"f32"},uIntensity:{value:1.5,type:"f32"}},NK=`
5899
+ `,NK={uTime:{value:0,type:"f32"},uColor:{value:[1,0,.2],type:"vec3<f32>"},uThickness:{value:.02,type:"f32"},uIntensity:{value:1.5,type:"f32"}},GK=`
5900
5900
  precision highp float;
5901
5901
 
5902
5902
  varying vec2 vTextureCoord;
@@ -5927,7 +5927,7 @@ void main() {
5927
5927
 
5928
5928
  gl_FragColor = color;
5929
5929
  }
5930
- `,GK={uTime:{value:0,type:"f32"},uStrength:{value:.02,type:"f32"},uFrequency:{value:20,type:"f32"},uSpeed:{value:4,type:"f32"}},HK=`
5930
+ `,HK={uTime:{value:0,type:"f32"},uStrength:{value:.02,type:"f32"},uFrequency:{value:20,type:"f32"},uSpeed:{value:4,type:"f32"}},WK=`
5931
5931
  precision highp float;
5932
5932
 
5933
5933
  varying vec2 vTextureCoord;
@@ -5980,7 +5980,7 @@ void main() {
5980
5980
 
5981
5981
  gl_FragColor = vec4(colorValue, max(base.a, sparkAlpha));
5982
5982
  }
5983
- `,WK={uTime:{value:0,type:"f32"},uDensity:{value:30,type:"f32"},uSpeed:{value:2.5,type:"f32"},uSize:{value:.15,type:"f32"}},VK=`
5983
+ `,VK={uTime:{value:0,type:"f32"},uDensity:{value:30,type:"f32"},uSpeed:{value:2.5,type:"f32"},uSize:{value:.15,type:"f32"}},XK=`
5984
5984
  precision highp float;
5985
5985
 
5986
5986
  varying vec2 vTextureCoord;
@@ -6024,7 +6024,7 @@ void main() {
6024
6024
 
6025
6025
  gl_FragColor = vec4(colorValue, base.a);
6026
6026
  }
6027
- `,XK={uTime:{value:0,type:"f32"},uColor:{value:[0,1,1],type:"vec3<f32>"},uScanWidth:{value:.02,type:"f32"},uIntensity:{value:1.2,type:"f32"}},YK=`
6027
+ `,YK={uTime:{value:0,type:"f32"},uColor:{value:[0,1,1],type:"vec3<f32>"},uScanWidth:{value:.02,type:"f32"},uIntensity:{value:1.2,type:"f32"}},qK=`
6028
6028
  precision highp float;
6029
6029
 
6030
6030
  varying vec2 vTextureCoord;
@@ -6062,7 +6062,7 @@ void main() {
6062
6062
 
6063
6063
  gl_FragColor = vec4(faded, color.a);
6064
6064
  }
6065
- `,qK={uTime:{value:0,type:"f32"},uGrain:{value:.08,type:"f32"},uFade:{value:.6,type:"f32"},uVignette:{value:1,type:"f32"}},jK=`
6065
+ `,jK={uTime:{value:0,type:"f32"},uGrain:{value:.08,type:"f32"},uFade:{value:.6,type:"f32"},uVignette:{value:1,type:"f32"}},KK=`
6066
6066
  precision highp float;
6067
6067
 
6068
6068
  varying vec2 vTextureCoord;
@@ -6096,7 +6096,7 @@ void main() {
6096
6096
  gl_FragColor = vec4(colorValue, centerTex.a);
6097
6097
  }
6098
6098
 
6099
- `,KK={uThickness:{value:1.5,type:"f32"},uOutlineColor:{value:[1,1,1],type:"vec3<f32>"}},QK=`
6099
+ `,QK={uThickness:{value:1.5,type:"f32"},uOutlineColor:{value:[1,1,1],type:"vec3<f32>"}},ZK=`
6100
6100
  precision highp float;
6101
6101
 
6102
6102
  varying vec2 vTextureCoord;
@@ -6144,7 +6144,7 @@ void main() {
6144
6144
 
6145
6145
  gl_FragColor = vec4(color + base.rgb, max(base.a, alpha));
6146
6146
  }
6147
- `,ZK={uTime:{value:0,type:"f32"},uDensity:{value:20,type:"f32"},uSize:{value:.25,type:"f32"},uIntensity:{value:1.2,type:"f32"},uColorA:{value:[1,.2,.6],type:"vec3<f32>"},uColorB:{value:[.2,.8,1],type:"vec3<f32>"}},JK=`
6147
+ `,JK={uTime:{value:0,type:"f32"},uDensity:{value:20,type:"f32"},uSize:{value:.25,type:"f32"},uIntensity:{value:1.2,type:"f32"},uColorA:{value:[1,.2,.6],type:"vec3<f32>"},uColorB:{value:[.2,.8,1],type:"vec3<f32>"}},$K=`
6148
6148
  precision highp float;
6149
6149
 
6150
6150
  varying vec2 vTextureCoord;
@@ -6182,7 +6182,7 @@ void main() {
6182
6182
 
6183
6183
  gl_FragColor = vec4(colorValue, base.a);
6184
6184
  }
6185
- `,$K={uTime:{value:0,type:"f32"},uColorA:{value:[.2,.8,1],type:"vec3<f32>"},uColorB:{value:[1,.2,.6],type:"vec3<f32>"},uIntensity:{value:.8,type:"f32"}},eQ=`
6185
+ `,eQ={uTime:{value:0,type:"f32"},uColorA:{value:[.2,.8,1],type:"vec3<f32>"},uColorB:{value:[1,.2,.6],type:"vec3<f32>"},uIntensity:{value:.8,type:"f32"}},tQ=`
6186
6186
  precision highp float;
6187
6187
 
6188
6188
  varying vec2 vTextureCoord;
@@ -6214,7 +6214,7 @@ void main() {
6214
6214
 
6215
6215
  gl_FragColor = vec4(colorValue, tex.a);
6216
6216
  }
6217
- `,tQ={uTime:{value:0,type:"f32"},uLineThickness:{value:2,type:"f32"},uLineIntensity:{value:.6,type:"f32"},uNoiseIntensity:{value:.05,type:"f32"},uLineColor:{value:[.8,1,.8],type:"vec3<f32>"}},rQ=`
6217
+ `,rQ={uTime:{value:0,type:"f32"},uLineThickness:{value:2,type:"f32"},uLineIntensity:{value:.6,type:"f32"},uNoiseIntensity:{value:.05,type:"f32"},uLineColor:{value:[.8,1,.8],type:"vec3<f32>"}},iQ=`
6218
6218
  precision highp float;
6219
6219
 
6220
6220
  varying vec2 vTextureCoord;
@@ -6248,7 +6248,7 @@ void main() {
6248
6248
 
6249
6249
  gl_FragColor = vec4(color, tex.a);
6250
6250
  }
6251
- `,iQ={uExposure:{value:1.2,type:"f32"},uSaturation:{value:4.3,type:"f32"},uContrast:{value:2.2,type:"f32"}},nQ=`
6251
+ `,nQ={uExposure:{value:1.2,type:"f32"},uSaturation:{value:4.3,type:"f32"},uContrast:{value:2.2,type:"f32"}},sQ=`
6252
6252
  precision highp float;
6253
6253
 
6254
6254
  varying vec2 vTextureCoord;
@@ -6271,7 +6271,7 @@ void main() {
6271
6271
 
6272
6272
  gl_FragColor = vec4(color, base.a);
6273
6273
  }
6274
- `,sQ={uTime:{value:0,type:"f32"},uIntensity:{value:.7,type:"f32"},uDuration:{value:.2,type:"f32"}},oQ=`
6274
+ `,oQ={uTime:{value:0,type:"f32"},uIntensity:{value:.7,type:"f32"},uDuration:{value:.2,type:"f32"}},aQ=`
6275
6275
  precision highp float;
6276
6276
 
6277
6277
  varying vec2 vTextureCoord;
@@ -6309,7 +6309,7 @@ void main() {
6309
6309
 
6310
6310
  gl_FragColor = colorValue;
6311
6311
  }
6312
- `,aQ={uTime:{value:0,type:"f32"},uPulseScale:{value:.2,type:"f32"},uBlurStrength:{value:.02,type:"f32"},uGlowBoost:{value:2,type:"f32"}},lQ=`
6312
+ `,lQ={uTime:{value:0,type:"f32"},uPulseScale:{value:.2,type:"f32"},uBlurStrength:{value:.02,type:"f32"},uGlowBoost:{value:2,type:"f32"}},uQ=`
6313
6313
  precision highp float;
6314
6314
 
6315
6315
  varying vec2 vTextureCoord;
@@ -6332,7 +6332,7 @@ void main() {
6332
6332
 
6333
6333
  gl_FragColor = vec4(colorValue, color.a);
6334
6334
  }
6335
- `,uQ={uIntensity:{value:1,type:"f32"},uContrast:{value:2.5,type:"f32"}},cQ=`
6335
+ `,cQ={uIntensity:{value:1,type:"f32"},uContrast:{value:2.5,type:"f32"}},hQ=`
6336
6336
  precision highp float;
6337
6337
 
6338
6338
  varying vec2 vTextureCoord;
@@ -6364,7 +6364,7 @@ void main() {
6364
6364
  gl_FragColor = color;
6365
6365
  }
6366
6366
 
6367
- `,hQ={uTime:{value:0,type:"f32"},uIntensity:{value:1,type:"f32"},uSpeed:{value:1,type:"f32"}},dQ=`
6367
+ `,dQ={uTime:{value:0,type:"f32"},uIntensity:{value:1,type:"f32"},uSpeed:{value:1,type:"f32"}},fQ=`
6368
6368
  precision highp float;
6369
6369
 
6370
6370
  varying vec2 vTextureCoord;
@@ -6402,7 +6402,7 @@ void main() {
6402
6402
 
6403
6403
  gl_FragColor = vec4(hdrColor, tex.a);
6404
6404
  }
6405
- `,fQ={uExposure:{value:1,type:"f32"},uBloom:{value:1.5,type:"f32"},uContrast:{value:2,type:"f32"}},pQ=`
6405
+ `,pQ={uExposure:{value:1,type:"f32"},uBloom:{value:1.5,type:"f32"},uContrast:{value:2,type:"f32"}},mQ=`
6406
6406
  precision highp float;
6407
6407
 
6408
6408
  varying vec2 vTextureCoord;
@@ -6446,7 +6446,7 @@ void main() {
6446
6446
 
6447
6447
  gl_FragColor = color;
6448
6448
  }
6449
- `,mQ={uTime:{value:0,type:"f32"},uZoomSpeed:{value:5,type:"f32"},uMaxZoom:{value:2,type:"f32"},uBlurStrength:{value:.01,type:"f32"}},Xk=`
6449
+ `,gQ={uTime:{value:0,type:"f32"},uZoomSpeed:{value:5,type:"f32"},uMaxZoom:{value:2,type:"f32"},uBlurStrength:{value:.01,type:"f32"}},Xk=`
6450
6450
  precision highp float;
6451
6451
 
6452
6452
  varying vec2 vTextureCoord;
@@ -6502,7 +6502,7 @@ void main() {
6502
6502
 
6503
6503
  gl_FragColor = vec4(color.rgb, color.a * alpha);
6504
6504
  }
6505
- `,vh={};function gQ(r,e){vh[r]=e}function vQ(r){delete vh[r]}const xQ={rotationMovement:{label:"Rotation Movement",fragment:Mq,uniforms:Dq},redGradient:{label:"Red Gradient",fragment:Oq,uniforms:Uq},bubbleSparkles:{label:"Bubble Sparkles",fragment:zq,uniforms:Lq},sepia:{label:"Sepia",fragment:Nq,uniforms:Gq},uvGradient:{label:"UV Gradient",fragment:Hq,uniforms:Wq},rainbow:{label:"Rainbow",fragment:Vq,uniforms:Xq},glitch:{label:"Glitch",fragment:Yq,uniforms:qq},pixelate:{label:"Pixelate",fragment:Wk,uniforms:Vk},rgbGlitch:{label:"RGB Glitch",fragment:jq,uniforms:Kq},rgbShift:{label:"RGB Shift",fragment:Qq,uniforms:Zq},halftone:{label:"Halftone",fragment:Jq,uniforms:$q},sinewave:{label:"Sinewave",fragment:ej,uniforms:tj},shine:{label:"Shine",fragment:rj,uniforms:ij},blink:{label:"Blink",fragment:nj,uniforms:sj},spring:{label:"Spring",fragment:oj,uniforms:aj},duotone:{label:"Duotone",fragment:lj,uniforms:uj},tritone:{label:"Tritone",fragment:cj,uniforms:hj},hueShift:{label:"Hue Shift",fragment:dj,uniforms:fj},warpTransition:{label:"Warp Transition",fragment:pj,uniforms:mj},slitScan:{label:"Slit Scan",fragment:gj,uniforms:vj},slitScanGlitch:{label:"Slit Scan Glitch",fragment:xj,uniforms:yj},pixelateTransition:{label:"Pixelate Transition",fragment:bj,uniforms:_j},focusTransition:{label:"Focus Transition",fragment:wj,uniforms:Sj},invert:{label:"Invert",fragment:Tj,uniforms:Cj},grayscale:{label:"Grayscale",fragment:Aj,uniforms:Ej},vignette:{label:"Vignette",fragment:Pj,uniforms:Ij},chromatic:{label:"Chromatic",fragment:Bj,uniforms:kj},swirlMovement:{label:"Swirl Movement",fragment:Rj,uniforms:Fj},heartSparkles:{label:"Heart Sparkles",fragment:Mj,uniforms:Dj},butterflySparkles:{label:"Butterfly Sparkles",fragment:Oj,uniforms:Uj},distort:{label:"Distort",fragment:zj,uniforms:Lj},perspectiveSingle:{label:"Perspective Single",fragment:Nj,uniforms:Gj},distortSpin:{label:"Distort Spin",fragment:Hj,uniforms:Wj},distortGrid:{label:"Distort Grid",fragment:Vj,uniforms:Xj},distortRip:{label:"Distort Rip",fragment:Yj,uniforms:qj},twoCurtain:{label:"Two Curtain",fragment:jj,uniforms:Kj},trianglePattern:{label:"Triangle Pattern",fragment:Qj,uniforms:Zj},mirrorTile:{label:"Mirror Tile",fragment:Jj,uniforms:$j},flashLoop:{label:"Flash Loop",fragment:eK,uniforms:tK},filmStripPro:{label:"Film Strip Pro",fragment:rK,uniforms:iK},badSignal:{label:"Bad Signal",fragment:nK,uniforms:sK},omniflexion:{label:"Omniflexion",fragment:oK,uniforms:aK},inverseAperture:{label:"Inverse Aperture",fragment:lK,uniforms:uK},curtainOpen:{label:"Curtain Open",fragment:cK,uniforms:hK},curtainBlur:{label:"Curtain Blur",fragment:dK,uniforms:fK},distortV2:{label:"Distort V2",fragment:pK,uniforms:mK},lightning:{label:"Lightning",fragment:gK,uniforms:vK},lightningVeins:{label:"Lightning Veins",fragment:xK,uniforms:yK},pixelError:{label:"Pixel Error",fragment:bK,uniforms:_K},neonFlash:{label:"Neon Flash",fragment:wK,uniforms:SK},waveDistort:{label:"Wave Distort",fragment:TK,uniforms:CK},bouncingBalls:{label:"Bouncing Balls",fragment:AK,uniforms:EK},waterReflection:{label:"Water Reflection",fragment:PK,uniforms:IK},darkError:{label:"Dark Error",fragment:BK,uniforms:kK},scaleMoveBlur:{label:"Scale Move Blur",fragment:RK,uniforms:FK},paperBreakReveal:{label:"Paper Break Reveal",fragment:MK,uniforms:DK},graffiti:{label:"Graffiti",fragment:OK,uniforms:UK},laser:{label:"Laser",fragment:zK,uniforms:LK},wave:{label:"Wave",fragment:NK,uniforms:GK},sparks:{label:"Sparks",fragment:HK,uniforms:WK},hologramScan:{label:"Hologram Scan",fragment:VK,uniforms:XK},retro70s:{label:"Retro 70s",fragment:YK,uniforms:qK},igOutline:{label:"IG Outline",fragment:jK,uniforms:KK},randomAccents:{label:"Random Accents",fragment:QK,uniforms:ZK},solution:{label:"Solution",fragment:JK,uniforms:$K},tvScanlines:{label:"TV Scanlines",fragment:eQ,uniforms:tQ},hdr:{label:"HDR",fragment:rQ,uniforms:iQ},blackFlash:{label:"Black Flash",fragment:nQ,uniforms:sQ},brightPulse:{label:"Bright Pulse",fragment:oQ,uniforms:aQ},negativeDivision:{label:"Negative Division",fragment:lQ,uniforms:uQ},cameraMove:{label:"Camera Move",fragment:cQ,uniforms:hQ},hdrV2:{label:"HDR V2",fragment:dQ,uniforms:fQ},fastZoom:{label:"Fast Zoom",fragment:pQ,uniforms:mQ}};function jb(){return{...xQ,...vh}}function Yk(){const r=Object.keys(vh);return Object.entries(jb()).map(([e,t])=>({key:e,label:t.label,isCustom:r.includes(e),previewStatic:t.previewStatic||`https://cdn.subgen.co/previews/effects/static/effect_${e}_static.webp`,previewDynamic:t.previewDynamic||`https://cdn.subgen.co/previews/effects/dynamic/effect_${e}_dynamic.webp`}))}const yQ=Yk();var Me=`in vec2 aPosition;
6505
+ `,vh={};function vQ(r,e){vh[r]=e}function xQ(r){delete vh[r]}const yQ={rotationMovement:{label:"Rotation Movement",fragment:Dq,uniforms:Oq},redGradient:{label:"Red Gradient",fragment:Uq,uniforms:zq},bubbleSparkles:{label:"Bubble Sparkles",fragment:Lq,uniforms:Nq},sepia:{label:"Sepia",fragment:Gq,uniforms:Hq},uvGradient:{label:"UV Gradient",fragment:Wq,uniforms:Vq},rainbow:{label:"Rainbow",fragment:Xq,uniforms:Yq},glitch:{label:"Glitch",fragment:qq,uniforms:jq},pixelate:{label:"Pixelate",fragment:Wk,uniforms:Vk},rgbGlitch:{label:"RGB Glitch",fragment:Kq,uniforms:Qq},rgbShift:{label:"RGB Shift",fragment:Zq,uniforms:Jq},halftone:{label:"Halftone",fragment:$q,uniforms:ej},sinewave:{label:"Sinewave",fragment:tj,uniforms:rj},shine:{label:"Shine",fragment:ij,uniforms:nj},blink:{label:"Blink",fragment:sj,uniforms:oj},spring:{label:"Spring",fragment:aj,uniforms:lj},duotone:{label:"Duotone",fragment:uj,uniforms:cj},tritone:{label:"Tritone",fragment:hj,uniforms:dj},hueShift:{label:"Hue Shift",fragment:fj,uniforms:pj},warpTransition:{label:"Warp Transition",fragment:mj,uniforms:gj},slitScan:{label:"Slit Scan",fragment:vj,uniforms:xj},slitScanGlitch:{label:"Slit Scan Glitch",fragment:yj,uniforms:bj},pixelateTransition:{label:"Pixelate Transition",fragment:_j,uniforms:wj},focusTransition:{label:"Focus Transition",fragment:Sj,uniforms:Tj},invert:{label:"Invert",fragment:Cj,uniforms:Aj},grayscale:{label:"Grayscale",fragment:Ej,uniforms:Pj},vignette:{label:"Vignette",fragment:Ij,uniforms:Bj},chromatic:{label:"Chromatic",fragment:kj,uniforms:Rj},swirlMovement:{label:"Swirl Movement",fragment:Fj,uniforms:Mj},heartSparkles:{label:"Heart Sparkles",fragment:Dj,uniforms:Oj},butterflySparkles:{label:"Butterfly Sparkles",fragment:Uj,uniforms:zj},distort:{label:"Distort",fragment:Lj,uniforms:Nj},perspectiveSingle:{label:"Perspective Single",fragment:Gj,uniforms:Hj},distortSpin:{label:"Distort Spin",fragment:Wj,uniforms:Vj},distortGrid:{label:"Distort Grid",fragment:Xj,uniforms:Yj},distortRip:{label:"Distort Rip",fragment:qj,uniforms:jj},twoCurtain:{label:"Two Curtain",fragment:Kj,uniforms:Qj},trianglePattern:{label:"Triangle Pattern",fragment:Zj,uniforms:Jj},mirrorTile:{label:"Mirror Tile",fragment:$j,uniforms:eK},flashLoop:{label:"Flash Loop",fragment:tK,uniforms:rK},filmStripPro:{label:"Film Strip Pro",fragment:iK,uniforms:nK},badSignal:{label:"Bad Signal",fragment:sK,uniforms:oK},omniflexion:{label:"Omniflexion",fragment:aK,uniforms:lK},inverseAperture:{label:"Inverse Aperture",fragment:uK,uniforms:cK},curtainOpen:{label:"Curtain Open",fragment:hK,uniforms:dK},curtainBlur:{label:"Curtain Blur",fragment:fK,uniforms:pK},distortV2:{label:"Distort V2",fragment:mK,uniforms:gK},lightning:{label:"Lightning",fragment:vK,uniforms:xK},lightningVeins:{label:"Lightning Veins",fragment:yK,uniforms:bK},pixelError:{label:"Pixel Error",fragment:_K,uniforms:wK},neonFlash:{label:"Neon Flash",fragment:SK,uniforms:TK},waveDistort:{label:"Wave Distort",fragment:CK,uniforms:AK},bouncingBalls:{label:"Bouncing Balls",fragment:EK,uniforms:PK},waterReflection:{label:"Water Reflection",fragment:IK,uniforms:BK},darkError:{label:"Dark Error",fragment:kK,uniforms:RK},scaleMoveBlur:{label:"Scale Move Blur",fragment:FK,uniforms:MK},paperBreakReveal:{label:"Paper Break Reveal",fragment:DK,uniforms:OK},graffiti:{label:"Graffiti",fragment:UK,uniforms:zK},laser:{label:"Laser",fragment:LK,uniforms:NK},wave:{label:"Wave",fragment:GK,uniforms:HK},sparks:{label:"Sparks",fragment:WK,uniforms:VK},hologramScan:{label:"Hologram Scan",fragment:XK,uniforms:YK},retro70s:{label:"Retro 70s",fragment:qK,uniforms:jK},igOutline:{label:"IG Outline",fragment:KK,uniforms:QK},randomAccents:{label:"Random Accents",fragment:ZK,uniforms:JK},solution:{label:"Solution",fragment:$K,uniforms:eQ},tvScanlines:{label:"TV Scanlines",fragment:tQ,uniforms:rQ},hdr:{label:"HDR",fragment:iQ,uniforms:nQ},blackFlash:{label:"Black Flash",fragment:sQ,uniforms:oQ},brightPulse:{label:"Bright Pulse",fragment:aQ,uniforms:lQ},negativeDivision:{label:"Negative Division",fragment:uQ,uniforms:cQ},cameraMove:{label:"Camera Move",fragment:hQ,uniforms:dQ},hdrV2:{label:"HDR V2",fragment:fQ,uniforms:pQ},fastZoom:{label:"Fast Zoom",fragment:mQ,uniforms:gQ}};function jb(){return{...yQ,...vh}}function Yk(){const r=Object.keys(vh);return Object.entries(jb()).map(([e,t])=>({key:e,label:t.label,isCustom:r.includes(e),previewStatic:t.previewStatic||`https://cdn.subgen.co/previews/effects/static/effect_${e}_static.webp`,previewDynamic:t.previewDynamic||`https://cdn.subgen.co/previews/effects/dynamic/effect_${e}_dynamic.webp`}))}const bQ=Yk();var Me=`in vec2 aPosition;
6506
6506
  out vec2 vTextureCoord;
6507
6507
 
6508
6508
  uniform vec4 uInputSize;
@@ -6578,7 +6578,7 @@ fn mainVertex(
6578
6578
  filterVertexPosition(aPosition),
6579
6579
  filterTextureCoord(aPosition)
6580
6580
  );
6581
- }`,bQ=`in vec2 vTextureCoord;
6581
+ }`,_Q=`in vec2 vTextureCoord;
6582
6582
  out vec4 finalColor;
6583
6583
 
6584
6584
  uniform sampler2D uTexture;
@@ -6607,7 +6607,7 @@ void main()
6607
6607
 
6608
6608
  finalColor = c * uColor.a;
6609
6609
  }
6610
- `,_Q=`struct AdjustmentUniforms {
6610
+ `,wQ=`struct AdjustmentUniforms {
6611
6611
  uGamma: f32,
6612
6612
  uContrast: f32,
6613
6613
  uSaturation: f32,
@@ -6640,7 +6640,7 @@ fn mainFragment(
6640
6640
  }
6641
6641
 
6642
6642
  return sample * color.a;
6643
- }`,wQ=Object.defineProperty,SQ=(r,e,t)=>e in r?wQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,qk=(r,e,t)=>(SQ(r,typeof e!="symbol"?e+"":e,t),t);const jk=class RR extends ge{constructor(e){e={...RR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:_Q,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:bQ,name:"adjustment-filter"});super({gpuProgram:t,glProgram:i,resources:{adjustmentUniforms:{uGamma:{value:e.gamma,type:"f32"},uContrast:{value:e.contrast,type:"f32"},uSaturation:{value:e.saturation,type:"f32"},uBrightness:{value:e.brightness,type:"f32"},uColor:{value:[e.red,e.green,e.blue,e.alpha],type:"vec4<f32>"}}}}),qk(this,"uniforms"),this.uniforms=this.resources.adjustmentUniforms.uniforms}get gamma(){return this.uniforms.uGamma}set gamma(e){this.uniforms.uGamma=e}get contrast(){return this.uniforms.uContrast}set contrast(e){this.uniforms.uContrast=e}get saturation(){return this.uniforms.uSaturation}set saturation(e){this.uniforms.uSaturation=e}get brightness(){return this.uniforms.uBrightness}set brightness(e){this.uniforms.uBrightness=e}get red(){return this.uniforms.uColor[0]}set red(e){this.uniforms.uColor[0]=e}get green(){return this.uniforms.uColor[1]}set green(e){this.uniforms.uColor[1]=e}get blue(){return this.uniforms.uColor[2]}set blue(e){this.uniforms.uColor[2]=e}get alpha(){return this.uniforms.uColor[3]}set alpha(e){this.uniforms.uColor[3]=e}};qk(jk,"DEFAULT_OPTIONS",{gamma:1,contrast:1,saturation:1,brightness:1,red:1,green:1,blue:1,alpha:1});let TQ=jk;var CQ=`
6643
+ }`,SQ=Object.defineProperty,TQ=(r,e,t)=>e in r?SQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,qk=(r,e,t)=>(TQ(r,typeof e!="symbol"?e+"":e,t),t);const jk=class RR extends ge{constructor(e){e={...RR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:wQ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:_Q,name:"adjustment-filter"});super({gpuProgram:t,glProgram:i,resources:{adjustmentUniforms:{uGamma:{value:e.gamma,type:"f32"},uContrast:{value:e.contrast,type:"f32"},uSaturation:{value:e.saturation,type:"f32"},uBrightness:{value:e.brightness,type:"f32"},uColor:{value:[e.red,e.green,e.blue,e.alpha],type:"vec4<f32>"}}}}),qk(this,"uniforms"),this.uniforms=this.resources.adjustmentUniforms.uniforms}get gamma(){return this.uniforms.uGamma}set gamma(e){this.uniforms.uGamma=e}get contrast(){return this.uniforms.uContrast}set contrast(e){this.uniforms.uContrast=e}get saturation(){return this.uniforms.uSaturation}set saturation(e){this.uniforms.uSaturation=e}get brightness(){return this.uniforms.uBrightness}set brightness(e){this.uniforms.uBrightness=e}get red(){return this.uniforms.uColor[0]}set red(e){this.uniforms.uColor[0]=e}get green(){return this.uniforms.uColor[1]}set green(e){this.uniforms.uColor[1]=e}get blue(){return this.uniforms.uColor[2]}set blue(e){this.uniforms.uColor[2]=e}get alpha(){return this.uniforms.uColor[3]}set alpha(e){this.uniforms.uColor[3]=e}};qk(jk,"DEFAULT_OPTIONS",{gamma:1,contrast:1,saturation:1,brightness:1,red:1,green:1,blue:1,alpha:1});let CQ=jk;var AQ=`
6644
6644
  in vec2 vTextureCoord;
6645
6645
  out vec4 finalColor;
6646
6646
 
@@ -6667,7 +6667,7 @@ void main(void)
6667
6667
  color *= 0.25;
6668
6668
 
6669
6669
  finalColor = color;
6670
- }`,AQ=`struct KawaseBlurUniforms {
6670
+ }`,EQ=`struct KawaseBlurUniforms {
6671
6671
  uOffset:vec2<f32>,
6672
6672
  };
6673
6673
 
@@ -6695,7 +6695,7 @@ fn mainFragment(
6695
6695
  color *= 0.25;
6696
6696
 
6697
6697
  return color;
6698
- }`,EQ=`
6698
+ }`,PQ=`
6699
6699
  precision highp float;
6700
6700
  in vec2 vTextureCoord;
6701
6701
  out vec4 finalColor;
@@ -6726,7 +6726,7 @@ void main(void)
6726
6726
 
6727
6727
  finalColor = color;
6728
6728
  }
6729
- `,PQ=`struct KawaseBlurUniforms {
6729
+ `,IQ=`struct KawaseBlurUniforms {
6730
6730
  uOffset:vec2<f32>,
6731
6731
  };
6732
6732
 
@@ -6765,7 +6765,7 @@ fn mainFragment(
6765
6765
  color *= 0.25;
6766
6766
 
6767
6767
  return color;
6768
- }`,IQ=Object.defineProperty,BQ=(r,e,t)=>e in r?IQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e,t)=>(BQ(r,typeof e!="symbol"?e+"":e,t),t);const Kk=class FR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t))&&(J("6.0.0","KawaseBlurFilter constructor params are now options object. See params: { strength, quality, clamp, pixelSize }"),t={strength:t},e[1]!==void 0&&(t.quality=e[1]),e[2]!==void 0&&(t.clamp=e[2])),t={...FR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:t?.clamp?PQ:AQ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:t?.clamp?EQ:CQ,name:"kawase-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{kawaseBlurUniforms:{uOffset:{value:new Float32Array(2),type:"vec2<f32>"}}}}),ws(this,"uniforms"),ws(this,"_pixelSize",{x:0,y:0}),ws(this,"_clamp"),ws(this,"_kernels",[]),ws(this,"_blur"),ws(this,"_quality"),this.uniforms=this.resources.kawaseBlurUniforms.uniforms,this.pixelSize=t.pixelSize??{x:1,y:1},Array.isArray(t.strength)?this.kernels=t.strength:typeof t.strength=="number"&&(this._blur=t.strength,this.quality=t.quality??3),this._clamp=!!t.clamp}apply(e,t,i,n){const s=this.pixelSizeX/t.source.width,o=this.pixelSizeY/t.source.height;let a;if(this._quality===1||this._blur===0)a=this._kernels[0]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,t,i,n);else{const l=ze.getSameSizeTexture(t);let u=t,c=l,h;const d=this._quality-1;for(let f=0;f<d;f++)a=this._kernels[f]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,u,c,!0),h=u,u=c,c=h;a=this._kernels[d]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,u,i,n),ze.returnTexture(l)}}get strength(){return this._blur}set strength(e){this._blur=e,this._generateKernels()}get quality(){return this._quality}set quality(e){this._quality=Math.max(1,Math.round(e)),this._generateKernels()}get kernels(){return this._kernels}set kernels(e){Array.isArray(e)&&e.length>0?(this._kernels=e,this._quality=e.length,this._blur=Math.max(...e)):(this._kernels=[0],this._quality=1)}get pixelSize(){return this._pixelSize}set pixelSize(e){if(typeof e=="number"){this.pixelSizeX=this.pixelSizeY=e;return}if(Array.isArray(e)){this.pixelSizeX=e[0],this.pixelSizeY=e[1];return}this._pixelSize=e}get pixelSizeX(){return this.pixelSize.x}set pixelSizeX(e){this.pixelSize.x=e}get pixelSizeY(){return this.pixelSize.y}set pixelSizeY(e){this.pixelSize.y=e}get clamp(){return this._clamp}_updatePadding(){this.padding=Math.ceil(this._kernels.reduce((e,t)=>e+t+.5,0))}_generateKernels(){const e=this._blur,t=this._quality,i=[e];if(e>0){let n=e;const s=e/t;for(let o=1;o<t;o++)n-=s,i.push(n)}this._kernels=i,this._updatePadding()}};ws(Kk,"DEFAULT_OPTIONS",{strength:4,quality:3,clamp:!1,pixelSize:{x:1,y:1}});let Kb=Kk;var kQ=`in vec2 vTextureCoord;
6768
+ }`,BQ=Object.defineProperty,kQ=(r,e,t)=>e in r?BQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e,t)=>(kQ(r,typeof e!="symbol"?e+"":e,t),t);const Kk=class FR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t))&&(J("6.0.0","KawaseBlurFilter constructor params are now options object. See params: { strength, quality, clamp, pixelSize }"),t={strength:t},e[1]!==void 0&&(t.quality=e[1]),e[2]!==void 0&&(t.clamp=e[2])),t={...FR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:t?.clamp?IQ:EQ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:t?.clamp?PQ:AQ,name:"kawase-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{kawaseBlurUniforms:{uOffset:{value:new Float32Array(2),type:"vec2<f32>"}}}}),ws(this,"uniforms"),ws(this,"_pixelSize",{x:0,y:0}),ws(this,"_clamp"),ws(this,"_kernels",[]),ws(this,"_blur"),ws(this,"_quality"),this.uniforms=this.resources.kawaseBlurUniforms.uniforms,this.pixelSize=t.pixelSize??{x:1,y:1},Array.isArray(t.strength)?this.kernels=t.strength:typeof t.strength=="number"&&(this._blur=t.strength,this.quality=t.quality??3),this._clamp=!!t.clamp}apply(e,t,i,n){const s=this.pixelSizeX/t.source.width,o=this.pixelSizeY/t.source.height;let a;if(this._quality===1||this._blur===0)a=this._kernels[0]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,t,i,n);else{const l=ze.getSameSizeTexture(t);let u=t,c=l,h;const d=this._quality-1;for(let f=0;f<d;f++)a=this._kernels[f]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,u,c,!0),h=u,u=c,c=h;a=this._kernels[d]+.5,this.uniforms.uOffset[0]=a*s,this.uniforms.uOffset[1]=a*o,e.applyFilter(this,u,i,n),ze.returnTexture(l)}}get strength(){return this._blur}set strength(e){this._blur=e,this._generateKernels()}get quality(){return this._quality}set quality(e){this._quality=Math.max(1,Math.round(e)),this._generateKernels()}get kernels(){return this._kernels}set kernels(e){Array.isArray(e)&&e.length>0?(this._kernels=e,this._quality=e.length,this._blur=Math.max(...e)):(this._kernels=[0],this._quality=1)}get pixelSize(){return this._pixelSize}set pixelSize(e){if(typeof e=="number"){this.pixelSizeX=this.pixelSizeY=e;return}if(Array.isArray(e)){this.pixelSizeX=e[0],this.pixelSizeY=e[1];return}this._pixelSize=e}get pixelSizeX(){return this.pixelSize.x}set pixelSizeX(e){this.pixelSize.x=e}get pixelSizeY(){return this.pixelSize.y}set pixelSizeY(e){this.pixelSize.y=e}get clamp(){return this._clamp}_updatePadding(){this.padding=Math.ceil(this._kernels.reduce((e,t)=>e+t+.5,0))}_generateKernels(){const e=this._blur,t=this._quality,i=[e];if(e>0){let n=e;const s=e/t;for(let o=1;o<t;o++)n-=s,i.push(n)}this._kernels=i,this._updatePadding()}};ws(Kk,"DEFAULT_OPTIONS",{strength:4,quality:3,clamp:!1,pixelSize:{x:1,y:1}});let Kb=Kk;var RQ=`in vec2 vTextureCoord;
6769
6769
  out vec4 finalColor;
6770
6770
 
6771
6771
  uniform sampler2D uTexture;
@@ -6780,7 +6780,7 @@ void main() {
6780
6780
  bloomColor.rgb *= uBloomScale;
6781
6781
  finalColor = color + bloomColor;
6782
6782
  }
6783
- `,RQ=`struct AdvancedBloomUniforms {
6783
+ `,FQ=`struct AdvancedBloomUniforms {
6784
6784
  uBloomScale: f32,
6785
6785
  uBrightness: f32,
6786
6786
  };
@@ -6803,7 +6803,7 @@ fn mainFragment(
6803
6803
 
6804
6804
  return color + bloomColor;
6805
6805
  }
6806
- `,FQ=`
6806
+ `,MQ=`
6807
6807
  in vec2 vTextureCoord;
6808
6808
  out vec4 finalColor;
6809
6809
 
@@ -6825,7 +6825,7 @@ void main() {
6825
6825
  finalColor = vec4(0.0, 0.0, 0.0, 0.0);
6826
6826
  }
6827
6827
  }
6828
- `,MQ=`struct ExtractBrightnessUniforms {
6828
+ `,DQ=`struct ExtractBrightnessUniforms {
6829
6829
  uThreshold: f32,
6830
6830
  };
6831
6831
 
@@ -6848,7 +6848,7 @@ fn mainFragment(
6848
6848
 
6849
6849
  return select(vec4<f32>(0.), color, brightness > extractBrightnessUniforms.uThreshold);
6850
6850
  }
6851
- `,DQ=Object.defineProperty,OQ=(r,e,t)=>e in r?DQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Qk=(r,e,t)=>(OQ(r,typeof e!="symbol"?e+"":e,t),t);const Zk=class MR extends ge{constructor(e){e={...MR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:MQ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:FQ,name:"extract-brightness-filter"});super({gpuProgram:t,glProgram:i,resources:{extractBrightnessUniforms:{uThreshold:{value:e.threshold,type:"f32"}}}}),Qk(this,"uniforms"),this.uniforms=this.resources.extractBrightnessUniforms.uniforms}get threshold(){return this.uniforms.uThreshold}set threshold(e){this.uniforms.uThreshold=e}};Qk(Zk,"DEFAULT_OPTIONS",{threshold:.5});let UQ=Zk;var zQ=Object.defineProperty,LQ=(r,e,t)=>e in r?zQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,No=(r,e,t)=>(LQ(r,typeof e!="symbol"?e+"":e,t),t);const Jk=class DR extends ge{constructor(e){e={...DR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:RQ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:kQ,name:"advanced-bloom-filter"});super({gpuProgram:t,glProgram:i,resources:{advancedBloomUniforms:{uBloomScale:{value:e.bloomScale,type:"f32"},uBrightness:{value:e.brightness,type:"f32"}},uMapTexture:Q.WHITE}}),No(this,"uniforms"),No(this,"bloomScale",1),No(this,"brightness",1),No(this,"_extractFilter"),No(this,"_blurFilter"),this.uniforms=this.resources.advancedBloomUniforms.uniforms,this._extractFilter=new UQ({threshold:e.threshold}),this._blurFilter=new Kb({strength:e.kernels??e.blur,quality:e.kernels?void 0:e.quality}),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);this._extractFilter.apply(e,t,s,!0);const o=ze.getSameSizeTexture(t);this._blurFilter.apply(e,s,o,!0),this.uniforms.uBloomScale=this.bloomScale,this.uniforms.uBrightness=this.brightness,this.resources.uMapTexture=o.source,e.applyFilter(this,t,i,n),ze.returnTexture(o),ze.returnTexture(s)}get threshold(){return this._extractFilter.threshold}set threshold(e){this._extractFilter.threshold=e}get kernels(){return this._blurFilter.kernels}set kernels(e){this._blurFilter.kernels=e}get blur(){return this._blurFilter.strength}set blur(e){this._blurFilter.strength=e}get quality(){return this._blurFilter.quality}set quality(e){this._blurFilter.quality=e}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._blurFilter.pixelSize=e}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(e){this._blurFilter.pixelSizeX=e}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(e){this._blurFilter.pixelSizeY=e}};No(Jk,"DEFAULT_OPTIONS",{threshold:.5,bloomScale:1,brightness:1,blur:8,quality:4,pixelSize:{x:1,y:1}});let NQ=Jk;var GQ=`precision highp float;
6851
+ `,OQ=Object.defineProperty,UQ=(r,e,t)=>e in r?OQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Qk=(r,e,t)=>(UQ(r,typeof e!="symbol"?e+"":e,t),t);const Zk=class MR extends ge{constructor(e){e={...MR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:DQ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:MQ,name:"extract-brightness-filter"});super({gpuProgram:t,glProgram:i,resources:{extractBrightnessUniforms:{uThreshold:{value:e.threshold,type:"f32"}}}}),Qk(this,"uniforms"),this.uniforms=this.resources.extractBrightnessUniforms.uniforms}get threshold(){return this.uniforms.uThreshold}set threshold(e){this.uniforms.uThreshold=e}};Qk(Zk,"DEFAULT_OPTIONS",{threshold:.5});let zQ=Zk;var LQ=Object.defineProperty,NQ=(r,e,t)=>e in r?LQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,No=(r,e,t)=>(NQ(r,typeof e!="symbol"?e+"":e,t),t);const Jk=class DR extends ge{constructor(e){e={...DR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:FQ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:RQ,name:"advanced-bloom-filter"});super({gpuProgram:t,glProgram:i,resources:{advancedBloomUniforms:{uBloomScale:{value:e.bloomScale,type:"f32"},uBrightness:{value:e.brightness,type:"f32"}},uMapTexture:Q.WHITE}}),No(this,"uniforms"),No(this,"bloomScale",1),No(this,"brightness",1),No(this,"_extractFilter"),No(this,"_blurFilter"),this.uniforms=this.resources.advancedBloomUniforms.uniforms,this._extractFilter=new zQ({threshold:e.threshold}),this._blurFilter=new Kb({strength:e.kernels??e.blur,quality:e.kernels?void 0:e.quality}),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);this._extractFilter.apply(e,t,s,!0);const o=ze.getSameSizeTexture(t);this._blurFilter.apply(e,s,o,!0),this.uniforms.uBloomScale=this.bloomScale,this.uniforms.uBrightness=this.brightness,this.resources.uMapTexture=o.source,e.applyFilter(this,t,i,n),ze.returnTexture(o),ze.returnTexture(s)}get threshold(){return this._extractFilter.threshold}set threshold(e){this._extractFilter.threshold=e}get kernels(){return this._blurFilter.kernels}set kernels(e){this._blurFilter.kernels=e}get blur(){return this._blurFilter.strength}set blur(e){this._blurFilter.strength=e}get quality(){return this._blurFilter.quality}set quality(e){this._blurFilter.quality=e}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._blurFilter.pixelSize=e}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(e){this._blurFilter.pixelSizeX=e}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(e){this._blurFilter.pixelSizeY=e}};No(Jk,"DEFAULT_OPTIONS",{threshold:.5,bloomScale:1,brightness:1,blur:8,quality:4,pixelSize:{x:1,y:1}});let GQ=Jk;var HQ=`precision highp float;
6852
6852
  in vec2 vTextureCoord;
6853
6853
  out vec4 finalColor;
6854
6854
 
@@ -6928,7 +6928,7 @@ void main()
6928
6928
 
6929
6929
  finalColor = (uReplaceColor > 0.5 ? vec4(uColor, 1.) : color) * character( n, vec2(-1.0) + modd * 2.0);
6930
6930
  }
6931
- `,HQ=`struct AsciiUniforms {
6931
+ `,WQ=`struct AsciiUniforms {
6932
6932
  uSize: f32,
6933
6933
  uColor: vec3<f32>,
6934
6934
  uReplaceColor: f32,
@@ -7046,7 +7046,7 @@ fn unmapCoord(coord: vec2<f32> ) -> vec2<f32>
7046
7046
  mappedCoord -= gfu.uOutputFrame.xy;
7047
7047
  mappedCoord /= gfu.uInputSize.xy;
7048
7048
  return mappedCoord;
7049
- }`,WQ=Object.defineProperty,VQ=(r,e,t)=>e in r?WQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Qb=(r,e,t)=>(VQ(r,typeof e!="symbol"?e+"":e,t),t);const $k=class OR extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","AsciiFilter constructor params are now options object. See params: { size, color, replaceColor }"),t={size:t});const i=t?.color&&t.replaceColor!==!1;t={...OR.DEFAULT_OPTIONS,...t};const n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:HQ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:GQ,name:"ascii-filter"});super({gpuProgram:n,glProgram:s,resources:{asciiUniforms:{uSize:{value:t.size,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uReplaceColor:{value:Number(i),type:"f32"}}}}),Qb(this,"uniforms"),Qb(this,"_color"),this.uniforms=this.resources.asciiUniforms.uniforms,this._color=new ye,this.color=t.color??16777215}get size(){return this.uniforms.uSize}set size(e){this.uniforms.uSize=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get replaceColor(){return this.uniforms.uReplaceColor>.5}set replaceColor(e){this.uniforms.uReplaceColor=e?1:0}};Qb($k,"DEFAULT_OPTIONS",{size:8,color:16777215,replaceColor:!1});let XQ=$k;var YQ=`precision highp float;
7049
+ }`,VQ=Object.defineProperty,XQ=(r,e,t)=>e in r?VQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Qb=(r,e,t)=>(XQ(r,typeof e!="symbol"?e+"":e,t),t);const $k=class OR extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","AsciiFilter constructor params are now options object. See params: { size, color, replaceColor }"),t={size:t});const i=t?.color&&t.replaceColor!==!1;t={...OR.DEFAULT_OPTIONS,...t};const n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:WQ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:HQ,name:"ascii-filter"});super({gpuProgram:n,glProgram:s,resources:{asciiUniforms:{uSize:{value:t.size,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uReplaceColor:{value:Number(i),type:"f32"}}}}),Qb(this,"uniforms"),Qb(this,"_color"),this.uniforms=this.resources.asciiUniforms.uniforms,this._color=new ye,this.color=t.color??16777215}get size(){return this.uniforms.uSize}set size(e){this.uniforms.uSize=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get replaceColor(){return this.uniforms.uReplaceColor>.5}set replaceColor(e){this.uniforms.uReplaceColor=e?1:0}};Qb($k,"DEFAULT_OPTIONS",{size:8,color:16777215,replaceColor:!1});let YQ=$k;var qQ=`precision highp float;
7050
7050
  in vec2 vTextureCoord;
7051
7051
  out vec4 finalColor;
7052
7052
 
@@ -7064,7 +7064,7 @@ void main(void){
7064
7064
  vec3 color = mix(back.rgb, front.rgb / front.a, front.a);
7065
7065
 
7066
7066
  finalColor = vec4(color, 1.0);
7067
- }`,qQ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
7067
+ }`,jQ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
7068
7068
  @group(0) @binding(2) var uSampler: sampler;
7069
7069
  @group(1) @binding(0) var uBackground: texture_2d<f32>;
7070
7070
 
@@ -7083,7 +7083,7 @@ fn mainFragment(
7083
7083
  var color: vec3<f32> = mix(back.rgb, front.rgb / front.a, front.a);
7084
7084
 
7085
7085
  return vec4<f32>(color, 1.0);
7086
- }`,jQ=Object.defineProperty,KQ=(r,e,t)=>e in r?jQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,QQ=(r,e,t)=>(KQ(r,e+"",t),t);class ZQ extends ys{constructor(e){super(e),QQ(this,"_blendPass"),this.blendRequired=!0,this.padding=0,this._blendPass=new ge({gpuProgram:pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:qQ,entryPoint:"mainFragment"}}),glProgram:ue.from({vertex:Me,fragment:YQ,name:"drop-shadow-filter"}),resources:{uBackground:Q.EMPTY}})}apply(e,t,i,n){const s=e._activeFilterData.backTexture,o=ze.getSameSizeTexture(t);super.apply(e,s,o,!0),this._blendPass.resources.uBackground=o.source,this._blendPass.apply(e,t,i,n),ze.returnTexture(o)}updatePadding(){this.padding=0}}var JQ=`precision highp float;
7086
+ }`,KQ=Object.defineProperty,QQ=(r,e,t)=>e in r?KQ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ZQ=(r,e,t)=>(QQ(r,e+"",t),t);class JQ extends ys{constructor(e){super(e),ZQ(this,"_blendPass"),this.blendRequired=!0,this.padding=0,this._blendPass=new ge({gpuProgram:pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:jQ,entryPoint:"mainFragment"}}),glProgram:ue.from({vertex:Me,fragment:qQ,name:"drop-shadow-filter"}),resources:{uBackground:Q.EMPTY}})}apply(e,t,i,n){const s=e._activeFilterData.backTexture,o=ze.getSameSizeTexture(t);super.apply(e,s,o,!0),this._blendPass.resources.uBackground=o.source,this._blendPass.apply(e,t,i,n),ze.returnTexture(o)}updatePadding(){this.padding=0}}var $Q=`precision highp float;
7087
7087
  in vec2 vTextureCoord;
7088
7088
  out vec4 finalColor;
7089
7089
 
@@ -7106,7 +7106,7 @@ void main(void) {
7106
7106
  color.rgb = mix(color.rgb, uShadowColor, clamp((color.a - shadow) * uShadowAlpha, 0.0, 1.0));
7107
7107
  finalColor = vec4(color.rgb * color.a, color.a);
7108
7108
  }
7109
- `,$Q=`struct BevelUniforms {
7109
+ `,eZ=`struct BevelUniforms {
7110
7110
  uLightColor: vec3<f32>,
7111
7111
  uLightAlpha: f32,
7112
7112
  uShadowColor: vec3<f32>,
@@ -7146,7 +7146,7 @@ fn mainFragment(
7146
7146
  color = vec4<f32>(mix(color.rgb, shadow.rgb, clamp((color.a - shadowSample) * shadow.a, 0.0, 1.0)), color.a);
7147
7147
 
7148
7148
  return vec4<f32>(color.rgb * color.a, color.a);
7149
- }`,eZ=Object.defineProperty,tZ=(r,e,t)=>e in r?eZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Go=(r,e,t)=>(tZ(r,typeof e!="symbol"?e+"":e,t),t);const e4=class UR extends ge{constructor(e){e={...UR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:$Q,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:JQ,name:"bevel-filter"});super({gpuProgram:t,glProgram:i,resources:{bevelUniforms:{uLightColor:{value:new Float32Array(3),type:"vec3<f32>"},uLightAlpha:{value:e.lightAlpha,type:"f32"},uShadowColor:{value:new Float32Array(3),type:"vec3<f32>"},uShadowAlpha:{value:e.shadowAlpha,type:"f32"},uTransform:{value:new Float32Array(2),type:"vec2<f32>"}}},padding:1}),Go(this,"uniforms"),Go(this,"_thickness"),Go(this,"_rotation"),Go(this,"_lightColor"),Go(this,"_shadowColor"),this.uniforms=this.resources.bevelUniforms.uniforms,this._lightColor=new ye,this._shadowColor=new ye,this.lightColor=e.lightColor??16777215,this.shadowColor=e.shadowColor??0,Object.assign(this,e)}get rotation(){return this._rotation/ns}set rotation(e){this._rotation=e*ns,this._updateTransform()}get thickness(){return this._thickness}set thickness(e){this._thickness=e,this._updateTransform()}get lightColor(){return this._lightColor.value}set lightColor(e){this._lightColor.setValue(e);const[t,i,n]=this._lightColor.toArray();this.uniforms.uLightColor[0]=t,this.uniforms.uLightColor[1]=i,this.uniforms.uLightColor[2]=n}get lightAlpha(){return this.uniforms.uLightAlpha}set lightAlpha(e){this.uniforms.uLightAlpha=e}get shadowColor(){return this._shadowColor.value}set shadowColor(e){this._shadowColor.setValue(e);const[t,i,n]=this._shadowColor.toArray();this.uniforms.uShadowColor[0]=t,this.uniforms.uShadowColor[1]=i,this.uniforms.uShadowColor[2]=n}get shadowAlpha(){return this.uniforms.uShadowAlpha}set shadowAlpha(e){this.uniforms.uShadowAlpha=e}_updateTransform(){this.uniforms.uTransform[0]=this.thickness*Math.cos(this._rotation),this.uniforms.uTransform[1]=this.thickness*Math.sin(this._rotation)}};Go(e4,"DEFAULT_OPTIONS",{rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7});let rZ=e4;var iZ=Object.defineProperty,nZ=(r,e,t)=>e in r?iZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,xh=(r,e,t)=>(nZ(r,typeof e!="symbol"?e+"":e,t),t);const t4=class zR extends vP{constructor(...e){let t=e[0]??{};if(typeof t=="number"||Array.isArray(t)||"x"in t&&"y"in t){J("6.0.0","BloomFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }");let i=t;Array.isArray(i)&&(i={x:i[0],y:i[1]}),t={strength:i},e[1]!==void 0&&(t.quality=e[1]),e[2]!==void 0&&(t.resolution=e[2]),e[3]!==void 0&&(t.kernelSize=e[3])}t={...zR.DEFAULT_OPTIONS,...t},super(),xh(this,"_blurXFilter"),xh(this,"_blurYFilter"),xh(this,"_strength"),this._strength={x:2,y:2},t.strength&&(typeof t.strength=="number"?(this._strength.x=t.strength,this._strength.y=t.strength):(this._strength.x=t.strength.x,this._strength.y=t.strength.y)),this._blurXFilter=new ko({...t,horizontal:!0,strength:this.strengthX}),this._blurYFilter=new ko({...t,horizontal:!1,strength:this.strengthY}),this._blurYFilter.blendMode="screen",Object.assign(this,t)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,i,n),this._blurXFilter.apply(e,t,s,!0),this._blurYFilter.apply(e,s,i,!1),ze.returnTexture(s)}get strength(){return this._strength}set strength(e){this._strength=typeof e=="number"?{x:e,y:e}:e,this._updateStrength()}get strengthX(){return this.strength.x}set strengthX(e){this.strength.x=e,this._updateStrength()}get strengthY(){return this.strength.y}set strengthY(e){this.strength.y=e,this._updateStrength()}_updateStrength(){this._blurXFilter.blur=this.strengthX,this._blurYFilter.blur=this.strengthY}get blur(){return J("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strengthX}set blur(e){J("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strength=e}get blurX(){return J("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX}set blurX(e){J("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX=e}get blurY(){return J("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY}set blurY(e){J("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY=e}};xh(t4,"DEFAULT_OPTIONS",{strength:{x:2,y:2},quality:4,resolution:1,kernelSize:5});let sZ=t4;var oZ=`precision highp float;
7149
+ }`,tZ=Object.defineProperty,rZ=(r,e,t)=>e in r?tZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Go=(r,e,t)=>(rZ(r,typeof e!="symbol"?e+"":e,t),t);const e4=class UR extends ge{constructor(e){e={...UR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:eZ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:$Q,name:"bevel-filter"});super({gpuProgram:t,glProgram:i,resources:{bevelUniforms:{uLightColor:{value:new Float32Array(3),type:"vec3<f32>"},uLightAlpha:{value:e.lightAlpha,type:"f32"},uShadowColor:{value:new Float32Array(3),type:"vec3<f32>"},uShadowAlpha:{value:e.shadowAlpha,type:"f32"},uTransform:{value:new Float32Array(2),type:"vec2<f32>"}}},padding:1}),Go(this,"uniforms"),Go(this,"_thickness"),Go(this,"_rotation"),Go(this,"_lightColor"),Go(this,"_shadowColor"),this.uniforms=this.resources.bevelUniforms.uniforms,this._lightColor=new ye,this._shadowColor=new ye,this.lightColor=e.lightColor??16777215,this.shadowColor=e.shadowColor??0,Object.assign(this,e)}get rotation(){return this._rotation/ns}set rotation(e){this._rotation=e*ns,this._updateTransform()}get thickness(){return this._thickness}set thickness(e){this._thickness=e,this._updateTransform()}get lightColor(){return this._lightColor.value}set lightColor(e){this._lightColor.setValue(e);const[t,i,n]=this._lightColor.toArray();this.uniforms.uLightColor[0]=t,this.uniforms.uLightColor[1]=i,this.uniforms.uLightColor[2]=n}get lightAlpha(){return this.uniforms.uLightAlpha}set lightAlpha(e){this.uniforms.uLightAlpha=e}get shadowColor(){return this._shadowColor.value}set shadowColor(e){this._shadowColor.setValue(e);const[t,i,n]=this._shadowColor.toArray();this.uniforms.uShadowColor[0]=t,this.uniforms.uShadowColor[1]=i,this.uniforms.uShadowColor[2]=n}get shadowAlpha(){return this.uniforms.uShadowAlpha}set shadowAlpha(e){this.uniforms.uShadowAlpha=e}_updateTransform(){this.uniforms.uTransform[0]=this.thickness*Math.cos(this._rotation),this.uniforms.uTransform[1]=this.thickness*Math.sin(this._rotation)}};Go(e4,"DEFAULT_OPTIONS",{rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7});let iZ=e4;var nZ=Object.defineProperty,sZ=(r,e,t)=>e in r?nZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,xh=(r,e,t)=>(sZ(r,typeof e!="symbol"?e+"":e,t),t);const t4=class zR extends vP{constructor(...e){let t=e[0]??{};if(typeof t=="number"||Array.isArray(t)||"x"in t&&"y"in t){J("6.0.0","BloomFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }");let i=t;Array.isArray(i)&&(i={x:i[0],y:i[1]}),t={strength:i},e[1]!==void 0&&(t.quality=e[1]),e[2]!==void 0&&(t.resolution=e[2]),e[3]!==void 0&&(t.kernelSize=e[3])}t={...zR.DEFAULT_OPTIONS,...t},super(),xh(this,"_blurXFilter"),xh(this,"_blurYFilter"),xh(this,"_strength"),this._strength={x:2,y:2},t.strength&&(typeof t.strength=="number"?(this._strength.x=t.strength,this._strength.y=t.strength):(this._strength.x=t.strength.x,this._strength.y=t.strength.y)),this._blurXFilter=new ko({...t,horizontal:!0,strength:this.strengthX}),this._blurYFilter=new ko({...t,horizontal:!1,strength:this.strengthY}),this._blurYFilter.blendMode="screen",Object.assign(this,t)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,i,n),this._blurXFilter.apply(e,t,s,!0),this._blurYFilter.apply(e,s,i,!1),ze.returnTexture(s)}get strength(){return this._strength}set strength(e){this._strength=typeof e=="number"?{x:e,y:e}:e,this._updateStrength()}get strengthX(){return this.strength.x}set strengthX(e){this.strength.x=e,this._updateStrength()}get strengthY(){return this.strength.y}set strengthY(e){this.strength.y=e,this._updateStrength()}_updateStrength(){this._blurXFilter.blur=this.strengthX,this._blurYFilter.blur=this.strengthY}get blur(){return J("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strengthX}set blur(e){J("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strength=e}get blurX(){return J("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX}set blurX(e){J("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX=e}get blurY(){return J("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY}set blurY(e){J("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY=e}};xh(t4,"DEFAULT_OPTIONS",{strength:{x:2,y:2},quality:4,resolution:1,kernelSize:5});let oZ=t4;var aZ=`precision highp float;
7150
7150
  in vec2 vTextureCoord;
7151
7151
  out vec4 finalColor;
7152
7152
 
@@ -7185,7 +7185,7 @@ void main()
7185
7185
 
7186
7186
  finalColor = color;
7187
7187
  }
7188
- `,aZ=`struct BulgePinchUniforms {
7188
+ `,lZ=`struct BulgePinchUniforms {
7189
7189
  uDimensions: vec2<f32>,
7190
7190
  uCenter: vec2<f32>,
7191
7191
  uRadius: f32,
@@ -7248,7 +7248,7 @@ fn compareVec2(x: vec2<f32>, y: vec2<f32>) -> bool
7248
7248
  }
7249
7249
 
7250
7250
  return false;
7251
- }`,lZ=Object.defineProperty,uZ=(r,e,t)=>e in r?lZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,r4=(r,e,t)=>(uZ(r,typeof e!="symbol"?e+"":e,t),t);const i4=class LR extends ge{constructor(e){e={...LR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:aZ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:oZ,name:"bulge-pinch-filter"});super({gpuProgram:t,glProgram:i,resources:{bulgePinchUniforms:{uDimensions:{value:[0,0],type:"vec2<f32>"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uRadius:{value:e.radius,type:"f32"},uStrength:{value:e.strength,type:"f32"}}}}),r4(this,"uniforms"),this.uniforms=this.resources.bulgePinchUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,e.applyFilter(this,t,i,n)}get center(){return this.uniforms.uCenter}set center(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get radius(){return this.uniforms.uRadius}set radius(e){this.uniforms.uRadius=e}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}};r4(i4,"DEFAULT_OPTIONS",{center:{x:.5,y:.5},radius:100,strength:1});let cZ=i4;var hZ=`precision highp float;
7251
+ }`,uZ=Object.defineProperty,cZ=(r,e,t)=>e in r?uZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,r4=(r,e,t)=>(cZ(r,typeof e!="symbol"?e+"":e,t),t);const i4=class LR extends ge{constructor(e){e={...LR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:lZ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:aZ,name:"bulge-pinch-filter"});super({gpuProgram:t,glProgram:i,resources:{bulgePinchUniforms:{uDimensions:{value:[0,0],type:"vec2<f32>"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uRadius:{value:e.radius,type:"f32"},uStrength:{value:e.strength,type:"f32"}}}}),r4(this,"uniforms"),this.uniforms=this.resources.bulgePinchUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,e.applyFilter(this,t,i,n)}get center(){return this.uniforms.uCenter}set center(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get radius(){return this.uniforms.uRadius}set radius(e){this.uniforms.uRadius=e}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}};r4(i4,"DEFAULT_OPTIONS",{center:{x:.5,y:.5},radius:100,strength:1});let hZ=i4;var dZ=`precision highp float;
7252
7252
  in vec2 vTextureCoord;
7253
7253
  in vec2 vFilterCoord;
7254
7254
  out vec4 finalColor;
@@ -7388,7 +7388,7 @@ void main(void) {
7388
7388
  finalColor = gradientColor;
7389
7389
  }
7390
7390
  }
7391
- `,dZ=`in vec2 aPosition;
7391
+ `,fZ=`in vec2 aPosition;
7392
7392
  out vec2 vTextureCoord;
7393
7393
  out vec2 vFilterCoord;
7394
7394
 
@@ -7618,7 +7618,7 @@ const PI_2: f32 = PI * 2.0;
7618
7618
  const TYPE_LINEAR: i32 = 0;
7619
7619
  const TYPE_RADIAL: i32 = 1;
7620
7620
  const TYPE_CONIC: i32 = 2;
7621
- const MAX_STOPS: i32 = 32;`,Ss=Ss||{};Ss.stringify=(function(){var r={"visit_linear-gradient":function(e){return r.visit_gradient(e)},"visit_repeating-linear-gradient":function(e){return r.visit_gradient(e)},"visit_radial-gradient":function(e){return r.visit_gradient(e)},"visit_repeating-radial-gradient":function(e){return r.visit_gradient(e)},visit_gradient:function(e){var t=r.visit(e.orientation);return t&&(t+=", "),e.type+"("+t+r.visit(e.colorStops)+")"},visit_shape:function(e){var t=e.value,i=r.visit(e.at),n=r.visit(e.style);return n&&(t+=" "+n),i&&(t+=" at "+i),t},"visit_default-radial":function(e){var t="",i=r.visit(e.at);return i&&(t+=i),t},"visit_extent-keyword":function(e){var t=e.value,i=r.visit(e.at);return i&&(t+=" at "+i),t},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return r.visit(e.value.x)+" "+r.visit(e.value.y)},"visit_%":function(e){return e.value+"%"},visit_em:function(e){return e.value+"em"},visit_px:function(e){return e.value+"px"},visit_literal:function(e){return r.visit_color(e.value,e)},visit_hex:function(e){return r.visit_color("#"+e.value,e)},visit_rgb:function(e){return r.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return r.visit_color("rgba("+e.value.join(", ")+")",e)},visit_color:function(e,t){var i=e,n=r.visit(t.length);return n&&(i+=" "+n),i},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var t="",i=e.length;return e.forEach(function(n,s){t+=r.visit(n),s<i-1&&(t+=", ")}),t},visit:function(e){if(!e)return"";var t="";if(e instanceof Array)return r.visit_array(e,t);if(e.type){var i=r["visit_"+e.type];if(i)return i(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return r.visit(e)}})();var Ss=Ss||{};Ss.parse=(function(){var r={linearGradient:/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,repeatingLinearGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,radialGradient:/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,repeatingRadialGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},e="";function t(k){var Y=new Error(e+": "+k);throw Y.source=e,Y}function i(){var k=n();return e.length>0&&t("Invalid input not EOF"),k}function n(){return y(s)}function s(){return o("linear-gradient",r.linearGradient,l)||o("repeating-linear-gradient",r.repeatingLinearGradient,l)||o("radial-gradient",r.radialGradient,h)||o("repeating-radial-gradient",r.repeatingRadialGradient,h)}function o(k,Y,H){return a(Y,function($){var K=H();return K&&(X(r.comma)||t("Missing comma before color stops")),{type:k,orientation:K,colorStops:y(b)}})}function a(k,Y){var H=X(k);if(H){X(r.startCall)||t("Missing (");var $=Y(H);return X(r.endCall)||t("Missing )"),$}}function l(){return u()||c()}function u(){return U("directional",r.sideOrCorner,1)}function c(){return U("angular",r.angleValue,1)}function h(){var k,Y=d(),H;return Y&&(k=[],k.push(Y),H=e,X(r.comma)&&(Y=d(),Y?k.push(Y):e=H)),k}function d(){var k=f()||p();if(k)k.at=g();else{var Y=m();if(Y){k=Y;var H=g();H&&(k.at=H)}else{var $=v();$&&(k={type:"default-radial",at:$})}}return k}function f(){var k=U("shape",/^(circle)/i,0);return k&&(k.style=O()||m()),k}function p(){var k=U("shape",/^(ellipse)/i,0);return k&&(k.style=I()||m()),k}function m(){return U("extent-keyword",r.extentKeywords,1)}function g(){if(U("position",/^at/,0)){var k=v();return k||t("Missing positioning value"),k}}function v(){var k=x();if(k.x||k.y)return{type:"position",value:k}}function x(){return{x:I(),y:I()}}function y(k){var Y=k(),H=[];if(Y)for(H.push(Y);X(r.comma);)Y=k(),Y?H.push(Y):t("One extra comma");return H}function b(){var k=T();return k||t("Expected color definition"),k.length=I(),k}function T(){return A()||_()||E()||P()}function P(){return U("literal",r.literalColor,0)}function A(){return U("hex",r.hexColor,1)}function E(){return a(r.rgbColor,function(){return{type:"rgb",value:y(S)}})}function _(){return a(r.rgbaColor,function(){return{type:"rgba",value:y(S)}})}function S(){return X(r.number)[1]}function I(){return U("%",r.percentageValue,1)||M()||O()}function M(){return U("position-keyword",r.positionKeywords,1)}function O(){return U("px",r.pixelValue,1)||U("em",r.emValue,1)}function U(k,Y,H){var $=X(Y);if($)return{type:k,value:$[H]}}function X(k){var Y,H;return H=/^[\n\r\t\s]+/.exec(e),H&&D(H[0].length),Y=k.exec(e),Y&&D(Y[0].length),Y}function D(k){e=e.substr(k)}return function(k){return e=k.toString(),i()}})();var fZ=Ss.parse;Ss.stringify;function pZ(r){const e=fZ(wZ(r));if(e.length===0)throw new Error("Invalid CSS gradient.");if(e.length!==1)throw new Error("Unsupported CSS gradient (multiple gradients is not supported).");const t=e[0],i=mZ(t.type),n=gZ(t.colorStops),s=bZ(t.orientation);return{type:i,stops:n,angle:s}}function mZ(r){const e={"linear-gradient":0,"radial-gradient":1};if(!(r in e))throw new Error(`Unsupported gradient type "${r}"`);return e[r]}function gZ(r){const e=xZ(r),t=[],i=new ye;for(let n=0;n<r.length;n++){const s=vZ(r[n]),o=i.setValue(s).toArray();t.push({offset:e[n],color:o.slice(0,3),alpha:o[3]})}return t}function vZ(r){switch(r.type){case"hex":return`#${r.value}`;case"literal":return r.value;default:return`${r.type}(${r.value.join(",")})`}}function xZ(r){const e=[];for(let s=0;s<r.length;s++){const o=r[s];let a=-1;o.type==="literal"&&o.length&&"type"in o.length&&o.length.type==="%"&&"value"in o.length&&(a=parseFloat(o.length.value)/100),e.push(a)}const i=s=>{for(let o=s;o<e.length;o++)if(e[o]!==-1)return{indexDelta:o-s,offset:e[o]};return{indexDelta:e.length-1-s,offset:1}};let n=0;for(let s=0;s<e.length;s++){const o=e[s];if(o!==-1)n=o;else if(s===0)e[s]=0;else if(s+1===e.length)e[s]=1;else{const a=i(s),u=(a.offset-n)/(1+a.indexDelta);for(let c=0;c<=a.indexDelta;c++)e[s+c]=n+(c+1)*u;s+=a.indexDelta,n=e[s]}}return e.map(yZ)}function yZ(r){return r.toString().length>6?parseFloat(r.toString().substring(0,6)):r}function bZ(r){if(typeof r>"u")return 0;if("type"in r&&"value"in r)switch(r.type){case"angular":return parseFloat(r.value);case"directional":return _Z(r.value)}return 0}function _Z(r){const e={left:270,top:0,bottom:180,right:90,"left top":315,"top left":315,"left bottom":225,"bottom left":225,"right top":45,"top right":45,"right bottom":135,"bottom right":135};if(!(r in e))throw new Error(`Unsupported directional value "${r}"`);return e[r]}function wZ(r){let e=r.replace(/\s{2,}/gu," ");return e=e.replace(/;/g,""),e=e.replace(/ ,/g,","),e=e.replace(/\( /g,"("),e=e.replace(/ \)/g,")"),e.trim()}var SZ=Object.defineProperty,TZ=(r,e,t)=>e in r?SZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ts=(r,e,t)=>(TZ(r,typeof e!="symbol"?e+"":e,t),t);const Zb=90;function CZ(r){return[...r].sort((e,t)=>e.offset-t.offset)}const Ho=class Mh extends ge{constructor(e){if(e&&"css"in e?e={...pZ(e.css||""),alpha:e.alpha??Mh.defaults.alpha,maxColors:e.maxColors??Mh.defaults.maxColors}:e={...Mh.defaults,...e},!e.stops||e.stops.length<2)throw new Error("ColorGradientFilter requires at least 2 color stops.");const t=pe.from({vertex:{source:n4,entryPoint:"mainVertex"},fragment:{source:n4,entryPoint:"mainFragment"}}),i=ue.from({vertex:dZ,fragment:hZ,name:"color-gradient-filter"}),n=32;super({gpuProgram:t,glProgram:i,resources:{baseUniforms:{uOptions:{value:[e.type,e.angle??Zb,e.alpha,e.replace?1:0],type:"vec4<f32>"},uCounts:{value:[e.stops.length,e.maxColors],type:"vec2<f32>"}},stopsUniforms:{uColors:{value:new Float32Array(n*3),type:"vec3<f32>",size:n},uStops:{value:new Float32Array(n*4),type:"vec4<f32>",size:n}}}}),Ts(this,"baseUniforms"),Ts(this,"stopsUniforms"),Ts(this,"_stops",[]),this.baseUniforms=this.resources.baseUniforms.uniforms,this.stopsUniforms=this.resources.stopsUniforms.uniforms,Object.assign(this,e)}get stops(){return this._stops}set stops(e){const t=CZ(e),i=new ye;let n,s,o;for(let a=0;a<t.length;a++){i.setValue(t[a].color);const l=a*3;[n,s,o]=i.toArray(),this.stopsUniforms.uColors[l]=n,this.stopsUniforms.uColors[l+1]=s,this.stopsUniforms.uColors[l+2]=o,this.stopsUniforms.uStops[a*4]=t[a].offset,this.stopsUniforms.uStops[a*4+1]=t[a].alpha}this.baseUniforms.uCounts[0]=t.length,this._stops=t}get type(){return this.baseUniforms.uOptions[0]}set type(e){this.baseUniforms.uOptions[0]=e}get angle(){return this.baseUniforms.uOptions[1]+Zb}set angle(e){this.baseUniforms.uOptions[1]=e-Zb}get alpha(){return this.baseUniforms.uOptions[2]}set alpha(e){this.baseUniforms.uOptions[2]=e}get maxColors(){return this.baseUniforms.uCounts[1]}set maxColors(e){this.baseUniforms.uCounts[1]=e}get replace(){return this.baseUniforms.uOptions[3]>.5}set replace(e){this.baseUniforms.uOptions[3]=e?1:0}};Ts(Ho,"LINEAR",0),Ts(Ho,"RADIAL",1),Ts(Ho,"CONIC",2),Ts(Ho,"defaults",{type:Ho.LINEAR,stops:[{offset:0,color:16711680,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0,replace:!1});let AZ=Ho;var EZ=`in vec2 vTextureCoord;
7621
+ const MAX_STOPS: i32 = 32;`,Ss=Ss||{};Ss.stringify=(function(){var r={"visit_linear-gradient":function(e){return r.visit_gradient(e)},"visit_repeating-linear-gradient":function(e){return r.visit_gradient(e)},"visit_radial-gradient":function(e){return r.visit_gradient(e)},"visit_repeating-radial-gradient":function(e){return r.visit_gradient(e)},visit_gradient:function(e){var t=r.visit(e.orientation);return t&&(t+=", "),e.type+"("+t+r.visit(e.colorStops)+")"},visit_shape:function(e){var t=e.value,i=r.visit(e.at),n=r.visit(e.style);return n&&(t+=" "+n),i&&(t+=" at "+i),t},"visit_default-radial":function(e){var t="",i=r.visit(e.at);return i&&(t+=i),t},"visit_extent-keyword":function(e){var t=e.value,i=r.visit(e.at);return i&&(t+=" at "+i),t},"visit_position-keyword":function(e){return e.value},visit_position:function(e){return r.visit(e.value.x)+" "+r.visit(e.value.y)},"visit_%":function(e){return e.value+"%"},visit_em:function(e){return e.value+"em"},visit_px:function(e){return e.value+"px"},visit_literal:function(e){return r.visit_color(e.value,e)},visit_hex:function(e){return r.visit_color("#"+e.value,e)},visit_rgb:function(e){return r.visit_color("rgb("+e.value.join(", ")+")",e)},visit_rgba:function(e){return r.visit_color("rgba("+e.value.join(", ")+")",e)},visit_color:function(e,t){var i=e,n=r.visit(t.length);return n&&(i+=" "+n),i},visit_angular:function(e){return e.value+"deg"},visit_directional:function(e){return"to "+e.value},visit_array:function(e){var t="",i=e.length;return e.forEach(function(n,s){t+=r.visit(n),s<i-1&&(t+=", ")}),t},visit:function(e){if(!e)return"";var t="";if(e instanceof Array)return r.visit_array(e,t);if(e.type){var i=r["visit_"+e.type];if(i)return i(e);throw Error("Missing visitor visit_"+e.type)}else throw Error("Invalid node.")}};return function(e){return r.visit(e)}})();var Ss=Ss||{};Ss.parse=(function(){var r={linearGradient:/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,repeatingLinearGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,radialGradient:/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,repeatingRadialGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},e="";function t(k){var Y=new Error(e+": "+k);throw Y.source=e,Y}function i(){var k=n();return e.length>0&&t("Invalid input not EOF"),k}function n(){return y(s)}function s(){return o("linear-gradient",r.linearGradient,l)||o("repeating-linear-gradient",r.repeatingLinearGradient,l)||o("radial-gradient",r.radialGradient,h)||o("repeating-radial-gradient",r.repeatingRadialGradient,h)}function o(k,Y,H){return a(Y,function($){var K=H();return K&&(X(r.comma)||t("Missing comma before color stops")),{type:k,orientation:K,colorStops:y(b)}})}function a(k,Y){var H=X(k);if(H){X(r.startCall)||t("Missing (");var $=Y(H);return X(r.endCall)||t("Missing )"),$}}function l(){return u()||c()}function u(){return U("directional",r.sideOrCorner,1)}function c(){return U("angular",r.angleValue,1)}function h(){var k,Y=d(),H;return Y&&(k=[],k.push(Y),H=e,X(r.comma)&&(Y=d(),Y?k.push(Y):e=H)),k}function d(){var k=f()||p();if(k)k.at=g();else{var Y=m();if(Y){k=Y;var H=g();H&&(k.at=H)}else{var $=v();$&&(k={type:"default-radial",at:$})}}return k}function f(){var k=U("shape",/^(circle)/i,0);return k&&(k.style=O()||m()),k}function p(){var k=U("shape",/^(ellipse)/i,0);return k&&(k.style=I()||m()),k}function m(){return U("extent-keyword",r.extentKeywords,1)}function g(){if(U("position",/^at/,0)){var k=v();return k||t("Missing positioning value"),k}}function v(){var k=x();if(k.x||k.y)return{type:"position",value:k}}function x(){return{x:I(),y:I()}}function y(k){var Y=k(),H=[];if(Y)for(H.push(Y);X(r.comma);)Y=k(),Y?H.push(Y):t("One extra comma");return H}function b(){var k=T();return k||t("Expected color definition"),k.length=I(),k}function T(){return A()||_()||E()||P()}function P(){return U("literal",r.literalColor,0)}function A(){return U("hex",r.hexColor,1)}function E(){return a(r.rgbColor,function(){return{type:"rgb",value:y(S)}})}function _(){return a(r.rgbaColor,function(){return{type:"rgba",value:y(S)}})}function S(){return X(r.number)[1]}function I(){return U("%",r.percentageValue,1)||M()||O()}function M(){return U("position-keyword",r.positionKeywords,1)}function O(){return U("px",r.pixelValue,1)||U("em",r.emValue,1)}function U(k,Y,H){var $=X(Y);if($)return{type:k,value:$[H]}}function X(k){var Y,H;return H=/^[\n\r\t\s]+/.exec(e),H&&D(H[0].length),Y=k.exec(e),Y&&D(Y[0].length),Y}function D(k){e=e.substr(k)}return function(k){return e=k.toString(),i()}})();var pZ=Ss.parse;Ss.stringify;function mZ(r){const e=pZ(SZ(r));if(e.length===0)throw new Error("Invalid CSS gradient.");if(e.length!==1)throw new Error("Unsupported CSS gradient (multiple gradients is not supported).");const t=e[0],i=gZ(t.type),n=vZ(t.colorStops),s=_Z(t.orientation);return{type:i,stops:n,angle:s}}function gZ(r){const e={"linear-gradient":0,"radial-gradient":1};if(!(r in e))throw new Error(`Unsupported gradient type "${r}"`);return e[r]}function vZ(r){const e=yZ(r),t=[],i=new ye;for(let n=0;n<r.length;n++){const s=xZ(r[n]),o=i.setValue(s).toArray();t.push({offset:e[n],color:o.slice(0,3),alpha:o[3]})}return t}function xZ(r){switch(r.type){case"hex":return`#${r.value}`;case"literal":return r.value;default:return`${r.type}(${r.value.join(",")})`}}function yZ(r){const e=[];for(let s=0;s<r.length;s++){const o=r[s];let a=-1;o.type==="literal"&&o.length&&"type"in o.length&&o.length.type==="%"&&"value"in o.length&&(a=parseFloat(o.length.value)/100),e.push(a)}const i=s=>{for(let o=s;o<e.length;o++)if(e[o]!==-1)return{indexDelta:o-s,offset:e[o]};return{indexDelta:e.length-1-s,offset:1}};let n=0;for(let s=0;s<e.length;s++){const o=e[s];if(o!==-1)n=o;else if(s===0)e[s]=0;else if(s+1===e.length)e[s]=1;else{const a=i(s),u=(a.offset-n)/(1+a.indexDelta);for(let c=0;c<=a.indexDelta;c++)e[s+c]=n+(c+1)*u;s+=a.indexDelta,n=e[s]}}return e.map(bZ)}function bZ(r){return r.toString().length>6?parseFloat(r.toString().substring(0,6)):r}function _Z(r){if(typeof r>"u")return 0;if("type"in r&&"value"in r)switch(r.type){case"angular":return parseFloat(r.value);case"directional":return wZ(r.value)}return 0}function wZ(r){const e={left:270,top:0,bottom:180,right:90,"left top":315,"top left":315,"left bottom":225,"bottom left":225,"right top":45,"top right":45,"right bottom":135,"bottom right":135};if(!(r in e))throw new Error(`Unsupported directional value "${r}"`);return e[r]}function SZ(r){let e=r.replace(/\s{2,}/gu," ");return e=e.replace(/;/g,""),e=e.replace(/ ,/g,","),e=e.replace(/\( /g,"("),e=e.replace(/ \)/g,")"),e.trim()}var TZ=Object.defineProperty,CZ=(r,e,t)=>e in r?TZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ts=(r,e,t)=>(CZ(r,typeof e!="symbol"?e+"":e,t),t);const Zb=90;function AZ(r){return[...r].sort((e,t)=>e.offset-t.offset)}const Ho=class Mh extends ge{constructor(e){if(e&&"css"in e?e={...mZ(e.css||""),alpha:e.alpha??Mh.defaults.alpha,maxColors:e.maxColors??Mh.defaults.maxColors}:e={...Mh.defaults,...e},!e.stops||e.stops.length<2)throw new Error("ColorGradientFilter requires at least 2 color stops.");const t=pe.from({vertex:{source:n4,entryPoint:"mainVertex"},fragment:{source:n4,entryPoint:"mainFragment"}}),i=ue.from({vertex:fZ,fragment:dZ,name:"color-gradient-filter"}),n=32;super({gpuProgram:t,glProgram:i,resources:{baseUniforms:{uOptions:{value:[e.type,e.angle??Zb,e.alpha,e.replace?1:0],type:"vec4<f32>"},uCounts:{value:[e.stops.length,e.maxColors],type:"vec2<f32>"}},stopsUniforms:{uColors:{value:new Float32Array(n*3),type:"vec3<f32>",size:n},uStops:{value:new Float32Array(n*4),type:"vec4<f32>",size:n}}}}),Ts(this,"baseUniforms"),Ts(this,"stopsUniforms"),Ts(this,"_stops",[]),this.baseUniforms=this.resources.baseUniforms.uniforms,this.stopsUniforms=this.resources.stopsUniforms.uniforms,Object.assign(this,e)}get stops(){return this._stops}set stops(e){const t=AZ(e),i=new ye;let n,s,o;for(let a=0;a<t.length;a++){i.setValue(t[a].color);const l=a*3;[n,s,o]=i.toArray(),this.stopsUniforms.uColors[l]=n,this.stopsUniforms.uColors[l+1]=s,this.stopsUniforms.uColors[l+2]=o,this.stopsUniforms.uStops[a*4]=t[a].offset,this.stopsUniforms.uStops[a*4+1]=t[a].alpha}this.baseUniforms.uCounts[0]=t.length,this._stops=t}get type(){return this.baseUniforms.uOptions[0]}set type(e){this.baseUniforms.uOptions[0]=e}get angle(){return this.baseUniforms.uOptions[1]+Zb}set angle(e){this.baseUniforms.uOptions[1]=e-Zb}get alpha(){return this.baseUniforms.uOptions[2]}set alpha(e){this.baseUniforms.uOptions[2]=e}get maxColors(){return this.baseUniforms.uCounts[1]}set maxColors(e){this.baseUniforms.uCounts[1]=e}get replace(){return this.baseUniforms.uOptions[3]>.5}set replace(e){this.baseUniforms.uOptions[3]=e?1:0}};Ts(Ho,"LINEAR",0),Ts(Ho,"RADIAL",1),Ts(Ho,"CONIC",2),Ts(Ho,"defaults",{type:Ho.LINEAR,stops:[{offset:0,color:16711680,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0,replace:!1});let EZ=Ho;var PZ=`in vec2 vTextureCoord;
7622
7622
  out vec4 finalColor;
7623
7623
 
7624
7624
  uniform sampler2D uTexture;
@@ -7652,7 +7652,7 @@ void main() {
7652
7652
 
7653
7653
  finalColor = vec4(mix(color, adjusted, uMix).rgb, color.a);
7654
7654
 
7655
- }`,PZ=`struct ColorMapUniforms {
7655
+ }`,IZ=`struct ColorMapUniforms {
7656
7656
  uMix: f32,
7657
7657
  uSize: f32,
7658
7658
  uSliceSize: f32,
@@ -7692,7 +7692,7 @@ fn mainFragment(
7692
7692
  let realColor: vec4<f32> = select(color, altColor, color.a > 0.0);
7693
7693
 
7694
7694
  return vec4<f32>(mix(realColor, adjusted, colorMapUniforms.uMix).rgb, realColor.a);
7695
- }`,IZ=Object.defineProperty,BZ=(r,e,t)=>e in r?IZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Zi=(r,e,t)=>(BZ(r,typeof e!="symbol"?e+"":e,t),t);const s4=class NR extends ge{constructor(...e){let t=e[0]??{};if((t instanceof Q||t instanceof dt)&&(J("6.0.0","ColorMapFilter constructor params are now options object. See params: { colorMap, nearest, mix }"),t={colorMap:t},e[1]!==void 0&&(t.nearest=e[1]),e[2]!==void 0&&(t.mix=e[2])),t={...NR.DEFAULT_OPTIONS,...t},!t.colorMap)throw Error("No color map texture source was provided to ColorMapFilter");const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:PZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:EZ,name:"color-map-filter"});super({gpuProgram:i,glProgram:n,resources:{colorMapUniforms:{uMix:{value:t.mix,type:"f32"},uSize:{value:0,type:"f32"},uSliceSize:{value:0,type:"f32"},uSlicePixelSize:{value:0,type:"f32"},uSliceInnerSize:{value:0,type:"f32"}},uMapTexture:t.colorMap.source,uMapSampler:t.colorMap.source.style}}),Zi(this,"uniforms"),Zi(this,"_size",0),Zi(this,"_sliceSize",0),Zi(this,"_slicePixelSize",0),Zi(this,"_sliceInnerSize",0),Zi(this,"_nearest",!1),Zi(this,"_scaleMode","linear"),Zi(this,"_colorMap"),this.uniforms=this.resources.colorMapUniforms.uniforms,Object.assign(this,t)}get mix(){return this.uniforms.uMix}set mix(e){this.uniforms.uMix=e}get colorSize(){return this._size}get colorMap(){return this._colorMap}set colorMap(e){if(!e||e===this.colorMap)return;const t=e instanceof Q?e.source:e;t.style.scaleMode=this._scaleMode,t.autoGenerateMipmaps=!1,this._size=t.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms.uSize=this._size,this.uniforms.uSliceSize=this._sliceSize,this.uniforms.uSlicePixelSize=this._slicePixelSize,this.uniforms.uSliceInnerSize=this._sliceInnerSize,this.resources.uMapTexture=t,this._colorMap=e}get nearest(){return this._nearest}set nearest(e){this._nearest=e,this._scaleMode=e?"nearest":"linear";const t=this._colorMap;t&&t.source&&(t.source.scaleMode=this._scaleMode,t.source.autoGenerateMipmaps=!1,t.source.style.update(),t.source.update())}updateColorMap(){const e=this._colorMap;e?.source&&(e.source.update(),this.colorMap=e)}destroy(){this._colorMap?.destroy(),super.destroy()}};Zi(s4,"DEFAULT_OPTIONS",{colorMap:Q.WHITE,nearest:!1,mix:1});let kZ=s4;var RZ=`in vec2 vTextureCoord;
7695
+ }`,BZ=Object.defineProperty,kZ=(r,e,t)=>e in r?BZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Zi=(r,e,t)=>(kZ(r,typeof e!="symbol"?e+"":e,t),t);const s4=class NR extends ge{constructor(...e){let t=e[0]??{};if((t instanceof Q||t instanceof dt)&&(J("6.0.0","ColorMapFilter constructor params are now options object. See params: { colorMap, nearest, mix }"),t={colorMap:t},e[1]!==void 0&&(t.nearest=e[1]),e[2]!==void 0&&(t.mix=e[2])),t={...NR.DEFAULT_OPTIONS,...t},!t.colorMap)throw Error("No color map texture source was provided to ColorMapFilter");const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:IZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:PZ,name:"color-map-filter"});super({gpuProgram:i,glProgram:n,resources:{colorMapUniforms:{uMix:{value:t.mix,type:"f32"},uSize:{value:0,type:"f32"},uSliceSize:{value:0,type:"f32"},uSlicePixelSize:{value:0,type:"f32"},uSliceInnerSize:{value:0,type:"f32"}},uMapTexture:t.colorMap.source,uMapSampler:t.colorMap.source.style}}),Zi(this,"uniforms"),Zi(this,"_size",0),Zi(this,"_sliceSize",0),Zi(this,"_slicePixelSize",0),Zi(this,"_sliceInnerSize",0),Zi(this,"_nearest",!1),Zi(this,"_scaleMode","linear"),Zi(this,"_colorMap"),this.uniforms=this.resources.colorMapUniforms.uniforms,Object.assign(this,t)}get mix(){return this.uniforms.uMix}set mix(e){this.uniforms.uMix=e}get colorSize(){return this._size}get colorMap(){return this._colorMap}set colorMap(e){if(!e||e===this.colorMap)return;const t=e instanceof Q?e.source:e;t.style.scaleMode=this._scaleMode,t.autoGenerateMipmaps=!1,this._size=t.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms.uSize=this._size,this.uniforms.uSliceSize=this._sliceSize,this.uniforms.uSlicePixelSize=this._slicePixelSize,this.uniforms.uSliceInnerSize=this._sliceInnerSize,this.resources.uMapTexture=t,this._colorMap=e}get nearest(){return this._nearest}set nearest(e){this._nearest=e,this._scaleMode=e?"nearest":"linear";const t=this._colorMap;t&&t.source&&(t.source.scaleMode=this._scaleMode,t.source.autoGenerateMipmaps=!1,t.source.style.update(),t.source.update())}updateColorMap(){const e=this._colorMap;e?.source&&(e.source.update(),this.colorMap=e)}destroy(){this._colorMap?.destroy(),super.destroy()}};Zi(s4,"DEFAULT_OPTIONS",{colorMap:Q.WHITE,nearest:!1,mix:1});let RZ=s4;var FZ=`in vec2 vTextureCoord;
7696
7696
  out vec4 finalColor;
7697
7697
 
7698
7698
  uniform sampler2D uTexture;
@@ -7702,7 +7702,7 @@ uniform float uAlpha;
7702
7702
  void main(void) {
7703
7703
  vec4 c = texture(uTexture, vTextureCoord);
7704
7704
  finalColor = vec4(mix(c.rgb, uColor * c.a, uAlpha), c.a);
7705
- }`,FZ=`struct ColorOverlayUniforms {
7705
+ }`,MZ=`struct ColorOverlayUniforms {
7706
7706
  uColor: vec3<f32>,
7707
7707
  uAlpha: f32,
7708
7708
  };
@@ -7719,7 +7719,7 @@ fn mainFragment(
7719
7719
  let c = textureSample(uTexture, uSampler, uv);
7720
7720
  return vec4<f32>(mix(c.rgb, colorOverlayUniforms.uColor.rgb * c.a, colorOverlayUniforms.uAlpha), c.a);
7721
7721
  }
7722
- `,MZ=Object.defineProperty,DZ=(r,e,t)=>e in r?MZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Jb=(r,e,t)=>(DZ(r,typeof e!="symbol"?e+"":e,t),t);const o4=class GR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t)||t instanceof Float32Array)&&(J("6.0.0","ColorOverlayFilter constructor params are now options object. See params: { color, alpha }"),t={color:t},e[1]!==void 0&&(t.alpha=e[1])),t={...GR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:FZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:RZ,name:"color-overlay-filter"});super({gpuProgram:i,glProgram:n,resources:{colorOverlayUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"}}}}),Jb(this,"uniforms"),Jb(this,"_color"),this.uniforms=this.resources.colorOverlayUniforms.uniforms,this._color=new ye,this.color=t.color??0}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};Jb(o4,"DEFAULT_OPTIONS",{color:0,alpha:1});let OZ=o4;var UZ=`in vec2 vTextureCoord;
7722
+ `,DZ=Object.defineProperty,OZ=(r,e,t)=>e in r?DZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Jb=(r,e,t)=>(OZ(r,typeof e!="symbol"?e+"":e,t),t);const o4=class GR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t)||t instanceof Float32Array)&&(J("6.0.0","ColorOverlayFilter constructor params are now options object. See params: { color, alpha }"),t={color:t},e[1]!==void 0&&(t.alpha=e[1])),t={...GR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:MZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:FZ,name:"color-overlay-filter"});super({gpuProgram:i,glProgram:n,resources:{colorOverlayUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"}}}}),Jb(this,"uniforms"),Jb(this,"_color"),this.uniforms=this.resources.colorOverlayUniforms.uniforms,this._color=new ye,this.color=t.color??0}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};Jb(o4,"DEFAULT_OPTIONS",{color:0,alpha:1});let UZ=o4;var zZ=`in vec2 vTextureCoord;
7723
7723
  out vec4 finalColor;
7724
7724
 
7725
7725
  uniform sampler2D uTexture;
@@ -7734,7 +7734,7 @@ void main(void) {
7734
7734
  float doReplace = step(colorDistance, uTolerance);
7735
7735
  finalColor = vec4(mix(c.rgb, (uTargetColor + colorDiff) * c.a, doReplace), c.a);
7736
7736
  }
7737
- `,zZ=`struct ColorReplaceUniforms {
7737
+ `,LZ=`struct ColorReplaceUniforms {
7738
7738
  uOriginalColor: vec3<f32>,
7739
7739
  uTargetColor: vec3<f32>,
7740
7740
  uTolerance: f32,
@@ -7756,7 +7756,7 @@ fn mainFragment(
7756
7756
  let doReplace: f32 = step(colorDistance, colorReplaceUniforms.uTolerance);
7757
7757
 
7758
7758
  return vec4<f32>(mix(sample.rgb, (colorReplaceUniforms.uTargetColor + colorDiff) * sample.a, doReplace), sample.a);
7759
- }`,LZ=Object.defineProperty,NZ=(r,e,t)=>e in r?LZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,yh=(r,e,t)=>(NZ(r,typeof e!="symbol"?e+"":e,t),t);const a4=class HR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t)||t instanceof Float32Array)&&(J("6.0.0","ColorReplaceFilter constructor params are now options object. See params: { originalColor, targetColor, tolerance }"),t={originalColor:t},e[1]!==void 0&&(t.targetColor=e[1]),e[2]!==void 0&&(t.tolerance=e[2])),t={...HR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:zZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:UZ,name:"color-replace-filter"});super({gpuProgram:i,glProgram:n,resources:{colorReplaceUniforms:{uOriginalColor:{value:new Float32Array(3),type:"vec3<f32>"},uTargetColor:{value:new Float32Array(3),type:"vec3<f32>"},uTolerance:{value:t.tolerance,type:"f32"}}}}),yh(this,"uniforms"),yh(this,"_originalColor"),yh(this,"_targetColor"),this.uniforms=this.resources.colorReplaceUniforms.uniforms,this._originalColor=new ye,this._targetColor=new ye,this.originalColor=t.originalColor??16711680,this.targetColor=t.targetColor??0,Object.assign(this,t)}get originalColor(){return this._originalColor.value}set originalColor(e){this._originalColor.setValue(e);const[t,i,n]=this._originalColor.toArray();this.uniforms.uOriginalColor[0]=t,this.uniforms.uOriginalColor[1]=i,this.uniforms.uOriginalColor[2]=n}get targetColor(){return this._targetColor.value}set targetColor(e){this._targetColor.setValue(e);const[t,i,n]=this._targetColor.toArray();this.uniforms.uTargetColor[0]=t,this.uniforms.uTargetColor[1]=i,this.uniforms.uTargetColor[2]=n}get tolerance(){return this.uniforms.uTolerance}set tolerance(e){this.uniforms.uTolerance=e}set newColor(e){J("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor=e}get newColor(){return J("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor}set epsilon(e){J("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance=e}get epsilon(){return J("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance}};yh(a4,"DEFAULT_OPTIONS",{originalColor:16711680,targetColor:0,tolerance:.4});let GZ=a4;var HZ=`in vec2 vTextureCoord;
7759
+ }`,NZ=Object.defineProperty,GZ=(r,e,t)=>e in r?NZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,yh=(r,e,t)=>(GZ(r,typeof e!="symbol"?e+"":e,t),t);const a4=class HR extends ge{constructor(...e){let t=e[0]??{};(typeof t=="number"||Array.isArray(t)||t instanceof Float32Array)&&(J("6.0.0","ColorReplaceFilter constructor params are now options object. See params: { originalColor, targetColor, tolerance }"),t={originalColor:t},e[1]!==void 0&&(t.targetColor=e[1]),e[2]!==void 0&&(t.tolerance=e[2])),t={...HR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:LZ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:zZ,name:"color-replace-filter"});super({gpuProgram:i,glProgram:n,resources:{colorReplaceUniforms:{uOriginalColor:{value:new Float32Array(3),type:"vec3<f32>"},uTargetColor:{value:new Float32Array(3),type:"vec3<f32>"},uTolerance:{value:t.tolerance,type:"f32"}}}}),yh(this,"uniforms"),yh(this,"_originalColor"),yh(this,"_targetColor"),this.uniforms=this.resources.colorReplaceUniforms.uniforms,this._originalColor=new ye,this._targetColor=new ye,this.originalColor=t.originalColor??16711680,this.targetColor=t.targetColor??0,Object.assign(this,t)}get originalColor(){return this._originalColor.value}set originalColor(e){this._originalColor.setValue(e);const[t,i,n]=this._originalColor.toArray();this.uniforms.uOriginalColor[0]=t,this.uniforms.uOriginalColor[1]=i,this.uniforms.uOriginalColor[2]=n}get targetColor(){return this._targetColor.value}set targetColor(e){this._targetColor.setValue(e);const[t,i,n]=this._targetColor.toArray();this.uniforms.uTargetColor[0]=t,this.uniforms.uTargetColor[1]=i,this.uniforms.uTargetColor[2]=n}get tolerance(){return this.uniforms.uTolerance}set tolerance(e){this.uniforms.uTolerance=e}set newColor(e){J("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor=e}get newColor(){return J("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor}set epsilon(e){J("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance=e}get epsilon(){return J("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance}};yh(a4,"DEFAULT_OPTIONS",{originalColor:16711680,targetColor:0,tolerance:.4});let HZ=a4;var WZ=`in vec2 vTextureCoord;
7760
7760
  out vec4 finalColor;
7761
7761
 
7762
7762
  uniform sampler2D uTexture;
@@ -7783,7 +7783,7 @@ void main(void)
7783
7783
  c31 * uMatrix[2][0] + c32 * uMatrix[2][1] + c33 * uMatrix[2][2];
7784
7784
 
7785
7785
  finalColor.a = c22.a;
7786
- }`,WZ=`struct ConvolutionUniforms {
7786
+ }`,VZ=`struct ConvolutionUniforms {
7787
7787
  uMatrix: mat3x3<f32>,
7788
7788
  uTexelSize: vec2<f32>,
7789
7789
  };
@@ -7821,7 +7821,7 @@ fn mainFragment(
7821
7821
  finalColor.a = c22.a;
7822
7822
 
7823
7823
  return finalColor;
7824
- }`,VZ=Object.defineProperty,XZ=(r,e,t)=>e in r?VZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,l4=(r,e,t)=>(XZ(r,typeof e!="symbol"?e+"":e,t),t);const u4=class WR extends ge{constructor(...e){let t=e[0]??{};Array.isArray(t)&&(J("6.0.0","ConvolutionFilter constructor params are now options object. See params: { matrix, width, height }"),t={matrix:t},e[1]!==void 0&&(t.width=e[1]),e[2]!==void 0&&(t.height=e[2])),t={...WR.DEFAULT_OPTIONS,...t};const i=t.width??200,n=t.height??200,s=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:WZ,entryPoint:"mainFragment"}}),o=ue.from({vertex:Me,fragment:HZ,name:"convolution-filter"});super({gpuProgram:s,glProgram:o,resources:{convolutionUniforms:{uMatrix:{value:t.matrix,type:"mat3x3<f32>"},uTexelSize:{value:{x:1/i,y:1/n},type:"vec2<f32>"}}}}),l4(this,"uniforms"),this.uniforms=this.resources.convolutionUniforms.uniforms,this.width=i,this.height=n}get matrix(){return this.uniforms.uMatrix}set matrix(e){e.forEach((t,i)=>{this.uniforms.uMatrix[i]=t})}get width(){return 1/this.uniforms.uTexelSize.x}set width(e){this.uniforms.uTexelSize.x=1/e}get height(){return 1/this.uniforms.uTexelSize.y}set height(e){this.uniforms.uTexelSize.y=1/e}};l4(u4,"DEFAULT_OPTIONS",{matrix:new Float32Array(9),width:200,height:200});let YZ=u4;var qZ=`in vec2 vTextureCoord;
7824
+ }`,XZ=Object.defineProperty,YZ=(r,e,t)=>e in r?XZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,l4=(r,e,t)=>(YZ(r,typeof e!="symbol"?e+"":e,t),t);const u4=class WR extends ge{constructor(...e){let t=e[0]??{};Array.isArray(t)&&(J("6.0.0","ConvolutionFilter constructor params are now options object. See params: { matrix, width, height }"),t={matrix:t},e[1]!==void 0&&(t.width=e[1]),e[2]!==void 0&&(t.height=e[2])),t={...WR.DEFAULT_OPTIONS,...t};const i=t.width??200,n=t.height??200,s=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:VZ,entryPoint:"mainFragment"}}),o=ue.from({vertex:Me,fragment:WZ,name:"convolution-filter"});super({gpuProgram:s,glProgram:o,resources:{convolutionUniforms:{uMatrix:{value:t.matrix,type:"mat3x3<f32>"},uTexelSize:{value:{x:1/i,y:1/n},type:"vec2<f32>"}}}}),l4(this,"uniforms"),this.uniforms=this.resources.convolutionUniforms.uniforms,this.width=i,this.height=n}get matrix(){return this.uniforms.uMatrix}set matrix(e){e.forEach((t,i)=>{this.uniforms.uMatrix[i]=t})}get width(){return 1/this.uniforms.uTexelSize.x}set width(e){this.uniforms.uTexelSize.x=1/e}get height(){return 1/this.uniforms.uTexelSize.y}set height(e){this.uniforms.uTexelSize.y=1/e}};l4(u4,"DEFAULT_OPTIONS",{matrix:new Float32Array(9),width:200,height:200});let qZ=u4;var jZ=`in vec2 vTextureCoord;
7825
7825
  out vec4 finalColor;
7826
7826
 
7827
7827
  uniform sampler2D uTexture;
@@ -7864,7 +7864,7 @@ void main(void)
7864
7864
  }
7865
7865
  }
7866
7866
  }
7867
- `,jZ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
7867
+ `,KZ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
7868
7868
  @group(0) @binding(2) var uSampler: sampler;
7869
7869
 
7870
7870
  @fragment
@@ -7912,7 +7912,7 @@ fn mainFragment(
7912
7912
  fn modulo(x: f32, y: f32) -> f32
7913
7913
  {
7914
7914
  return x - y * floor(x/y);
7915
- }`;class KZ extends ge{constructor(){const e=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:jZ,entryPoint:"mainFragment"}}),t=ue.from({vertex:Me,fragment:qZ,name:"cross-hatch-filter"});super({gpuProgram:e,glProgram:t,resources:{}})}}var QZ=`precision highp float;
7915
+ }`;class QZ extends ge{constructor(){const e=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:KZ,entryPoint:"mainFragment"}}),t=ue.from({vertex:Me,fragment:jZ,name:"cross-hatch-filter"});super({gpuProgram:e,glProgram:t,resources:{}})}}var ZZ=`precision highp float;
7916
7916
  in vec2 vTextureCoord;
7917
7917
  out vec4 finalColor;
7918
7918
 
@@ -7996,7 +7996,7 @@ void main(void)
7996
7996
  finalColor = vec4(interlaceLines(finalColor.rgb, vTextureCoord), finalColor.a);
7997
7997
  }
7998
7998
  }
7999
- `,ZZ=`struct CRTUniforms {
7999
+ `,JZ=`struct CRTUniforms {
8000
8000
  uLine: vec4<f32>,
8001
8001
  uNoise: vec2<f32>,
8002
8002
  uVignette: vec3<f32>,
@@ -8108,7 +8108,7 @@ fn interlaceLines(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>
8108
8108
  color *= 0.99 + ceil(segment) * 0.015;
8109
8109
 
8110
8110
  return color;
8111
- }`,JZ=Object.defineProperty,$Z=(r,e,t)=>e in r?JZ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,bh=(r,e,t)=>($Z(r,typeof e!="symbol"?e+"":e,t),t);const c4=class VR extends ge{constructor(e){e={...VR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:ZZ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:QZ,name:"crt-filter"});super({gpuProgram:t,glProgram:i,resources:{crtUniforms:{uLine:{value:new Float32Array(4),type:"vec4<f32>"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uVignette:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:e.seed,type:"f32"},uTime:{value:e.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),bh(this,"uniforms"),bh(this,"seed"),bh(this,"time"),this.uniforms=this.resources.crtUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uSeed=this.seed,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get curvature(){return this.uniforms.uLine[0]}set curvature(e){this.uniforms.uLine[0]=e}get lineWidth(){return this.uniforms.uLine[1]}set lineWidth(e){this.uniforms.uLine[1]=e}get lineContrast(){return this.uniforms.uLine[2]}set lineContrast(e){this.uniforms.uLine[2]=e}get verticalLine(){return this.uniforms.uLine[3]>.5}set verticalLine(e){this.uniforms.uLine[3]=e?1:0}get noise(){return this.uniforms.uNoise[0]}set noise(e){this.uniforms.uNoise[0]=e}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(e){this.uniforms.uNoise[1]=e}get vignetting(){return this.uniforms.uVignette[0]}set vignetting(e){this.uniforms.uVignette[0]=e}get vignettingAlpha(){return this.uniforms.uVignette[1]}set vignettingAlpha(e){this.uniforms.uVignette[1]=e}get vignettingBlur(){return this.uniforms.uVignette[2]}set vignettingBlur(e){this.uniforms.uVignette[2]=e}};bh(c4,"DEFAULT_OPTIONS",{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0,seed:0});let eJ=c4;var tJ=`precision highp float;
8111
+ }`,$Z=Object.defineProperty,eJ=(r,e,t)=>e in r?$Z(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,bh=(r,e,t)=>(eJ(r,typeof e!="symbol"?e+"":e,t),t);const c4=class VR extends ge{constructor(e){e={...VR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:JZ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:ZZ,name:"crt-filter"});super({gpuProgram:t,glProgram:i,resources:{crtUniforms:{uLine:{value:new Float32Array(4),type:"vec4<f32>"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uVignette:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:e.seed,type:"f32"},uTime:{value:e.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),bh(this,"uniforms"),bh(this,"seed"),bh(this,"time"),this.uniforms=this.resources.crtUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uSeed=this.seed,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get curvature(){return this.uniforms.uLine[0]}set curvature(e){this.uniforms.uLine[0]=e}get lineWidth(){return this.uniforms.uLine[1]}set lineWidth(e){this.uniforms.uLine[1]=e}get lineContrast(){return this.uniforms.uLine[2]}set lineContrast(e){this.uniforms.uLine[2]=e}get verticalLine(){return this.uniforms.uLine[3]>.5}set verticalLine(e){this.uniforms.uLine[3]=e?1:0}get noise(){return this.uniforms.uNoise[0]}set noise(e){this.uniforms.uNoise[0]=e}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(e){this.uniforms.uNoise[1]=e}get vignetting(){return this.uniforms.uVignette[0]}set vignetting(e){this.uniforms.uVignette[0]=e}get vignettingAlpha(){return this.uniforms.uVignette[1]}set vignettingAlpha(e){this.uniforms.uVignette[1]=e}get vignettingBlur(){return this.uniforms.uVignette[2]}set vignettingBlur(e){this.uniforms.uVignette[2]=e}};bh(c4,"DEFAULT_OPTIONS",{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0,seed:0});let tJ=c4;var rJ=`precision highp float;
8112
8112
  in vec2 vTextureCoord;
8113
8113
  out vec4 finalColor;
8114
8114
 
@@ -8142,7 +8142,7 @@ float pattern()
8142
8142
 
8143
8143
  finalColor = vec4(colorRGB * 10.0 - 5.0 + pattern(), color.a);
8144
8144
  }
8145
- `,rJ=`struct DotUniforms {
8145
+ `,iJ=`struct DotUniforms {
8146
8146
  uScale:f32,
8147
8147
  uAngle:f32,
8148
8148
  uGrayScale:f32,
@@ -8189,7 +8189,7 @@ fn pattern(uv: vec2<f32>) -> f32
8189
8189
  ) * dotUniforms.uScale;
8190
8190
 
8191
8191
  return (sin(p.x) * sin(p.y)) * 4.0;
8192
- }`,iJ=Object.defineProperty,nJ=(r,e,t)=>e in r?iJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,sJ=(r,e,t)=>(nJ(r,e+"",t),t);const h4=class XR extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","DotFilter constructor params are now options object. See params: { scale, angle, grayscale }"),t={scale:t},e[1]!==void 0&&(t.angle=e[1]),e[2]!==void 0&&(t.grayscale=e[2])),t={...XR.DEFAULT_OPTIONS,...t};const i={uScale:{value:t.scale,type:"f32"},uAngle:{value:t.angle,type:"f32"},uGrayScale:{value:t.grayscale?1:0,type:"f32"}},n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:rJ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:tJ,name:"dot-filter"});super({gpuProgram:n,glProgram:s,resources:{dotUniforms:i}})}get scale(){return this.resources.dotUniforms.uniforms.uScale}set scale(e){this.resources.dotUniforms.uniforms.uScale=e}get angle(){return this.resources.dotUniforms.uniforms.uAngle}set angle(e){this.resources.dotUniforms.uniforms.uAngle=e}get grayscale(){return this.resources.dotUniforms.uniforms.uGrayScale===1}set grayscale(e){this.resources.dotUniforms.uniforms.uGrayScale=e?1:0}};sJ(h4,"DEFAULT_OPTIONS",{scale:1,angle:5,grayscale:!0});let oJ=h4;var aJ=`precision highp float;
8192
+ }`,nJ=Object.defineProperty,sJ=(r,e,t)=>e in r?nJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,oJ=(r,e,t)=>(sJ(r,e+"",t),t);const h4=class XR extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","DotFilter constructor params are now options object. See params: { scale, angle, grayscale }"),t={scale:t},e[1]!==void 0&&(t.angle=e[1]),e[2]!==void 0&&(t.grayscale=e[2])),t={...XR.DEFAULT_OPTIONS,...t};const i={uScale:{value:t.scale,type:"f32"},uAngle:{value:t.angle,type:"f32"},uGrayScale:{value:t.grayscale?1:0,type:"f32"}},n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:iJ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:rJ,name:"dot-filter"});super({gpuProgram:n,glProgram:s,resources:{dotUniforms:i}})}get scale(){return this.resources.dotUniforms.uniforms.uScale}set scale(e){this.resources.dotUniforms.uniforms.uScale=e}get angle(){return this.resources.dotUniforms.uniforms.uAngle}set angle(e){this.resources.dotUniforms.uniforms.uAngle=e}get grayscale(){return this.resources.dotUniforms.uniforms.uGrayScale===1}set grayscale(e){this.resources.dotUniforms.uniforms.uGrayScale=e?1:0}};oJ(h4,"DEFAULT_OPTIONS",{scale:1,angle:5,grayscale:!0});let aJ=h4;var lJ=`precision highp float;
8193
8193
  in vec2 vTextureCoord;
8194
8194
  out vec4 finalColor;
8195
8195
 
@@ -8210,7 +8210,7 @@ void main(void){
8210
8210
  sample *= uAlpha;
8211
8211
 
8212
8212
  finalColor = sample;
8213
- }`,lJ=`struct DropShadowUniforms {
8213
+ }`,uJ=`struct DropShadowUniforms {
8214
8214
  uAlpha: f32,
8215
8215
  uColor: vec3<f32>,
8216
8216
  uOffset: vec2<f32>,
@@ -8244,7 +8244,7 @@ fn mainFragment(
8244
8244
  color *= dropShadowUniforms.uAlpha;
8245
8245
 
8246
8246
  return color;
8247
- }`,uJ=Object.defineProperty,cJ=(r,e,t)=>e in r?uJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Wo=(r,e,t)=>(cJ(r,typeof e!="symbol"?e+"":e,t),t);const d4=class YR extends ge{constructor(e){e={...YR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:lJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:aJ,name:"drop-shadow-filter"});super({gpuProgram:t,glProgram:i,resources:{dropShadowUniforms:{uAlpha:{value:e.alpha,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uOffset:{value:e.offset,type:"vec2<f32>"}}},resolution:e.resolution}),Wo(this,"uniforms"),Wo(this,"shadowOnly",!1),Wo(this,"_color"),Wo(this,"_blurFilter"),Wo(this,"_basePass"),this.uniforms=this.resources.dropShadowUniforms.uniforms,this._color=new ye,this.color=e.color??0,this._blurFilter=new Kb({strength:e.kernels??e.blur,quality:e.kernels?void 0:e.quality}),this._basePass=new ge({gpuProgram:pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:`
8247
+ }`,cJ=Object.defineProperty,hJ=(r,e,t)=>e in r?cJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Wo=(r,e,t)=>(hJ(r,typeof e!="symbol"?e+"":e,t),t);const d4=class YR extends ge{constructor(e){e={...YR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:uJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:lJ,name:"drop-shadow-filter"});super({gpuProgram:t,glProgram:i,resources:{dropShadowUniforms:{uAlpha:{value:e.alpha,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uOffset:{value:e.offset,type:"vec2<f32>"}}},resolution:e.resolution}),Wo(this,"uniforms"),Wo(this,"shadowOnly",!1),Wo(this,"_color"),Wo(this,"_blurFilter"),Wo(this,"_basePass"),this.uniforms=this.resources.dropShadowUniforms.uniforms,this._color=new ye,this.color=e.color??0,this._blurFilter=new Kb({strength:e.kernels??e.blur,quality:e.kernels?void 0:e.quality}),this._basePass=new ge({gpuProgram:pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:`
8248
8248
  @group(0) @binding(1) var uTexture: texture_2d<f32>;
8249
8249
  @group(0) @binding(2) var uSampler: sampler;
8250
8250
  @fragment
@@ -8262,7 +8262,7 @@ fn mainFragment(
8262
8262
  void main(void){
8263
8263
  finalColor = texture(uTexture, vTextureCoord);
8264
8264
  }
8265
- `,name:"drop-shadow-filter"}),resources:{}}),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,s,!0),this._blurFilter.apply(e,s,i,n),this.shadowOnly||e.applyFilter(this._basePass,t,i,!1),ze.returnTexture(s)}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e,this._updatePadding()}get offsetX(){return this.offset.x}set offsetX(e){this.offset.x=e,this._updatePadding()}get offsetY(){return this.offset.y}set offsetY(e){this.offset.y=e,this._updatePadding()}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get blur(){return this._blurFilter.strength}set blur(e){this._blurFilter.strength=e,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(e){this._blurFilter.quality=e,this._updatePadding()}get kernels(){return this._blurFilter.kernels}set kernels(e){this._blurFilter.kernels=e}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._blurFilter.pixelSize=e}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(e){this._blurFilter.pixelSizeX=e}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(e){this._blurFilter.pixelSizeY=e}_updatePadding(){const e=Math.max(Math.abs(this.offsetX),Math.abs(this.offsetY));this.padding=e+this.blur*2+this.quality*4}};Wo(d4,"DEFAULT_OPTIONS",{offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:void 0,blur:2,quality:3,pixelSize:{x:1,y:1},resolution:1});let hJ=d4;var dJ=`precision highp float;
8265
+ `,name:"drop-shadow-filter"}),resources:{}}),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,s,!0),this._blurFilter.apply(e,s,i,n),this.shadowOnly||e.applyFilter(this._basePass,t,i,!1),ze.returnTexture(s)}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e,this._updatePadding()}get offsetX(){return this.offset.x}set offsetX(e){this.offset.x=e,this._updatePadding()}get offsetY(){return this.offset.y}set offsetY(e){this.offset.y=e,this._updatePadding()}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get blur(){return this._blurFilter.strength}set blur(e){this._blurFilter.strength=e,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(e){this._blurFilter.quality=e,this._updatePadding()}get kernels(){return this._blurFilter.kernels}set kernels(e){this._blurFilter.kernels=e}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(e){typeof e=="number"&&(e={x:e,y:e}),Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._blurFilter.pixelSize=e}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(e){this._blurFilter.pixelSizeX=e}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(e){this._blurFilter.pixelSizeY=e}_updatePadding(){const e=Math.max(Math.abs(this.offsetX),Math.abs(this.offsetY));this.padding=e+this.blur*2+this.quality*4}};Wo(d4,"DEFAULT_OPTIONS",{offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:void 0,blur:2,quality:3,pixelSize:{x:1,y:1},resolution:1});let dJ=d4;var fJ=`precision highp float;
8266
8266
  in vec2 vTextureCoord;
8267
8267
  out vec4 finalColor;
8268
8268
 
@@ -8288,7 +8288,7 @@ void main(void)
8288
8288
 
8289
8289
  finalColor = vec4(color.rgb * alpha, alpha);
8290
8290
  }
8291
- `,fJ=`struct EmbossUniforms {
8291
+ `,pJ=`struct EmbossUniforms {
8292
8292
  uStrength:f32,
8293
8293
  };
8294
8294
 
@@ -8323,7 +8323,7 @@ fn mainFragment(
8323
8323
  let blendColor: vec4<f32> = textureSample(uTexture, uSampler, uv);
8324
8324
 
8325
8325
  return vec4<f32>(color.rgb * blendColor.a, blendColor.a);
8326
- }`,pJ=Object.defineProperty,mJ=(r,e,t)=>e in r?pJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gJ=(r,e,t)=>(mJ(r,e+"",t),t);class vJ extends ge{constructor(e=5){const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:fJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:dJ,name:"emboss-filter"});super({gpuProgram:t,glProgram:i,resources:{embossUniforms:{uStrength:{value:e,type:"f32"}}}}),gJ(this,"uniforms"),this.uniforms=this.resources.embossUniforms.uniforms}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}}var xJ=`precision highp float;
8326
+ }`,mJ=Object.defineProperty,gJ=(r,e,t)=>e in r?mJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,vJ=(r,e,t)=>(gJ(r,e+"",t),t);class xJ extends ge{constructor(e=5){const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:pJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:fJ,name:"emboss-filter"});super({gpuProgram:t,glProgram:i,resources:{embossUniforms:{uStrength:{value:e,type:"f32"}}}}),vJ(this,"uniforms"),this.uniforms=this.resources.embossUniforms.uniforms}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}}var yJ=`precision highp float;
8327
8327
  in vec2 vTextureCoord;
8328
8328
  out vec4 finalColor;
8329
8329
 
@@ -8422,7 +8422,7 @@ void main(void)
8422
8422
  finalColor.b = texture(uTexture, coord + uBlue * (1.0 - uSeed * 0.2) / uInputSize.xy).b;
8423
8423
  finalColor.a = texture(uTexture, coord).a;
8424
8424
  }
8425
- `,yJ=`struct GlitchUniforms {
8425
+ `,bJ=`struct GlitchUniforms {
8426
8426
  uSeed: f32,
8427
8427
  uDimensions: vec2<f32>,
8428
8428
  uAspect: f32,
@@ -8552,7 +8552,7 @@ const TRANSPARENT: i32 = 0;
8552
8552
  const ORIGINAL: i32 = 1;
8553
8553
  const LOOP: i32 = 2;
8554
8554
  const CLAMP: i32 = 3;
8555
- const MIRROR: i32 = 4;`,bJ=Object.defineProperty,_J=(r,e,t)=>e in r?bJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ki=(r,e,t)=>(_J(r,typeof e!="symbol"?e+"":e,t),t);const f4=class qR extends ge{constructor(e){e={...qR.defaults,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:yJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:xJ,name:"glitch-filter"}),n=document.createElement("canvas");n.width=4,n.height=e.sampleSize??512;const s=new Q({source:new jr({resource:n})});super({gpuProgram:t,glProgram:i,resources:{glitchUniforms:{uSeed:{value:e?.seed??0,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"},uAspect:{value:1,type:"f32"},uFillMode:{value:e?.fillMode??0,type:"f32"},uOffset:{value:e?.offset??100,type:"f32"},uDirection:{value:e?.direction??0,type:"f32"},uRed:{value:{x:0,y:0},type:"vec2<f32>"},uGreen:{value:{x:0,y:0},type:"vec2<f32>"},uBlue:{value:{x:0,y:0},type:"vec2<f32>"}},uDisplacementMap:s.source,uDisplacementSampler:s.source.style}}),ki(this,"uniforms"),ki(this,"average",!1),ki(this,"minSize",8),ki(this,"sampleSize",512),ki(this,"_canvas"),ki(this,"texture"),ki(this,"_slices",0),ki(this,"_sizes",new Float32Array(1)),ki(this,"_offsets",new Float32Array(1)),this.uniforms=this.resources.glitchUniforms.uniforms,this._canvas=n,this.texture=s,Object.assign(this,e)}apply(e,t,i,n){const{width:s,height:o}=t.frame;this.uniforms.uDimensions[0]=s,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/s,e.applyFilter(this,t,i,n)}_randomizeSizes(){const e=this._sizes,t=this._slices-1,i=this.sampleSize,n=Math.min(this.minSize/i,.9/this._slices);if(this.average){const s=this._slices;let o=1;for(let a=0;a<t;a++){const l=o/(s-a),u=Math.max(l*(1-Math.random()*.6),n);e[a]=u,o-=u}e[t]=o}else{let s=1;const o=Math.sqrt(1/this._slices);for(let a=0;a<t;a++){const l=Math.max(o*s*Math.random(),n);e[a]=l,s-=l}e[t]=s}this.shuffle()}shuffle(){const e=this._sizes,t=this._slices-1;for(let i=t;i>0;i--){const n=Math.random()*i>>0,s=e[i];e[i]=e[n],e[n]=s}}_randomizeOffsets(){for(let e=0;e<this._slices;e++)this._offsets[e]=Math.random()*(Math.random()<.5?-1:1)}refresh(){this._randomizeSizes(),this._randomizeOffsets(),this.redraw()}redraw(){const e=this.sampleSize,t=this.texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,e);let n,s=0;for(let o=0;o<this._slices;o++){n=Math.floor(this._offsets[o]*256);const a=this._sizes[o]*e,l=n>0?n:0,u=n<0?-n:0;i.fillStyle=`rgba(${l}, ${u}, 0, 1)`,i.fillRect(0,s>>0,e,a+1>>0),s+=a}t.source.update()}set sizes(e){const t=Math.min(this._slices,e.length);for(let i=0;i<t;i++)this._sizes[i]=e[i]}get sizes(){return this._sizes}set offsets(e){const t=Math.min(this._slices,e.length);for(let i=0;i<t;i++)this._offsets[i]=e[i]}get offsets(){return this._offsets}get slices(){return this._slices}set slices(e){this._slices!==e&&(this._slices=e,this._sizes=new Float32Array(e),this._offsets=new Float32Array(e),this.refresh())}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}get fillMode(){return this.uniforms.uFillMode}set fillMode(e){this.uniforms.uFillMode=e}get direction(){return this.uniforms.uDirection/ns}set direction(e){this.uniforms.uDirection=e*ns}get red(){return this.uniforms.uRed}set red(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uRed=e}get green(){return this.uniforms.uGreen}set green(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uGreen=e}get blue(){return this.uniforms.uBlue}set blue(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uBlue=e}destroy(){this.texture?.destroy(!0),this.texture=this._canvas=this.red=this.green=this.blue=this._sizes=this._offsets=null}};ki(f4,"defaults",{slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:{x:0,y:0},green:{x:0,y:0},blue:{x:0,y:0},minSize:8,sampleSize:512});let wJ=f4;var SJ=`precision highp float;
8555
+ const MIRROR: i32 = 4;`,_J=Object.defineProperty,wJ=(r,e,t)=>e in r?_J(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ki=(r,e,t)=>(wJ(r,typeof e!="symbol"?e+"":e,t),t);const f4=class qR extends ge{constructor(e){e={...qR.defaults,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:bJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:yJ,name:"glitch-filter"}),n=document.createElement("canvas");n.width=4,n.height=e.sampleSize??512;const s=new Q({source:new jr({resource:n})});super({gpuProgram:t,glProgram:i,resources:{glitchUniforms:{uSeed:{value:e?.seed??0,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"},uAspect:{value:1,type:"f32"},uFillMode:{value:e?.fillMode??0,type:"f32"},uOffset:{value:e?.offset??100,type:"f32"},uDirection:{value:e?.direction??0,type:"f32"},uRed:{value:{x:0,y:0},type:"vec2<f32>"},uGreen:{value:{x:0,y:0},type:"vec2<f32>"},uBlue:{value:{x:0,y:0},type:"vec2<f32>"}},uDisplacementMap:s.source,uDisplacementSampler:s.source.style}}),ki(this,"uniforms"),ki(this,"average",!1),ki(this,"minSize",8),ki(this,"sampleSize",512),ki(this,"_canvas"),ki(this,"texture"),ki(this,"_slices",0),ki(this,"_sizes",new Float32Array(1)),ki(this,"_offsets",new Float32Array(1)),this.uniforms=this.resources.glitchUniforms.uniforms,this._canvas=n,this.texture=s,Object.assign(this,e)}apply(e,t,i,n){const{width:s,height:o}=t.frame;this.uniforms.uDimensions[0]=s,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/s,e.applyFilter(this,t,i,n)}_randomizeSizes(){const e=this._sizes,t=this._slices-1,i=this.sampleSize,n=Math.min(this.minSize/i,.9/this._slices);if(this.average){const s=this._slices;let o=1;for(let a=0;a<t;a++){const l=o/(s-a),u=Math.max(l*(1-Math.random()*.6),n);e[a]=u,o-=u}e[t]=o}else{let s=1;const o=Math.sqrt(1/this._slices);for(let a=0;a<t;a++){const l=Math.max(o*s*Math.random(),n);e[a]=l,s-=l}e[t]=s}this.shuffle()}shuffle(){const e=this._sizes,t=this._slices-1;for(let i=t;i>0;i--){const n=Math.random()*i>>0,s=e[i];e[i]=e[n],e[n]=s}}_randomizeOffsets(){for(let e=0;e<this._slices;e++)this._offsets[e]=Math.random()*(Math.random()<.5?-1:1)}refresh(){this._randomizeSizes(),this._randomizeOffsets(),this.redraw()}redraw(){const e=this.sampleSize,t=this.texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,e);let n,s=0;for(let o=0;o<this._slices;o++){n=Math.floor(this._offsets[o]*256);const a=this._sizes[o]*e,l=n>0?n:0,u=n<0?-n:0;i.fillStyle=`rgba(${l}, ${u}, 0, 1)`,i.fillRect(0,s>>0,e,a+1>>0),s+=a}t.source.update()}set sizes(e){const t=Math.min(this._slices,e.length);for(let i=0;i<t;i++)this._sizes[i]=e[i]}get sizes(){return this._sizes}set offsets(e){const t=Math.min(this._slices,e.length);for(let i=0;i<t;i++)this._offsets[i]=e[i]}get offsets(){return this._offsets}get slices(){return this._slices}set slices(e){this._slices!==e&&(this._slices=e,this._sizes=new Float32Array(e),this._offsets=new Float32Array(e),this.refresh())}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}get fillMode(){return this.uniforms.uFillMode}set fillMode(e){this.uniforms.uFillMode=e}get direction(){return this.uniforms.uDirection/ns}set direction(e){this.uniforms.uDirection=e*ns}get red(){return this.uniforms.uRed}set red(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uRed=e}get green(){return this.uniforms.uGreen}set green(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uGreen=e}get blue(){return this.uniforms.uBlue}set blue(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uBlue=e}destroy(){this.texture?.destroy(!0),this.texture=this._canvas=this.red=this.green=this.blue=this._sizes=this._offsets=null}};ki(f4,"defaults",{slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:{x:0,y:0},green:{x:0,y:0},blue:{x:0,y:0},minSize:8,sampleSize:512});let SJ=f4;var TJ=`precision highp float;
8556
8556
  in vec2 vTextureCoord;
8557
8557
  out vec4 finalColor;
8558
8558
 
@@ -8616,7 +8616,7 @@ void main(void) {
8616
8616
  finalColor = innerColor + outerGlowColor;
8617
8617
  }
8618
8618
  }
8619
- `,TJ=`struct GlowUniforms {
8619
+ `,CJ=`struct GlowUniforms {
8620
8620
  uDistance: f32,
8621
8621
  uStrength: vec2<f32>,
8622
8622
  uColor: vec3<f32>,
@@ -8696,7 +8696,7 @@ fn mainFragment(
8696
8696
  }
8697
8697
  }
8698
8698
 
8699
- const PI: f32 = 3.14159265358979323846264;`,CJ=Object.defineProperty,AJ=(r,e,t)=>e in r?CJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,$b=(r,e,t)=>(AJ(r,typeof e!="symbol"?e+"":e,t),t);const p4=class jR extends ge{constructor(e){e={...jR.DEFAULT_OPTIONS,...e};const t=e.distance??10,i=e.quality??.1,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:TJ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:SJ.replace(/__ANGLE_STEP_SIZE__/gi,`${(1/i/t).toFixed(7)}`).replace(/__DIST__/gi,`${t.toFixed(0)}.0`),name:"glow-filter"});super({gpuProgram:n,glProgram:s,resources:{glowUniforms:{uDistance:{value:t,type:"f32"},uStrength:{value:[e.innerStrength,e.outerStrength],type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:e.alpha,type:"f32"},uQuality:{value:i,type:"f32"},uKnockout:{value:e?.knockout??!1?1:0,type:"f32"}}},padding:t}),$b(this,"uniforms"),$b(this,"_color"),this.uniforms=this.resources.glowUniforms.uniforms,this._color=new ye,this.color=e.color??16777215}get distance(){return this.uniforms.uDistance}set distance(e){this.uniforms.uDistance=this.padding=e}get innerStrength(){return this.uniforms.uStrength[0]}set innerStrength(e){this.uniforms.uStrength[0]=e}get outerStrength(){return this.uniforms.uStrength[1]}set outerStrength(e){this.uniforms.uStrength[1]=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get quality(){return this.uniforms.uQuality}set quality(e){this.uniforms.uQuality=e}get knockout(){return this.uniforms.uKnockout===1}set knockout(e){this.uniforms.uKnockout=e?1:0}};$b(p4,"DEFAULT_OPTIONS",{distance:10,outerStrength:4,innerStrength:0,color:16777215,alpha:1,quality:.1,knockout:!1});let EJ=p4;var PJ=`precision highp float;
8699
+ const PI: f32 = 3.14159265358979323846264;`,AJ=Object.defineProperty,EJ=(r,e,t)=>e in r?AJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,$b=(r,e,t)=>(EJ(r,typeof e!="symbol"?e+"":e,t),t);const p4=class jR extends ge{constructor(e){e={...jR.DEFAULT_OPTIONS,...e};const t=e.distance??10,i=e.quality??.1,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:CJ,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:TJ.replace(/__ANGLE_STEP_SIZE__/gi,`${(1/i/t).toFixed(7)}`).replace(/__DIST__/gi,`${t.toFixed(0)}.0`),name:"glow-filter"});super({gpuProgram:n,glProgram:s,resources:{glowUniforms:{uDistance:{value:t,type:"f32"},uStrength:{value:[e.innerStrength,e.outerStrength],type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:e.alpha,type:"f32"},uQuality:{value:i,type:"f32"},uKnockout:{value:e?.knockout??!1?1:0,type:"f32"}}},padding:t}),$b(this,"uniforms"),$b(this,"_color"),this.uniforms=this.resources.glowUniforms.uniforms,this._color=new ye,this.color=e.color??16777215}get distance(){return this.uniforms.uDistance}set distance(e){this.uniforms.uDistance=this.padding=e}get innerStrength(){return this.uniforms.uStrength[0]}set innerStrength(e){this.uniforms.uStrength[0]=e}get outerStrength(){return this.uniforms.uStrength[1]}set outerStrength(e){this.uniforms.uStrength[1]=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get quality(){return this.uniforms.uQuality}set quality(e){this.uniforms.uQuality=e}get knockout(){return this.uniforms.uKnockout===1}set knockout(e){this.uniforms.uKnockout=e?1:0}};$b(p4,"DEFAULT_OPTIONS",{distance:10,outerStrength:4,innerStrength:0,color:16777215,alpha:1,quality:.1,knockout:!1});let PJ=p4;var IJ=`precision highp float;
8700
8700
  in vec2 vTextureCoord;
8701
8701
  out vec4 finalColor;
8702
8702
 
@@ -8751,7 +8751,7 @@ void main(void) {
8751
8751
 
8752
8752
  finalColor = texture(uTexture, vTextureCoord) + mist;
8753
8753
  }
8754
- `,IJ=`struct GodrayUniforms {
8754
+ `,BJ=`struct GodrayUniforms {
8755
8755
  uLight: vec2<f32>,
8756
8756
  uParallel: f32,
8757
8757
  uAspect: f32,
@@ -8818,7 +8818,7 @@ fn mainFragment(
8818
8818
  return textureSample(uTexture, uSampler, uv) + mist;
8819
8819
  }
8820
8820
 
8821
- \${PERLIN}`,BJ=`vec3 mod289(vec3 x)
8821
+ \${PERLIN}`,kJ=`vec3 mod289(vec3 x)
8822
8822
  {
8823
8823
  return x - floor(x * (1.0 / 289.0)) * 289.0;
8824
8824
  }
@@ -8913,7 +8913,7 @@ float turb(vec3 P, vec3 rep, float lacunarity, float gain)
8913
8913
  }
8914
8914
  return abs(sum);
8915
8915
  }
8916
- `,kJ=`// Taken from https://gist.github.com/munrocket/236ed5ba7e409b8bdf1ff6eca5dcdc39
8916
+ `,RJ=`// Taken from https://gist.github.com/munrocket/236ed5ba7e409b8bdf1ff6eca5dcdc39
8917
8917
 
8918
8918
  fn moduloVec3(x: vec3<f32>, y: vec3<f32>) -> vec3<f32>
8919
8919
  {
@@ -9048,7 +9048,7 @@ fn turb(P: vec3<f32>, rep: vec3<f32>, lacunarity: f32, gain: f32) -> f32
9048
9048
  totalgain *= gain;
9049
9049
  }
9050
9050
  return abs(sum);
9051
- }`,RJ=Object.defineProperty,FJ=(r,e,t)=>e in r?RJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Vo=(r,e,t)=>(FJ(r,typeof e!="symbol"?e+"":e,t),t);const m4=class KR extends ge{constructor(e){e={...KR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:IJ.replace("${PERLIN}",kJ),entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:PJ.replace("${PERLIN}",BJ),name:"god-ray-filter"});super({gpuProgram:t,glProgram:i,resources:{godrayUniforms:{uLight:{value:new Float32Array(2),type:"vec2<f32>"},uParallel:{value:0,type:"f32"},uAspect:{value:0,type:"f32"},uTime:{value:e.time,type:"f32"},uRay:{value:new Float32Array(3),type:"vec3<f32>"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),Vo(this,"uniforms"),Vo(this,"time",0),Vo(this,"_angleLight",[0,0]),Vo(this,"_angle",0),Vo(this,"_center"),this.uniforms=this.resources.godrayUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){const s=t.frame.width,o=t.frame.height;this.uniforms.uLight[0]=this.parallel?this._angleLight[0]:this._center.x,this.uniforms.uLight[1]=this.parallel?this._angleLight[1]:this._center.y,this.uniforms.uDimensions[0]=s,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/s,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get angle(){return this._angle}set angle(e){this._angle=e;const t=e*ns;this._angleLight[0]=Math.cos(t),this._angleLight[1]=Math.sin(t)}get parallel(){return this.uniforms.uParallel>.5}set parallel(e){this.uniforms.uParallel=e?1:0}get center(){return this._center}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._center=e}get centerX(){return this.center.x}set centerX(e){this.center.x=e}get centerY(){return this.center.y}set centerY(e){this.center.y=e}get gain(){return this.uniforms.uRay[0]}set gain(e){this.uniforms.uRay[0]=e}get lacunarity(){return this.uniforms.uRay[1]}set lacunarity(e){this.uniforms.uRay[1]=e}get alpha(){return this.uniforms.uRay[2]}set alpha(e){this.uniforms.uRay[2]=e}};Vo(m4,"DEFAULT_OPTIONS",{angle:30,gain:.5,lacunarity:2.5,parallel:!0,time:0,center:{x:0,y:0},alpha:1});let MJ=m4;var DJ=`in vec2 vTextureCoord;
9051
+ }`,FJ=Object.defineProperty,MJ=(r,e,t)=>e in r?FJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Vo=(r,e,t)=>(MJ(r,typeof e!="symbol"?e+"":e,t),t);const m4=class KR extends ge{constructor(e){e={...KR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:BJ.replace("${PERLIN}",RJ),entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:IJ.replace("${PERLIN}",kJ),name:"god-ray-filter"});super({gpuProgram:t,glProgram:i,resources:{godrayUniforms:{uLight:{value:new Float32Array(2),type:"vec2<f32>"},uParallel:{value:0,type:"f32"},uAspect:{value:0,type:"f32"},uTime:{value:e.time,type:"f32"},uRay:{value:new Float32Array(3),type:"vec3<f32>"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),Vo(this,"uniforms"),Vo(this,"time",0),Vo(this,"_angleLight",[0,0]),Vo(this,"_angle",0),Vo(this,"_center"),this.uniforms=this.resources.godrayUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){const s=t.frame.width,o=t.frame.height;this.uniforms.uLight[0]=this.parallel?this._angleLight[0]:this._center.x,this.uniforms.uLight[1]=this.parallel?this._angleLight[1]:this._center.y,this.uniforms.uDimensions[0]=s,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/s,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get angle(){return this._angle}set angle(e){this._angle=e;const t=e*ns;this._angleLight[0]=Math.cos(t),this._angleLight[1]=Math.sin(t)}get parallel(){return this.uniforms.uParallel>.5}set parallel(e){this.uniforms.uParallel=e?1:0}get center(){return this._center}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this._center=e}get centerX(){return this.center.x}set centerX(e){this.center.x=e}get centerY(){return this.center.y}set centerY(e){this.center.y=e}get gain(){return this.uniforms.uRay[0]}set gain(e){this.uniforms.uRay[0]=e}get lacunarity(){return this.uniforms.uRay[1]}set lacunarity(e){this.uniforms.uRay[1]=e}get alpha(){return this.uniforms.uRay[2]}set alpha(e){this.uniforms.uRay[2]=e}};Vo(m4,"DEFAULT_OPTIONS",{angle:30,gain:.5,lacunarity:2.5,parallel:!0,time:0,center:{x:0,y:0},alpha:1});let DJ=m4;var OJ=`in vec2 vTextureCoord;
9052
9052
 
9053
9053
  out vec4 finalColor;
9054
9054
 
@@ -9065,7 +9065,7 @@ void main()
9065
9065
  c.a
9066
9066
  );
9067
9067
  }
9068
- `,OJ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
9068
+ `,UJ=`@group(0) @binding(1) var uTexture: texture_2d<f32>;
9069
9069
  @group(0) @binding(2) var uSampler: sampler;
9070
9070
 
9071
9071
  @fragment
@@ -9077,7 +9077,7 @@ fn mainFragment(
9077
9077
 
9078
9078
  let g: f32 = dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114));
9079
9079
  return vec4<f32>(vec3<f32>(g), 1.);
9080
- }`;class UJ extends ge{constructor(){const e=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:OJ,entryPoint:"mainFragment"}}),t=ue.from({vertex:Me,fragment:DJ,name:"grayscale-filter"});super({gpuProgram:e,glProgram:t,resources:{}})}}var zJ=`in vec2 vTextureCoord;
9080
+ }`;class zJ extends ge{constructor(){const e=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:UJ,entryPoint:"mainFragment"}}),t=ue.from({vertex:Me,fragment:OJ,name:"grayscale-filter"});super({gpuProgram:e,glProgram:t,resources:{}})}}var LJ=`in vec2 vTextureCoord;
9081
9081
  out vec4 finalColor;
9082
9082
 
9083
9083
  uniform sampler2D uTexture;
@@ -9137,7 +9137,7 @@ void main()
9137
9137
  // alpha
9138
9138
  finalColor = mix(color, vec4(resultRGB, color.a), uAlpha);
9139
9139
  }
9140
- `,LJ=`struct HslUniforms {
9140
+ `,NJ=`struct HslUniforms {
9141
9141
  uHsl:vec3<f32>,
9142
9142
  uColorize:f32,
9143
9143
  uAlpha:f32,
@@ -9195,7 +9195,7 @@ fn hueShift(color: vec3<f32>, angle: f32) -> vec3<f32>
9195
9195
  cross(k, color) * sin(angle) +
9196
9196
  k * dot(k, color) * (1.0 - cosAngle)
9197
9197
  );
9198
- }`,NJ=Object.defineProperty,GJ=(r,e,t)=>e in r?NJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,e1=(r,e,t)=>(GJ(r,typeof e!="symbol"?e+"":e,t),t);const g4=class QR extends ge{constructor(e){e={...QR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:LJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:zJ,name:"hsl-adjustment-filter"});super({gpuProgram:t,glProgram:i,resources:{hslUniforms:{uHsl:{value:new Float32Array(3),type:"vec3<f32>"},uColorize:{value:e.colorize?1:0,type:"f32"},uAlpha:{value:e.alpha,type:"f32"}}}}),e1(this,"uniforms"),e1(this,"_hue"),this.uniforms=this.resources.hslUniforms.uniforms,Object.assign(this,e)}get hue(){return this._hue}set hue(e){this._hue=e,this.uniforms.uHsl[0]=e*(Math.PI/180)}get saturation(){return this.uniforms.uHsl[1]}set saturation(e){this.uniforms.uHsl[1]=e}get lightness(){return this.uniforms.uHsl[2]}set lightness(e){this.uniforms.uHsl[2]=e}get colorize(){return this.uniforms.uColorize===1}set colorize(e){this.uniforms.uColorize=e?1:0}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};e1(g4,"DEFAULT_OPTIONS",{hue:0,saturation:0,lightness:0,colorize:!1,alpha:1});let HJ=g4;var WJ=`precision highp float;
9198
+ }`,GJ=Object.defineProperty,HJ=(r,e,t)=>e in r?GJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,e1=(r,e,t)=>(HJ(r,typeof e!="symbol"?e+"":e,t),t);const g4=class QR extends ge{constructor(e){e={...QR.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:NJ,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:LJ,name:"hsl-adjustment-filter"});super({gpuProgram:t,glProgram:i,resources:{hslUniforms:{uHsl:{value:new Float32Array(3),type:"vec3<f32>"},uColorize:{value:e.colorize?1:0,type:"f32"},uAlpha:{value:e.alpha,type:"f32"}}}}),e1(this,"uniforms"),e1(this,"_hue"),this.uniforms=this.resources.hslUniforms.uniforms,Object.assign(this,e)}get hue(){return this._hue}set hue(e){this._hue=e,this.uniforms.uHsl[0]=e*(Math.PI/180)}get saturation(){return this.uniforms.uHsl[1]}set saturation(e){this.uniforms.uHsl[1]=e}get lightness(){return this.uniforms.uHsl[2]}set lightness(e){this.uniforms.uHsl[2]=e}get colorize(){return this.uniforms.uColorize===1}set colorize(e){this.uniforms.uColorize=e?1:0}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};e1(g4,"DEFAULT_OPTIONS",{hue:0,saturation:0,lightness:0,colorize:!1,alpha:1});let WJ=g4;var VJ=`precision highp float;
9199
9199
  in vec2 vTextureCoord;
9200
9200
  out vec4 finalColor;
9201
9201
 
@@ -9237,7 +9237,7 @@ void main(void)
9237
9237
  }
9238
9238
  finalColor = color / float(uKernelSize);
9239
9239
  }
9240
- `,VJ=`struct MotionBlurUniforms {
9240
+ `,XJ=`struct MotionBlurUniforms {
9241
9241
  uVelocity: vec2<f32>,
9242
9242
  uKernelSize: i32,
9243
9243
  uOffset: f32,
@@ -9281,7 +9281,7 @@ fn mainFragment(
9281
9281
  return select(color / f32(uKernelSize), textureSample(uTexture, uSampler, uv), uKernelSize == 0);
9282
9282
  }
9283
9283
 
9284
- const MAX_KERNEL_SIZE: i32 = 2048;`,XJ=Object.defineProperty,YJ=(r,e,t)=>e in r?XJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,t1=(r,e,t)=>(YJ(r,typeof e!="symbol"?e+"":e,t),t);const v4=class ZR extends ge{constructor(...e){let t=e[0]??{};if(Array.isArray(t)||"x"in t&&"y"in t||t instanceof ot){J("6.0.0","MotionBlurFilter constructor params are now options object. See params: { velocity, kernelSize, offset }");const s="x"in t?t.x:t[0],o="y"in t?t.y:t[1];t={velocity:{x:s,y:o}},e[1]!==void 0&&(t.kernelSize=e[1]),e[2]!==void 0&&(t.offset=e[2])}t={...ZR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:VJ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:WJ,name:"motion-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{motionBlurUniforms:{uVelocity:{value:{x:0,y:0},type:"vec2<f32>"},uKernelSize:{value:Math.trunc(t.kernelSize??5),type:"i32"},uOffset:{value:t.offset,type:"f32"}}}}),t1(this,"uniforms"),t1(this,"_kernelSize"),this.uniforms=this.resources.motionBlurUniforms.uniforms,Object.assign(this,t)}get velocity(){return this.uniforms.uVelocity}set velocity(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uVelocity=e,this._updateDirty()}get velocityX(){return this.velocity.x}set velocityX(e){this.velocity.x=e,this._updateDirty()}get velocityY(){return this.velocity.y}set velocityY(e){this.velocity.y=e,this._updateDirty()}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this._updateDirty()}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}_updateDirty(){this.padding=(Math.max(Math.abs(this.velocityX),Math.abs(this.velocityY))>>0)+1,this.uniforms.uKernelSize=this.velocityX!==0||this.velocityY!==0?this._kernelSize:0}};t1(v4,"DEFAULT_OPTIONS",{velocity:{x:0,y:0},kernelSize:5,offset:0});let qJ=v4;var jJ=`in vec2 vTextureCoord;
9284
+ const MAX_KERNEL_SIZE: i32 = 2048;`,YJ=Object.defineProperty,qJ=(r,e,t)=>e in r?YJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,t1=(r,e,t)=>(qJ(r,typeof e!="symbol"?e+"":e,t),t);const v4=class ZR extends ge{constructor(...e){let t=e[0]??{};if(Array.isArray(t)||"x"in t&&"y"in t||t instanceof ot){J("6.0.0","MotionBlurFilter constructor params are now options object. See params: { velocity, kernelSize, offset }");const s="x"in t?t.x:t[0],o="y"in t?t.y:t[1];t={velocity:{x:s,y:o}},e[1]!==void 0&&(t.kernelSize=e[1]),e[2]!==void 0&&(t.offset=e[2])}t={...ZR.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:XJ,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:VJ,name:"motion-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{motionBlurUniforms:{uVelocity:{value:{x:0,y:0},type:"vec2<f32>"},uKernelSize:{value:Math.trunc(t.kernelSize??5),type:"i32"},uOffset:{value:t.offset,type:"f32"}}}}),t1(this,"uniforms"),t1(this,"_kernelSize"),this.uniforms=this.resources.motionBlurUniforms.uniforms,Object.assign(this,t)}get velocity(){return this.uniforms.uVelocity}set velocity(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uVelocity=e,this._updateDirty()}get velocityX(){return this.velocity.x}set velocityX(e){this.velocity.x=e,this._updateDirty()}get velocityY(){return this.velocity.y}set velocityY(e){this.velocity.y=e,this._updateDirty()}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this._updateDirty()}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}_updateDirty(){this.padding=(Math.max(Math.abs(this.velocityX),Math.abs(this.velocityY))>>0)+1,this.uniforms.uKernelSize=this.velocityX!==0||this.velocityY!==0?this._kernelSize:0}};t1(v4,"DEFAULT_OPTIONS",{velocity:{x:0,y:0},kernelSize:5,offset:0});let jJ=v4;var KJ=`in vec2 vTextureCoord;
9285
9285
  out vec4 finalColor;
9286
9286
 
9287
9287
  const int MAX_COLORS = \${MAX_COLORS};
@@ -9319,7 +9319,7 @@ void main(void)
9319
9319
  }
9320
9320
  }
9321
9321
  }
9322
- `,KJ=`struct MultiColorReplaceUniforms {
9322
+ `,QJ=`struct MultiColorReplaceUniforms {
9323
9323
  uOriginalColors: array<vec3<f32>, MAX_COLORS>,
9324
9324
  uTargetColors: array<vec3<f32>, MAX_COLORS>,
9325
9325
  uTolerance:f32,
@@ -9367,7 +9367,7 @@ fn mainFragment(
9367
9367
  return color;
9368
9368
  }
9369
9369
 
9370
- const MAX_COLORS: i32 = \${MAX_COLORS};`,QJ=Object.defineProperty,ZJ=(r,e,t)=>e in r?QJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_h=(r,e,t)=>(ZJ(r,typeof e!="symbol"?e+"":e,t),t);const x4=class JR extends ge{constructor(...e){let t=e[0]??{};Array.isArray(t)&&(J("6.0.0","MultiColorReplaceFilter constructor params are now options object. See params: { replacements, tolerance, maxColors }"),t={replacements:t},e[1]&&(t.tolerance=e[1]),e[2]&&(t.maxColors=e[2])),t={...JR.DEFAULT_OPTIONS,...t};const i=t.maxColors??t.replacements.length,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:KJ.replace(/\$\{MAX_COLORS\}/g,i.toFixed(0)),entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:jJ.replace(/\$\{MAX_COLORS\}/g,i.toFixed(0)),name:"multi-color-replace-filter"});super({gpuProgram:n,glProgram:s,resources:{multiColorReplaceUniforms:{uOriginalColors:{value:new Float32Array(3*i),type:"vec3<f32>",size:i},uTargetColors:{value:new Float32Array(3*i),type:"vec3<f32>",size:i},uTolerance:{value:t.tolerance,type:"f32"}}}}),_h(this,"uniforms"),_h(this,"_replacements",[]),_h(this,"_maxColors"),this._maxColors=i,this.uniforms=this.resources.multiColorReplaceUniforms.uniforms,this.replacements=t.replacements}set replacements(e){const t=this.uniforms.uOriginalColors,i=this.uniforms.uTargetColors,n=e.length,s=new ye;if(n>this._maxColors)throw new Error(`Length of replacements (${n}) exceeds the maximum colors length (${this._maxColors})`);t[n*3]=-1;let o,a,l;for(let u=0;u<n;u++){const c=e[u];s.setValue(c[0]),[o,a,l]=s.toArray(),t[u*3]=o,t[u*3+1]=a,t[u*3+2]=l,s.setValue(c[1]),[o,a,l]=s.toArray(),i[u*3]=o,i[u*3+1]=a,i[u*3+2]=l}this._replacements=e}get replacements(){return this._replacements}refresh(){this.replacements=this._replacements}get maxColors(){return this._maxColors}get tolerance(){return this.uniforms.uTolerance}set tolerance(e){this.uniforms.uTolerance=e}set epsilon(e){J("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance=e}get epsilon(){return J("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance}};_h(x4,"DEFAULT_OPTIONS",{replacements:[[16711680,255]],tolerance:.05,maxColors:void 0});let JJ=x4;var $J=`precision highp float;
9370
+ const MAX_COLORS: i32 = \${MAX_COLORS};`,ZJ=Object.defineProperty,JJ=(r,e,t)=>e in r?ZJ(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_h=(r,e,t)=>(JJ(r,typeof e!="symbol"?e+"":e,t),t);const x4=class JR extends ge{constructor(...e){let t=e[0]??{};Array.isArray(t)&&(J("6.0.0","MultiColorReplaceFilter constructor params are now options object. See params: { replacements, tolerance, maxColors }"),t={replacements:t},e[1]&&(t.tolerance=e[1]),e[2]&&(t.maxColors=e[2])),t={...JR.DEFAULT_OPTIONS,...t};const i=t.maxColors??t.replacements.length,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:QJ.replace(/\$\{MAX_COLORS\}/g,i.toFixed(0)),entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:KJ.replace(/\$\{MAX_COLORS\}/g,i.toFixed(0)),name:"multi-color-replace-filter"});super({gpuProgram:n,glProgram:s,resources:{multiColorReplaceUniforms:{uOriginalColors:{value:new Float32Array(3*i),type:"vec3<f32>",size:i},uTargetColors:{value:new Float32Array(3*i),type:"vec3<f32>",size:i},uTolerance:{value:t.tolerance,type:"f32"}}}}),_h(this,"uniforms"),_h(this,"_replacements",[]),_h(this,"_maxColors"),this._maxColors=i,this.uniforms=this.resources.multiColorReplaceUniforms.uniforms,this.replacements=t.replacements}set replacements(e){const t=this.uniforms.uOriginalColors,i=this.uniforms.uTargetColors,n=e.length,s=new ye;if(n>this._maxColors)throw new Error(`Length of replacements (${n}) exceeds the maximum colors length (${this._maxColors})`);t[n*3]=-1;let o,a,l;for(let u=0;u<n;u++){const c=e[u];s.setValue(c[0]),[o,a,l]=s.toArray(),t[u*3]=o,t[u*3+1]=a,t[u*3+2]=l,s.setValue(c[1]),[o,a,l]=s.toArray(),i[u*3]=o,i[u*3+1]=a,i[u*3+2]=l}this._replacements=e}get replacements(){return this._replacements}refresh(){this.replacements=this._replacements}get maxColors(){return this._maxColors}get tolerance(){return this.uniforms.uTolerance}set tolerance(e){this.uniforms.uTolerance=e}set epsilon(e){J("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance=e}get epsilon(){return J("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance}};_h(x4,"DEFAULT_OPTIONS",{replacements:[[16711680,255]],tolerance:.05,maxColors:void 0});let $J=x4;var e$=`precision highp float;
9371
9371
  in vec2 vTextureCoord;
9372
9372
  out vec4 finalColor;
9373
9373
 
@@ -9479,7 +9479,7 @@ void main()
9479
9479
  }
9480
9480
 
9481
9481
  finalColor.rgb = color;
9482
- }`,e$=`struct OldFilmUniforms {
9482
+ }`,t$=`struct OldFilmUniforms {
9483
9483
  uSepia: f32,
9484
9484
  uNoise: vec2<f32>,
9485
9485
  uScratch: vec3<f32>,
@@ -9633,7 +9633,7 @@ fn noise(coord: vec2<f32>) -> f32
9633
9633
  pixelCoord.x = floor(pixelCoord.x / uNoise[1]);
9634
9634
  pixelCoord.y = floor(pixelCoord.y / uNoise[1]);
9635
9635
  return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];
9636
- }`,t$=Object.defineProperty,r$=(r,e,t)=>e in r?t$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,r1=(r,e,t)=>(r$(r,typeof e!="symbol"?e+"":e,t),t);const y4=class $R extends ge{constructor(e){e={...$R.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:e$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:$J,name:"old-film-filter"});super({gpuProgram:t,glProgram:i,resources:{oldFilmUniforms:{uSepia:{value:e.sepia,type:"f32"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uScratch:{value:new Float32Array(3),type:"vec3<f32>"},uVignetting:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:e.seed,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),r1(this,"uniforms"),r1(this,"seed"),this.uniforms=this.resources.oldFilmUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uSeed=this.seed,e.applyFilter(this,t,i,n)}get sepia(){return this.uniforms.uSepia}set sepia(e){this.uniforms.uSepia=e}get noise(){return this.uniforms.uNoise[0]}set noise(e){this.uniforms.uNoise[0]=e}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(e){this.uniforms.uNoise[1]=e}get scratch(){return this.uniforms.uScratch[0]}set scratch(e){this.uniforms.uScratch[0]=e}get scratchDensity(){return this.uniforms.uScratch[1]}set scratchDensity(e){this.uniforms.uScratch[1]=e}get scratchWidth(){return this.uniforms.uScratch[2]}set scratchWidth(e){this.uniforms.uScratch[2]=e}get vignetting(){return this.uniforms.uVignetting[0]}set vignetting(e){this.uniforms.uVignetting[0]=e}get vignettingAlpha(){return this.uniforms.uVignetting[1]}set vignettingAlpha(e){this.uniforms.uVignetting[1]=e}get vignettingBlur(){return this.uniforms.uVignetting[2]}set vignettingBlur(e){this.uniforms.uVignetting[2]=e}};r1(y4,"DEFAULT_OPTIONS",{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0});let i$=y4;var n$=`precision highp float;
9636
+ }`,r$=Object.defineProperty,i$=(r,e,t)=>e in r?r$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,r1=(r,e,t)=>(i$(r,typeof e!="symbol"?e+"":e,t),t);const y4=class $R extends ge{constructor(e){e={...$R.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:t$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:e$,name:"old-film-filter"});super({gpuProgram:t,glProgram:i,resources:{oldFilmUniforms:{uSepia:{value:e.sepia,type:"f32"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uScratch:{value:new Float32Array(3),type:"vec3<f32>"},uVignetting:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:e.seed,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),r1(this,"uniforms"),r1(this,"seed"),this.uniforms=this.resources.oldFilmUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uSeed=this.seed,e.applyFilter(this,t,i,n)}get sepia(){return this.uniforms.uSepia}set sepia(e){this.uniforms.uSepia=e}get noise(){return this.uniforms.uNoise[0]}set noise(e){this.uniforms.uNoise[0]=e}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(e){this.uniforms.uNoise[1]=e}get scratch(){return this.uniforms.uScratch[0]}set scratch(e){this.uniforms.uScratch[0]=e}get scratchDensity(){return this.uniforms.uScratch[1]}set scratchDensity(e){this.uniforms.uScratch[1]=e}get scratchWidth(){return this.uniforms.uScratch[2]}set scratchWidth(e){this.uniforms.uScratch[2]=e}get vignetting(){return this.uniforms.uVignetting[0]}set vignetting(e){this.uniforms.uVignetting[0]=e}get vignettingAlpha(){return this.uniforms.uVignetting[1]}set vignettingAlpha(e){this.uniforms.uVignetting[1]=e}get vignettingBlur(){return this.uniforms.uVignetting[2]}set vignettingBlur(e){this.uniforms.uVignetting[2]=e}};r1(y4,"DEFAULT_OPTIONS",{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0});let n$=y4;var s$=`precision highp float;
9637
9637
  in vec2 vTextureCoord;
9638
9638
  out vec4 finalColor;
9639
9639
 
@@ -9674,7 +9674,7 @@ void main(void) {
9674
9674
  vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);
9675
9675
  finalColor = contentColor + outlineColor;
9676
9676
  }
9677
- `,s$=`struct OutlineUniforms {
9677
+ `,o$=`struct OutlineUniforms {
9678
9678
  uThickness:vec2<f32>,
9679
9679
  uColor:vec3<f32>,
9680
9680
  uAlpha:f32,
@@ -9738,7 +9738,7 @@ fn outlineMaxAlphaAtPos(uv: vec2<f32>) -> f32 {
9738
9738
  return maxAlpha;
9739
9739
  }
9740
9740
 
9741
- const DOUBLE_PI: f32 = 3.14159265358979323846264 * 2.;`,o$=Object.defineProperty,a$=(r,e,t)=>e in r?o$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Cs=(r,e,t)=>(a$(r,typeof e!="symbol"?e+"":e,t),t);const wh=class ks extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","OutlineFilter constructor params are now options object. See params: { thickness, color, quality, alpha, knockout }"),t={thickness:t},e[1]!==void 0&&(t.color=e[1]),e[2]!==void 0&&(t.quality=e[2]),e[3]!==void 0&&(t.alpha=e[3]),e[4]!==void 0&&(t.knockout=e[4])),t={...ks.DEFAULT_OPTIONS,...t};const i=t.quality??.1,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:s$,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:n$.replace(/\$\{ANGLE_STEP\}/,ks.getAngleStep(i).toFixed(7)),name:"outline-filter"});super({gpuProgram:n,glProgram:s,resources:{outlineUniforms:{uThickness:{value:new Float32Array(2),type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uAngleStep:{value:0,type:"f32"},uKnockout:{value:t.knockout?1:0,type:"f32"}}}}),Cs(this,"uniforms"),Cs(this,"_thickness"),Cs(this,"_quality"),Cs(this,"_color"),this.uniforms=this.resources.outlineUniforms.uniforms,this.uniforms.uAngleStep=ks.getAngleStep(i),this._color=new ye,this.color=t.color??0,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uThickness[0]=this.thickness/t.source.width,this.uniforms.uThickness[1]=this.thickness/t.source.height,e.applyFilter(this,t,i,n)}static getAngleStep(e){return parseFloat((Math.PI*2/Math.max(e*ks.MAX_SAMPLES,ks.MIN_SAMPLES)).toFixed(7))}get thickness(){return this._thickness}set thickness(e){this._thickness=this.padding=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get quality(){return this._quality}set quality(e){this._quality=e,this.uniforms.uAngleStep=ks.getAngleStep(e)}get knockout(){return this.uniforms.uKnockout===1}set knockout(e){this.uniforms.uKnockout=e?1:0}};Cs(wh,"DEFAULT_OPTIONS",{thickness:1,color:0,alpha:1,quality:.1,knockout:!1}),Cs(wh,"MIN_SAMPLES",1),Cs(wh,"MAX_SAMPLES",100);let l$=wh;var u$=`precision highp float;
9741
+ const DOUBLE_PI: f32 = 3.14159265358979323846264 * 2.;`,a$=Object.defineProperty,l$=(r,e,t)=>e in r?a$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Cs=(r,e,t)=>(l$(r,typeof e!="symbol"?e+"":e,t),t);const wh=class ks extends ge{constructor(...e){let t=e[0]??{};typeof t=="number"&&(J("6.0.0","OutlineFilter constructor params are now options object. See params: { thickness, color, quality, alpha, knockout }"),t={thickness:t},e[1]!==void 0&&(t.color=e[1]),e[2]!==void 0&&(t.quality=e[2]),e[3]!==void 0&&(t.alpha=e[3]),e[4]!==void 0&&(t.knockout=e[4])),t={...ks.DEFAULT_OPTIONS,...t};const i=t.quality??.1,n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:o$,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:s$.replace(/\$\{ANGLE_STEP\}/,ks.getAngleStep(i).toFixed(7)),name:"outline-filter"});super({gpuProgram:n,glProgram:s,resources:{outlineUniforms:{uThickness:{value:new Float32Array(2),type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uAngleStep:{value:0,type:"f32"},uKnockout:{value:t.knockout?1:0,type:"f32"}}}}),Cs(this,"uniforms"),Cs(this,"_thickness"),Cs(this,"_quality"),Cs(this,"_color"),this.uniforms=this.resources.outlineUniforms.uniforms,this.uniforms.uAngleStep=ks.getAngleStep(i),this._color=new ye,this.color=t.color??0,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uThickness[0]=this.thickness/t.source.width,this.uniforms.uThickness[1]=this.thickness/t.source.height,e.applyFilter(this,t,i,n)}static getAngleStep(e){return parseFloat((Math.PI*2/Math.max(e*ks.MAX_SAMPLES,ks.MIN_SAMPLES)).toFixed(7))}get thickness(){return this._thickness}set thickness(e){this._thickness=this.padding=e}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get quality(){return this._quality}set quality(e){this._quality=e,this.uniforms.uAngleStep=ks.getAngleStep(e)}get knockout(){return this.uniforms.uKnockout===1}set knockout(e){this.uniforms.uKnockout=e?1:0}};Cs(wh,"DEFAULT_OPTIONS",{thickness:1,color:0,alpha:1,quality:.1,knockout:!1}),Cs(wh,"MIN_SAMPLES",1),Cs(wh,"MAX_SAMPLES",100);let u$=wh;var c$=`precision highp float;
9742
9742
  in vec2 vTextureCoord;
9743
9743
  out vec4 finalColor;
9744
9744
 
@@ -9774,7 +9774,7 @@ void main(void)
9774
9774
  coord = unmapCoord(coord);
9775
9775
  finalColor = texture(uTexture, coord);
9776
9776
  }
9777
- `,c$=`struct PixelateUniforms {
9777
+ `,h$=`struct PixelateUniforms {
9778
9778
  uSize:vec2<f32>,
9779
9779
  };
9780
9780
 
@@ -9828,7 +9828,7 @@ fn pixelate(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>
9828
9828
  return floor( coord / size ) * size;
9829
9829
  }
9830
9830
 
9831
- `;class h$ extends ge{constructor(e=10){const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:c$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:u$,name:"pixelate-filter"});super({gpuProgram:t,glProgram:i,resources:{pixelateUniforms:{uSize:{value:new Float32Array(2),type:"vec2<f32>"}}}}),this.size=e}get size(){return this.resources.pixelateUniforms.uniforms.uSize}set size(e){e instanceof me?(this.sizeX=e.x,this.sizeY=e.y):Array.isArray(e)?this.resources.pixelateUniforms.uniforms.uSize=e:this.sizeX=this.sizeY=e}get sizeX(){return this.resources.pixelateUniforms.uniforms.uSize[0]}set sizeX(e){this.resources.pixelateUniforms.uniforms.uSize[0]=e}get sizeY(){return this.resources.pixelateUniforms.uniforms.uSize[1]}set sizeY(e){this.resources.pixelateUniforms.uniforms.uSize[1]=e}}var d$=`precision highp float;
9831
+ `;class d$ extends ge{constructor(e=10){const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:h$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:c$,name:"pixelate-filter"});super({gpuProgram:t,glProgram:i,resources:{pixelateUniforms:{uSize:{value:new Float32Array(2),type:"vec2<f32>"}}}}),this.size=e}get size(){return this.resources.pixelateUniforms.uniforms.uSize}set size(e){e instanceof me?(this.sizeX=e.x,this.sizeY=e.y):Array.isArray(e)?this.resources.pixelateUniforms.uniforms.uSize=e:this.sizeX=this.sizeY=e}get sizeX(){return this.resources.pixelateUniforms.uniforms.uSize[0]}set sizeX(e){this.resources.pixelateUniforms.uniforms.uSize[0]=e}get sizeY(){return this.resources.pixelateUniforms.uniforms.uSize[1]}set sizeY(e){this.resources.pixelateUniforms.uniforms.uSize[1]=e}}var f$=`precision highp float;
9832
9832
  in vec2 vTextureCoord;
9833
9833
  out vec4 finalColor;
9834
9834
 
@@ -9900,7 +9900,7 @@ void main(void)
9900
9900
 
9901
9901
  finalColor = color / float(uKernelSize);
9902
9902
  }
9903
- `,f$=`struct RadialBlurUniforms {
9903
+ `,p$=`struct RadialBlurUniforms {
9904
9904
  uRadian: f32,
9905
9905
  uCenter: vec2<f32>,
9906
9906
  uKernelSize: f32,
@@ -9989,7 +9989,7 @@ fn mainFragment(
9989
9989
  return select(color / f32(uKernelSize), baseColor, returnColorOnly);
9990
9990
  }
9991
9991
 
9992
- const MAX_KERNEL_SIZE: i32 = 2048;`,p$=Object.defineProperty,m$=(r,e,t)=>e in r?p$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Sh=(r,e,t)=>(m$(r,typeof e!="symbol"?e+"":e,t),t);const b4=class eF extends ge{constructor(...e){let t=e[0]??{};if(typeof t=="number"){if(J("6.0.0","RadialBlurFilter constructor params are now options object. See params: { angle, center, kernelSize, radius }"),t={angle:t},e[1]){const s="x"in e[1]?e[1].x:e[1][0],o="y"in e[1]?e[1].y:e[1][1];t.center={x:s,y:o}}e[2]&&(t.kernelSize=e[2]),e[3]&&(t.radius=e[3])}t={...eF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:f$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:d$,name:"radial-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{radialBlurUniforms:{uRadian:{value:0,type:"f32"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uKernelSize:{value:t.kernelSize,type:"i32"},uRadius:{value:t.radius,type:"f32"}}}}),Sh(this,"uniforms"),Sh(this,"_angle"),Sh(this,"_kernelSize"),this.uniforms=this.resources.radialBlurUniforms.uniforms,Object.assign(this,t)}_updateKernelSize(){this.uniforms.uKernelSize=this._angle!==0?this.kernelSize:0}get angle(){return this._angle}set angle(e){this._angle=e,this.uniforms.uRadian=e*Math.PI/180,this._updateKernelSize()}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.center.x}set centerX(e){this.center.x=e}get centerY(){return this.center.y}set centerY(e){this.center.y=e}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this._updateKernelSize()}get radius(){return this.uniforms.uRadius}set radius(e){this.uniforms.uRadius=e<0||e===1/0?-1:e}};Sh(b4,"DEFAULT_OPTIONS",{angle:0,center:{x:0,y:0},kernelSize:5,radius:-1});let g$=b4;var v$=`precision highp float;
9992
+ const MAX_KERNEL_SIZE: i32 = 2048;`,m$=Object.defineProperty,g$=(r,e,t)=>e in r?m$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Sh=(r,e,t)=>(g$(r,typeof e!="symbol"?e+"":e,t),t);const b4=class eF extends ge{constructor(...e){let t=e[0]??{};if(typeof t=="number"){if(J("6.0.0","RadialBlurFilter constructor params are now options object. See params: { angle, center, kernelSize, radius }"),t={angle:t},e[1]){const s="x"in e[1]?e[1].x:e[1][0],o="y"in e[1]?e[1].y:e[1][1];t.center={x:s,y:o}}e[2]&&(t.kernelSize=e[2]),e[3]&&(t.radius=e[3])}t={...eF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:p$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:f$,name:"radial-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{radialBlurUniforms:{uRadian:{value:0,type:"f32"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uKernelSize:{value:t.kernelSize,type:"i32"},uRadius:{value:t.radius,type:"f32"}}}}),Sh(this,"uniforms"),Sh(this,"_angle"),Sh(this,"_kernelSize"),this.uniforms=this.resources.radialBlurUniforms.uniforms,Object.assign(this,t)}_updateKernelSize(){this.uniforms.uKernelSize=this._angle!==0?this.kernelSize:0}get angle(){return this._angle}set angle(e){this._angle=e,this.uniforms.uRadian=e*Math.PI/180,this._updateKernelSize()}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.center.x}set centerX(e){this.center.x=e}get centerY(){return this.center.y}set centerY(e){this.center.y=e}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this._updateKernelSize()}get radius(){return this.uniforms.uRadius}set radius(e){this.uniforms.uRadius=e<0||e===1/0?-1:e}};Sh(b4,"DEFAULT_OPTIONS",{angle:0,center:{x:0,y:0},kernelSize:5,radius:-1});let v$=b4;var x$=`precision highp float;
9993
9993
  in vec2 vTextureCoord;
9994
9994
  out vec4 finalColor;
9995
9995
 
@@ -10035,7 +10035,7 @@ void main(void)
10035
10035
 
10036
10036
  finalColor = color * _alpha;
10037
10037
  }
10038
- `,x$=`struct ReflectionUniforms {
10038
+ `,y$=`struct ReflectionUniforms {
10039
10039
  uMirror: f32,
10040
10040
  uBoundary: f32,
10041
10041
  uAmplitude: vec2<f32>,
@@ -10099,7 +10099,7 @@ fn mainFragment(
10099
10099
  fn rand(co: vec2<f32>) -> f32
10100
10100
  {
10101
10101
  return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
10102
- }`,y$=Object.defineProperty,b$=(r,e,t)=>e in r?y$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i1=(r,e,t)=>(b$(r,typeof e!="symbol"?e+"":e,t),t);const _4=class tF extends ge{constructor(e){e={...tF.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:x$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:v$,name:"reflection-filter"});super({gpuProgram:t,glProgram:i,resources:{reflectionUniforms:{uMirror:{value:e.mirror?1:0,type:"f32"},uBoundary:{value:e.boundary,type:"f32"},uAmplitude:{value:e.amplitude,type:"vec2<f32>"},uWavelength:{value:e.waveLength,type:"vec2<f32>"},uAlpha:{value:e.alpha,type:"vec2<f32>"},uTime:{value:e.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),i1(this,"uniforms"),i1(this,"time",0),this.uniforms=this.resources.reflectionUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get mirror(){return this.uniforms.uMirror>.5}set mirror(e){this.uniforms.uMirror=e?1:0}get boundary(){return this.uniforms.uBoundary}set boundary(e){this.uniforms.uBoundary=e}get amplitude(){return Array.from(this.uniforms.uAmplitude)}set amplitude(e){this.uniforms.uAmplitude[0]=e[0],this.uniforms.uAmplitude[1]=e[1]}get amplitudeStart(){return this.uniforms.uAmplitude[0]}set amplitudeStart(e){this.uniforms.uAmplitude[0]=e}get amplitudeEnd(){return this.uniforms.uAmplitude[1]}set amplitudeEnd(e){this.uniforms.uAmplitude[1]=e}get waveLength(){return Array.from(this.uniforms.uWavelength)}set waveLength(e){this.uniforms.uWavelength[0]=e[0],this.uniforms.uWavelength[1]=e[1]}get wavelengthStart(){return this.uniforms.uWavelength[0]}set wavelengthStart(e){this.uniforms.uWavelength[0]=e}get wavelengthEnd(){return this.uniforms.uWavelength[1]}set wavelengthEnd(e){this.uniforms.uWavelength[1]=e}get alpha(){return Array.from(this.uniforms.uAlpha)}set alpha(e){this.uniforms.uAlpha[0]=e[0],this.uniforms.uAlpha[1]=e[1]}get alphaStart(){return this.uniforms.uAlpha[0]}set alphaStart(e){this.uniforms.uAlpha[0]=e}get alphaEnd(){return this.uniforms.uAlpha[1]}set alphaEnd(e){this.uniforms.uAlpha[1]=e}};i1(_4,"DEFAULT_OPTIONS",{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0});let _$=_4;var w$=`precision highp float;
10102
+ }`,b$=Object.defineProperty,_$=(r,e,t)=>e in r?b$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i1=(r,e,t)=>(_$(r,typeof e!="symbol"?e+"":e,t),t);const _4=class tF extends ge{constructor(e){e={...tF.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:y$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:x$,name:"reflection-filter"});super({gpuProgram:t,glProgram:i,resources:{reflectionUniforms:{uMirror:{value:e.mirror?1:0,type:"f32"},uBoundary:{value:e.boundary,type:"f32"},uAmplitude:{value:e.amplitude,type:"vec2<f32>"},uWavelength:{value:e.waveLength,type:"vec2<f32>"},uAlpha:{value:e.alpha,type:"vec2<f32>"},uTime:{value:e.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),i1(this,"uniforms"),i1(this,"time",0),this.uniforms=this.resources.reflectionUniforms.uniforms,Object.assign(this,e)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get mirror(){return this.uniforms.uMirror>.5}set mirror(e){this.uniforms.uMirror=e?1:0}get boundary(){return this.uniforms.uBoundary}set boundary(e){this.uniforms.uBoundary=e}get amplitude(){return Array.from(this.uniforms.uAmplitude)}set amplitude(e){this.uniforms.uAmplitude[0]=e[0],this.uniforms.uAmplitude[1]=e[1]}get amplitudeStart(){return this.uniforms.uAmplitude[0]}set amplitudeStart(e){this.uniforms.uAmplitude[0]=e}get amplitudeEnd(){return this.uniforms.uAmplitude[1]}set amplitudeEnd(e){this.uniforms.uAmplitude[1]=e}get waveLength(){return Array.from(this.uniforms.uWavelength)}set waveLength(e){this.uniforms.uWavelength[0]=e[0],this.uniforms.uWavelength[1]=e[1]}get wavelengthStart(){return this.uniforms.uWavelength[0]}set wavelengthStart(e){this.uniforms.uWavelength[0]=e}get wavelengthEnd(){return this.uniforms.uWavelength[1]}set wavelengthEnd(e){this.uniforms.uWavelength[1]=e}get alpha(){return Array.from(this.uniforms.uAlpha)}set alpha(e){this.uniforms.uAlpha[0]=e[0],this.uniforms.uAlpha[1]=e[1]}get alphaStart(){return this.uniforms.uAlpha[0]}set alphaStart(e){this.uniforms.uAlpha[0]=e}get alphaEnd(){return this.uniforms.uAlpha[1]}set alphaEnd(e){this.uniforms.uAlpha[1]=e}};i1(_4,"DEFAULT_OPTIONS",{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0});let w$=_4;var S$=`precision highp float;
10103
10103
  in vec2 vTextureCoord;
10104
10104
  out vec4 finalColor;
10105
10105
 
@@ -10117,7 +10117,7 @@ void main(void)
10117
10117
  float a = texture(uTexture, vTextureCoord).a;
10118
10118
  finalColor = vec4(r, g, b, a);
10119
10119
  }
10120
- `,S$=`struct RgbSplitUniforms {
10120
+ `,T$=`struct RgbSplitUniforms {
10121
10121
  uRed: vec2<f32>,
10122
10122
  uGreen: vec2<f32>,
10123
10123
  uBlue: vec3<f32>,
@@ -10149,7 +10149,7 @@ fn mainFragment(
10149
10149
  let a = textureSample(uTexture, uSampler, uv).a;
10150
10150
  return vec4<f32>(r, g, b, a);
10151
10151
  }
10152
- `,T$=Object.defineProperty,C$=(r,e,t)=>e in r?T$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,w4=(r,e,t)=>(C$(r,typeof e!="symbol"?e+"":e,t),t);const S4=class rF extends ge{constructor(...e){let t=e[0]??{};(Array.isArray(t)||"x"in t&&"y"in t)&&(J("6.0.0","RGBSplitFilter constructor params are now options object. See params: { red, green, blue }"),t={red:t},e[1]!==void 0&&(t.green=e[1]),e[2]!==void 0&&(t.blue=e[2])),t={...rF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:S$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:w$,name:"rgb-split-filter"});super({gpuProgram:i,glProgram:n,resources:{rgbSplitUniforms:{uRed:{value:{x:0,y:0},type:"vec2<f32>"},uGreen:{value:{x:0,y:0},type:"vec2<f32>"},uBlue:{value:{x:0,y:0},type:"vec2<f32>"}}}}),w4(this,"uniforms"),this.uniforms=this.resources.rgbSplitUniforms.uniforms,Object.assign(this,t)}get red(){return this.uniforms.uRed}set red(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uRed=e}get redX(){return this.red.x}set redX(e){this.red.x=e}get redY(){return this.red.y}set redY(e){this.red.y=e}get green(){return this.uniforms.uGreen}set green(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uGreen=e}get greenX(){return this.green.x}set greenX(e){this.green.x=e}get greenY(){return this.green.y}set greenY(e){this.green.y=e}get blue(){return this.uniforms.uBlue}set blue(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uBlue=e}get blueX(){return this.blue.x}set blueX(e){this.blue.x=e}get blueY(){return this.blue.y}set blueY(e){this.blue.y=e}};w4(S4,"DEFAULT_OPTIONS",{red:{x:-10,y:0},green:{x:0,y:10},blue:{x:0,y:0}});let A$=S4;var E$=`
10152
+ `,C$=Object.defineProperty,A$=(r,e,t)=>e in r?C$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,w4=(r,e,t)=>(A$(r,typeof e!="symbol"?e+"":e,t),t);const S4=class rF extends ge{constructor(...e){let t=e[0]??{};(Array.isArray(t)||"x"in t&&"y"in t)&&(J("6.0.0","RGBSplitFilter constructor params are now options object. See params: { red, green, blue }"),t={red:t},e[1]!==void 0&&(t.green=e[1]),e[2]!==void 0&&(t.blue=e[2])),t={...rF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:T$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:S$,name:"rgb-split-filter"});super({gpuProgram:i,glProgram:n,resources:{rgbSplitUniforms:{uRed:{value:{x:0,y:0},type:"vec2<f32>"},uGreen:{value:{x:0,y:0},type:"vec2<f32>"},uBlue:{value:{x:0,y:0},type:"vec2<f32>"}}}}),w4(this,"uniforms"),this.uniforms=this.resources.rgbSplitUniforms.uniforms,Object.assign(this,t)}get red(){return this.uniforms.uRed}set red(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uRed=e}get redX(){return this.red.x}set redX(e){this.red.x=e}get redY(){return this.red.y}set redY(e){this.red.y=e}get green(){return this.uniforms.uGreen}set green(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uGreen=e}get greenX(){return this.green.x}set greenX(e){this.green.x=e}get greenY(){return this.green.y}set greenY(e){this.green.y=e}get blue(){return this.uniforms.uBlue}set blue(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uBlue=e}get blueX(){return this.blue.x}set blueX(e){this.blue.x=e}get blueY(){return this.blue.y}set blueY(e){this.blue.y=e}};w4(S4,"DEFAULT_OPTIONS",{red:{x:-10,y:0},green:{x:0,y:10},blue:{x:0,y:0}});let E$=S4;var P$=`
10153
10153
  precision highp float;
10154
10154
  in vec2 vTextureCoord;
10155
10155
  out vec4 finalColor;
@@ -10221,7 +10221,7 @@ void main()
10221
10221
 
10222
10222
  finalColor = color;
10223
10223
  }
10224
- `,P$=`
10224
+ `,I$=`
10225
10225
  struct ShockWaveUniforms {
10226
10226
  uTime: f32,
10227
10227
  uOffset: vec2<f32>,
@@ -10310,7 +10310,7 @@ fn boolVec2(x: vec2<f32>, y: vec2<f32>) -> bool
10310
10310
  }
10311
10311
 
10312
10312
  const PI: f32 = 3.14159265358979323846264;
10313
- `,I$=Object.defineProperty,B$=(r,e,t)=>e in r?I$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,n1=(r,e,t)=>(B$(r,typeof e!="symbol"?e+"":e,t),t);const T4=class iF extends ge{constructor(...e){let t=e[0]??{};(Array.isArray(t)||"x"in t&&"y"in t)&&(J("6.0.0","ShockwaveFilter constructor params are now options object. See params: { center, speed, amplitude, wavelength, brightness, radius, time }"),t={center:t,...e[1]},e[2]!==void 0&&(t.time=e[2])),t={...iF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:P$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:E$,name:"shockwave-filter"});super({gpuProgram:i,glProgram:n,resources:{shockwaveUniforms:{uTime:{value:t.time,type:"f32"},uCenter:{value:t.center,type:"vec2<f32>"},uSpeed:{value:t.speed,type:"f32"},uWave:{value:new Float32Array(4),type:"vec4<f32>"}}}}),n1(this,"uniforms"),n1(this,"time"),this.time=0,this.uniforms=this.resources.shockwaveUniforms.uniforms,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get speed(){return this.uniforms.uSpeed}set speed(e){this.uniforms.uSpeed=e}get amplitude(){return this.uniforms.uWave[0]}set amplitude(e){this.uniforms.uWave[0]=e}get wavelength(){return this.uniforms.uWave[1]}set wavelength(e){this.uniforms.uWave[1]=e}get brightness(){return this.uniforms.uWave[2]}set brightness(e){this.uniforms.uWave[2]=e}get radius(){return this.uniforms.uWave[3]}set radius(e){this.uniforms.uWave[3]=e}};n1(T4,"DEFAULT_OPTIONS",{center:{x:0,y:0},speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1});let k$=T4;var R$=`precision highp float;
10313
+ `,B$=Object.defineProperty,k$=(r,e,t)=>e in r?B$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,n1=(r,e,t)=>(k$(r,typeof e!="symbol"?e+"":e,t),t);const T4=class iF extends ge{constructor(...e){let t=e[0]??{};(Array.isArray(t)||"x"in t&&"y"in t)&&(J("6.0.0","ShockwaveFilter constructor params are now options object. See params: { center, speed, amplitude, wavelength, brightness, radius, time }"),t={center:t,...e[1]},e[2]!==void 0&&(t.time=e[2])),t={...iF.DEFAULT_OPTIONS,...t};const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:I$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:P$,name:"shockwave-filter"});super({gpuProgram:i,glProgram:n,resources:{shockwaveUniforms:{uTime:{value:t.time,type:"f32"},uCenter:{value:t.center,type:"vec2<f32>"},uSpeed:{value:t.speed,type:"f32"},uWave:{value:new Float32Array(4),type:"vec4<f32>"}}}}),n1(this,"uniforms"),n1(this,"time"),this.time=0,this.uniforms=this.resources.shockwaveUniforms.uniforms,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uTime=this.time,e.applyFilter(this,t,i,n)}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get speed(){return this.uniforms.uSpeed}set speed(e){this.uniforms.uSpeed=e}get amplitude(){return this.uniforms.uWave[0]}set amplitude(e){this.uniforms.uWave[0]=e}get wavelength(){return this.uniforms.uWave[1]}set wavelength(e){this.uniforms.uWave[1]=e}get brightness(){return this.uniforms.uWave[2]}set brightness(e){this.uniforms.uWave[2]=e}get radius(){return this.uniforms.uWave[3]}set radius(e){this.uniforms.uWave[3]=e}};n1(T4,"DEFAULT_OPTIONS",{center:{x:0,y:0},speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1});let R$=T4;var F$=`precision highp float;
10314
10314
  in vec2 vTextureCoord;
10315
10315
  out vec4 finalColor;
10316
10316
 
@@ -10331,7 +10331,7 @@ void main() {
10331
10331
  vec3 color = diffuseColor.rgb * intensity;
10332
10332
  finalColor = vec4(color, diffuseColor.a);
10333
10333
  }
10334
- `,F$=`struct SimpleLightmapUniforms {
10334
+ `,M$=`struct SimpleLightmapUniforms {
10335
10335
  uColor: vec3<f32>,
10336
10336
  uAlpha: f32,
10337
10337
  uDimensions: vec2<f32>,
@@ -10370,7 +10370,7 @@ fn mainFragment(
10370
10370
  let intensity: vec3<f32> = ambient + light.rgb;
10371
10371
  let finalColor: vec3<f32> = diffuseColor.rgb * intensity;
10372
10372
  return vec4<f32>(finalColor, diffuseColor.a);
10373
- }`,M$=Object.defineProperty,D$=(r,e,t)=>e in r?M$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Th=(r,e,t)=>(D$(r,typeof e!="symbol"?e+"":e,t),t);const C4=class nF extends ge{constructor(...e){let t=e[0]??{};if(t instanceof Q&&(J("6.0.0","SimpleLightmapFilter constructor params are now options object. See params: { lightMap, color, alpha }"),t={lightMap:t},e[1]!==void 0&&(t.color=e[1]),e[2]!==void 0&&(t.alpha=e[2])),t={...nF.DEFAULT_OPTIONS,...t},!t.lightMap)throw Error("No light map texture source was provided to SimpleLightmapFilter");const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:F$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:R$,name:"simple-lightmap-filter"});super({gpuProgram:i,glProgram:n,resources:{simpleLightmapUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}},uMapTexture:t.lightMap.source,uMapSampler:t.lightMap.source.style}}),Th(this,"uniforms"),Th(this,"_color"),Th(this,"_lightMap"),this.uniforms=this.resources.simpleLightmapUniforms.uniforms,this._color=new ye,this.color=t.color??0,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,e.applyFilter(this,t,i,n)}get lightMap(){return this._lightMap}set lightMap(e){this._lightMap=e,this.resources.uMapTexture=e.source,this.resources.uMapSampler=e.source.style}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};Th(C4,"DEFAULT_OPTIONS",{lightMap:Q.WHITE,color:0,alpha:1});let O$=C4;var U$=`precision highp float;
10373
+ }`,D$=Object.defineProperty,O$=(r,e,t)=>e in r?D$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Th=(r,e,t)=>(O$(r,typeof e!="symbol"?e+"":e,t),t);const C4=class nF extends ge{constructor(...e){let t=e[0]??{};if(t instanceof Q&&(J("6.0.0","SimpleLightmapFilter constructor params are now options object. See params: { lightMap, color, alpha }"),t={lightMap:t},e[1]!==void 0&&(t.color=e[1]),e[2]!==void 0&&(t.alpha=e[2])),t={...nF.DEFAULT_OPTIONS,...t},!t.lightMap)throw Error("No light map texture source was provided to SimpleLightmapFilter");const i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:M$,entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:F$,name:"simple-lightmap-filter"});super({gpuProgram:i,glProgram:n,resources:{simpleLightmapUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}},uMapTexture:t.lightMap.source,uMapSampler:t.lightMap.source.style}}),Th(this,"uniforms"),Th(this,"_color"),Th(this,"_lightMap"),this.uniforms=this.resources.simpleLightmapUniforms.uniforms,this._color=new ye,this.color=t.color??0,Object.assign(this,t)}apply(e,t,i,n){this.uniforms.uDimensions[0]=t.frame.width,this.uniforms.uDimensions[1]=t.frame.height,e.applyFilter(this,t,i,n)}get lightMap(){return this._lightMap}set lightMap(e){this._lightMap=e,this.resources.uMapTexture=e.source,this.resources.uMapSampler=e.source.style}get color(){return this._color.value}set color(e){this._color.setValue(e);const[t,i,n]=this._color.toArray();this.uniforms.uColor[0]=t,this.uniforms.uColor[1]=i,this.uniforms.uColor[2]=n}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}};Th(C4,"DEFAULT_OPTIONS",{lightMap:Q.WHITE,color:0,alpha:1});let U$=C4;var z$=`precision highp float;
10374
10374
  in vec2 vTextureCoord;
10375
10375
  out vec4 finalColor;
10376
10376
 
@@ -10431,7 +10431,7 @@ void main(void)
10431
10431
 
10432
10432
  finalColor = texture(uTexture, vTextureCoord) * noise;
10433
10433
  }
10434
- `,z$=`struct SimplexUniforms {
10434
+ `,L$=`struct SimplexUniforms {
10435
10435
  uStrength:f32,
10436
10436
  uNoiseScale:f32,
10437
10437
  uOffsetX:f32,
@@ -10491,7 +10491,7 @@ fn simplex_noise(p: vec3<f32>) -> f32 {
10491
10491
  let h: vec4<f32> = max(vec4<f32>(0.6) - vec4<f32>(dot(d0, d0), dot(d1, d1), dot(d2, d2), dot(d3, d3)), vec4<f32>(0.0));
10492
10492
  let n: vec4<f32> = h * h * h * h * vec4<f32>(dot(d0, hash33(i)), dot(d1, hash33(i + i1)), dot(d2, hash33(i + i2)), dot(d3, hash33(i + 1.)));
10493
10493
  return dot(vec4<f32>(31.316), n);
10494
- } `,L$=Object.defineProperty,N$=(r,e,t)=>e in r?L$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G$=(r,e,t)=>(N$(r,e+"",t),t);const A4=class sF extends ge{constructor(e){e={...sF.defaults,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:z$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:U$,name:"simplex-filter"});super({gpuProgram:t,glProgram:i,resources:{simplexUniforms:{uStrength:{value:e?.strength??0,type:"f32"},uNoiseScale:{value:e?.noiseScale??0,type:"f32"},uOffsetX:{value:e?.offsetX??0,type:"f32"},uOffsetY:{value:e?.offsetY??0,type:"f32"},uOffsetZ:{value:e?.offsetZ??0,type:"f32"},uStep:{value:e?.step??0,type:"f32"}}}})}get strength(){return this.resources.simplexUniforms.uniforms.uStrength}set strength(e){this.resources.simplexUniforms.uniforms.uStrength=e}get noiseScale(){return this.resources.simplexUniforms.uniforms.uNoiseScale}set noiseScale(e){this.resources.simplexUniforms.uniforms.uNoiseScale=e}get offsetX(){return this.resources.simplexUniforms.uniforms.uOffsetX}set offsetX(e){this.resources.simplexUniforms.uniforms.uOffsetX=e}get offsetY(){return this.resources.simplexUniforms.uniforms.uOffsetY}set offsetY(e){this.resources.simplexUniforms.uniforms.uOffsetY=e}get offsetZ(){return this.resources.simplexUniforms.uniforms.uOffsetZ}set offsetZ(e){this.resources.simplexUniforms.uniforms.uOffsetZ=e}get step(){return this.resources.simplexUniforms.uniforms.uStep}set step(e){this.resources.simplexUniforms.uniforms.uStep=e}};G$(A4,"defaults",{strength:.5,noiseScale:10,offsetX:0,offsetY:0,offsetZ:0,step:-1});let H$=A4;var W$=`precision highp float;
10494
+ } `,N$=Object.defineProperty,G$=(r,e,t)=>e in r?N$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,H$=(r,e,t)=>(G$(r,e+"",t),t);const A4=class sF extends ge{constructor(e){e={...sF.defaults,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:L$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:z$,name:"simplex-filter"});super({gpuProgram:t,glProgram:i,resources:{simplexUniforms:{uStrength:{value:e?.strength??0,type:"f32"},uNoiseScale:{value:e?.noiseScale??0,type:"f32"},uOffsetX:{value:e?.offsetX??0,type:"f32"},uOffsetY:{value:e?.offsetY??0,type:"f32"},uOffsetZ:{value:e?.offsetZ??0,type:"f32"},uStep:{value:e?.step??0,type:"f32"}}}})}get strength(){return this.resources.simplexUniforms.uniforms.uStrength}set strength(e){this.resources.simplexUniforms.uniforms.uStrength=e}get noiseScale(){return this.resources.simplexUniforms.uniforms.uNoiseScale}set noiseScale(e){this.resources.simplexUniforms.uniforms.uNoiseScale=e}get offsetX(){return this.resources.simplexUniforms.uniforms.uOffsetX}set offsetX(e){this.resources.simplexUniforms.uniforms.uOffsetX=e}get offsetY(){return this.resources.simplexUniforms.uniforms.uOffsetY}set offsetY(e){this.resources.simplexUniforms.uniforms.uOffsetY=e}get offsetZ(){return this.resources.simplexUniforms.uniforms.uOffsetZ}set offsetZ(e){this.resources.simplexUniforms.uniforms.uOffsetZ=e}get step(){return this.resources.simplexUniforms.uniforms.uStep}set step(e){this.resources.simplexUniforms.uniforms.uStep=e}};H$(A4,"defaults",{strength:.5,noiseScale:10,offsetX:0,offsetY:0,offsetZ:0,step:-1});let W$=A4;var V$=`precision highp float;
10495
10495
  in vec2 vTextureCoord;
10496
10496
  out vec4 finalColor;
10497
10497
 
@@ -10534,7 +10534,7 @@ void main(void)
10534
10534
 
10535
10535
  finalColor = color;
10536
10536
  }
10537
- `,V$=`struct TiltShiftUniforms {
10537
+ `,X$=`struct TiltShiftUniforms {
10538
10538
  uBlur: vec2<f32>,
10539
10539
  uStart: vec2<f32>,
10540
10540
  uEnd: vec2<f32>,
@@ -10589,7 +10589,7 @@ fn mainFragment(
10589
10589
  fn random(position: vec4<f32>, scale: vec3<f32>, seed: f32) -> f32
10590
10590
  {
10591
10591
  return fract(sin(dot(position.xyz + seed, scale)) * 43758.5453 + seed);
10592
- }`,X$=Object.defineProperty,Y$=(r,e,t)=>e in r?X$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s1=(r,e,t)=>(Y$(r,typeof e!="symbol"?e+"":e,t),t);const E4=class oF extends ge{constructor(e){const{width:t,height:i}=$2.defaultOptions;e={...oF.DEFAULT_OPTIONS,start:{x:0,y:i/2},end:{x:t,y:i/2},...e};const n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:V$,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:W$,name:"tilt-shift-axis-filter"});super({gpuProgram:n,glProgram:s,resources:{tiltShiftUniforms:{uBlur:{value:new Float32Array([e.blur,e.gradientBlur]),type:"vec2<f32>"},uStart:{value:e.start,type:"vec2<f32>"},uEnd:{value:e.end,type:"vec2<f32>"},uDelta:{value:new Float32Array([0,0]),type:"vec2<f32>"}}}}),s1(this,"uniforms"),s1(this,"_tiltAxis"),this.uniforms=this.resources.tiltShiftUniforms.uniforms,this._tiltAxis=e.axis}updateDelta(){if(this.uniforms.uDelta[0]=0,this.uniforms.uDelta[1]=0,this._tiltAxis===void 0)return;const e=this.uniforms.uEnd,t=this.uniforms.uStart,i=e.x-t.x,n=e.y-t.y,s=Math.sqrt(i*i+n*n),o=this._tiltAxis==="vertical";this.uniforms.uDelta[0]=o?-n/s:i/s,this.uniforms.uDelta[1]=o?i/s:n/s}};s1(E4,"DEFAULT_OPTIONS",{blur:100,gradientBlur:600});let o1=E4;var q$=Object.defineProperty,j$=(r,e,t)=>e in r?q$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,K$=(r,e,t)=>(j$(r,e+"",t),t);class Q$ extends o1{constructor(e){e={...o1.DEFAULT_OPTIONS,...e},super({...e,axis:"horizontal"}),K$(this,"_tiltShiftYFilter"),this._tiltShiftYFilter=new o1({...e,axis:"vertical"}),this.updateDelta(),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,s,!0),e.applyFilter(this._tiltShiftYFilter,s,i,n),ze.returnTexture(s)}updateDelta(){super.updateDelta(),this._tiltShiftYFilter.updateDelta()}get blur(){return this.uniforms.uBlur[0]}set blur(e){this.uniforms.uBlur[0]=this._tiltShiftYFilter.uniforms.uBlur[0]=e}get gradientBlur(){return this.uniforms.uBlur[1]}set gradientBlur(e){this.uniforms.uBlur[1]=this._tiltShiftYFilter.uniforms.uBlur[1]=e}get start(){return this.uniforms.uStart}set start(e){this.uniforms.uStart=this._tiltShiftYFilter.uniforms.uStart=e,this.updateDelta()}get startX(){return this.start.x}set startX(e){this.start.x=e,this.updateDelta()}get startY(){return this.start.y}set startY(e){this.start.y=e,this.updateDelta()}get end(){return this.uniforms.uEnd}set end(e){this.uniforms.uEnd=this._tiltShiftYFilter.uniforms.uEnd=e,this.updateDelta()}get endX(){return this.end.x}set endX(e){this.end.x=e,this.updateDelta()}get endY(){return this.end.y}set endY(e){this.end.y=e,this.updateDelta()}}var Z$=`precision highp float;
10592
+ }`,Y$=Object.defineProperty,q$=(r,e,t)=>e in r?Y$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s1=(r,e,t)=>(q$(r,typeof e!="symbol"?e+"":e,t),t);const E4=class oF extends ge{constructor(e){const{width:t,height:i}=$2.defaultOptions;e={...oF.DEFAULT_OPTIONS,start:{x:0,y:i/2},end:{x:t,y:i/2},...e};const n=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:X$,entryPoint:"mainFragment"}}),s=ue.from({vertex:Me,fragment:V$,name:"tilt-shift-axis-filter"});super({gpuProgram:n,glProgram:s,resources:{tiltShiftUniforms:{uBlur:{value:new Float32Array([e.blur,e.gradientBlur]),type:"vec2<f32>"},uStart:{value:e.start,type:"vec2<f32>"},uEnd:{value:e.end,type:"vec2<f32>"},uDelta:{value:new Float32Array([0,0]),type:"vec2<f32>"}}}}),s1(this,"uniforms"),s1(this,"_tiltAxis"),this.uniforms=this.resources.tiltShiftUniforms.uniforms,this._tiltAxis=e.axis}updateDelta(){if(this.uniforms.uDelta[0]=0,this.uniforms.uDelta[1]=0,this._tiltAxis===void 0)return;const e=this.uniforms.uEnd,t=this.uniforms.uStart,i=e.x-t.x,n=e.y-t.y,s=Math.sqrt(i*i+n*n),o=this._tiltAxis==="vertical";this.uniforms.uDelta[0]=o?-n/s:i/s,this.uniforms.uDelta[1]=o?i/s:n/s}};s1(E4,"DEFAULT_OPTIONS",{blur:100,gradientBlur:600});let o1=E4;var j$=Object.defineProperty,K$=(r,e,t)=>e in r?j$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Q$=(r,e,t)=>(K$(r,e+"",t),t);class Z$ extends o1{constructor(e){e={...o1.DEFAULT_OPTIONS,...e},super({...e,axis:"horizontal"}),Q$(this,"_tiltShiftYFilter"),this._tiltShiftYFilter=new o1({...e,axis:"vertical"}),this.updateDelta(),Object.assign(this,e)}apply(e,t,i,n){const s=ze.getSameSizeTexture(t);e.applyFilter(this,t,s,!0),e.applyFilter(this._tiltShiftYFilter,s,i,n),ze.returnTexture(s)}updateDelta(){super.updateDelta(),this._tiltShiftYFilter.updateDelta()}get blur(){return this.uniforms.uBlur[0]}set blur(e){this.uniforms.uBlur[0]=this._tiltShiftYFilter.uniforms.uBlur[0]=e}get gradientBlur(){return this.uniforms.uBlur[1]}set gradientBlur(e){this.uniforms.uBlur[1]=this._tiltShiftYFilter.uniforms.uBlur[1]=e}get start(){return this.uniforms.uStart}set start(e){this.uniforms.uStart=this._tiltShiftYFilter.uniforms.uStart=e,this.updateDelta()}get startX(){return this.start.x}set startX(e){this.start.x=e,this.updateDelta()}get startY(){return this.start.y}set startY(e){this.start.y=e,this.updateDelta()}get end(){return this.uniforms.uEnd}set end(e){this.uniforms.uEnd=this._tiltShiftYFilter.uniforms.uEnd=e,this.updateDelta()}get endX(){return this.end.x}set endX(e){this.end.x=e,this.updateDelta()}get endY(){return this.end.y}set endY(e){this.end.y=e,this.updateDelta()}}var J$=`precision highp float;
10593
10593
  in vec2 vTextureCoord;
10594
10594
  out vec4 finalColor;
10595
10595
 
@@ -10643,7 +10643,7 @@ void main(void)
10643
10643
  coord = unmapCoord(coord);
10644
10644
  finalColor = texture(uTexture, coord);
10645
10645
  }
10646
- `,J$=`struct TwistUniforms {
10646
+ `,$$=`struct TwistUniforms {
10647
10647
  uTwist:vec2<f32>,
10648
10648
  uOffset:vec2<f32>,
10649
10649
  };
@@ -10710,7 +10710,7 @@ fn twist(coord: vec2<f32>) -> vec2<f32>
10710
10710
  twistedCoord += uOffset;
10711
10711
  return twistedCoord;
10712
10712
  }
10713
- `,$$=Object.defineProperty,eee=(r,e,t)=>e in r?$$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,P4=(r,e,t)=>(eee(r,typeof e!="symbol"?e+"":e,t),t);const I4=class aF extends ge{constructor(e){e={...aF.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:J$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:Z$,name:"twist-filter"});super({gpuProgram:t,glProgram:i,resources:{twistUniforms:{uTwist:{value:[e.radius??0,e.angle??0],type:"vec2<f32>"},uOffset:{value:e.offset,type:"vec2<f32>"}}},...e}),P4(this,"uniforms"),this.uniforms=this.resources.twistUniforms.uniforms}get radius(){return this.uniforms.uTwist[0]}set radius(e){this.uniforms.uTwist[0]=e}get angle(){return this.uniforms.uTwist[1]}set angle(e){this.uniforms.uTwist[1]=e}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}get offsetX(){return this.offset.x}set offsetX(e){this.offset.x=e}get offsetY(){return this.offset.y}set offsetY(e){this.offset.y=e}};P4(I4,"DEFAULT_OPTIONS",{padding:20,radius:200,angle:4,offset:{x:0,y:0}});let tee=I4;var ree=`precision highp float;
10713
+ `,eee=Object.defineProperty,tee=(r,e,t)=>e in r?eee(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,P4=(r,e,t)=>(tee(r,typeof e!="symbol"?e+"":e,t),t);const I4=class aF extends ge{constructor(e){e={...aF.DEFAULT_OPTIONS,...e};const t=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:$$,entryPoint:"mainFragment"}}),i=ue.from({vertex:Me,fragment:J$,name:"twist-filter"});super({gpuProgram:t,glProgram:i,resources:{twistUniforms:{uTwist:{value:[e.radius??0,e.angle??0],type:"vec2<f32>"},uOffset:{value:e.offset,type:"vec2<f32>"}}},...e}),P4(this,"uniforms"),this.uniforms=this.resources.twistUniforms.uniforms}get radius(){return this.uniforms.uTwist[0]}set radius(e){this.uniforms.uTwist[0]=e}get angle(){return this.uniforms.uTwist[1]}set angle(e){this.uniforms.uTwist[1]=e}get offset(){return this.uniforms.uOffset}set offset(e){this.uniforms.uOffset=e}get offsetX(){return this.offset.x}set offsetX(e){this.offset.x=e}get offsetY(){return this.offset.y}set offsetY(e){this.offset.y=e}};P4(I4,"DEFAULT_OPTIONS",{padding:20,radius:200,angle:4,offset:{x:0,y:0}});let ree=I4;var iee=`precision highp float;
10714
10714
  in vec2 vTextureCoord;
10715
10715
  out vec4 finalColor;
10716
10716
 
@@ -10797,7 +10797,7 @@ void main() {
10797
10797
 
10798
10798
  gl_FragColor = color;
10799
10799
  }
10800
- `,iee=`struct ZoomBlurUniforms {
10800
+ `,nee=`struct ZoomBlurUniforms {
10801
10801
  uStrength:f32,
10802
10802
  uCenter:vec2<f32>,
10803
10803
  uRadii:vec2<f32>,
@@ -10907,7 +10907,7 @@ fn rand(co: vec2<f32>, seed: f32) -> f32
10907
10907
  let dt: f32 = dot(co + seed, vec2<f32>(a, b));
10908
10908
  let sn: f32 = modulo(dt, 3.14159);
10909
10909
  return fract(sin(sn) * c + seed);
10910
- }`,nee=Object.defineProperty,see=(r,e,t)=>e in r?nee(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,B4=(r,e,t)=>(see(r,typeof e!="symbol"?e+"":e,t),t);const k4=class lF extends ge{constructor(e){e={...lF.DEFAULT_OPTIONS,...e};const t=e.maxKernelSize??32,i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:iee.replace("${MAX_KERNEL_SIZE}",t.toFixed(1)),entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:ree.replace("${MAX_KERNEL_SIZE}",t.toFixed(1)),name:"zoom-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{zoomBlurUniforms:{uStrength:{value:e.strength,type:"f32"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uRadii:{value:new Float32Array(2),type:"vec2<f32>"}}}}),B4(this,"uniforms"),this.uniforms=this.resources.zoomBlurUniforms.uniforms,Object.assign(this,e)}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get innerRadius(){return this.uniforms.uRadii[0]}set innerRadius(e){this.uniforms.uRadii[0]=e}get radius(){return this.uniforms.uRadii[1]}set radius(e){this.uniforms.uRadii[1]=e<0||e===1/0?-1:e}};B4(k4,"DEFAULT_OPTIONS",{strength:.1,center:{x:0,y:0},innerRadius:0,radius:-1,maxKernelSize:32});let Ch=k4;const oee={adjustmentFilter:TQ,advancedBloomFilter:NQ,asciiFilter:XQ,backdropBlurFilter:ZQ,bevelFilter:rZ,bloomFilter:sZ,bulgePinchFilter:cZ,colorGradientFilter:AZ,colorMapFilter:kZ,colorOverlayFilter:OZ,colorReplaceFilter:GZ,convolutionFilter:YZ,crossHatchFilter:KZ,crtFilter:eJ,dotFilter:oJ,dropShadowFilter:hJ,embossFilter:vJ,glitchFilter:wJ,glowFilter:EJ,godrayFilter:MJ,grayscaleFilter:UJ,hslAdjustmentFilter:HJ,kawaseBlurFilter:Kb,motionBlurFilter:qJ,multiColorReplaceFilter:JJ,oldFilmFilter:i$,outlineFilter:l$,pixelateFilter:h$,radialBlurFilter:g$,reflectionFilter:_$,rgbSplitFilter:A$,shockwaveFilter:k$,simpleLightmapFilter:O$,simplexNoiseFilter:H$,tiltShiftFilter:Q$,twistFilter:tee,zoomBlurFilter:Ch},a1={adjustmentFilter:{gamma:1.5,saturation:.5,contrast:1.2,brightness:1.5,red:1.5,green:1.5,blue:1.5,alpha:1},advancedBloomFilter:{threshold:.2,bloomScale:1,brightness:1,blur:20,quality:1},asciiFilter:{size:8,color:"#ffffff",replaceColor:!0},backdropBlurFilter:{blur:10,quality:4},bevelFilter:{rotation:45,thickness:10,lightColor:"#ffffff",lightAlpha:1,shadowColor:"#000000",shadowAlpha:1},bloomFilter:{kernelSize:5,quality:2,resolution:3,strength:{x:10,y:10}},bulgePinchFilter:{center:{x:.5,y:.5},radius:400,strength:1},colorGradientFilter:{type:1,alpha:1,angle:90,maxColors:0,replace:!0,stops:[{color:"#ffffff",offset:0,alpha:1},{color:"#000000",offset:1,alpha:1}]},colorMapFilter:{mix:1,nearest:!0},colorOverlayFilter:{color:"#ffffff",alpha:1},colorReplaceFilter:{originalColor:"#ffffff",targetColor:"#000000",tolerance:.1},convolutionFilter:{width:3,height:3,matrix:[1,0,0,0,1,0,0,0,1]},crossHatchFilter:{},crtFilter:{curvature:1,lineWidth:3,lineContrast:.4,verticalLine:!0,noise:.2,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0,time:.5},dotFilter:{scale:1,angle:1,grayscale:!0},dropShadowFilter:{blur:1,quality:3,alpha:.5,offset:{x:4,y:4},color:"#000000",shadowOnly:!0},embossFilter:{strength:5},glitchFilter:{seed:.5,slices:10,offset:.1,direction:0,fillMode:0,red:{x:2,y:2},green:{x:10,y:-4},blue:{x:-10,y:4}},glowFilter:{distance:10,outerStrength:2,innerStrength:0,color:"#ffffff",quality:1,alpha:1,knockout:!1},godrayFilter:{time:0,gain:.6,lacunarity:2.75,alpha:1,parallel:!0,angle:30,center:{x:426,y:-100}},grayscaleFilter:{},hslAdjustmentFilter:{hue:100,saturation:1,lightness:0,colorize:!1,alpha:1},kawaseBlurFilter:{strength:4,quality:3,pixelSize:{x:1,y:1}},motionBlurFilter:{velocity:{x:40,y:40},kernelSize:5,offset:0},multiColorReplaceFilter:{replacements:[["#ff0000","#00ff00"],["#0000ff","#ffff00"]],tolerance:.1},oldFilmFilter:{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.5,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},outlineFilter:{thickness:1,color:"#000000",alpha:1,knockout:!1},pixelateFilter:{size:10},radialBlurFilter:{angle:20,center:{x:0,y:0},radius:300,kernelSize:15},reflectionFilter:{mirror:!0,boundary:.5,amplitude:[20,50],waveLength:[30,100],alpha:[1,1],time:0},rgbSplitFilter:{red:{x:2,y:2},green:{x:10,y:-4},blue:{x:-10,y:4}},shockwaveFilter:{speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1,center:{x:420,y:410}},simpleLightmapFilter:{color:"#ffffff",alpha:1},simplexNoiseFilter:{strength:.5,noiseScale:10,offsetX:0,offsetY:0,offsetZ:0,step:-1},tiltShiftFilter:{blur:100,gradientBlur:600,start:{x:0,y:0},end:{x:853,y:414}},twistFilter:{angle:10,radius:100,offset:{x:426,y:414}},zoomBlurFilter:{strength:.1,center:{x:426,y:414},innerRadius:80,radius:-1}},aee={adjustmentFilter:{gamma:{min:0,max:5,step:.07},saturation:{min:0,max:5,step:.07},contrast:{min:0,max:5,step:.07},brightness:{min:0,max:5,step:.07},red:{min:0,max:5,step:.07},green:{min:0,max:5,step:.07},blue:{min:0,max:5,step:.07},alpha:{min:0,max:5,step:.07}},advancedBloomFilter:{threshold:{min:.1,max:.9,step:.009},bloomScale:{min:.5,max:1.5,step:.015},brightness:{min:.5,max:1.5,step:.015},blur:{min:0,max:20,step:.2},quality:{min:1,max:20,step:1}},asciiFilter:{size:{min:2,max:20,step:.015}},backdropBlurFilter:{blur:{min:0,max:100,step:2.3},quality:{min:1,max:10,step:.1}},bevelFilter:{rotation:{min:0,max:360,step:5},thickness:{min:0,max:10,step:.25},lightAlpha:{min:0,max:1,step:.013},shadowAlpha:{min:0,max:1,step:.013}},bloomFilter:{kernelSize:{min:0,max:15,step:1},quality:{min:0,max:10,step:1},resolution:{min:0,max:10,step:1},strength:{x:{min:0,max:20,step:.5},y:{min:0,max:20,step:.5}}},bulgePinchFilter:{center:{x:{min:0,max:1,step:.013},y:{min:0,max:1,step:.013}},radius:{min:0,max:1e3,step:12},strength:{min:-1,max:1,step:.1}},colorGradientFilter:{alpha:{min:0,max:1,step:.013},angle:{min:0,max:360,step:1},stops:[{offset:{min:0,max:1,step:.012},alpha:{min:0,max:1,step:.012}}]},colorMapFilter:{mix:{min:0,max:1,step:.013}},colorOverlayFilter:{alpha:{min:0,max:1,step:.013}},colorReplaceFilter:{tolerance:{min:0,max:1,step:.013}},convolutionFilter:{width:{min:0,max:500,step:1},height:{min:0,max:500,step:1},matrix:[{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01}]},crossHatchFilter:{},crtFilter:{curvature:{min:0,max:10,step:.01},lineWidth:{min:0,max:5,step:.1},lineContrast:{min:0,max:1,step:.013},noise:{min:0,max:1,step:.013},noiseSize:{min:1,max:10,step:.01},vignetting:{min:0,max:1,step:.013},vignettingAlpha:{min:0,max:1,step:.013},vignettingBlur:{min:0,max:1,step:.013},seed:{min:0,max:1,step:.01},time:{min:0,max:20,step:.01}},dotFilter:{scale:{min:.3,max:1,step:.01},angle:{min:0,max:5,step:.01}},dropShadowFilter:{blur:{min:0,max:20,step:.5},quality:{min:1,max:20,step:1},alpha:{min:0,max:1,step:.013},offset:{x:{min:-50,max:50,step:2.5},y:{min:-50,max:50,step:2.5}}},embossFilter:{strength:{min:0,max:20,step:.1}},glitchFilter:{seed:{min:0,max:1,step:.01},slices:{min:2,max:20,step:.01},offset:{min:-400,max:400,step:.1},direction:{min:-180,max:180,step:.1},red:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}},green:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}},blue:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}}},glowFilter:{distance:{min:0,max:20,step:.013},outerStrength:{min:0,max:20,step:.013},innerStrength:{min:0,max:20,step:.013},quality:{min:0,max:1,step:.013},alpha:{min:0,max:1,step:.013}},godrayFilter:{time:{min:0,max:1,step:.013},gain:{min:0,max:1,step:.013},lacunarity:{min:0,max:5,step:.013},alpha:{min:0,max:1,step:.013},angle:{min:-60,max:60,step:.1},center:{x:{min:-100,max:960,step:14},y:{min:-1e3,max:-100,step:14}}},grayscaleFilter:{},hslAdjustmentFilter:{hue:{min:-180,max:180,step:.013},saturation:{min:-1,max:1,step:.013},lightness:{min:-1,max:1,step:.013},alpha:{min:0,max:1,step:.013}},kawaseBlurFilter:{strength:{min:0,max:20,step:.013},quality:{min:1,max:20,step:.013},pixelSize:{x:{min:0,max:10,step:.013},y:{min:0,max:10,step:.013}}},motionBlurFilter:{velocity:{x:{min:-90,max:90,step:.013},y:{min:-90,max:90,step:.013}},kernelSize:{min:0,max:25,step:3},offset:{min:-150,max:150,step:.1}},multiColorReplaceFilter:{tolerance:{min:0,max:1,step:.01}},oldFilmFilter:{sepia:{min:0,max:1,step:.01},noise:{min:0,max:1,step:.01},noiseSize:{min:1,max:20,step:1},scratch:{min:-1,max:1,step:.01},scratchDensity:{min:0,max:1,step:.01},scratchWidth:{min:1,max:20,step:1},vignetting:{min:0,max:1,step:.01},vignettingAlpha:{min:0,max:1,step:.01},vignettingBlur:{min:0,max:1,step:.01}},outlineFilter:{thickness:{min:0,max:10,step:.1},alpha:{min:0,max:1,step:.001}},pixelateFilter:{size:{min:4,max:40,step:.013}},radialBlurFilter:{angle:{min:-180,max:180,step:.1},center:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},radius:{min:-1,max:860,step:.1},kernelSize:{min:0,max:25,step:3}},reflectionFilter:{boundary:{min:0,max:1,step:.01},amplitude:[{min:0,max:50,step:.013},{min:0,max:50,step:.013}],waveLength:[{min:0,max:200,step:.013},{min:0,max:200,step:.013}],alpha:[{min:0,max:1,step:.01},{min:0,max:1,step:.01}],time:{min:0,max:20,step:.01}},rgbSplitFilter:{red:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}},green:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}},blue:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}}},shockwaveFilter:{speed:{min:500,max:2e3,step:.7},amplitude:{min:1,max:100,step:.01},wavelength:{min:2,max:400,step:.01},brightness:{min:.2,max:2,step:.01},radius:{min:100,max:2e3,step:.7},center:{x:{min:0,max:2e3,step:.013},y:{min:0,max:2e3,step:.013}}},simpleLightmapFilter:{alpha:{min:0,max:1,step:.01}},simplexNoiseFilter:{strength:{min:0,max:1,step:.01},noiseScale:{min:0,max:50,step:.1},offsetX:{min:0,max:5,step:.01},offsetY:{min:0,max:5,step:.01},offsetZ:{min:0,max:5,step:.01},step:{min:-1,max:1,step:.01}},tiltShiftFilter:{blur:{min:0,max:200,step:.1},gradientBlur:{min:0,max:1e3,step:1},start:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},end:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}}},twistFilter:{angle:{min:-10,max:10,step:.1},radius:{min:0,max:2e3,step:.1},offset:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}}},zoomBlurFilter:{strength:{min:.01,max:.5,step:.001},center:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},innerRadius:{min:0,max:430,step:.1},radius:{min:0,max:430,step:.1}}},lee="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAAQCAIAAAB2sTYeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF6GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wMS0yM1QwMjo0NToyMSswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDk0MTcyNTUtZDRlNS00YjRiLTlhNGUtYjVhOGQ4MjIzMDgzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQ2NDI4MEY0RjY2MjExRTdCOTdGOENCMTc0MEREQUYxIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RDY0MjgwRjRGNjYyMTFFN0I5N0Y4Q0IxNzQwRERBRjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENjQyODBGMUY2NjIxMUU3Qjk3RjhDQjE3NDBEREFGMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENjQyODBGMkY2NjIxMUU3Qjk3RjhDQjE3NDBEREFGMSIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowOTQxNzI1NS1kNGU1LTRiNGItOWE0ZS1iNWE4ZDgyMjMwODMiIHN0RXZ0OndoZW49IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz51hjvPAAAUu0lEQVRogYXa648dd5oX8M+vqk6dW1/cbXe7Hd+SOL52fIkvncsk2SwZRoM0I8QiVgjBCiHBSxDafwFerMQ7VghegIS0aHeE0CAYwTIww04SPEwymcQza09uTuIkdtqXbruvp/v0qVO8qKru0207PDq2+pz61q9+l+9zrSfYkieY4Vtc4AjjNIibQpMGw+BDYTv+Rc5zbBNvC1DIIP45XuUST7Hn0fjxANmQhZFq/EuD89mJfyVI2Zi08Iwvxyy/pnvhm8b/w+LrAS764ohrk9YvWT6iM67T0H0I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",uee="data:image/png;base64,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";async function l1({name:r,renderer:e,values:t}){let i=null;const n=r in a1;let s={};if(n){const l=oee[r];s={...a1[r],...t},r==="colorMapFilter"&&(s.colorMap=await gs.load(lee)),r==="simpleLightmapFilter"&&(s.lightMap=await gs.load(uee)),i=new l(s)}else{const l=jb(),u=Object.keys(l).find(m=>m.toLowerCase()===r.toLowerCase());if(!u)return console.warn(`Effect ${r} not found`),{filter:null,render({canvasTexture:m}){return m instanceof Ot?m:Q.from(m)}};const{fragment:c,uniforms:h,label:d}=l[u],f=new ue({vertex:qb,fragment:c,name:`${d}-shader`}),p=new ft({uTime:{value:0,type:"f32"},...h});i=new ge({glProgram:f,resources:{effectUniforms:p}})}const o=new Je,a=Ot.create({width:e.width,height:e.height});return o.filters=[i],{filter:i,render({width:l,height:u,canvasTexture:c,progress:h,values:d}){(a.width!==l||a.height!==u)&&a.resize(l,u);const f=c instanceof Ot?c:Q.from(c);o.texture=f,o.width=l,o.height=u;const p={...s,...d};if(n)d&&Object.assign(i,p);else if(i.resources?.effectUniforms&&(i.resources.effectUniforms.uniforms.uTime=h,d))for(const[m,g]of Object.entries(d))i.resources.effectUniforms.uniforms[m]&&(i.resources.effectUniforms.uniforms[m]=g);return e.render({container:o,target:a,clear:!0}),a}}}function cee(r,e){const{opacity:t,zIndex:i,flip:n,left:s,top:o,width:a,height:l,angle:u}=r;e.x=s,e.y=o,e.width=Math.abs(a),e.height=Math.abs(l),e.angle=u,e.alpha=t,e.zIndex=i,n==="horizontal"?e.scale.x=-Math.abs(e.scale.x):n==="vertical"&&(e.scale.y=-Math.abs(e.scale.y))}class R4{constructor(e,t,i=null){this.sprite=t,this.targetContainer=i,!i&&e&&(this.targetContainer=e.stage),this.resolution=e?.renderer?.resolution??1,this.canvas=new OffscreenCanvas(1,1);const n=this.canvas.getContext("2d");if(n==null)throw new Error("Failed to create 2d context for PixiSpriteRenderer");this.context=n,this.root=new Pe,this.root.label="RootContainer",this.root.visible=!1,this.animationContainer=new Pe,this.animationContainer.label="AnimationContainer",this.root.addChild(this.animationContainer),this.targetContainer&&this.targetContainer.addChild(this.root)}pixiSprite=null;mirrorSprites=[];mirrorContainer=null;isMirrorActive=!1;texture=null;canvas;context;root=null;strokeGraphics=null;maskGraphics=null;shadowGraphics=null;shadowContainer=null;animationContainer=null;resolution=1;destroyed=!1;async updateFrame(e){if(this.destroyed)return;if(e==null){this.root!=null&&(this.root.visible=!1,this.applySpriteTransforms());return}if(e instanceof Q||e&&typeof e.source<"u"){if(e.width===0||e.height===0){console.warn("PixiSpriteRenderer: Texture has zero dimensions",e.width,e.height);return}this.pixiSprite==null?(this.pixiSprite=new Je(e),this.pixiSprite.label="MainSprite",this.animationContainer.addChild(this.pixiSprite),this.applySpriteTransforms()):this.pixiSprite.texture=e,this.root!=null&&(this.root.visible=!0,this.applySpriteTransforms());return}const i=e.width,n=e.height;if(typeof i!="number"||typeof n!="number"||i<=0||n<=0){console.warn("PixiSpriteRenderer: Invalid frame dimensions",i,n);return}const s=this.texture==null||this.pixiSprite==null,o=Math.floor(i),a=Math.floor(n);if(this.canvas.width!==o||this.canvas.height!==a||s){if(this.canvas.width=o,this.canvas.height=a,this.texture!=null&&(this.texture.destroy(!0),this.texture=null),this.texture=Q.from(this.canvas),!this.texture||!this.texture.source){console.error("PixiSpriteRenderer: Failed to create valid texture");return}this.pixiSprite==null?(this.pixiSprite=new Je(this.texture),this.pixiSprite.label="MainSprite",this.animationContainer.addChild(this.pixiSprite),this.applySpriteTransforms()):this.pixiSprite.texture=this.texture}if(this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(e,0,0),this.texture!=null&&this.texture.source!=null){const u=this.texture.source;if(u.resource){const c=u.resource;c.update&&c.update()}typeof u.update=="function"&&u.update()}this.root!=null&&(this.root.visible=!0,this.applySpriteTransforms())}applySpriteTransforms(){if(this.pixiSprite==null||this.root==null||this.destroyed)return;const{flip:e,center:t,width:i,height:n,angle:s,opacity:o,zIndex:a,renderTransform:l}=this.sprite,u=l?.x??0,c=l?.y??0,h=l?.angle??0,d=l?.scale??1,f=l?.scaleX??1,p=l?.scaleY??1,m=l?.opacity??1,g=l?.blur??0,v=l?.motionBlur??0,x=l?.brightness??1,y=(l?.mirror??0)>.5;this.root.x=t.x,this.root.y=t.y,this.root.angle=(e==null?1:-1)*s,this.root.alpha=o,this.root.zIndex=a,this.root.scale.set(1,1),this.animationContainer&&(this.animationContainer.x=u,this.animationContainer.y=c,this.animationContainer.angle=(e==null?1:-1)*h,this.animationContainer.alpha=m,this.animationContainer.scale.set(d*f,d*p),this.applyBlur(g),this.applyMotionBlur(v),this.applyBrightness(x),this.applyChromaKey()),this.pixiSprite.anchor.set(.5,.5),this.pixiSprite.position.set(0,0);const b=this.pixiSprite.texture?.width??1,T=this.pixiSprite.texture?.height??1,P=this.sprite.type==="Caption",A=!P&&i&&i!==0?Math.abs(i)/b:1,E=!P&&n&&n!==0?Math.abs(n)/T:1;if(y){if(!this.isMirrorActive){if(this.isMirrorActive=!0,this.mirrorContainer=new Pe,this.mirrorContainer.label="MirrorContainer",this.animationContainer){const M=this.animationContainer.getChildIndex(this.pixiSprite);this.animationContainer.removeChild(this.pixiSprite),this.mirrorContainer.addChild(this.pixiSprite),this.animationContainer.addChildAt(this.mirrorContainer,M)}this.mirrorSprites=[];for(let M=0;M<8;M++){const O=new Je(this.pixiSprite.texture);O.label=`MirrorSprite_${M}`,O.anchor.set(.5,.5),this.mirrorContainer.addChild(O),this.mirrorSprites.push(O)}}for(const M of this.mirrorSprites)M.texture=this.pixiSprite.texture;const _=b*A,S=T*E;this.pixiSprite.position.set(0,0),this.pixiSprite.scale.set(A,E);const I=[[_,0,-A,E],[-_,0,-A,E],[0,S,A,-E],[0,-S,A,-E],[_,S,-A,-E],[-_,S,-A,-E],[_,-S,-A,-E],[-_,-S,-A,-E]];for(let M=0;M<8;M++){const[O,U,X,D]=I[M];this.mirrorSprites[M].position.set(O,U),this.mirrorSprites[M].scale.set(X,D)}if(e==="horizontal"){this.pixiSprite.scale.x=-A;for(let M=0;M<8;M++)this.mirrorSprites[M].scale.x=-I[M][2]}else if(e==="vertical"){this.pixiSprite.scale.y=-E;for(let M=0;M<8;M++)this.mirrorSprites[M].scale.y=-I[M][3]}}else{if(this.isMirrorActive&&(this.isMirrorActive=!1,this.mirrorContainer&&this.animationContainer)){const _=this.animationContainer.getChildIndex(this.mirrorContainer);this.mirrorContainer.removeChild(this.pixiSprite),this.animationContainer.addChildAt(this.pixiSprite,_);for(const S of this.mirrorSprites)S.destroy();this.mirrorSprites=[],this.animationContainer.removeChild(this.mirrorContainer),this.mirrorContainer.destroy(),this.mirrorContainer=null}e==="horizontal"?(this.pixiSprite.scale.x=-A,this.pixiSprite.scale.y=E):e==="vertical"?(this.pixiSprite.scale.x=A,this.pixiSprite.scale.y=-E):(this.pixiSprite.scale.x=A,this.pixiSprite.scale.y=E)}this.applyStyle()}applyStyle(){if(this.pixiSprite==null||this.destroyed)return;const e=this.sprite.style||{},t=this.pixiSprite.texture?.width??0,i=this.pixiSprite.texture?.height??0;if(t===0||i===0)return;const n=e.borderRadius||0;n>0?(this.maskGraphics==null&&(this.maskGraphics=new Ze,this.animationContainer.addChild(this.maskGraphics),this.pixiSprite.mask=this.maskGraphics),this.maskGraphics.clear(),this.maskGraphics.roundRect(-t/2,-i/2,t,i,Math.min(n,t/2,i/2)),this.maskGraphics.fill({color:16777215,alpha:1}),this.maskGraphics.visible=!0):this.maskGraphics&&(this.maskGraphics.visible=!1,this.pixiSprite.mask=null),this.sprite.type!=="Text"&&this.sprite.type!=="Caption"?this.applyStroke(e,t,i):this.strokeGraphics&&(this.strokeGraphics.visible=!1),this.sprite.type!=="Text"&&this.sprite.type!=="Caption"?this.applyShadow(e):this.shadowContainer&&(this.shadowContainer.visible=!1,this.shadowContainer.filters=[])}applyStroke(e,t,i){const n=e.stroke;if(n&&n.width>0){this.strokeGraphics==null&&(this.strokeGraphics=new Ze,this.animationContainer.addChild(this.strokeGraphics)),this.strokeGraphics.clear();const s=yt(n.color)??16777215,o=n.width,a=e.borderRadius||0;if(this.strokeGraphics.setStrokeStyle({width:o,color:s,alignment:1}),a>0){const l=Math.min(a,t/2,i/2);this.strokeGraphics.roundRect(-t/2,-i/2,t,i,l)}else this.strokeGraphics.rect(-t/2,-i/2,t,i);this.strokeGraphics.stroke(),this.strokeGraphics.visible=!0}else this.strokeGraphics!=null&&(this.strokeGraphics.visible=!1)}applyShadow(e){const t=e.dropShadow,i=Math.abs(this.sprite.width??0),n=Math.abs(this.sprite.height??0);if(t&&i>0&&n>0&&(t.blur>0||t.distance>0)){this.shadowContainer==null&&(this.shadowContainer=new Pe,this.shadowContainer.label="ShadowContainer",this.shadowGraphics=new Ze,this.shadowContainer.addChild(this.shadowGraphics),this.animationContainer.addChildAt(this.shadowContainer,0));const s=yt(t.color)??0,o=t.alpha??.5,a=t.blur??0,l=t.distance??0,u=t.angle??0,c=Math.cos(u)*l,h=Math.sin(u)*l;this.shadowContainer.position.set(c,h),this.shadowGraphics.clear();const d=e.borderRadius||0;if(d>0){const f=Math.min(d,i/2,n/2);this.shadowGraphics.roundRect(-i/2,-n/2,i,n,f)}else this.shadowGraphics.rect(-i/2,-n/2,i,n);if(this.shadowGraphics.fill({color:s,alpha:o}),a>0){(!this.shadowContainer.filters||this.shadowContainer.filters.length===0)&&(this.shadowContainer.filters=[new ys]);const f=this.shadowContainer.filters[0],p=this.root?Math.sqrt(this.root.worldTransform.a**2+this.root.worldTransform.b**2):1;f.strength=a*p,f.resolution=this.resolution,f.padding=Math.max(a*2*p,20)}else this.shadowContainer.filters=[];this.shadowContainer.visible=!0}else this.shadowContainer!=null&&(this.shadowContainer.visible=!1,this.shadowContainer.filters=[])}applyBlur(e){if(!this.animationContainer||this.destroyed)return;if(typeof e!="number"||!isFinite(e)||e<=0){this.animationContainer.filters&&this.animationContainer.filters.length>0&&(this.animationContainer.filters=[]);return}if(!this.animationContainer.filters||this.animationContainer.filters.length===0){const s=new ys;s.strength=e,s.quality=4,s.repeatEdgePixels=!0,this.animationContainer.filters=[s]}const t=this.animationContainer.filters[0],i=this.root?Math.sqrt(this.root.worldTransform.a**2+this.root.worldTransform.b**2):1,n=Math.max(i,.001);t.strength=e*n,t.resolution=this.resolution,t.padding=Math.max(e*2*n,20),t.quality=4,t.repeatEdgePixels=!0}applyMotionBlur(e){if(!this.animationContainer||this.destroyed)return;if(typeof e!="number"||!isFinite(e)||e<=0){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(i=>!(i instanceof Ch)));return}let t=this.animationContainer.filters?.find(i=>i instanceof Ch);if(!t){t=new Ch;const i=this.animationContainer.filters||[];this.animationContainer.filters=[...i,t]}if(t.strength=e/200,this.pixiSprite){const i=this.pixiSprite.getBounds();t.center={x:i.width/2,y:i.height/2}}t.innerRadius=0,t.radius=-1}applyBrightness(e){if(!this.animationContainer||this.destroyed)return;if(e===1){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(i=>!(i instanceof Ro)));return}let t=this.animationContainer.filters?.find(i=>i instanceof Ro);if(!t){t=new Ro;const i=this.animationContainer.filters||[];this.animationContainer.filters=[...i,t]}t.brightness(e,!1)}applyChromaKey(){if(!this.animationContainer||this.destroyed)return;const{chromaKey:e}=this.sprite;if(!e||!e.enabled){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(s=>s.label!=="ChromaKeyFilter"));return}let t=this.animationContainer.filters?.find(s=>s.label==="ChromaKeyFilter");if(!t){const s=new ue({vertex:qb,fragment:Xk,name:"ChromaKeyShader"}),o=new ft({uKeyColor:{value:[0,1,0],type:"vec3<f32>"},uSimilarity:{value:.1,type:"f32"},uSpill:{value:0,type:"f32"}});t=new ge({glProgram:s,resources:{chromaUniforms:o}}),t.label="ChromaKeyFilter";const a=this.animationContainer.filters||[];this.animationContainer.filters=[...a,t]}const i=t.resources.chromaUniforms.uniforms,n=Fk(e.color);n&&(i.uKeyColor[0]=n.r/255,i.uKeyColor[1]=n.g/255,i.uKeyColor[2]=n.b/255),i.uSimilarity=e.similarity,i.uSpill=e.spill}updateTransforms(){this.root!=null&&!this.destroyed&&this.applySpriteTransforms()}getSprite(){return this.pixiSprite}getRoot(){return this.root}destroy(){this.destroyed||(this.destroyed=!0,this.root!=null&&(this.root.parent&&this.root.parent.removeChild(this.root),this.root.destroy({children:!0}),this.root=null,this.pixiSprite=null),this.strokeGraphics!=null&&(this.strokeGraphics.destroy(),this.strokeGraphics=null),this.maskGraphics!=null&&(this.maskGraphics.destroy(),this.maskGraphics=null),this.shadowGraphics!=null&&(this.shadowGraphics.destroy(),this.shadowGraphics=null),this.shadowContainer!=null&&(this.shadowContainer.destroy({children:!0}),this.shadowContainer=null),this.texture!=null&&(this.texture.destroy(),this.texture=null))}}function Rl(r,e=!1){return r.toJSON(e)}async function Xo(r){let e,t=null;switch(r.type){case"Video":t=br;break;case"Audio":t=Jr;break;case"Image":t=Bl;break;case"Text":t=Ki;break;case"Caption":t=On;break;case"Effect":t=Qi;break;case"Transition":t=Bi;break;case"Placeholder":t=kl;break}if(t&&typeof t.fromObject=="function")e=await t.fromObject(r);else throw new Error(`Unsupported clip type or missing fromObject: ${r.type}`);if(r.animations&&Array.isArray(r.animations)){e.clearAnimations();for(const i of r.animations)e.addAnimation(i.type,i.opts,i.params)}return r.id&&(e.id=r.id),r.name&&(e.name=r.name),e}var u1,F4;function hee(){return F4||(F4=1,u1=[{name:"Bounce",paramsTypes:{shadow_colour:"vec4",shadow_height:"float",bounces:"float"},defaultParams:{shadow_colour:[0,0,0,.6],shadow_height:.075,bounces:3},glsl:`// Author: Adrian Purser
10910
+ }`,see=Object.defineProperty,oee=(r,e,t)=>e in r?see(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,B4=(r,e,t)=>(oee(r,typeof e!="symbol"?e+"":e,t),t);const k4=class lF extends ge{constructor(e){e={...lF.DEFAULT_OPTIONS,...e};const t=e.maxKernelSize??32,i=pe.from({vertex:{source:De,entryPoint:"mainVertex"},fragment:{source:nee.replace("${MAX_KERNEL_SIZE}",t.toFixed(1)),entryPoint:"mainFragment"}}),n=ue.from({vertex:Me,fragment:iee.replace("${MAX_KERNEL_SIZE}",t.toFixed(1)),name:"zoom-blur-filter"});super({gpuProgram:i,glProgram:n,resources:{zoomBlurUniforms:{uStrength:{value:e.strength,type:"f32"},uCenter:{value:{x:0,y:0},type:"vec2<f32>"},uRadii:{value:new Float32Array(2),type:"vec2<f32>"}}}}),B4(this,"uniforms"),this.uniforms=this.resources.zoomBlurUniforms.uniforms,Object.assign(this,e)}get strength(){return this.uniforms.uStrength}set strength(e){this.uniforms.uStrength=e}get center(){return this.uniforms.uCenter}set center(e){Array.isArray(e)&&(e={x:e[0],y:e[1]}),this.uniforms.uCenter=e}get centerX(){return this.uniforms.uCenter.x}set centerX(e){this.uniforms.uCenter.x=e}get centerY(){return this.uniforms.uCenter.y}set centerY(e){this.uniforms.uCenter.y=e}get innerRadius(){return this.uniforms.uRadii[0]}set innerRadius(e){this.uniforms.uRadii[0]=e}get radius(){return this.uniforms.uRadii[1]}set radius(e){this.uniforms.uRadii[1]=e<0||e===1/0?-1:e}};B4(k4,"DEFAULT_OPTIONS",{strength:.1,center:{x:0,y:0},innerRadius:0,radius:-1,maxKernelSize:32});let Ch=k4;const aee={adjustmentFilter:CQ,advancedBloomFilter:GQ,asciiFilter:YQ,backdropBlurFilter:JQ,bevelFilter:iZ,bloomFilter:oZ,bulgePinchFilter:hZ,colorGradientFilter:EZ,colorMapFilter:RZ,colorOverlayFilter:UZ,colorReplaceFilter:HZ,convolutionFilter:qZ,crossHatchFilter:QZ,crtFilter:tJ,dotFilter:aJ,dropShadowFilter:dJ,embossFilter:xJ,glitchFilter:SJ,glowFilter:PJ,godrayFilter:DJ,grayscaleFilter:zJ,hslAdjustmentFilter:WJ,kawaseBlurFilter:Kb,motionBlurFilter:jJ,multiColorReplaceFilter:$J,oldFilmFilter:n$,outlineFilter:u$,pixelateFilter:d$,radialBlurFilter:v$,reflectionFilter:w$,rgbSplitFilter:E$,shockwaveFilter:R$,simpleLightmapFilter:U$,simplexNoiseFilter:W$,tiltShiftFilter:Z$,twistFilter:ree,zoomBlurFilter:Ch},a1={adjustmentFilter:{gamma:1.5,saturation:.5,contrast:1.2,brightness:1.5,red:1.5,green:1.5,blue:1.5,alpha:1},advancedBloomFilter:{threshold:.2,bloomScale:1,brightness:1,blur:20,quality:1},asciiFilter:{size:8,color:"#ffffff",replaceColor:!0},backdropBlurFilter:{blur:10,quality:4},bevelFilter:{rotation:45,thickness:10,lightColor:"#ffffff",lightAlpha:1,shadowColor:"#000000",shadowAlpha:1},bloomFilter:{kernelSize:5,quality:2,resolution:3,strength:{x:10,y:10}},bulgePinchFilter:{center:{x:.5,y:.5},radius:400,strength:1},colorGradientFilter:{type:1,alpha:1,angle:90,maxColors:0,replace:!0,stops:[{color:"#ffffff",offset:0,alpha:1},{color:"#000000",offset:1,alpha:1}]},colorMapFilter:{mix:1,nearest:!0},colorOverlayFilter:{color:"#ffffff",alpha:1},colorReplaceFilter:{originalColor:"#ffffff",targetColor:"#000000",tolerance:.1},convolutionFilter:{width:3,height:3,matrix:[1,0,0,0,1,0,0,0,1]},crossHatchFilter:{},crtFilter:{curvature:1,lineWidth:3,lineContrast:.4,verticalLine:!0,noise:.2,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0,time:.5},dotFilter:{scale:1,angle:1,grayscale:!0},dropShadowFilter:{blur:1,quality:3,alpha:.5,offset:{x:4,y:4},color:"#000000",shadowOnly:!0},embossFilter:{strength:5},glitchFilter:{seed:.5,slices:10,offset:.1,direction:0,fillMode:0,red:{x:2,y:2},green:{x:10,y:-4},blue:{x:-10,y:4}},glowFilter:{distance:10,outerStrength:2,innerStrength:0,color:"#ffffff",quality:1,alpha:1,knockout:!1},godrayFilter:{time:0,gain:.6,lacunarity:2.75,alpha:1,parallel:!0,angle:30,center:{x:426,y:-100}},grayscaleFilter:{},hslAdjustmentFilter:{hue:100,saturation:1,lightness:0,colorize:!1,alpha:1},kawaseBlurFilter:{strength:4,quality:3,pixelSize:{x:1,y:1}},motionBlurFilter:{velocity:{x:40,y:40},kernelSize:5,offset:0},multiColorReplaceFilter:{replacements:[["#ff0000","#00ff00"],["#0000ff","#ffff00"]],tolerance:.1},oldFilmFilter:{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.5,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3},outlineFilter:{thickness:1,color:"#000000",alpha:1,knockout:!1},pixelateFilter:{size:10},radialBlurFilter:{angle:20,center:{x:0,y:0},radius:300,kernelSize:15},reflectionFilter:{mirror:!0,boundary:.5,amplitude:[20,50],waveLength:[30,100],alpha:[1,1],time:0},rgbSplitFilter:{red:{x:2,y:2},green:{x:10,y:-4},blue:{x:-10,y:4}},shockwaveFilter:{speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1,center:{x:420,y:410}},simpleLightmapFilter:{color:"#ffffff",alpha:1},simplexNoiseFilter:{strength:.5,noiseScale:10,offsetX:0,offsetY:0,offsetZ:0,step:-1},tiltShiftFilter:{blur:100,gradientBlur:600,start:{x:0,y:0},end:{x:853,y:414}},twistFilter:{angle:10,radius:100,offset:{x:426,y:414}},zoomBlurFilter:{strength:.1,center:{x:426,y:414},innerRadius:80,radius:-1}},lee={adjustmentFilter:{gamma:{min:0,max:5,step:.07},saturation:{min:0,max:5,step:.07},contrast:{min:0,max:5,step:.07},brightness:{min:0,max:5,step:.07},red:{min:0,max:5,step:.07},green:{min:0,max:5,step:.07},blue:{min:0,max:5,step:.07},alpha:{min:0,max:5,step:.07}},advancedBloomFilter:{threshold:{min:.1,max:.9,step:.009},bloomScale:{min:.5,max:1.5,step:.015},brightness:{min:.5,max:1.5,step:.015},blur:{min:0,max:20,step:.2},quality:{min:1,max:20,step:1}},asciiFilter:{size:{min:2,max:20,step:.015}},backdropBlurFilter:{blur:{min:0,max:100,step:2.3},quality:{min:1,max:10,step:.1}},bevelFilter:{rotation:{min:0,max:360,step:5},thickness:{min:0,max:10,step:.25},lightAlpha:{min:0,max:1,step:.013},shadowAlpha:{min:0,max:1,step:.013}},bloomFilter:{kernelSize:{min:0,max:15,step:1},quality:{min:0,max:10,step:1},resolution:{min:0,max:10,step:1},strength:{x:{min:0,max:20,step:.5},y:{min:0,max:20,step:.5}}},bulgePinchFilter:{center:{x:{min:0,max:1,step:.013},y:{min:0,max:1,step:.013}},radius:{min:0,max:1e3,step:12},strength:{min:-1,max:1,step:.1}},colorGradientFilter:{alpha:{min:0,max:1,step:.013},angle:{min:0,max:360,step:1},stops:[{offset:{min:0,max:1,step:.012},alpha:{min:0,max:1,step:.012}}]},colorMapFilter:{mix:{min:0,max:1,step:.013}},colorOverlayFilter:{alpha:{min:0,max:1,step:.013}},colorReplaceFilter:{tolerance:{min:0,max:1,step:.013}},convolutionFilter:{width:{min:0,max:500,step:1},height:{min:0,max:500,step:1},matrix:[{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01},{max:0,min:1,step:.01}]},crossHatchFilter:{},crtFilter:{curvature:{min:0,max:10,step:.01},lineWidth:{min:0,max:5,step:.1},lineContrast:{min:0,max:1,step:.013},noise:{min:0,max:1,step:.013},noiseSize:{min:1,max:10,step:.01},vignetting:{min:0,max:1,step:.013},vignettingAlpha:{min:0,max:1,step:.013},vignettingBlur:{min:0,max:1,step:.013},seed:{min:0,max:1,step:.01},time:{min:0,max:20,step:.01}},dotFilter:{scale:{min:.3,max:1,step:.01},angle:{min:0,max:5,step:.01}},dropShadowFilter:{blur:{min:0,max:20,step:.5},quality:{min:1,max:20,step:1},alpha:{min:0,max:1,step:.013},offset:{x:{min:-50,max:50,step:2.5},y:{min:-50,max:50,step:2.5}}},embossFilter:{strength:{min:0,max:20,step:.1}},glitchFilter:{seed:{min:0,max:1,step:.01},slices:{min:2,max:20,step:.01},offset:{min:-400,max:400,step:.1},direction:{min:-180,max:180,step:.1},red:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}},green:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}},blue:{x:{min:-50,max:50,step:1},y:{min:-50,max:50,step:1}}},glowFilter:{distance:{min:0,max:20,step:.013},outerStrength:{min:0,max:20,step:.013},innerStrength:{min:0,max:20,step:.013},quality:{min:0,max:1,step:.013},alpha:{min:0,max:1,step:.013}},godrayFilter:{time:{min:0,max:1,step:.013},gain:{min:0,max:1,step:.013},lacunarity:{min:0,max:5,step:.013},alpha:{min:0,max:1,step:.013},angle:{min:-60,max:60,step:.1},center:{x:{min:-100,max:960,step:14},y:{min:-1e3,max:-100,step:14}}},grayscaleFilter:{},hslAdjustmentFilter:{hue:{min:-180,max:180,step:.013},saturation:{min:-1,max:1,step:.013},lightness:{min:-1,max:1,step:.013},alpha:{min:0,max:1,step:.013}},kawaseBlurFilter:{strength:{min:0,max:20,step:.013},quality:{min:1,max:20,step:.013},pixelSize:{x:{min:0,max:10,step:.013},y:{min:0,max:10,step:.013}}},motionBlurFilter:{velocity:{x:{min:-90,max:90,step:.013},y:{min:-90,max:90,step:.013}},kernelSize:{min:0,max:25,step:3},offset:{min:-150,max:150,step:.1}},multiColorReplaceFilter:{tolerance:{min:0,max:1,step:.01}},oldFilmFilter:{sepia:{min:0,max:1,step:.01},noise:{min:0,max:1,step:.01},noiseSize:{min:1,max:20,step:1},scratch:{min:-1,max:1,step:.01},scratchDensity:{min:0,max:1,step:.01},scratchWidth:{min:1,max:20,step:1},vignetting:{min:0,max:1,step:.01},vignettingAlpha:{min:0,max:1,step:.01},vignettingBlur:{min:0,max:1,step:.01}},outlineFilter:{thickness:{min:0,max:10,step:.1},alpha:{min:0,max:1,step:.001}},pixelateFilter:{size:{min:4,max:40,step:.013}},radialBlurFilter:{angle:{min:-180,max:180,step:.1},center:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},radius:{min:-1,max:860,step:.1},kernelSize:{min:0,max:25,step:3}},reflectionFilter:{boundary:{min:0,max:1,step:.01},amplitude:[{min:0,max:50,step:.013},{min:0,max:50,step:.013}],waveLength:[{min:0,max:200,step:.013},{min:0,max:200,step:.013}],alpha:[{min:0,max:1,step:.01},{min:0,max:1,step:.01}],time:{min:0,max:20,step:.01}},rgbSplitFilter:{red:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}},green:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}},blue:{x:{min:-20,max:20,step:.013},y:{min:-20,max:20,step:.013}}},shockwaveFilter:{speed:{min:500,max:2e3,step:.7},amplitude:{min:1,max:100,step:.01},wavelength:{min:2,max:400,step:.01},brightness:{min:.2,max:2,step:.01},radius:{min:100,max:2e3,step:.7},center:{x:{min:0,max:2e3,step:.013},y:{min:0,max:2e3,step:.013}}},simpleLightmapFilter:{alpha:{min:0,max:1,step:.01}},simplexNoiseFilter:{strength:{min:0,max:1,step:.01},noiseScale:{min:0,max:50,step:.1},offsetX:{min:0,max:5,step:.01},offsetY:{min:0,max:5,step:.01},offsetZ:{min:0,max:5,step:.01},step:{min:-1,max:1,step:.01}},tiltShiftFilter:{blur:{min:0,max:200,step:.1},gradientBlur:{min:0,max:1e3,step:1},start:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},end:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}}},twistFilter:{angle:{min:-10,max:10,step:.1},radius:{min:0,max:2e3,step:.1},offset:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}}},zoomBlurFilter:{strength:{min:.01,max:.5,step:.001},center:{x:{min:0,max:2e3,step:.1},y:{min:0,max:2e3,step:.1}},innerRadius:{min:0,max:430,step:.1},radius:{min:0,max:430,step:.1}}},uee="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAAQCAIAAAB2sTYeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF6GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0wMS0yM1QwMjo0NToyMSswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDk0MTcyNTUtZDRlNS00YjRiLTlhNGUtYjVhOGQ4MjIzMDgzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQ2NDI4MEY0RjY2MjExRTdCOTdGOENCMTc0MEREQUYxIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RDY0MjgwRjRGNjYyMTFFN0I5N0Y4Q0IxNzQwRERBRjEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENjQyODBGMUY2NjIxMUU3Qjk3RjhDQjE3NDBEREFGMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENjQyODBGMkY2NjIxMUU3Qjk3RjhDQjE3NDBEREFGMSIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowOTQxNzI1NS1kNGU1LTRiNGItOWE0ZS1iNWE4ZDgyMjMwODMiIHN0RXZ0OndoZW49IjIwMTgtMDEtMjNUMDQ6MzQ6NTUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz51hjvPAAAUu0lEQVRogYXa648dd5oX8M+vqk6dW1/cbXe7Hd+SOL52fIkvncsk2SwZRoM0I8QiVgjBCiHBSxDafwFerMQ7VghegIS0aHeE0CAYwTIww04SPEwymcQza09uTuIkdtqXbruvp/v0qVO8qKru0207PDq2+pz61q9+l+9zrSfYkieY4Vtc4AjjNIibQpMGw+BDYTv+Rc5zbBNvC1DIIP45XuUST7Hn0fjxANmQhZFq/EuD89mJfyVI2Zi08Iwvxyy/pnvhm8b/w+LrAS764ohrk9YvWT6iM67T0H0I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",cee="data:image/png;base64,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";async function l1({name:r,renderer:e,values:t}){let i=null;const n=r in a1;let s={};if(n){const l=aee[r];s={...a1[r],...t},r==="colorMapFilter"&&(s.colorMap=await gs.load(uee)),r==="simpleLightmapFilter"&&(s.lightMap=await gs.load(cee)),i=new l(s)}else{const l=jb(),u=Object.keys(l).find(m=>m.toLowerCase()===r.toLowerCase());if(!u)return console.warn(`Effect ${r} not found`),{filter:null,render({canvasTexture:m}){return m instanceof Ot?m:Q.from(m)}};const{fragment:c,uniforms:h,label:d}=l[u],f=new ue({vertex:qb,fragment:c,name:`${d}-shader`}),p=new ft({uTime:{value:0,type:"f32"},...h});i=new ge({glProgram:f,resources:{effectUniforms:p}})}const o=new Je,a=Ot.create({width:e.width,height:e.height});return o.filters=[i],{filter:i,render({width:l,height:u,canvasTexture:c,progress:h,values:d}){(a.width!==l||a.height!==u)&&a.resize(l,u);const f=c instanceof Ot?c:Q.from(c);o.texture=f,o.width=l,o.height=u;const p={...s,...d};if(n)d&&Object.assign(i,p);else if(i.resources?.effectUniforms&&(i.resources.effectUniforms.uniforms.uTime=h,d))for(const[m,g]of Object.entries(d))i.resources.effectUniforms.uniforms[m]&&(i.resources.effectUniforms.uniforms[m]=g);return e.render({container:o,target:a,clear:!0}),a}}}function hee(r,e){const{opacity:t,zIndex:i,flip:n,left:s,top:o,width:a,height:l,angle:u}=r;e.x=s,e.y=o,e.width=Math.abs(a),e.height=Math.abs(l),e.angle=u,e.alpha=t,e.zIndex=i,n==="horizontal"?e.scale.x=-Math.abs(e.scale.x):n==="vertical"&&(e.scale.y=-Math.abs(e.scale.y))}class R4{constructor(e,t,i=null){this.sprite=t,this.targetContainer=i,!i&&e&&(this.targetContainer=e.stage),this.resolution=e?.renderer?.resolution??1,this.canvas=new OffscreenCanvas(1,1);const n=this.canvas.getContext("2d");if(n==null)throw new Error("Failed to create 2d context for PixiSpriteRenderer");this.context=n,this.root=new Pe,this.root.label="RootContainer",this.root.visible=!1,this.animationContainer=new Pe,this.animationContainer.label="AnimationContainer",this.root.addChild(this.animationContainer),this.targetContainer&&this.targetContainer.addChild(this.root)}pixiSprite=null;mirrorSprites=[];mirrorContainer=null;isMirrorActive=!1;texture=null;canvas;context;root=null;strokeGraphics=null;maskGraphics=null;shadowGraphics=null;shadowContainer=null;animationContainer=null;resolution=1;destroyed=!1;async updateFrame(e){if(this.destroyed)return;if(e==null){this.root!=null&&(this.root.visible=!1,this.applySpriteTransforms());return}if(e instanceof Q||e&&typeof e.source<"u"){if(e.width===0||e.height===0){console.warn("PixiSpriteRenderer: Texture has zero dimensions",e.width,e.height);return}this.pixiSprite==null?(this.pixiSprite=new Je(e),this.pixiSprite.label="MainSprite",this.animationContainer.addChild(this.pixiSprite),this.applySpriteTransforms()):this.pixiSprite.texture=e,this.root!=null&&(this.root.visible=!0,this.applySpriteTransforms());return}const i=e.width,n=e.height;if(typeof i!="number"||typeof n!="number"||i<=0||n<=0){console.warn("PixiSpriteRenderer: Invalid frame dimensions",i,n);return}const s=this.texture==null||this.pixiSprite==null,o=Math.floor(i),a=Math.floor(n);if(this.canvas.width!==o||this.canvas.height!==a||s){if(this.canvas.width=o,this.canvas.height=a,this.texture!=null&&(this.texture.destroy(!0),this.texture=null),this.texture=Q.from(this.canvas),!this.texture||!this.texture.source){console.error("PixiSpriteRenderer: Failed to create valid texture");return}this.pixiSprite==null?(this.pixiSprite=new Je(this.texture),this.pixiSprite.label="MainSprite",this.animationContainer.addChild(this.pixiSprite),this.applySpriteTransforms()):this.pixiSprite.texture=this.texture}if(this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(e,0,0),this.texture!=null&&this.texture.source!=null){const u=this.texture.source;if(u.resource){const c=u.resource;c.update&&c.update()}typeof u.update=="function"&&u.update()}this.root!=null&&(this.root.visible=!0,this.applySpriteTransforms())}applySpriteTransforms(){if(this.pixiSprite==null||this.root==null||this.destroyed)return;const{flip:e,center:t,width:i,height:n,angle:s,opacity:o,zIndex:a,renderTransform:l}=this.sprite,u=l?.x??0,c=l?.y??0,h=l?.angle??0,d=l?.scale??1,f=l?.scaleX??1,p=l?.scaleY??1,m=l?.opacity??1,g=l?.blur??0,v=l?.motionBlur??0,x=l?.brightness??1,y=(l?.mirror??0)>.5;this.root.x=t.x,this.root.y=t.y,this.root.angle=(e==null?1:-1)*s,this.root.alpha=o,this.root.zIndex=a,this.root.scale.set(1,1),this.animationContainer&&(this.animationContainer.x=u,this.animationContainer.y=c,this.animationContainer.angle=(e==null?1:-1)*h,this.animationContainer.alpha=m,this.animationContainer.scale.set(d*f,d*p),this.applyBlur(g),this.applyMotionBlur(v),this.applyBrightness(x),this.applyChromaKey()),this.pixiSprite.anchor.set(.5,.5),this.pixiSprite.position.set(0,0);const b=this.pixiSprite.texture?.width??1,T=this.pixiSprite.texture?.height??1,P=this.sprite.type==="Caption",A=!P&&i&&i!==0?Math.abs(i)/b:1,E=!P&&n&&n!==0?Math.abs(n)/T:1;if(y){if(!this.isMirrorActive){if(this.isMirrorActive=!0,this.mirrorContainer=new Pe,this.mirrorContainer.label="MirrorContainer",this.animationContainer){const M=this.animationContainer.getChildIndex(this.pixiSprite);this.animationContainer.removeChild(this.pixiSprite),this.mirrorContainer.addChild(this.pixiSprite),this.animationContainer.addChildAt(this.mirrorContainer,M)}this.mirrorSprites=[];for(let M=0;M<8;M++){const O=new Je(this.pixiSprite.texture);O.label=`MirrorSprite_${M}`,O.anchor.set(.5,.5),this.mirrorContainer.addChild(O),this.mirrorSprites.push(O)}}for(const M of this.mirrorSprites)M.texture=this.pixiSprite.texture;const _=b*A,S=T*E;this.pixiSprite.position.set(0,0),this.pixiSprite.scale.set(A,E);const I=[[_,0,-A,E],[-_,0,-A,E],[0,S,A,-E],[0,-S,A,-E],[_,S,-A,-E],[-_,S,-A,-E],[_,-S,-A,-E],[-_,-S,-A,-E]];for(let M=0;M<8;M++){const[O,U,X,D]=I[M];this.mirrorSprites[M].position.set(O,U),this.mirrorSprites[M].scale.set(X,D)}if(e==="horizontal"){this.pixiSprite.scale.x=-A;for(let M=0;M<8;M++)this.mirrorSprites[M].scale.x=-I[M][2]}else if(e==="vertical"){this.pixiSprite.scale.y=-E;for(let M=0;M<8;M++)this.mirrorSprites[M].scale.y=-I[M][3]}}else{if(this.isMirrorActive&&(this.isMirrorActive=!1,this.mirrorContainer&&this.animationContainer)){const _=this.animationContainer.getChildIndex(this.mirrorContainer);this.mirrorContainer.removeChild(this.pixiSprite),this.animationContainer.addChildAt(this.pixiSprite,_);for(const S of this.mirrorSprites)S.destroy();this.mirrorSprites=[],this.animationContainer.removeChild(this.mirrorContainer),this.mirrorContainer.destroy(),this.mirrorContainer=null}e==="horizontal"?(this.pixiSprite.scale.x=-A,this.pixiSprite.scale.y=E):e==="vertical"?(this.pixiSprite.scale.x=A,this.pixiSprite.scale.y=-E):(this.pixiSprite.scale.x=A,this.pixiSprite.scale.y=E)}this.applyStyle()}applyStyle(){if(this.pixiSprite==null||this.destroyed)return;const e=this.sprite.style||{},t=this.pixiSprite.texture?.width??0,i=this.pixiSprite.texture?.height??0;if(t===0||i===0)return;const n=e.borderRadius||0;n>0?(this.maskGraphics==null&&(this.maskGraphics=new Ze,this.animationContainer.addChild(this.maskGraphics),this.pixiSprite.mask=this.maskGraphics),this.maskGraphics.clear(),this.maskGraphics.roundRect(-t/2,-i/2,t,i,Math.min(n,t/2,i/2)),this.maskGraphics.fill({color:16777215,alpha:1}),this.maskGraphics.visible=!0):this.maskGraphics&&(this.maskGraphics.visible=!1,this.pixiSprite.mask=null),this.sprite.type!=="Text"&&this.sprite.type!=="Caption"?this.applyStroke(e,t,i):this.strokeGraphics&&(this.strokeGraphics.visible=!1),this.sprite.type!=="Text"&&this.sprite.type!=="Caption"?this.applyShadow(e):this.shadowContainer&&(this.shadowContainer.visible=!1,this.shadowContainer.filters=[])}applyStroke(e,t,i){const n=e.stroke;if(n&&n.width>0){this.strokeGraphics==null&&(this.strokeGraphics=new Ze,this.animationContainer.addChild(this.strokeGraphics)),this.strokeGraphics.clear();const s=yt(n.color)??16777215,o=n.width,a=e.borderRadius||0;if(this.strokeGraphics.setStrokeStyle({width:o,color:s,alignment:1}),a>0){const l=Math.min(a,t/2,i/2);this.strokeGraphics.roundRect(-t/2,-i/2,t,i,l)}else this.strokeGraphics.rect(-t/2,-i/2,t,i);this.strokeGraphics.stroke(),this.strokeGraphics.visible=!0}else this.strokeGraphics!=null&&(this.strokeGraphics.visible=!1)}applyShadow(e){const t=e.dropShadow,i=Math.abs(this.sprite.width??0),n=Math.abs(this.sprite.height??0);if(t&&i>0&&n>0&&(t.blur>0||t.distance>0)){this.shadowContainer==null&&(this.shadowContainer=new Pe,this.shadowContainer.label="ShadowContainer",this.shadowGraphics=new Ze,this.shadowContainer.addChild(this.shadowGraphics),this.animationContainer.addChildAt(this.shadowContainer,0));const s=yt(t.color)??0,o=t.alpha??.5,a=t.blur??0,l=t.distance??0,u=t.angle??0,c=Math.cos(u)*l,h=Math.sin(u)*l;this.shadowContainer.position.set(c,h),this.shadowGraphics.clear();const d=e.borderRadius||0;if(d>0){const f=Math.min(d,i/2,n/2);this.shadowGraphics.roundRect(-i/2,-n/2,i,n,f)}else this.shadowGraphics.rect(-i/2,-n/2,i,n);if(this.shadowGraphics.fill({color:s,alpha:o}),a>0){(!this.shadowContainer.filters||this.shadowContainer.filters.length===0)&&(this.shadowContainer.filters=[new ys]);const f=this.shadowContainer.filters[0],p=this.root?Math.sqrt(this.root.worldTransform.a**2+this.root.worldTransform.b**2):1;f.strength=a*p,f.resolution=this.resolution,f.padding=Math.max(a*2*p,20)}else this.shadowContainer.filters=[];this.shadowContainer.visible=!0}else this.shadowContainer!=null&&(this.shadowContainer.visible=!1,this.shadowContainer.filters=[])}applyBlur(e){if(!this.animationContainer||this.destroyed)return;if(typeof e!="number"||!isFinite(e)||e<=0){this.animationContainer.filters&&this.animationContainer.filters.length>0&&(this.animationContainer.filters=[]);return}if(!this.animationContainer.filters||this.animationContainer.filters.length===0){const s=new ys;s.strength=e,s.quality=4,s.repeatEdgePixels=!0,this.animationContainer.filters=[s]}const t=this.animationContainer.filters[0],i=this.root?Math.sqrt(this.root.worldTransform.a**2+this.root.worldTransform.b**2):1,n=Math.max(i,.001);t.strength=e*n,t.resolution=this.resolution,t.padding=Math.max(e*2*n,20),t.quality=4,t.repeatEdgePixels=!0}applyMotionBlur(e){if(!this.animationContainer||this.destroyed)return;if(typeof e!="number"||!isFinite(e)||e<=0){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(i=>!(i instanceof Ch)));return}let t=this.animationContainer.filters?.find(i=>i instanceof Ch);if(!t){t=new Ch;const i=this.animationContainer.filters||[];this.animationContainer.filters=[...i,t]}if(t.strength=e/200,this.pixiSprite){const i=this.pixiSprite.getBounds();t.center={x:i.width/2,y:i.height/2}}t.innerRadius=0,t.radius=-1}applyBrightness(e){if(!this.animationContainer||this.destroyed)return;if(e===1){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(i=>!(i instanceof Ro)));return}let t=this.animationContainer.filters?.find(i=>i instanceof Ro);if(!t){t=new Ro;const i=this.animationContainer.filters||[];this.animationContainer.filters=[...i,t]}t.brightness(e,!1)}applyChromaKey(){if(!this.animationContainer||this.destroyed)return;const{chromaKey:e}=this.sprite;if(!e||!e.enabled){this.animationContainer.filters&&(this.animationContainer.filters=this.animationContainer.filters.filter(s=>s.label!=="ChromaKeyFilter"));return}let t=this.animationContainer.filters?.find(s=>s.label==="ChromaKeyFilter");if(!t){const s=new ue({vertex:qb,fragment:Xk,name:"ChromaKeyShader"}),o=new ft({uKeyColor:{value:[0,1,0],type:"vec3<f32>"},uSimilarity:{value:.1,type:"f32"},uSpill:{value:0,type:"f32"}});t=new ge({glProgram:s,resources:{chromaUniforms:o}}),t.label="ChromaKeyFilter";const a=this.animationContainer.filters||[];this.animationContainer.filters=[...a,t]}const i=t.resources.chromaUniforms.uniforms,n=Fk(e.color);n&&(i.uKeyColor[0]=n.r/255,i.uKeyColor[1]=n.g/255,i.uKeyColor[2]=n.b/255),i.uSimilarity=e.similarity,i.uSpill=e.spill}updateTransforms(){this.root!=null&&!this.destroyed&&this.applySpriteTransforms()}getSprite(){return this.pixiSprite}getRoot(){return this.root}destroy(){this.destroyed||(this.destroyed=!0,this.root!=null&&(this.root.parent&&this.root.parent.removeChild(this.root),this.root.destroy({children:!0}),this.root=null,this.pixiSprite=null),this.strokeGraphics!=null&&(this.strokeGraphics.destroy(),this.strokeGraphics=null),this.maskGraphics!=null&&(this.maskGraphics.destroy(),this.maskGraphics=null),this.shadowGraphics!=null&&(this.shadowGraphics.destroy(),this.shadowGraphics=null),this.shadowContainer!=null&&(this.shadowContainer.destroy({children:!0}),this.shadowContainer=null),this.texture!=null&&(this.texture.destroy(),this.texture=null))}}function Rl(r,e=!1){return r.toJSON(e)}async function Xo(r){let e,t=null;switch(r.type){case"Video":t=br;break;case"Audio":t=Jr;break;case"Image":t=Bl;break;case"Text":t=Ki;break;case"Caption":t=On;break;case"Effect":t=Qi;break;case"Transition":t=Bi;break;case"Placeholder":t=kl;break}if(t&&typeof t.fromObject=="function")e=await t.fromObject(r);else throw new Error(`Unsupported clip type or missing fromObject: ${r.type}`);if(r.animations&&Array.isArray(r.animations)){e.clearAnimations();for(const i of r.animations)e.addAnimation(i.type,i.opts,i.params)}return r.id&&(e.id=r.id),r.name&&(e.name=r.name),e}var u1,F4;function dee(){return F4||(F4=1,u1=[{name:"Bounce",paramsTypes:{shadow_colour:"vec4",shadow_height:"float",bounces:"float"},defaultParams:{shadow_colour:[0,0,0,.6],shadow_height:.075,bounces:3},glsl:`// Author: Adrian Purser
10911
10911
  // License: MIT
10912
10912
 
10913
10913
  uniform vec4 shadow_colour; // = vec4(0.,0.,0.,.6)
@@ -13240,7 +13240,7 @@ vec4 transition(vec2 uv) {
13240
13240
  vec4 b=getToColor(p);
13241
13241
  return mix(a, b, step(0.0+p.y,progress));
13242
13242
  }
13243
- `,author:"Jake Nelson",license:"MIT",createdAt:"Wed, 1 Nov 2017 15:24:36 -0500",updatedAt:"Thu, 2 Nov 2017 18:37:42 -0500"}]),u1}var dee=hee();const Yo=Lv(dee),fee=`
13243
+ `,author:"Jake Nelson",license:"MIT",createdAt:"Wed, 1 Nov 2017 15:24:36 -0500",updatedAt:"Thu, 2 Nov 2017 18:37:42 -0500"}]),u1}var fee=dee();const Yo=Lv(fee),pee=`
13244
13244
  in vec2 aPosition;
13245
13245
  out vec2 _uv;
13246
13246
  uniform mat3 projectionMatrix;
@@ -13271,7 +13271,7 @@ vec4 transition(vec2 uv) {
13271
13271
  vec2 absolute = aPosition * uOutputFrame.zw + uOutputFrame.xy;
13272
13272
  _uv = absolute / uOutputTexture.xy;
13273
13273
  }
13274
- `,st={custom:r=>{const e=r.defaultParams||{},t=r.paramsTypes||{};return Object.fromEntries(Object.entries(e).map(([i,n])=>[i,{value:n,type:pee(t[i])}]))},basics:{_fromR:{value:1,type:"f32"},_toR:{value:1,type:"f32"},ratio:{value:1,type:"f32"},progress:{value:0,type:"f32"},customUniform:{value:0,type:"f32"},center:{value:[.5,.5],type:"vec2<f32>"}}},pee=r=>r==="f32"||r==="i32"?r:r==="float"?"f32":`${r}<f32>`,mee=r=>`
13274
+ `,st={custom:r=>{const e=r.defaultParams||{},t=r.paramsTypes||{};return Object.fromEntries(Object.entries(e).map(([i,n])=>[i,{value:n,type:mee(t[i])}]))},basics:{_fromR:{value:1,type:"f32"},_toR:{value:1,type:"f32"},ratio:{value:1,type:"f32"},progress:{value:0,type:"f32"},customUniform:{value:0,type:"f32"},center:{value:[.5,.5],type:"vec2<f32>"}}},mee=r=>r==="f32"||r==="i32"?r:r==="float"?"f32":`${r}<f32>`,gee=r=>`
13275
13275
  precision highp float;
13276
13276
  in vec2 vTextureCoord;
13277
13277
  in vec2 _uv; // Normalized [0,1] coordinates with center at (0.5, 0.5) for canvas-centered transitions
@@ -13313,7 +13313,7 @@ vec4 transition(vec2 uv) {
13313
13313
  vec2 uv = _uv;
13314
13314
  gl_FragColor = transition(uv);
13315
13315
  }
13316
- `,gee=`
13316
+ `,vee=`
13317
13317
  const float PI = 3.141592653589;
13318
13318
 
13319
13319
  vec4 transition(vec2 p) {
@@ -13323,7 +13323,7 @@ vec4 transition(vec2 p) {
13323
13323
  float mix_factor = smoothstep(0.0, 0.1, angle - threshold);
13324
13324
  return mix(getToColor(p), getFromColor(p), mix_factor);
13325
13325
  }
13326
- `,vee=`
13326
+ `,xee=`
13327
13327
  uniform vec2 gridSize;
13328
13328
  uniform float pause;
13329
13329
  uniform float dividerWidth;
@@ -13389,7 +13389,7 @@ vec4 transition(vec2 p) {
13389
13389
  }
13390
13390
  return mix(bgColor, getToColor(p), a);
13391
13391
  }
13392
- `,xee={gridSize:{value:[4,4],type:"vec2<f32>"},pause:{value:.1,type:"f32"},dividerWidth:{value:.05,type:"f32"},bgColor:{value:[0,0,0,1],type:"vec4<f32>"},randomness:{value:.1,type:"f32"}},yee=`
13392
+ `,yee={gridSize:{value:[4,4],type:"vec2<f32>"},pause:{value:.1,type:"f32"},dividerWidth:{value:.05,type:"f32"},bgColor:{value:[0,0,0,1],type:"vec4<f32>"},randomness:{value:.1,type:"f32"}},bee=`
13393
13393
  uniform vec3 backColor;
13394
13394
 
13395
13395
  vec4 transition(vec2 uv) {
@@ -13403,7 +13403,7 @@ vec4 transition(vec2 uv) {
13403
13403
  else return getToColor(uv);
13404
13404
  }
13405
13405
  }
13406
- `,bee=`
13406
+ `,_ee=`
13407
13407
  uniform vec2 direction;
13408
13408
 
13409
13409
  vec4 transition(vec2 uv) {
@@ -13415,7 +13415,7 @@ vec4 transition(vec2 uv) {
13415
13415
  step(0.0, p.y) * step(p.y, 1.0) * step(0.0, p.x) * step(p.x, 1.0)
13416
13416
  );
13417
13417
  }
13418
- `,_ee={direction:{value:[0,1],type:"vec2<f32>"}},wee=`
13418
+ `,wee={direction:{value:[0,1],type:"vec2<f32>"}},See=`
13419
13419
  uniform float smoothness;
13420
13420
  uniform vec3 color;
13421
13421
 
@@ -13458,7 +13458,7 @@ vec4 transition(vec2 p) {
13458
13458
  vec4 cto = getToColor(p);
13459
13459
  return mix(mix(cfrom, cto, m), mix(cfrom, vec4(color, 1.0), 0.75), step(m, -2.0));
13460
13460
  }
13461
- `,See={smoothness:{value:.1,type:"f32"},center:{value:[.5,.5],type:"vec2<f32>"},color:{value:[1,.5,0],type:"vec3<f32>"}},Tee=`
13461
+ `,Tee={smoothness:{value:.1,type:"f32"},center:{value:[.5,.5],type:"vec2<f32>"},color:{value:[1,.5,0],type:"vec3<f32>"}},Cee=`
13462
13462
  uniform ivec2 squares;
13463
13463
  uniform vec2 direction;
13464
13464
  uniform float smoothness;
@@ -13475,7 +13475,7 @@ vec4 transition (vec2 p) {
13475
13475
  float a = (1.0 - step(progress, 0.0)) * step(squaremin.x, squarep.x) * step(squaremin.y, squarep.y) * step(squarep.x, squaremax.x) * step(squarep.y, squaremax.y);
13476
13476
  return mix(getFromColor(p), getToColor(p), a);
13477
13477
  }
13478
- `,Cee={squares:{value:[10,10],type:"vec2<i32>"},direction:{value:[1,-.5],type:"vec2<f32>"},smoothness:{value:1.6,type:"f32"}},Aee=`
13478
+ `,Aee={squares:{value:[10,10],type:"vec2<i32>"},direction:{value:[1,-.5],type:"vec2<f32>"},smoothness:{value:1.6,type:"f32"}},Eee=`
13479
13479
  #define PI 3.14159265359
13480
13480
 
13481
13481
  uniform float rotations;
@@ -13503,7 +13503,7 @@ vec4 transition (vec2 uv) {
13503
13503
 
13504
13504
  return mix(getFromColor(rotatedUv), getToColor(rotatedUv), progress);
13505
13505
  }
13506
- `,Eee={center:{value:[.5,.5],type:"vec2<f32>"},rotations:{value:1,type:"f32"},scale:{value:8,type:"f32"},backColor:{value:[.15,.15,.15,1],type:"vec4<f32>"}},Pee=`
13506
+ `,Pee={center:{value:[.5,.5],type:"vec2<f32>"},rotations:{value:1,type:"f32"},scale:{value:8,type:"f32"},backColor:{value:[.15,.15,.15,1],type:"vec4<f32>"}},Iee=`
13507
13507
  uniform ivec2 size;
13508
13508
  uniform float smoothness;
13509
13509
 
@@ -13516,7 +13516,7 @@ vec4 transition(vec2 p) {
13516
13516
  float m = smoothstep(0.0, -smoothness, r - (progress * (1.0 + smoothness)));
13517
13517
  return mix(getFromColor(p), getToColor(p), m);
13518
13518
  }
13519
- `,Iee={size:{value:[10,10],type:"vec2<i32>"},smoothness:{value:.5,type:"f32"}},Bee=`
13519
+ `,Bee={size:{value:[10,10],type:"vec2<i32>"},smoothness:{value:.5,type:"f32"}},kee=`
13520
13520
  #define PI 3.14159265359
13521
13521
 
13522
13522
  uniform int segments;
@@ -13533,7 +13533,7 @@ vec4 transition (vec2 uv) {
13533
13533
  else
13534
13534
  return getToColor(uv);
13535
13535
  }
13536
- `,kee={segments:{value:5,type:"i32"}},Ree=`
13536
+ `,Ree={segments:{value:5,type:"i32"}},Fee=`
13537
13537
  uniform ivec2 squaresMin;
13538
13538
  uniform int steps;
13539
13539
 
@@ -13545,7 +13545,7 @@ vec4 transition(vec2 uv) {
13545
13545
  vec2 p = dist>0.0 ? (floor(uv / squareSize) + 0.5) * squareSize : uv;
13546
13546
  return mix(getFromColor(p), getToColor(p), progress);
13547
13547
  }
13548
- `,Fee={squaresMin:{value:[20,20],type:"vec2<i32>"},steps:{value:50,type:"i32"}},Mee=`
13548
+ `,Mee={squaresMin:{value:[20,20],type:"vec2<i32>"},steps:{value:50,type:"i32"}},Dee=`
13549
13549
  uniform float scale;
13550
13550
  uniform float smoothness;
13551
13551
  uniform float seed;
@@ -13602,7 +13602,7 @@ vec4 transition (vec2 uv) {
13602
13602
  1.0 - q
13603
13603
  );
13604
13604
  }
13605
- `,Dee={scale:{value:4,type:"f32"},smoothness:{value:.01,type:"f32"},seed:{value:12.9898,type:"f32"}},Oee=`
13605
+ `,Oee={scale:{value:4,type:"f32"},smoothness:{value:.01,type:"f32"},seed:{value:12.9898,type:"f32"}},Uee=`
13606
13606
 
13607
13607
  #define PI 3.14159265358979323846
13608
13608
 
@@ -13634,7 +13634,7 @@ vec4 transition(vec2 uv) {
13634
13634
  }
13635
13635
 
13636
13636
 
13637
- `,Uee={spiralTurns:{value:1.5,type:"f32"},spiralWidth:{value:.02,type:"f32"}},zee=`
13637
+ `,zee={spiralTurns:{value:1.5,type:"f32"},spiralWidth:{value:.02,type:"f32"}},Lee=`
13638
13638
  //direction of movement : 0 : up, 1, down
13639
13639
  uniform float direction; // = 1.0 (using float instead of bool for WebGPU)
13640
13640
 
@@ -13749,7 +13749,7 @@ vec4 transition(vec2 uv) {
13749
13749
  return mix(getFromColor(p), getToColor(p), m);
13750
13750
  }
13751
13751
  }
13752
- `,Lee={direction:{value:1,type:"f32"},l_threshold:{value:.8,type:"f32"},above:{value:0,type:"f32"}},Nee=`
13752
+ `,Nee={direction:{value:1,type:"f32"},l_threshold:{value:.8,type:"f32"},above:{value:0,type:"f32"}},Gee=`
13753
13753
  uniform int steps; // = 50
13754
13754
  uniform float horizontalHexagons; // = 20.0
13755
13755
 
@@ -13814,7 +13814,7 @@ vec4 transition (vec2 uv) {
13814
13814
 
13815
13815
  return mix(getFromColor(point), getToColor(point), progress);
13816
13816
  }
13817
- `,Gee={steps:{value:50,type:"i32"},horizontalHexagons:{value:20,type:"f32"}},Hee=`
13817
+ `,Hee={steps:{value:50,type:"i32"},horizontalHexagons:{value:20,type:"f32"}},Wee=`
13818
13818
  float inHeart (vec2 p, vec2 center, float size) {
13819
13819
  if (size==0.0) return 0.0;
13820
13820
  vec2 o = (p-center)/(1.6*size);
@@ -13830,7 +13830,7 @@ vec4 transition (vec2 uv) {
13830
13830
  inHeart(uv, vec2(0.5, 0.5), progress)
13831
13831
  );
13832
13832
  }
13833
- `,Wee={},Vee=`
13833
+ `,Vee={},Xee=`
13834
13834
  uniform sampler2D displacementMap;
13835
13835
  uniform float strength; // = 0.5
13836
13836
 
@@ -13846,7 +13846,7 @@ vec4 transition (vec2 uv) {
13846
13846
  progress
13847
13847
  );
13848
13848
  }
13849
- `,Xee={strength:{value:.5,type:"f32"}},Yee=`
13849
+ `,Yee={strength:{value:.5,type:"f32"}},qee=`
13850
13850
  uniform vec2 direction; // = vec2(1.0, -1.0)
13851
13851
  uniform float smoothness; // = 0.5
13852
13852
 
@@ -13861,7 +13861,7 @@ vec4 transition (vec2 uv) {
13861
13861
  (1.0 - smoothstep(-smoothness, 0.0, v.x * uv.x + v.y * uv.y - (d-0.5+progress*(1.+smoothness))));
13862
13862
  return mix(getFromColor(uv), getToColor(uv), m);
13863
13863
  }
13864
- `,qee={direction:{value:[1,-1],type:"vec2<f32>"},smoothness:{value:.5,type:"f32"}},jee=`
13864
+ `,jee={direction:{value:[1,-1],type:"vec2<f32>"},smoothness:{value:.5,type:"f32"}},Kee=`
13865
13865
  uniform vec2 direction; // = vec2(-1.0, 1.0)
13866
13866
 
13867
13867
  const float smoothness = 0.5;
@@ -13874,7 +13874,7 @@ vec4 transition (vec2 uv) {
13874
13874
  float m = 1.0 - smoothstep(-smoothness, 0.0, v.x * uv.x + v.y * uv.y - (d - 0.5 + progress * (1.0 + smoothness)));
13875
13875
  return mix(getFromColor((uv - 0.5) * (1.0 - m) + 0.5), getToColor((uv - 0.5) * m + 0.5), m);
13876
13876
  }
13877
- `,Kee={direction:{value:[-1,1],type:"vec2<f32>"}},Qee=`
13877
+ `,Qee={direction:{value:[-1,1],type:"vec2<f32>"}},Zee=`
13878
13878
  uniform float threshold; // = 3.0
13879
13879
  uniform float fadeEdge; // = 0.1
13880
13880
 
@@ -13889,7 +13889,7 @@ vec4 transition(vec2 p) {
13889
13889
  float r = progress - min(rand(vec2(p.y, 0.0)), rand(vec2(0.0, p.x)));
13890
13890
  return mix(getFromColor(p), getToColor(p), mix(0.0, mix(step(dist, r), 1.0, smoothstep(1.0-fadeEdge, 1.0, progress)), smoothstep(0.0, fadeEdge, progress)));
13891
13891
  }
13892
- `,Zee={threshold:{value:3,type:"f32"},fadeEdge:{value:.1,type:"f32"}},Jee=`
13892
+ `,Jee={threshold:{value:3,type:"f32"},fadeEdge:{value:.1,type:"f32"}},$ee=`
13893
13893
  uniform float smoothness; // = 0.3
13894
13894
  uniform float opening; // = 1.0 (using float instead of bool for WebGPU: 1.0 = true, 0.0 = false)
13895
13895
 
@@ -13901,7 +13901,7 @@ vec4 transition (vec2 uv) {
13901
13901
  float m = smoothstep(-smoothness, 0.0, SQRT_2*distance(center, uv) - x*(1.0+smoothness));
13902
13902
  return mix(getFromColor(uv), getToColor(uv), opening > 0.5 ? 1.0 - m : m);
13903
13903
  }
13904
- `,M4={smoothness:{value:.3,type:"f32"},opening:{value:1,type:"f32"}},$ee=`
13904
+ `,M4={smoothness:{value:.3,type:"f32"},opening:{value:1,type:"f32"}},ete=`
13905
13905
  vec4 transition (vec2 uv) {
13906
13906
  if(progress == 0.0){
13907
13907
  return getFromColor(uv);
@@ -13913,7 +13913,7 @@ vec4 transition (vec2 uv) {
13913
13913
  float o = atan(leaf_uv.y, leaf_uv.x);
13914
13914
  return mix(getFromColor(uv), getToColor(uv), 1.0-step(1.0 - length(leaf_uv)+r*(1.0+sin(o))*(1.0+0.9 * cos(8.0*o))*(1.0+0.1*cos(24.0*o))*(0.9+0.05*cos(200.0*o)), 1.0));
13915
13915
  }
13916
- `,ete={},tte=`
13916
+ `,tte={},rte=`
13917
13917
  uniform float zoom; // = 0.88
13918
13918
  uniform float corner_radius; // = 0.22
13919
13919
 
@@ -14073,7 +14073,7 @@ vec4 transition(vec2 uv) {
14073
14073
  return getToColor(p);
14074
14074
  }
14075
14075
  }
14076
- `,rte={zoom:{value:.88,type:"f32"},corner_radius:{value:.22,type:"f32"}},ite=`
14076
+ `,ite={zoom:{value:.88,type:"f32"},corner_radius:{value:.22,type:"f32"}},nte=`
14077
14077
  float random(vec2 co) {
14078
14078
  float a = 12.9898;
14079
14079
  float b = 78.233;
@@ -14142,7 +14142,7 @@ vec4 transition(vec2 uv) {
14142
14142
  color2 = mix(color2, dColor1, smoothstep(1.0, 0.5, progress));
14143
14143
  return mix(color1, color2, val);
14144
14144
  }
14145
- `,nte=`
14145
+ `,ste=`
14146
14146
  uniform float strength; // = 0.4
14147
14147
 
14148
14148
  const float PI = 3.141592653589793;
@@ -14199,7 +14199,7 @@ vec4 transition(vec2 uv) {
14199
14199
  }
14200
14200
  return vec4(color / total, 1.0);
14201
14201
  }
14202
- `,ste={strength:{value:.4,type:"f32"}},ote=`
14202
+ `,ote={strength:{value:.4,type:"f32"}},ate=`
14203
14203
  uniform float a; // = 4
14204
14204
  uniform float b; // = 1
14205
14205
  uniform float amplitude; // = 120
@@ -14214,7 +14214,7 @@ vec4 transition(vec2 uv) {
14214
14214
  vec2 offset = dir * vec2(sin(progress * dist * amplitude * x), sin(progress * dist * amplitude * y)) / smoothness;
14215
14215
  return mix(getFromColor(p + offset), getToColor(p), smoothstep(0.2, 1.0, progress));
14216
14216
  }
14217
- `,ate={a:{value:4,type:"f32"},b:{value:1,type:"f32"},amplitude:{value:120,type:"f32"},smoothness:{value:.1,type:"f32"}},lte=`
14217
+ `,lte={a:{value:4,type:"f32"},b:{value:1,type:"f32"},amplitude:{value:120,type:"f32"},smoothness:{value:.1,type:"f32"}},ute=`
14218
14218
  // License: MIT
14219
14219
 
14220
14220
  vec2 bottom_left = vec2(0.0, 1.0);
@@ -14333,7 +14333,7 @@ vec4 transition (vec2 uv) {
14333
14333
  return getFromColor(uv);
14334
14334
  }
14335
14335
  }
14336
- `,ute=`
14336
+ `,cte=`
14337
14337
 
14338
14338
  const float SQRT_2 = 1.414213562373;
14339
14339
  uniform float dots;// = 20.0;
@@ -14342,4 +14342,4 @@ vec4 transition(vec2 uv) {
14342
14342
  bool nextImage = distance(fract(uv * dots), vec2(0.5, 0.5)) < ( progress / distance(uv, center));
14343
14343
  return nextImage ? getToColor(uv) : getFromColor(uv);
14344
14344
  }
14345
- `,cte={radialSwipe:{label:"Radial Swipe",fragment:gee}},Ah={};function hte(r,e){Ah[r]=e}function dte(r){delete Ah[r]}function qo(){return{...Yo.reduce((r,e)=>(r[e.name]={label:e.name,fragment:e.glsl,uniforms:e.defaultParams,previewDynamic:""},r),{}),...cte,...Ah}}qo();function D4(){const r=Object.keys(Ah);return Object.entries(qo()).map(([e,t])=>({key:e,label:t.label,isCustom:r.includes(e),previewStatic:t.previewStatic||`https://cdn.subgen.co/previews/static/transition_${e}_static.webp`,previewDynamic:t.previewDynamic||`https://cdn.subgen.co/previews/dynamic/transition_${e}_dynamic.webp`}))}const fte=D4();function c1({name:r,renderer:e}){let t=Yo.find(G=>G.name===r);if(!t){const G=qo(),ne=Object.keys(G).find(oe=>oe.toLowerCase()===r.toLowerCase());ne&&(t=G[ne])}if(t||(t=Yo.find(G=>G.name.toLowerCase()===r.toLowerCase())),!t){const G=[r,r.toLowerCase(),r.charAt(0).toUpperCase()+r.slice(1).toLowerCase(),r.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,""),r.replace(/_/g,"")],ne=qo();for(const oe of G){if(t=Yo.find(be=>be.name.toLowerCase()===oe.toLowerCase()),t)break;const te=Object.keys(ne).find(be=>be.toLowerCase()===oe.toLowerCase());if(te){t=ne[te];break}}}if(!t){const G=Yo.length,ne=Yo.slice(0,5).map(be=>be.name).join(", "),oe=qo(),te=Object.keys(oe).slice(0,3).join(", ");throw console.error(`Transition not found: "${r}". Available in gl-transitions (${G} total):`,ne+"..."),console.error("Available locally:",te+"..."),new Error(`Transition "${r}" not found in gl-transitions library or local definitions`)}const i=new Je(Q.WHITE),n=Ot.create({width:e.width,height:e.height}),s=new jr({}),o=new jr({}),a=t.name==="displacement"||r.toLowerCase()==="displacement"||t.label==="displacement",l=a?new jr({}):void 0;let u=null;if(a){u=document.createElement("canvas"),u.width=256,u.height=256;const G=u.getContext("2d");if(G){const ne=G.createImageData(256,256);for(let oe=0;oe<ne.data.length;oe+=4){const te=Math.random();ne.data[oe]=te*255,ne.data[oe+1]=te*255,ne.data[oe+2]=te*255,ne.data[oe+3]=255}G.putImageData(ne,0,0)}}let c=t.glsl||t.fragment;if(!c)throw new Error(`Transition "${r}" has no glsl or fragment code`);let h={...st.basics,...st.custom(t)};Object.entries(h).forEach(([,G])=>{G.type==="int<f32>"&&(G.type="i32",typeof G.value=="number"&&(G.value=Math.trunc(G.value))),G.type==="ivec2<f32>"&&(G.type="vec2<f32>")});const d=t.name==="GridFlip"||r.toLowerCase()==="gridflip"||t.label==="gridflip",f=t.name==="circle"||r.toLowerCase()==="circle"||t.label==="circle",p=t.name==="directional"||r.toLowerCase()==="directional"||t.label==="directional",m=t.name==="UndulatingBurnOut"||r.toLowerCase()==="undulatingburnout"||t.label==="undulatingBurnOut",g=t.name==="SquaresWire"||r.toLowerCase()==="squareswire"||t.label==="squaresWire",v=t.name==="rotate_scale_fade"||r.toLowerCase()==="rotatescalefade"||t.label==="rotateScaleFade",x=t.name==="RandomSquares"||r.toLowerCase()==="randomsquares"||t.label==="randomSquares",y=t.name==="polar_function"||r.toLowerCase()==="polar_function"||t.label==="polar_function",b=t.name==="pixelate"||r.toLowerCase()==="pixelate"||t.label==="pixelate",T=t.name==="perlin"||r.toLowerCase()==="perlin"||t.label==="perlin",P=t.name==="luma"||r.toLowerCase()==="luma"||t.label==="luma",A=t.name==="luminance_melt"||r.toLowerCase()==="luminance_melt"||r.toLowerCase()==="luminancemelt"||t.label==="luminance_melt",E=t.name==="hexagonalize"||r.toLowerCase()==="hexagonalize"||t.label==="hexagonalize",_=t.name==="heart"||r.toLowerCase()==="heart"||t.label==="heart",S=t.name==="displacement"||r.toLowerCase()==="displacement"||t.label==="displacement",I=t.name==="directionalwipe"||r.toLowerCase()==="directionalwipe"||r.toLowerCase()==="directional_wipe"||t.label==="directionalwipe",M=t.name==="directionalwarp"||r.toLowerCase()==="directionalwarp"||r.toLowerCase()==="directional_warp"||t.label==="directionalwarp",O=t.name==="crosshatch"||r.toLowerCase()==="crosshatch"||t.label==="crosshatch",U=t.name==="circleopen"||r.toLowerCase()==="circleopen"||r.toLowerCase()==="circle_open"||t.label==="circleopen",X=t.name==="cannabisleaf"||r.toLowerCase()==="cannabisleaf"||r.toLowerCase()==="cannabis_leaf"||t.label==="cannabisleaf",D=t.name==="StereoViewer"||r.toLowerCase()==="stereoviewer"||r.toLowerCase()==="stereo_viewer"||t.label==="StereoViewer",k=t.name==="GlitchDisplace"||r.toLowerCase()==="glitchDisplace"||t.label==="GlitchDisplace",Y=t.name==="CrossZoom"||r.toLowerCase()==="crosszoom"||t.label==="CrossZoom",H=t.name==="CrazyParametricFun"||r.toLowerCase()==="crazyparametricfun"||t.label==="CrazyParametricFun",$=t.name==="BowTieHorizontal"||r.toLowerCase()==="bowtiehorizontal"||t.label==="BowTieHorizontal",K=t.name==="PolkaDotsCurtain"||r.toLowerCase()==="polkadotscurtain"||t.label==="PolkaDotsCurtain",we=t.name==="Pixelize"||r.toLowerCase()==="pixelize"||t.label==="Pixelize";d&&(c=vee,h={...st.basics,...xee}),f&&(c=yee,h={...st.basics,...M4}),p&&(c=bee,h={...st.basics,..._ee}),m&&(c=wee,h={...st.basics,...See}),g&&(c=Tee,h={...st.basics,...Cee}),v&&(c=Aee,h={...st.basics,...Eee}),x&&(c=Pee,h={...st.basics,...Iee}),y&&(c=Bee,h={...st.basics,...kee}),b&&(c=Wk,h={...st.basics,...Vk}),T&&(c=Mee,h={...st.basics,...Dee}),P&&(c=Oee,h={...st.basics,...Uee}),A&&(c=zee,h={...st.basics,...Lee}),E&&(c=Nee,h={...st.basics,...Gee}),_&&(c=Hee,h={...st.basics,...Wee}),S&&(c=Vee,h={...st.basics,...Xee}),I&&(c=Yee,h={...st.basics,...qee}),M&&(c=jee,h={...st.basics,...Kee}),O&&(c=Qee,h={...st.basics,...Zee}),U&&(c=Jee,h={...st.basics,...M4}),X&&(c=$ee,h={...st.basics,...ete}),D&&(c=tte,h={...st.basics,...rte}),k&&(c=ite),Y&&(c=nte,h={...st.basics,...ste}),H&&(c=ote,h={...st.basics,...ate}),$&&(c=lte),K&&(c=ute),we&&(c=Ree,h={...st.basics,...Fee});const Ie={from:s,to:o,uniforms:h};a&&l&&(Ie.displacementMap=l,u&&(l.resource=u,l.update()));const ve=new ge({glProgram:new ue({vertex:fee,fragment:mee(c)}),resources:Ie});return i.filters=[ve],{render({width:G,height:ne,from:oe,to:te,progress:be}){if((i.width!==G||i.height!==ne)&&(i.setSize({width:G,height:ne}),n.resize(G,ne)),oe instanceof Q?ve.resources.from=oe.source:(s.resource=oe,s.update(),ve.resources.from=s),te instanceof Q?ve.resources.to=te.source:(o.resource=te,o.update(),ve.resources.to=o),a&&l&&u){if(u.width!==G||u.height!==ne){u.width=G,u.height=ne;const Le=u.getContext("2d");if(Le){const ke=Le.createImageData(G,ne);for(let Ae=0;Ae<ke.data.length;Ae+=4){const je=Math.random();ke.data[Ae]=je*255,ke.data[Ae+1]=je*255,ke.data[Ae+2]=je*255,ke.data[Ae+3]=255}Le.putImageData(ke,0,0)}}l.resource=u,l.update()}return ve.resources.uniforms.uniforms.progress=be,e.render({container:i,target:n,clear:!0,width:G,height:ne}),n},destroy(){n.destroy(),i.destroy({children:!0})}}}let pte=0;async function O4(r){r()>50&&(await wu(15),await O4(r))}class mte extends X0{static async isSupported(e={}){return(self.OffscreenCanvas!=null&&self.VideoEncoder!=null&&self.VideoDecoder!=null&&self.VideoFrame!=null&&self.AudioEncoder!=null&&self.AudioDecoder!=null&&self.AudioData!=null&&((await self.VideoEncoder.isConfigSupported({codec:e.videoCodec??"avc1.42E032",width:e.width??1920,height:e.height??1080,bitrate:e.bitrate??7e6})).supported??!1)&&(await self.AudioEncoder.isConfigSupported({codec:(await kk()).codec,sampleRate:rt.sampleRate,numberOfChannels:rt.channelCount})).supported)??!1}logger=Ue.create(`id:${pte++},`);destroyed=!1;sprites=[];canvas;pixiApp=null;stopOutput=null;opts;hasVideoTrack;constructor(e={}){super(),console.log("Compositor constructor",e);const{width:t=0,height:i=0}=e;this.canvas=new OffscreenCanvas(t,i),this.opts=Object.assign({bgColor:"#000",width:0,height:0,format:"mp4",videoCodec:"avc1.42E032",audio:!0,audioCodec:"aac",audioSampleRate:48e3,bitrate:5e6,fps:30,metaDataTags:null},e),console.log("Compositor opts",this.opts),this.hasVideoTrack=t*i>0,kk().catch(n=>{this.logger.warn("Failed to detect audio codec:",n)})}async initPixiApp(){const{width:e,height:t}=this.opts;if(this.pixiApp=new gc,await this.pixiApp.init({canvas:this.canvas,width:e,height:t,backgroundColor:0,antialias:!1,autoDensity:!1,resolution:1,preference:"webgl"}),this.pixiApp.renderer==null||this.pixiApp.stage==null)throw new Error("Pixi.js Application failed to initialize properly");try{const i=this.pixiApp;i.ticker&&typeof i.ticker.stop=="function"&&i.ticker.stop()}catch{}}async addSprite(e,t={}){const i={rect:{x:e.left,y:e.top,w:e.width,h:e.height},display:{...e.display},duration:e.duration,playbackRate:e.playbackRate,zIndex:e.zIndex};this.logger.info("Compositor add clip",i);const n=await e.clone();this.pixiApp!=null&&this.pixiApp.renderer!=null&&typeof n.setRenderer=="function"&&n.setRenderer(this.pixiApp.renderer),this.logger.info("Compositor add clip ready"),this.sprites.push(Object.assign(n,{main:t.main??!1,expired:!1})),this.sprites.sort((s,o)=>s.zIndex-o.zIndex)}initMuxer(e){const{fps:t,width:i,height:n,videoCodec:s,bitrate:o,audio:a,metaDataTags:l,format:u,audioCodec:c,audioSampleRate:h}=this.opts,d=this.sprites.some(m=>m.width>0&&m.height>0),f=this.hasVideoTrack&&d;return UO({format:u||"mp4",video:f?{width:i,height:n,expectFPS:t,codec:s,bitrate:o,__unsafe_hardwareAcceleration__:this.opts.__unsafe_hardwareAcceleration__}:null,audio:a===!1?null:{codec:c||rt.codecType,sampleRate:h||rt.sampleRate,channelCount:rt.channelCount},duration:e,metaDataTags:l})}output(e={}){if(console.log("Compositor output",e),this.sprites.length===0)throw Error("No sprite added");const t=this.sprites.find(u=>u.main),n=this.sprites.map(u=>u.display.from+u.duration).filter(u=>u!==1/0),s=e.maxTime??(t!=null?t.display.from+t.duration:n.length>0?Math.max(...n):0);if(s===1/0||s<=0)throw Error("Unable to determine the end time, please specify a main sprite, or limit the duration of Image, Audio");s===-1&&this.logger.warn("Unable to determine the end time, process value don't update"),this.logger.info(`start combinate video, maxTime:${s}`);const o=this.initMuxer(s);let a=performance.now();const l=this.runEncoding(o,s,{onProgress:u=>{this.logger.debug("OutputProgress:",u),this.emit("OutputProgress",u)},onEnded:async()=>{await o.flush(),this.logger.info("===== output ended =====, cost:",performance.now()-a),this.emit("OutputProgress",1),this.destroy()},onError:u=>{this.emit("error",u),o.close(),this.destroy()}});return this.stopOutput=()=>{l(),o.close()},o.stream}destroy(){if(!this.destroyed&&(this.destroyed=!0,this.stopOutput?.(),this.off("OutputProgress"),this.off("error"),this.pixiApp!=null))try{const e=this.pixiApp;if(e.destroyed===!0){this.pixiApp=null;return}if(e.ticker&&typeof e.ticker.stop=="function")try{e.ticker.stop()}catch{}if(e.renderer!=null){const t=e.renderer.gl;if(t&&t.isContextLost()){this.pixiApp=null;return}this.pixiApp.destroy()}}catch(e){console.warn("Error while destroying Pixi application:",e)}finally{this.pixiApp=null}}runEncoding(e,t,{onProgress:i,onEnded:n,onError:s}){let o=0;const a={aborted:!1};let l=null,u=null;const c=async()=>{const{fps:f,bgColor:p,audio:m}=this.opts,g=Math.round(1e6/f),v=this.sprites.some(b=>b.width>0&&b.height>0);u=gte({pixiApp:this.pixiApp,sprites:this.sprites,aborter:a});const x=vte({muxer:e,canvas:this.canvas,outputAudio:m,hasVideoTrack:this.hasVideoTrack&&v,timeSlice:g,fps:f});let y=0;for(;;){if(l!=null)return;if(a.aborted||t!==-1&&y>t||this.sprites.length===0){h(),await n();return}o=y/t;const{audios:b,mainSprDone:T}=await u.render(y);if(T){h(),await n();return}if(a.aborted)return;this.hasVideoTrack&&await wu(0),x(y,b,!0),y+=g,await O4(e.getEncodeQueueSize)}},h=()=>{a.aborted||(a.aborted=!0,clearInterval(d),u?.cleanup(),this.sprites.forEach(f=>{f.destroy()}))};c().catch(f=>{l=f,this.logger.error(f),h(),s(f)});const d=setInterval(()=>{i(o)},500);return h}exportToJSON(){const e=this.sprites.map(i=>Rl(i,i.main)),t=[];return this.sprites.forEach(i=>{if(i.transition){const n=this.sprites.filter(s=>s.id!==i.id&&s.zIndex===i.zIndex&&s.display.from<i.display.from&&(s instanceof br||s instanceof Bl)).sort((s,o)=>o.display.to-s.display.to)[0];n&&t.push({key:i.transition.name,duration:i.transition.duration,clips:[n.id,i.id]})}}),{clips:e,settings:{width:this.opts.width,height:this.opts.height,fps:this.opts.fps,bgColor:this.opts.bgColor,format:this.opts.format,videoCodec:this.opts.videoCodec,bitrate:this.opts.bitrate,audio:this.opts.audio,audioCodec:this.opts.audioCodec,audioSampleRate:this.opts.audioSampleRate,metaDataTags:this.opts.metaDataTags}}}async loadFromJSON(e){this.sprites.forEach(t=>{t.destroy()}),this.sprites=[],e.settings&&(e.settings.width!==void 0&&(this.opts.width=e.settings.width),e.settings.height!==void 0&&(this.opts.height=e.settings.height),e.settings.fps!==void 0&&(this.opts.fps=e.settings.fps),e.settings.bgColor!==void 0&&(this.opts.bgColor=e.settings.bgColor),e.settings.format!==void 0&&(this.opts.format=e.settings.format),e.settings.videoCodec!==void 0&&(this.opts.videoCodec=e.settings.videoCodec),e.settings.bitrate!==void 0&&(this.opts.bitrate=e.settings.bitrate),e.settings.audio!==void 0&&(this.opts.audio=e.settings.audio===!1?!1:void 0),e.settings.audioCodec!==void 0&&(this.opts.audioCodec=e.settings.audioCodec),e.settings.audioSampleRate!==void 0&&(this.opts.audioSampleRate=e.settings.audioSampleRate),e.settings.metaDataTags!==void 0&&(this.opts.metaDataTags=e.settings.metaDataTags));for(const t of e.clips){const i=await Xo(t);await this.addSprite(i,{main:t.main||!1})}}}function gte(r){const{pixiApp:e,sprites:t,aborter:i}=r,n=e!=null,s=new Map,o=new Map,a=new Map,l=Ot.create({width:e?.renderer.width||0,height:e?.renderer.height||0}),u=Ot.create({width:e?.renderer.width||0,height:e?.renderer.height||0}),c=new Ze().rect(0,0,e?.renderer.width||0,e?.renderer.height||0).fill({color:0}),h=new Map,d=async(b,T,P)=>{const A=Math.max(0,Math.min(T-b.display.from,b.duration));b.animate(A*b.playbackRate);const{video:E}=await P(b,A);return E},f=(b,T,P)=>{if(!e)return;const A=b.style||{},{renderTransform:E}=b,_=(E?.mirror??0)>.5,S=T instanceof Q?T:Q.from(T),I=E?.x??0,M=E?.y??0,O=E?.angle??0,U=E?.scale??1,X=E?.scaleX??1,D=E?.scaleY??1,k=E?.opacity??1,Y=E?.blur??0,H=E?.brightness??1,$=S.width||1,K=S.height||1,we=b.type==="Caption",Ie=!we&&b.width&&b.width!==0?Math.abs(b.width)/$:1,ve=!we&&b.height&&b.height!==0?Math.abs(b.height)/K:1,G=Ie*U*X,ne=ve*U*D,oe=new Pe;oe.x=b.center.x+I,oe.y=b.center.y+M,oe.rotation=(b.flip==null?1:-1)*((b.angle+O)*Math.PI)/180,oe.alpha=b.opacity*k;const te=new Je(S);te.anchor.set(.5,.5);let be=[];if(_){const Re=G,nt=ne,Bt=$*Re,Vt=K*nt;te.position.set(0,0),te.scale.set(Re,nt);const Qe=[[Bt,0,-Re,nt],[-Bt,0,-Re,nt],[0,Vt,Re,-nt],[0,-Vt,Re,-nt],[Bt,Vt,-Re,-nt],[-Bt,Vt,-Re,-nt],[Bt,-Vt,-Re,-nt],[-Bt,-Vt,-Re,-nt]];for(const[Oe,Ri,As,Fl]of Qe){const Un=new Je(S);Un.anchor.set(.5,.5),Un.position.set(Oe,Ri),Un.scale.set(As,Fl),be.push(Un)}if(b.flip==="horizontal"){te.scale.x=-Re;for(let Oe=0;Oe<8;Oe++)be[Oe].scale.x=-Qe[Oe][2]}else if(b.flip==="vertical"){te.scale.y=-nt;for(let Oe=0;Oe<8;Oe++)be[Oe].scale.y=-Qe[Oe][3]}oe.addChild(te);for(const Oe of be)oe.addChild(Oe)}else b.flip==="horizontal"?(te.scale.x=-G,te.scale.y=ne):b.flip==="vertical"?(te.scale.x=G,te.scale.y=-ne):(te.scale.x=G,te.scale.y=ne),oe.addChild(te);const Le=[];if(Y>0){const Re=new ys;Re.strength=Y,Re.quality=4,Re.repeatEdgePixels=!0,Le.push(Re)}if(H!==1){const Re=new Ro;Re.brightness(H,!1),Le.push(Re)}if(b.chromaKey&&b.chromaKey.enabled){const Re=new ft({uKeyColor:{value:[0,1,0],type:"vec3<f32>"},uSimilarity:{value:.1,type:"f32"},uSpill:{value:0,type:"f32"}}),nt=Fk(b.chromaKey.color);nt&&(Re.uniforms.uKeyColor[0]=nt.r/255,Re.uniforms.uKeyColor[1]=nt.g/255,Re.uniforms.uKeyColor[2]=nt.b/255),Re.uniforms.uSimilarity=b.chromaKey.similarity,Re.uniforms.uSpill=b.chromaKey.spill;const Bt=new ge({glProgram:new ue({vertex:qb,fragment:Xk,name:"ChromaKeyShader"}),resources:{chromaUniforms:Re}});Le.push(Bt)}oe.filters=Le;const ke=A.borderRadius||0;let Ae=null;ke>0&&(Ae=new Ze,Ae.roundRect(-$/2,-K/2,$,K,Math.min(ke,$/2,K/2)),Ae.fill({color:16777215,alpha:1}),te.addChild(Ae),te.mask=Ae);const je=A.stroke;let Fe=null;if(je&&je.width>0){Fe=new Ze;const Re=yt(je.color)??16777215;if(Fe.setStrokeStyle({width:je.width,color:Re,alignment:1}),ke>0){const nt=Math.min(ke,$/2,K/2);Fe.roundRect(-$/2,-K/2,$,K,nt)}else Fe.rect(-$/2,-K/2,$,K);Fe.stroke(),te.addChild(Fe)}const at=A.dropShadow;let it=null;if(at&&(at.blur>0||at.distance>0)){it=new Ze;const Re=yt(at.color)??0,nt=at.alpha??.5,Bt=at.distance??0,Vt=at.angle??0,Qe=Math.cos(Vt)*Bt,Oe=Math.sin(Vt)*Bt;if(ke>0){const Ri=Math.min(ke,$/2,K/2);it.roundRect(-$/2+Qe,-K/2+Oe,$,K,Ri)}else it.rect(-$/2+Qe,-K/2+Oe,$,K);it.fill({color:Re,alpha:nt}),oe.addChildAt(it,0)}e.renderer.render({container:oe,target:P,clear:!0}),T instanceof Q||te.texture.destroy(!0),Fe&&Fe.destroy(),Ae&&Ae.destroy(),it&&it.destroy();for(const Re of be)Re.destroy();te.destroy(),oe.destroy()};let p=null,m=null,g=null;n&&e!=null&&(p=new Pe,m=new Pe,g=new Pe,m.sortableChildren=!0,g.sortableChildren=!0,e.stage.addChild(m),e.stage.addChild(g),p.visible=!1,e.stage.addChild(p));const v=[...t].sort((b,T)=>b.zIndex-T.zIndex);return{render:async b=>{const T=[];let P=!1,A=!1;const E=new Map,_=async(S,I)=>{if(E.has(S))return E.get(S);const M=await S.getFrame(I);return E.set(S,M),M};for(const S of a.values())S.visible=!1;for(const S of v){if(i.aborted)break;if(b<S.display.from||S.expired){if(n&&e!=null){const D=s.get(S);D&&await D.updateFrame(null)}continue}const I=b-S.display.from,M=I*S.playbackRate;S.animate(M);const{video:O,audio:U,done:X}=await _(S,I);if(T.push(U),n&&e!=null&&m!=null){if(S instanceof Bi){const k=t.find(H=>H.id===S.fromClipId),Y=t.find(H=>H.id===S.toClipId);if(k&&Y){const H=b-S.display.from;if(H>=S.duration){S.expired=!0;const $=a.get(S.id);$&&($.visible=!1)}else{const $=await d(k,b,_),K=await d(Y,b,_);if($&&K){const we=Math.min(Math.max(H/S.duration,0),1);f(k,$,l),f(Y,K,u);let Ie=o.get(S.id);Ie||(Ie=c1({name:S.transitionEffect.key,renderer:e.renderer}),o.set(S.id,Ie));const ve=Ie.render({width:e.renderer.width,height:e.renderer.height,from:l,to:u,progress:we});let G=a.get(S.id);G||(G=new Je,G.label=`TransitionSprite_${S.id}`,a.set(S.id,G),m.addChild(G)),G.texture=ve,G.visible=!0,G.x=0,G.y=0,G.width=e.renderer.width,G.height=e.renderer.height,G.anchor.set(0,0),G.zIndex=S.zIndex,A=!0;const ne=s.get(k);if(ne){const te=ne.getRoot();te&&(te.visible=!1)}const oe=s.get(Y);if(oe){const te=oe.getRoot();te&&(te.visible=!1)}continue}}}}let D=s.get(S);if(D==null&&O!=null&&(D=new R4(e,S,m),s.set(S,D)),D!=null){const k=D.getRoot();O!=null?(A=!0,k&&(k.visible=!0),await D.updateFrame(O)):(k&&(k.visible=!1),await D.updateFrame(null)),D.updateTransforms()}}if(S.duration>0&&I>=S.duration||X){if(S.main&&(P=!0),S.expired=!0,n){const D=s.get(S);if(D!=null){const k=D.getRoot();k&&(k.visible=!1)}}}else if(n){const D=s.get(S);D?.updateTransforms()}}if(n&&e!=null&&p!=null&&m!=null&&g!=null){const S=[];for(const I of t)if(I instanceof Qi&&b>=I.display.from&&b<I.display.from+I.duration&&S.push({id:I.id,key:I.effect.key,startTime:I.display.from,duration:I.duration,zIndex:I.zIndex,values:I.effect.values}),I.effects&&I.effects.length>0)for(const M of I.effects)b>=M.startTime&&b<M.startTime+M.duration&&S.push({...M,zIndex:I.zIndex});S.sort((I,M)=>I.zIndex-M.zIndex),g.removeChildren();for(const I of s.values()){const M=I.getRoot();M&&M.parent!==m&&(M.parent&&M.parent.removeChild(M),m.addChild(M))}if(S.length>0){const I=e.renderer.width,M=e.renderer.height;let O=null;const U=new Set,X=[];for(const D of S){const{key:k,startTime:Y,duration:H,id:$,zIndex:K}=D,we=b-Y,Ie=H>0?Math.min(Math.max(we/H,0),1):0,ve=t.some(G=>G.id===$&&G instanceof Qi);if(p.removeChildren(),O){const G=new Je(O);G.width=I,G.height=M,p.addChild(G)}for(const G of t){if(U.has(G.id))continue;let ne=!1;if(ve?ne=G.id!==$&&G.zIndex<K:ne=!!G.effects&&G.effects.some(oe=>oe.id===$),ne){const oe=s.get(G);if(oe){const be=oe.getRoot();be&&(be.parent&&be.parent.removeChild(be),p.addChild(be),U.add(G.id))}const te=a.get(G.id);te&&(te.parent&&te.parent.removeChild(te),p.addChild(te),U.add(G.id))}}if(p.children.length>0){let G=h.get($);if(!G)try{const ne=await l1({name:k,renderer:e.renderer,values:D.values});ne&&ne.filter&&(G={filter:ne.filter,render:ne.render},h.set($,G))}catch(ne){console.warn("Failed to create effect",k,ne)}if(G){const{filter:ne,render:oe}=G;ne.resources&&ne.resources.effectUniforms&&(ne.resources.effectUniforms.uniforms.uTime=Ie);const te=Ot.create({width:I,height:M});X.push(te),p.visible=!0,e.renderer.render({container:p,target:te,clear:!0}),p.visible=!1,oe&&(O=oe({canvasTexture:te,progress:Ie,width:I,height:M}))}}}if(O){const D=new Je(O);D.width=I,D.height=M,g.addChild(D)}for(const D of X)D.destroy(!0)}}return n&&e!=null&&e.render(),{audios:T,mainSprDone:P,hasVideo:A}},cleanup:()=>{l&&l.destroy(!0),u&&u.destroy(!0),c&&c.destroy(!0);for(const b of a.values())b.destroy();a.clear(),o.clear(),p&&p.destroy({children:!0}),m&&m.destroy({children:!0}),g&&g.destroy({children:!0}),s.forEach(b=>{b.destroy()}),s.clear()}}}function vte(r){const{canvas:e,outputAudio:t,muxer:i,hasVideoTrack:n,timeSlice:s}=r;let o=0;const a=Math.floor(3*r.fps),l=xte(1024);return(u,c,h)=>{if(t!==!1)for(const d of l(u,c))i.encodeAudio(d);if(n&&h)try{const d=new VideoFrame(e,{duration:s,timestamp:u});i.encodeVideo(d,{keyFrame:o%a===0}),o+=1}catch(d){console.warn("Failed to create VideoFrame from canvas, skipping frame:",d)}}}function xte(r){const e=r*rt.channelCount,t=new Float32Array(e*3);let i=0,n=0;const s=r/rt.sampleRate*1e6,o=new Float32Array(e),a=l=>{let u=0;const c=Math.floor(i/e),h=[];for(let d=0;d<c;d++)h.push(new AudioData({timestamp:n,numberOfChannels:rt.channelCount,numberOfFrames:r,sampleRate:rt.sampleRate,format:"f32",data:t.subarray(u,u+e)})),u+=e,n+=s;for(t.set(t.subarray(u,i),0),i-=u;l-n>s;)h.push(new AudioData({timestamp:n,numberOfChannels:rt.channelCount,numberOfFrames:r,sampleRate:rt.sampleRate,format:"f32",data:o})),n+=s;return h};return(l,u)=>{const c=Math.max(...u.map(h=>h[0]?.length??0));for(let h=0;h<c;h++){let d=0,f=0;for(let p=0;p<u.length;p++){const m=u[p][0]?.[h]??0,g=u[p][1]?.[h]??m;d+=m,f+=g}t[i]=d,t[i+1]=f,i+=2}return a(l)}}class yte extends Ze{constructor(){super(),this.eventMode="static",this.cursor="move"}draw(e,t=1){const n=1.5*t;this.clear(),this.setStrokeStyle({width:n,color:165063}).rect(e.x,e.y,e.width,e.height).stroke(),this.hitArea=e}}class Ji extends Ze{#e=!1;handle;cursor;callbacks;constructor(e,t,i){super(),this.handle=e,this.cursor=t,this.callbacks=i,this.eventMode="static",this.#l(),this.on("pointerdown",this.#r),this.on("globalpointermove",this.#n),this.on("pointerup",this.#u),this.on("pointerupoutside",this.#u)}#l(){this.clear();const e=165063;if(this.handle==="rot")this.circle(0,0,8),this.fill({color:"#ffffff"}),this.stroke({width:1,color:13421772}),this.moveTo(0,-4),this.arc(0,0,4,-Math.PI/2,Math.PI,!1),this.stroke({width:1,color:0}),this.moveTo(0,-8),this.lineTo(-3,-5),this.lineTo(0,-2),this.stroke({width:1,color:0,cap:"round",join:"round"}),this.hitArea=new sl(0,0,24);else if(["ml","mr","mt","mb"].includes(this.handle)){const t=this.handle==="ml"||this.handle==="mr",i=t?6:24,n=t?24:6;this.roundRect(-i/2,-n/2,i,n,3),this.fill({color:"#ffffff"}),this.stroke({width:1,color:e}),this.hitArea=new he(-15,-15,30,30)}else this.rect(-4,-4,8,8),this.fill({color:"#ffffff"}),this.stroke({width:1,color:e}),this.hitArea=new he(-15,-15,30,30)}#r=e=>{this.#e=!0,this.cursor="grabbing",this.callbacks.beginDrag(this.handle,e.global)};#n=e=>{this.#e&&this.callbacks.updateDrag(this.handle,e.global)};#u=e=>{this.#e&&(this.#e=!1,this.cursor="pointer",this.callbacks.endDrag())}}class Eh{constructor(e,t,i=1){this.artboardWidth=e,this.artboardHeight=t,this.scale=i}static SNAP_THRESHOLD=5;updateContext(e,t,i){this.artboardWidth=e,this.artboardHeight=t,this.scale=i}snapMove(e){const t=[];let i=0,n=0;const s=Eh.SNAP_THRESHOLD/this.scale,o=[{value:this.artboardWidth/2,label:"center"},{value:0,label:"start"},{value:this.artboardWidth,label:"end"}],a=[{value:e.x,type:"start"},{value:e.x+e.width/2,type:"center"},{value:e.x+e.width,type:"end"}];let l=!1;for(const d of o){if(l)break;for(const f of a){const p=d.value-f.value;if(Math.abs(p)<s){i=p,l=!0,t.push({type:"vertical",position:d.value,start:Math.min(0,e.y),end:Math.max(this.artboardHeight,e.y+e.height)});break}}}const u=[{value:this.artboardHeight/2,label:"center"},{value:0,label:"start"},{value:this.artboardHeight,label:"end"}],c=[{value:e.y,type:"start"},{value:e.y+e.height/2,type:"center"},{value:e.y+e.height,type:"end"}];let h=!1;for(const d of u){if(h)break;for(const f of c){const p=d.value-f.value;if(Math.abs(p)<s){n=p,h=!0,t.push({type:"horizontal",position:d.value,start:Math.min(0,e.x),end:Math.max(this.artboardWidth,e.x+e.width)});break}}}return{dx:i,dy:n,guides:t}}snapResize(e){const t=e.clone(),{dx:i,dy:n,guides:s}=this.snapMove(t);return t.x+=i,t.y+=n,{corrected:t,guides:s}}snapPoint(e){const t=Eh.SNAP_THRESHOLD/this.scale,i=[],n=e.clone(),s=[0,this.artboardWidth/2,this.artboardWidth];for(const a of s)if(Math.abs(a-e.x)<t){n.x=a,i.push({type:"vertical",position:a,start:0,end:this.artboardHeight});break}const o=[0,this.artboardHeight/2,this.artboardHeight];for(const a of o)if(Math.abs(a-e.y)<t){n.y=a,i.push({type:"horizontal",position:a,start:0,end:this.artboardWidth});break}return{p:n,guides:i}}}const U4={delta:new ae};class z4 extends Pe{group;wireframe=new yte;selectionOutlines=new Ze;isDragging=!1;lastPointer=new me;activeHandle=null;#e;#l=new Map;#r=new me;#n=0;#u=0;#c=new he;#i=new me;#s=new he;#t=[new me,new me,new me,new me];#o=1;#a=1;#h;#d=new Ze;#m=new me;opts;constructor(e){super(),this.opts=e,this.group=e.group,this.eventMode="static",this.#h=new Eh(e.artboardWidth??1920,e.artboardHeight??1080),this.addChild(this.#d);const t={beginDrag:(i,n)=>this.#A(i,n),updateDrag:(i,n)=>this.#E(i,n),endDrag:()=>this.#v()};this.#e={tl:new Ji("tl","nwse-resize",t),tr:new Ji("tr","nesw-resize",t),bl:new Ji("bl","nesw-resize",t),br:new Ji("br","nwse-resize",t),ml:new Ji("ml","ew-resize",t),mr:new Ji("mr","ew-resize",t),mt:new Ji("mt","ns-resize",t),mb:new Ji("mb","ns-resize",t),rot:new Ji("rot","crosshair",{beginDrag:(i,n)=>this.#B(n),updateDrag:(i,n)=>this.#k(n),endDrag:()=>this.#v()})},this.addChild(this.selectionOutlines,this.wireframe,...Object.values(this.#e)),this.#w(),this.visible=!1,Ft.shared.addOnce(()=>{this.showImmediate()})}#x=!1;showImmediate(){this.#x||this.destroyed||!this.parent||(this.#f(),this.visible=!0,this.#x=!0)}#w(){this.on("pointerdown",this.#S),this.on("pointerup",this.#y),this.on("pointerupoutside",this.#y),this.on("globalpointermove",this.#T)}#f(){if(this.group.length===1){const e=this.group[0];this.#n=e.rotation;const t=this.#g(e);let i,n;this.opts.clip?(i=this.opts.clip.width,n=this.opts.clip.height):(i=t.width,n=t.height);const s=e.toGlobal(new me(0,0));this.#r.set(s.x,s.y),this.#s.copyFrom(new he(-i/2,-n/2,i,n))}else{let e=1/0,t=1/0,i=-1/0,n=-1/0;if(this.parent)for(const u of this.group){const c=this.#g(u);this.#t[0].set(c.x,c.y),this.#t[1].set(c.x+c.width,c.y),this.#t[2].set(c.x+c.width,c.y+c.height),this.#t[3].set(c.x,c.y+c.height);for(const h of this.#t)u.toGlobal(h,h),this.toLocal(h,void 0,h),e=Math.min(e,h.x),t=Math.min(t,h.y),i=Math.max(i,h.x),n=Math.max(n,h.y)}const s=i-e,o=n-t,a=e+s/2,l=t+o/2;if(this.#s.copyFrom(new he(-s/2,-o/2,s,o)),this.parent){const u=this.toGlobal(new me(a,l));this.#r.set(u.x,u.y)}}this.#p()}#g(e){let t=null;const i=u=>{if(u.label==="MainSprite"&&u instanceof Je)return u;for(const c of u.children)if(c instanceof Pe){const h=i(c);if(h)return h}return null};if(t=i(e),t){const u=t.getLocalBounds(),c=t.localTransform.clone(),h=c.apply(new me(u.x,u.y)),d=c.apply(new me(u.x+u.width,u.y)),f=c.apply(new me(u.x+u.width,u.y+u.height)),p=c.apply(new me(u.x,u.y+u.height)),m=Math.min(h.x,d.x,f.x,p.x),g=Math.max(h.x,d.x,f.x,p.x),v=Math.min(h.y,d.y,f.y,p.y),x=Math.max(h.y,d.y,f.y,p.y);return new he(m,v,g-m,x-v)}let n=1/0,s=1/0,o=-1/0,a=-1/0;const l=e.children.filter(u=>u.label!=="ShadowContainer"&&u.label!=="AnimationContainer");if(l.length===0&&e.children.length>0){const u=e.children.find(c=>c.label==="AnimationContainer");if(u){const c=u.getLocalBounds();return new he(c.minX,c.minY,c.maxX-c.minX,c.maxY-c.minY)}}for(const u of l){const c=u.getBounds(),h=e.toLocal(new me(c.minX,c.minY)),d=e.toLocal(new me(c.maxX,c.maxY));n=Math.min(n,h.x,d.x),s=Math.min(s,h.y,d.y),o=Math.max(o,h.x,d.x),a=Math.max(a,h.y,d.y)}if(n===1/0){const u=e.getLocalBounds();return new he(u.minX,u.minY,u.maxX-u.minX,u.maxY-u.minY)}return new he(n,s,o-n,a-s)}updateBounds(){this.#f()}#S=e=>{e.button===0&&(this.opts.locked||(this.#f(),this.#m.copyFrom(this.#r),this.isDragging=!0,this.lastPointer.copyFrom(e.global),this.cursor="grabbing"))};#y=()=>{this.isDragging&&this.#v(),this.cursor="default"};#T=e=>{if(!this.isDragging||this.activeHandle||!this.parent)return;const{moveDx:t,moveDy:i,newPivotWorld:n}=this.#C(e);for(const s of this.group)s.x+=t,s.y+=i;this.#r.copyFrom(n),this.lastPointer.copyFrom(e.global),this.#p(),this.emit("transforming")};#C(e){const t=Math.abs(this.parent.worldTransform.a);this.#h.updateContext(this.opts.artboardWidth??1920,this.opts.artboardHeight??1080,t);const i=e.global.x-this.lastPointer.x,n=e.global.y-this.lastPointer.y;this.#m.x+=i,this.#m.y+=n;const s=this.parent.toLocal(this.#m),o=new he(s.x+this.#s.x,s.y+this.#s.y,this.#s.width,this.#s.height),{dx:a,dy:l,guides:u}=this.#h.snapMove(o);this.#b(u,t);const c=s.x+a,h=s.y+l,d=this.parent.toLocal(this.#r),f=c-d.x,p=h-d.y,m=this.parent.toGlobal(new me(c,h));return{moveDx:f,moveDy:p,newPivotWorld:m}}#A(e,t){this.#f(),this.isDragging=!0,this.activeHandle=e,this.#l.clear();for(const i of this.group)this.#l.set(i,i.localTransform.clone());this.rotation=this.#n,this.#c.copyFrom(this.#s),this.#F(e)}#E(e,t){this.#P(e,t)}async#P(e,t){const{proposed:i,sx:n,sy:s,pivotWorld:o}=await this.#I(e,t),a=this.opts.clip&&this.opts.clip.type==="Text",l=this.opts.clip&&this.opts.clip.type==="Caption";a||l?this.emit("textClipResize",{handle:e,newWidth:i.width,newHeight:i.height,pivotWorld:o,proposed:i,sx:n,sy:s}):this.#_(this.#D(o,this.#n,n,s)),this.#s.copyFrom(i),this.#p(),this.emit("transforming")}async#I(e,t){const i=this.#i,n=this.#M(e,this.toLocal(t),i),s=this.parent?Math.abs(this.parent.worldTransform.a):1;this.#h.updateContext(this.opts.artboardWidth??1920,this.opts.artboardHeight??1080,s);const{dx:o,dy:a,guides:l}=this.#h.snapMove(n);n.x+=o,n.y+=a,this.#b(l,s);const u=n.width/this.#c.width,c=n.height/this.#c.height,h=this.toGlobal(i);return{proposed:n,sx:u,sy:c,pivotWorld:h}}#B(e){this.#f(),this.isDragging=!0,this.activeHandle="rot",this.#l.clear();for(const t of this.group)this.#l.set(t,t.localTransform.clone());this.#u=Math.atan2(e.y-this.#r.y,e.x-this.#r.x)}#k(e){const i=Math.atan2(e.y-this.#r.y,e.x-this.#r.x)-this.#u,n=this.#n+i;this.#_(this.#O(this.#r,i)),this.rotation=n,this.#p(n),this.emit("transforming")}#v(){this.isDragging=!1,this.#n=this.rotation,this.activeHandle=null,this.#d.clear(),this.#p(this.#n),this.emit("transformEnd")}#b(e,t){if(this.#d.clear(),!(!e.length||!this.parent)){this.#d.stroke({width:1/t,color:4774907});for(const i of e){let n,s;i.type==="vertical"?(n=new me(i.position,i.start),s=new me(i.position,i.end)):(n=new me(i.start,i.position),s=new me(i.end,i.position)),this.toLocal(n,this.parent,n),this.toLocal(s,this.parent,s),this.#d.moveTo(n.x,n.y).lineTo(s.x,s.y).stroke({width:1/t,color:4774907})}}}#p(e=this.#n){this.parent&&this.position.copyFrom(this.parent.toLocal(this.#r)),this.rotation=e;const i=1/((this.parent?Math.abs(this.parent.worldTransform.a):1)||1),n=this.#s;this.wireframe.draw(n,i);const s=n.x+n.width/2,o=n.y+n.height/2,l=this.opts.locked?[]:this.opts.clip?.getVisibleHandles?.()??["tl","tr","bl","br","ml","mr","mt","mb","rot"],u=[this.#e.tl,this.#e.tr,this.#e.bl,this.#e.br,this.#e.ml,this.#e.mr,this.#e.mt,this.#e.mb,this.#e.rot];for(const c of u)c.scale.set(i);this.#e.tl.visible=l.includes("tl"),this.#e.tr.visible=l.includes("tr"),this.#e.bl.visible=l.includes("bl"),this.#e.br.visible=l.includes("br"),this.#e.ml.visible=l.includes("ml"),this.#e.mr.visible=l.includes("mr"),this.#e.mt.visible=l.includes("mt"),this.#e.mb.visible=l.includes("mb"),this.#e.rot.visible=l.includes("rot"),this.#e.tl.position.set(n.x,n.y),this.#e.tr.position.set(n.x+n.width,n.y),this.#e.bl.position.set(n.x,n.y+n.height),this.#e.br.position.set(n.x+n.width,n.y+n.height),this.#e.ml.position.set(n.x,o),this.#e.mr.position.set(n.x+n.width,o),this.#e.mt.position.set(s,n.y),this.#e.mb.position.set(s,n.y+n.height),this.#e.rot.position.set(s,n.y-30*i),this.#R(i)}#R(e){if(this.selectionOutlines.clear(),this.group.length<=1||!this.parent)return;const t={width:1*e,color:43775,alpha:1};for(const i of this.group){const n=this.#g(i);this.#t[0].set(n.x,n.y),this.#t[1].set(n.x+n.width,n.y),this.#t[2].set(n.x+n.width,n.y+n.height),this.#t[3].set(n.x,n.y+n.height);for(const s of this.#t)i.toGlobal(s,s),this.toLocal(s,void 0,s);this.selectionOutlines.moveTo(this.#t[0].x,this.#t[0].y).lineTo(this.#t[1].x,this.#t[1].y).lineTo(this.#t[2].x,this.#t[2].y).lineTo(this.#t[3].x,this.#t[3].y).closePath().stroke(t)}}#F(e){const t=this.#c;if(this.opts.centeredScaling){this.#i.set(t.x+t.width/2,t.y+t.height/2);return}e==="tl"?this.#i.set(t.x+t.width,t.y+t.height):e==="tr"?this.#i.set(t.x,t.y+t.height):e==="bl"?this.#i.set(t.x+t.width,t.y):e==="br"?this.#i.set(t.x,t.y):e==="ml"?this.#i.set(t.x+t.width,t.y+t.height/2):e==="mr"?this.#i.set(t.x,t.y+t.height/2):e==="mt"?this.#i.set(t.x+t.width/2,t.y+t.height):e==="mb"&&this.#i.set(t.x+t.width/2,t.y)}#M(e,t,i){if(this.opts.centeredScaling){const s=Math.max(this.#o,Math.abs(t.x-i.x)*2),o=Math.max(this.#a,Math.abs(t.y-i.y)*2);return new he(i.x-s/2,i.y-o/2,s,o)}if(e==="tl"){const s=Math.min(t.x,i.x-this.#o),o=Math.min(t.y,i.y-this.#a);return new he(s,o,i.x-s,i.y-o)}if(e==="tr"){const s=Math.max(t.x,i.x+this.#o),o=Math.min(t.y,i.y-this.#a);return new he(i.x,o,s-i.x,i.y-o)}if(e==="bl"){const s=Math.min(t.x,i.x-this.#o),o=Math.max(t.y,i.y+this.#a);return new he(s,i.y,i.x-s,o-i.y)}if(e==="br"){const s=Math.max(t.x,i.x+this.#o),o=Math.max(t.y,i.y+this.#a);return new he(i.x,i.y,s-i.x,o-i.y)}const n=this.#c;if(e==="ml"){const s=Math.min(t.x,i.x-this.#o);return new he(s,n.y,i.x-s,n.height)}if(e==="mr"){const s=Math.max(t.x,i.x+this.#o);return new he(i.x,n.y,s-i.x,n.height)}if(e==="mt"){const s=Math.min(t.y,i.y-this.#a);return new he(n.x,s,n.width,i.y-s)}if(e==="mb"){const s=Math.max(t.y,i.y+this.#a);return new he(n.x,i.y,n.width,s-i.y)}return new he(i.x,i.y,this.#o,this.#a)}#D(e,t,i,n){return U4.delta.identity().translate(-e.x,-e.y).rotate(-t).scale(i,n).rotate(t).translate(e.x,e.y)}#O(e,t){return U4.delta.identity().translate(-e.x,-e.y).rotate(t).translate(e.x,e.y)}#_(e){for(const t of this.group){const i=this.#l.get(t),n=t.parent;if(!i||!n)continue;const s=n.worldTransform.clone().invert(),o=n.worldTransform.clone().append(i),a=e.clone().append(o),l=s.clone().append(a);t.setFromMatrix(l)}}}class bte{constructor(e){this.studio=e}selectedClips=new Set;activeTransformer=null;interactiveClips=new Set;selectionGraphics=null;isDragSelecting=!1;dragSelectionStart=new me;isUpdatingTextRealtime=!1;textClipResizedWidth=null;textClipResizeHandle=null;textClipResizedSx=null;textClipResizedSy=null;init(e,t){this.selectionGraphics=new Ze,this.selectionGraphics.visible=!1,this.selectionGraphics.zIndex=1e3,t.addChild(this.selectionGraphics),e.stage.eventMode="static",e.stage.hitArea=e.screen,e.stage.on("pointerdown",i=>this.onStagePointerDown(i)),e.stage.on("globalpointermove",i=>this.onStagePointerMove(i)),e.stage.on("pointerup",()=>this.onStagePointerUp()),e.stage.on("pointerupoutside",()=>this.onStagePointerUp())}onStagePointerDown(e){e.target===this.studio.pixiApp?.stage&&(e.shiftKey||this.deselectClip(),this.isDragSelecting=!0,this.studio.artboard?.toLocal(e.global,void 0,this.dragSelectionStart),this.selectionGraphics&&(this.selectionGraphics.clear(),this.selectionGraphics.visible=!0))}onStagePointerMove(e){if(this.isDragSelecting&&this.selectionGraphics&&this.studio.artboard){const t=this.studio.artboard.toLocal(e.global),i=Math.min(this.dragSelectionStart.x,t.x),n=Math.min(this.dragSelectionStart.y,t.y),s=Math.abs(t.x-this.dragSelectionStart.x),o=Math.abs(t.y-this.dragSelectionStart.y);this.selectionGraphics.clear(),this.selectionGraphics.rect(i,n,s,o).fill({color:703971,alpha:.3}),this.selectionGraphics.rect(i,n,s,o).stroke({width:2,color:703971});const a=this.selectionGraphics.getBounds(),l=new he(a.x,a.y,a.width,a.height);if(l.width>2||l.height>2){const u=this.getIntersectingClips(l);this.updatePreviewSelection(u)}else this.selectedClips.size===0&&this.destroyTransformer()}}onStagePointerUp(){if(this.isDragSelecting&&this.selectionGraphics&&this.studio.artboard){const e=this.selectionGraphics.getBounds(),t=new he(e.x,e.y,e.width,e.height);if(t.width>2||t.height>2){const i=this.getIntersectingClips(t);if(i.length>0){for(const n of i)this.selectedClips.add(n);this.recreateTransformer(),this.studio.emit("selection:created",{selected:Array.from(this.selectedClips)})}else this.selectedClips.size===0&&this.destroyTransformer()}else this.selectedClips.size===0&&this.destroyTransformer();this.selectionGraphics.clear(),this.selectionGraphics.visible=!1,this.isDragSelecting=!1,this.studio.pixiApp?.render()}}getIntersectingClips(e){const t=[];for(const i of this.studio.clips){const n=this.studio.spriteRenderers.get(i);if(!n)continue;const s=n.getRoot();if(!s||!s.visible)continue;const o=s.getBounds();e.x<o.x+o.width&&e.x+e.width>o.x&&e.y<o.y+o.height&&e.y+e.height>o.y&&t.push(i)}return t}updatePreviewSelection(e){if(e.length===0){this.selectedClips.size===0?this.destroyTransformer():this.recreateTransformer();return}const t=new Set(e),i=[];let n=null;for(const s of t){const o=this.studio.spriteRenderers.get(s);if(o==null)continue;const a=o.getRoot();a!=null&&(i.push(a),t.size===1&&(n=s))}if(i.length===0){this.selectedClips.size===0&&this.destroyTransformer();return}this.activeTransformer?(this.activeTransformer.group=i,this.activeTransformer.opts.group=i,this.activeTransformer.opts.clip=n,this.activeTransformer.updateBounds(),this.activeTransformer.showImmediate()):(this.activeTransformer=new z4({group:i,clip:n,artboardWidth:this.studio.opts.width,artboardHeight:this.studio.opts.height}),this.studio.artboard?.addChild(this.activeTransformer),this.activeTransformer.showImmediate()),this.studio.pixiApp?.render()}setupSpriteInteractivity(e){if(this.interactiveClips.has(e))return;const t=this.studio.spriteRenderers.get(e);if(t==null)return;const i=t.getRoot();i!=null&&(i.eventMode="static",i.cursor="pointer",i.on("pointerdown",n=>{const s=this.getTopmostClipAtPoint(n.global);s&&this.selectClip(s,n.shiftKey)}),this.interactiveClips.add(e))}getTopmostClipAtPoint(e){if(!this.studio.pixiApp)return null;let t=null,i=-1/0;for(const n of this.interactiveClips){const s=this.studio.spriteRenderers.get(n);if(!s)continue;const o=s.getRoot();if(!o||!o.visible)continue;const a=o.toLocal(e),l=o.getLocalBounds();a.x>=l.minX&&a.x<=l.maxX&&a.y>=l.minY&&a.y<=l.maxY&&n.zIndex>i&&(i=n.zIndex,t=n)}return t}selectClip(e,t=!1){if(!(this.studio.destroyed||this.studio.pixiApp==null)){if(t||this.deselectClip(),t&&this.selectedClips.has(e)){this.selectedClips.delete(e),this.recreateTransformer(),this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)}),this.studio.pixiApp?.render();return}this.selectedClips.add(e),this.recreateTransformer(),t?this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)}):this.studio.emit("selection:created",{selected:Array.from(this.selectedClips)}),this.studio.pixiApp?.render()}}selectClipsByIds(e){const t=this.studio.clips.filter(i=>e.includes(i.id));this.setSelection(t)}setSelection(e){if(!(this.studio.destroyed||this.studio.pixiApp==null)&&!(this.selectedClips.size===e.length&&e.every(t=>this.selectedClips.has(t)))){for(const t of this.selectedClips)this.syncSpriteToClipProperties(t);this.destroyTransformer(),this.selectedClips.clear();for(const t of e)this.selectedClips.add(t);this.selectedClips.size>0?(this.createTransformer(),this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)})):this.studio.emit("selection:cleared",{deselected:[]}),this.studio.pixiApp?.render()}}deselectClip(){if(this.selectedClips.size>0)for(const t of this.selectedClips)this.syncSpriteToClipProperties(t);this.destroyTransformer();const e=Array.from(this.selectedClips);this.selectedClips.clear(),e.length>0&&this.studio.emit("selection:cleared",{deselected:e}),this.studio.pixiApp?.render()}async move(e,t){if(this.selectedClips.size===0)return;const i=[];for(const n of this.selectedClips)i.push({id:n.id,updates:{left:(n.left??0)+e,top:(n.top??0)+t}});await this.studio.updateClips(i),this.activeTransformer&&this.activeTransformer.updateBounds()}clear(){this.deselectClip(),this.interactiveClips.clear()}recreateTransformer(){this.destroyTransformer(),this.selectedClips.size>0&&this.createTransformer()}destroyTransformer(){this.activeTransformer!=null&&(this.activeTransformer.parent!=null&&this.activeTransformer.parent.removeChild(this.activeTransformer),this.activeTransformer.destroy(),this.activeTransformer=null)}createTransformer(){if(this.studio.destroyed||this.studio.artboard==null||this.selectedClips.size===0)return;const e=[];let t=null;for(const s of this.selectedClips){const o=this.studio.spriteRenderers.get(s);if(o==null)continue;const a=o.getRoot();a!=null&&(e.push(a),this.selectedClips.size===1&&(t=s))}if(e.length===0){console.warn("Cannot create transformer: no sprites found");return}const i=t?.locked??!1;this.activeTransformer=new z4({group:e,clip:t,artboardWidth:this.studio.opts.width,artboardHeight:this.studio.opts.height,locked:i});let n=null;this.activeTransformer.on("transforming",()=>{n===null&&(n=requestAnimationFrame(()=>{n=null,this.syncSelectedClipsTransformsRealtime(),this.studio.pixiApp?.render()}))}),this.activeTransformer.on("textClipResize",s=>{this.textClipResizedWidth=s.newWidth,this.textClipResizeHandle=s.handle,this.textClipResizedSx=s.sx,this.textClipResizedSy=s.sy}),this.activeTransformer.on("transformEnd",async()=>{n!==null&&(cancelAnimationFrame(n),n=null),await this.syncSelectedClipsTransforms();for(const s of this.selectedClips)this.studio.emit("clip:updated",{clip:s});this.studio.emit("transform:end",{transformer:this.activeTransformer})}),this.activeTransformer.on("pointerdown",s=>{if(s.button!==0)return;this.studio.emit("transform:start",{transformer:this.activeTransformer});const o=this.getTopmostClipAtPoint(s.global);o&&!this.selectedClips.has(o)&&(this.selectClip(o,s.shiftKey),s.stopPropagation())}),this.studio.artboard.addChild(this.activeTransformer),this.activeTransformer.showImmediate(),this.studio.pixiApp?.render()}async syncSelectedClipsTransformsRealtime(){if(this.selectedClips.size===0||this.activeTransformer==null)return;const e=this.activeTransformer.activeHandle;if(e===null){for(const t of this.selectedClips){const i=this.studio.spriteRenderers.get(t);if(i==null)continue;const n=i.getRoot(),s=i.getSprite();if(n==null||s==null||s.texture==null)continue;const o=Math.abs(n.scale.x*s.scale.x)*s.texture.width,a=Math.abs(n.scale.y*s.scale.y)*s.texture.height;t.left=n.x-o/2,t.top=n.y-a/2}return}if(e==="mr"||e==="ml"){if(this.isUpdatingTextRealtime)return;this.isUpdatingTextRealtime=!0;try{for(const t of this.selectedClips){if(!(t instanceof Ki))continue;const i=this.studio.spriteRenderers.get(t);if(i==null)continue;const n=i.getRoot(),s=i.getSprite();if(n==null||s==null||s.texture==null)continue;const o=Math.abs(n.scale.x*s.scale.x);if(o===1)continue;const a=t.left,l=t.top,u=t.width,c=s.texture.width,h=o*c;await t.updateStyle({wordWrap:!0,wordWrapWidth:h});const d=await t.getTexture();d&&(await i.updateFrame(d),s.scale.set(1,1),n.scale.set(1,1),e==="ml"?t.left=a+u-t.width:t.left=a,t.top=l,n.x=t.left+t.width/2,n.y=t.top+t.height/2,this.activeTransformer.updateBounds())}}finally{this.isUpdatingTextRealtime=!1}}}async syncSelectedClipsTransforms(){if(!(this.selectedClips.size===0||this.activeTransformer==null)){for(const e of this.selectedClips){const t=this.studio.spriteRenderers.get(e);if(t==null)continue;const i=t.getRoot(),n=t.getSprite();if(i==null||n==null||n.texture==null)continue;const s=n.texture.width,o=n.texture.height,a=Math.abs(i.scale.x*n.scale.x)*s,l=Math.abs(i.scale.y*n.scale.y)*o,u=(e instanceof Ki||e instanceof On)&&this.textClipResizedWidth!==null?this.textClipResizedWidth:a,c=e.width,d=(e.style?.fontSize??16)*Math.max(this.textClipResizedSx||1,this.textClipResizedSy||1);let f=i.x;if((e instanceof Ki||e instanceof On)&&this.textClipResizedWidth!==null){const m={wordWrap:!0,wordWrapWidth:u};this.textClipResizeHandle==="mr"?(f=e.left+u/2,i.x=f):this.textClipResizeHandle==="ml"?(f=e.left+u/2-(u-c),i.x=f):["br","tr"].includes(this.textClipResizeHandle)?(f=e.left+u/2,m.fontSize=d):["bl","tl"].includes(this.textClipResizeHandle)&&(f=e.left+u/2-(u-c),m.fontSize=d),await e.updateStyle(m);const g=await e.getTexture();g&&(await t.updateFrame(g),e.width=u,e.height=g.height,this.textClipResizedWidth=null,e.left=f-e.width/2,e.top=i.y-e.height/2,n.scale.set(1,1),i.scale.set(1,1))}else{let m=a,g=l;e.left=i.x-m/2,e.top=i.y-g/2,e.width=m,e.height=g;const v=e.flip==null?1:-1;e.angle=v*i.angle}}this.activeTransformer!=null&&this.activeTransformer.updateBounds();for(const e of this.selectedClips){const t=this.studio.spriteRenderers.get(e);t?.updateTransforms()}}}syncSpriteToClipProperties(e){const t=this.studio.spriteRenderers.get(e);if(t!=null){const i=t.getRoot(),n=t.getSprite();if(i!=null&&n!=null&&n.texture!=null){const s=n.texture.width,o=n.texture.height,a=Math.abs(i.scale.x*n.scale.x)*s,l=Math.abs(i.scale.y*n.scale.y)*o;let u=a,c=l;const h=i.x-u/2,d=i.y-c/2;e.left=h,e.top=d,e.width=u,e.height=c;const f=e.flip==null?1:-1;e.angle=f*i.angle,t.updateTransforms(),this.studio.emit("clip:updated",{clip:e})}}}async deleteSelected(){return this.studio.deleteSelected()}}class _te{constructor(e){this.studio=e}isPlaying=!1;currentTime=0;maxDuration=0;playStartTime=0;playStartTimestamp=0;rafId=null;playbackElements=new Map;setMaxDuration(e){this.maxDuration=e}async play(){if(!(this.isPlaying||this.studio.destroyed)){if(this.maxDuration<=0||this.maxDuration===1/0||isNaN(this.maxDuration)){console.warn("Cannot play: invalid duration",this.maxDuration);return}this.isPlaying||(this.isPlaying=!0),this.playStartTime=this.currentTime,this.playStartTimestamp=performance.now();for(const[e,{element:t}]of this.playbackElements.entries()){if(!(this.currentTime>=e.display.from&&(e.display.to===0||this.currentTime<=e.display.to))){this.isPlaybackCapable(e)&&e.pause(t);continue}const n=(this.currentTime-e.display.from)/1e6;this.isPlaybackCapable(e)&&await e.play(t,n)}this.renderLoop(),this.studio.emit("play",{isPlaying:!0})}}pause(){this.isPlaying=!1,this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null);for(const[e,{element:t}]of this.playbackElements.entries())this.isPlaybackCapable(e)&&e.pause(t);this.studio.emit("pause",{isPlaying:!1})}async stop(){this.pause(),await this.seek(0)}async seek(e){if(this.studio.destroyed)return;const t=this.isPlaying;this.playStartTime=Math.max(0,Math.min(e,this.maxDuration)),this.playStartTimestamp=performance.now(),this.currentTime=this.playStartTime;for(const[i,{element:n}]of this.playbackElements.entries()){if(!(this.currentTime>=i.display.from&&(i.display.to===0||this.currentTime<=i.display.to))){this.isPlaybackCapable(i)&&i.pause(n);continue}const o=(this.currentTime-i.display.from)/1e6;this.isPlaybackCapable(i)&&await i.seek(n,o)}if(await this.studio.updateFrame(this.currentTime),this.studio.emit("currentTime",{currentTime:this.currentTime}),t){this.isPlaying=!0;for(const[i,{element:n}]of this.playbackElements.entries()){if(!(this.currentTime>=i.display.from&&(i.display.to===0||this.currentTime<=i.display.to)))continue;const o=(this.currentTime-i.display.from)/1e6;this.isPlaybackCapable(i)&&await i.play(n,o)}}}async frameNext(){const t=1e6/(this.studio.opts.fps||30),i=Math.min(this.currentTime+t,this.maxDuration);await this.seek(i)}async framePrev(){const t=1e6/(this.studio.opts.fps||30),i=Math.max(0,this.currentTime-t);await this.seek(i)}async renderLoop(){if(!this.isPlaying||this.studio.destroyed||this.studio.pixiApp==null)return;if(this.maxDuration<=0||this.maxDuration===1/0||isNaN(this.maxDuration)){this.pause();return}const e=async()=>{if(!this.isPlaying||this.studio.destroyed||this.studio.pixiApp==null)return;if(this.currentTime>=this.maxDuration){this.currentTime=this.maxDuration,this.pause();return}const i=(performance.now()-this.playStartTimestamp)*1e3;this.currentTime=Math.min(this.playStartTime+i,this.maxDuration),this.studio.emit("currentTime",{currentTime:this.currentTime});try{await this.studio.updateFrame(this.currentTime)}catch(n){console.warn("Error updating frame:",n)}this.isPlaying&&(this.rafId=requestAnimationFrame(e))};e()}isPlaybackCapable(e){return"play"in e&&"pause"in e&&"seek"in e}}class jo{static instance;fonts=new Map;constructor(){}static getInstance(){return jo.instance||(jo.instance=new jo),jo.instance}async addFont(e){if(!this.fonts.has(e.name))try{const i=await new FontFace(e.name,`url(${e.url})`).load();document.fonts.add(i),this.fonts.set(e.name,i)}catch(t){console.error(`Failed to load font ${e.name}:`,t)}}async loadFonts(e){await Promise.all(e.map(t=>this.addFont(t)))}removeFont(e){const t=this.fonts.get(e);t&&(document.fonts.delete(t),this.fonts.delete(e))}clear(){this.fonts.forEach(e=>{document.fonts.delete(e)}),this.fonts.clear()}getLoadedFonts(){return Array.from(this.fonts.keys())}}const L4=jo.getInstance();class wte{constructor(e){this.studio=e}tracks=[];clips=[];getTrackById(e){return this.tracks.find(t=>t.id===e)}getClipById(e){return this.clips.find(t=>t.id===e)}findTrackIdByClipId(e){for(const t of this.tracks)if(t.clipIds.includes(e))return t.id}getTrackIndex(e){return this.tracks.findIndex(t=>t.id===e)}addTrack(e,t){const i={id:e.id||`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,name:e.name,type:e.type,clipIds:[]};return typeof t=="number"?this.tracks.splice(t,0,i):this.tracks.unshift(i),this.studio.emit("track:added",{track:i,index:t??0}),this.studio.emit("track:order-changed",{tracks:this.tracks}),i}async removeTrack(e){const t=this.tracks.findIndex(s=>s.id===e);if(t===-1)return;const n=[...this.tracks[t].clipIds];for(const s of n)await this.removeClipById(s);this.tracks.splice(t,1),this.studio.emit("track:removed",{trackId:e}),this.studio.emit("track:order-changed",{tracks:this.tracks})}async moveTrack(e,t){const i=this.tracks.findIndex(s=>s.id===e);if(i===-1)return;const n=this.tracks[i];this.tracks.splice(i,1),this.tracks.splice(t,0,n),this.studio.emit("track:order-changed",{tracks:this.tracks}),await this.studio.updateFrame(this.studio.currentTime)}async setTrackOrder(e){const t=[],i=new Map(this.tracks.map(n=>[n.id,n]));for(const n of e){const s=i.get(n);s&&t.push(s)}t.length!==this.tracks.length&&console.warn("[Studio] setTrackOrder: invalid track IDs provided, order not updated fully"),this.tracks=t,this.studio.emit("track:order-changed",{tracks:this.tracks}),await this.studio.updateFrame(this.studio.currentTime)}async addTransition(e,t=2e6,i,n){if(this.studio.destroyed)return;let s=null,o=null;if(i&&n&&(s=this.getClipById(i)??null,o=this.getClipById(n)??null),!s||!o){console.warn("[Studio] Invalid fromClipId or toClipId",{fromClipId:i,toClipId:n});return}await Promise.all([s.ready,o.ready]);const a=t,l=o.display.from-a/2,u=l+a,c={key:e,name:e,duration:a,fromClipId:s.id,toClipId:o.id,start:Math.max(0,l),end:u},h=this.findTrackIdByClipId(o.id);if(h){const p=this.tracks.find(m=>m.id===h);if(p){const m=p.clipIds.map(g=>this.getClipById(g)).filter(g=>{if(!g||g.type!=="Transition")return!1;const v=g;return v.fromClipId===s.id&&v.toClipId===o.id});for(const g of m)await this.removeClip(g)}}const d=`${s.id}_${o.id}`;this.studio.transitionRenderers.has(d)&&(this.studio.transitionRenderers.get(d)?.destroy(),this.studio.transitionRenderers.delete(d)),s.transition={...c},o.transition={...c};const f=new Bi(e);f.duration=a,f.fromClipId=Math.max(0,l)===0?null:s.id,f.toClipId=o.id,f.fromClipId===null&&s&&(f.fromClipId=s.id),f.display.from=Math.max(0,l),f.display.to=u,await this.addClip(f,{trackId:h}),this.studio.seek(this.studio.currentTime)}async addClip(e,t){const i=Array.isArray(e)?e:[e];if(i.length===0)return;const{trackId:n,audioSource:s}=this.normalizeAddClipOptions(t);if(this.studio.destroyed)return;if(this.studio.pixiApp==null)throw new Error("Failed to initialize Pixi.js Application");const o=[];for(const a of i)await this.prepareClipForTimeline(a,n),o.push(a);await this.recalculateMaxDuration();for(const a of o)await this.setupClipVisuals(a,s);await this.studio.updateFrame(this.studio.currentTime),this.emitAddClipEvents(o,n)}normalizeAddClipOptions(e){let t,i;if(e&&(typeof e=="string"||e instanceof File||e instanceof Blob))t=e;else if(typeof e=="object"&&e!==null&&!("size"in e)){const n=e;t=n.audioSource,i=n.trackId}return{trackId:i,audioSource:t}}async prepareClipForTimeline(e,t){e.id||(e.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`),this.clips.includes(e)||this.clips.push(e),this.addClipToTrack(e,t);const i=async()=>{await this.studio.updateFrame(this.studio.currentTime);const n=this.studio.selection;n.activeTransformer!=null&&n.selectedClips.has(e)&&typeof n.activeTransformer.updateBounds=="function"&&n.activeTransformer.updateBounds()};e.on("propsChange",i),this.studio.clipListeners.set(e,i),this.studio.pixiApp!=null&&typeof e.setRenderer=="function"&&e.setRenderer(this.studio.pixiApp.renderer),await e.ready}addClipToTrack(e,t){if(t){const i=this.tracks.find(n=>n.id===t);if(i)i.clipIds.includes(e.id)||i.clipIds.push(e.id);else{const n={id:t,name:`Track ${this.tracks.length+1}`,type:e.type,clipIds:[e.id]};this.tracks.unshift(n),this.studio.emit("track:added",{track:n,index:0}),this.studio.emit("track:order-changed",{tracks:this.tracks})}}else{const n={id:`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,name:`Track ${this.tracks.length+1}`,type:e.type,clipIds:[e.id]};this.tracks.unshift(n),this.studio.emit("track:added",{track:n,index:0}),this.studio.emit("track:order-changed",{tracks:this.tracks})}}async setupClipVisuals(e,t){const i=this.studio.spriteRenderers.get(e);if(i){const s=this.studio.clipsNormalContainer,o=i.getRoot();o&&!o.parent&&s.addChild(o);return}const n=await e.ready;if(await this.setupPlaybackForClip(e,t),n.width>0&&n.height>0){const s=this.studio.clipsNormalContainer,o=e.type==="Video"&&this.isPlaybackCapable(e);if(!o||o&&e.tickInterceptor!=null){const a=new R4(this.studio.pixiApp,e,s);this.studio.spriteRenderers.set(e,a)}}this.studio.opts.interactivity&&this.studio.selection.setupSpriteInteractivity(e)}emitAddClipEvents(e,t){if(e.length!==0)if(e.length===1){const i=e[0],n=t||this.tracks.find(s=>s.clipIds.includes(i.id))?.id||"";this.studio.emit("clip:added",{clip:i,trackId:n})}else this.studio.emit("clips:added",{clips:e,trackId:t})}async removeClip(e,t={permanent:!0}){const{permanent:i}=t;if(e.locked)return;const n=this.clips.findIndex(c=>c===e);if(n===-1)return;if(e instanceof Bi){if(e.fromClipId){const c=this.getClipById(e.fromClipId);c&&"transition"in c&&delete c.transition}if(e.toClipId){const c=this.getClipById(e.toClipId);c&&"transition"in c&&delete c.transition}}this.studio.selection.selectedClips.has(e)&&this.studio.selection.deselectClip(),this.clips.splice(n,1);const s=[];for(const c of this.tracks){const h=c.clipIds.indexOf(e.id);h!==-1&&(c.clipIds.splice(h,1),s.push(c.id))}for(const c of s){const h=this.tracks.findIndex(d=>d.id===c);h!==-1&&this.tracks[h].clipIds.length===0&&(this.tracks.splice(h,1),this.studio.emit("track:removed",{trackId:c}))}this.studio.selection.interactiveClips.delete(e);const o=this.studio.clipListeners.get(e);o&&(e.off("propsChange",o),this.studio.clipListeners.delete(e));const a=this.studio.spriteRenderers.get(e);if(a!=null)if(i)a.destroy(),this.studio.spriteRenderers.delete(e);else{const c=a.getRoot();c&&c.parent&&c.parent.removeChild(c)}const l=this.studio.transport.playbackElements.get(e);l!=null&&i&&this.isPlaybackCapable(e)&&(e.cleanupPlayback(l.element,l.objectUrl),this.studio.transport.playbackElements.delete(e));const u=this.studio.videoSprites.get(e);u!=null&&this.studio.pixiApp!=null&&(u.parent&&u.parent.removeChild(u),i&&(u.destroy(),this.studio.videoSprites.delete(e))),await this.recalculateMaxDuration(),this.studio.emit("clip:removed",{clipId:e.id})}async removeClips(e,t={permanent:!0}){if(e.length!==0){for(const i of e){if(i.locked)continue;const n=this.clips.findIndex(u=>u===i);if(n===-1)continue;if(i instanceof Bi){if(i.fromClipId){const u=this.getClipById(i.fromClipId);u&&"transition"in u&&delete u.transition}if(i.toClipId){const u=this.getClipById(i.toClipId);u&&"transition"in u&&delete u.transition}}this.studio.selection.selectedClips.has(i)&&this.studio.selection.deselectClip(),this.clips.splice(n,1);for(const u of this.tracks){const c=u.clipIds.indexOf(i.id);c!==-1&&u.clipIds.splice(c,1)}this.studio.selection.interactiveClips.delete(i);const s=this.studio.clipListeners.get(i);s&&(i.off("propsChange",s),this.studio.clipListeners.delete(i));const o=this.studio.spriteRenderers.get(i);if(o!=null)if(t.permanent)o.destroy(),this.studio.spriteRenderers.delete(i);else{const u=o.getRoot();u&&u.parent&&u.parent.removeChild(u)}const a=this.studio.transport.playbackElements.get(i);a!=null&&t.permanent&&this.isPlaybackCapable(i)&&(i.cleanupPlayback(a.element,a.objectUrl),this.studio.transport.playbackElements.delete(i));const l=this.studio.videoSprites.get(i);l!=null&&this.studio.pixiApp!=null&&(l.parent&&l.parent.removeChild(l),t.permanent&&(l.destroy(),this.studio.videoSprites.delete(i)))}for(let i=this.tracks.length-1;i>=0;i--)if(this.tracks[i].clipIds.length===0){const n=this.tracks[i].id;this.tracks.splice(i,1),this.studio.emit("track:removed",{trackId:n})}await this.recalculateMaxDuration(),this.studio.emit("clips:removed",{clipIds:e.map(i=>i.id)})}}async removeClipById(e){const t=this.clips.find(i=>i.id===e);t&&await this.removeClip(t)}async updateClip(e,t){const i=this.clips.find(n=>n.id===e);i&&(i.locked&&!("locked"in t)||(i.locked&&"locked"in t&&(Object.keys(t).length===1||(t={locked:t.locked})),await this.applyClipUpdate(i,t),await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime),this.updateTransformer(i),this.studio.emit("clip:updated",{clip:i})))}async updateClips(e){const t=[];for(const{id:i,updates:n}of e){const s=this.clips.find(o=>o.id===i);s&&(await this.applyClipUpdate(s,n),t.push(s))}if(t.length!==0){await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime);for(const i of t)this.updateTransformer(i),this.studio.emit("clip:updated",{clip:i})}}async replaceClipsBySource(e,t){const i=this.clips.filter(n=>n.src===e);if(i.length!==0){this.studio.suspendRendering();for(const n of i){if(!this.clips.includes(n))continue;const s=this.findTrackIdByClipId(n.id);if(!s)continue;const o=this.getTrackById(s);if(!o)continue;const a=await t(n),l=async()=>{await this.studio.updateFrame(this.studio.currentTime),this.updateTransformer(a)};a.on("propsChange",l),this.studio.clipListeners.set(a,l),this.studio.pixiApp!=null&&typeof a.setRenderer=="function"&&a.setRenderer(this.studio.pixiApp.renderer),await a.ready;const u=this.clips.indexOf(n);u!==-1&&(this.clips[u]=a);const c=o.clipIds.indexOf(n.id);c!==-1&&(o.clipIds[c]=a.id),await this.setupClipVisuals(a);const h=this.studio.spriteRenderers.get(n);h&&(h.destroy(),this.studio.spriteRenderers.delete(n));const d=this.studio.videoSprites.get(n);d&&(d.parent&&d.parent.removeChild(d),d.destroy(),this.studio.videoSprites.delete(n));const f=this.studio.clipListeners.get(n);f&&(n.off("propsChange",f),this.studio.clipListeners.delete(n)),this.studio.selection.selectedClips.has(n)&&(this.studio.selection.selectedClips.delete(n),this.studio.selection.selectedClips.add(a)),this.studio.emit("clip:replaced",{oldClip:n,newClip:a,trackId:s})}await this.recalculateMaxDuration(),this.studio.resumeRendering(),await this.studio.updateFrame(this.studio.currentTime)}}async applyClipUpdate(e,t){if(e.type==="Text"||e.type==="Caption"){const i=e;typeof i.updateStyle=="function"&&await i.updateStyle(t),"style"in t&&delete t.style}if(Object.assign(e,t),t.display&&!t.duration?e.duration=t.display.to-t.display.from:t.duration&&(!t.display||!t.display.to)&&(e.display||(e.display={from:0,to:t.duration}),e.display.to=e.display.from+t.duration),t.display&&t.duration){const i=t.display.to-t.display.from;i!==t.duration&&(e.duration=i)}else e.display&&(e.display.to=e.display.from+e.duration)}updateTransformer(e){const t=this.studio.selection;t.selectedClips.has(e)&&t.activeTransformer&&t.activeTransformer.updateBounds()}exportToJSON(){const e=this.clips.map(n=>Rl(n,!1)),t=this.tracks.map(n=>({id:n.id,name:n.name,type:n.type,clipIds:[...n.clipIds]})),i=[];return this.clips.forEach(n=>{if(n.transition){const s=this.tracks.find(o=>o.clipIds.includes(n.id));if(s){const o=s.clipIds.indexOf(n.id);if(o>0){const a=s.clipIds[o-1];i.push({key:n.transition.name,duration:n.transition.duration,clips:[a,n.id]})}}}}),{tracks:t,clips:e,settings:{width:this.studio.opts.width,height:this.studio.opts.height,fps:this.studio.opts.fps,bgColor:this.studio.opts.bgColor}}}async loadFromJSON(e){if(await this.clear(),e.settings){const i=e.settings.width&&e.settings.width!==this.studio.opts.width||e.settings.height&&e.settings.height!==this.studio.opts.height;if(e.settings.width&&(this.studio.opts.width=e.settings.width),e.settings.height&&(this.studio.opts.height=e.settings.height),e.settings.fps&&(this.studio.opts.fps=e.settings.fps),e.settings.bgColor&&(this.studio.opts.bgColor=e.settings.bgColor),i&&this.studio.pixiApp!=null){const n=this.studio.opts.width,s=this.studio.opts.height;this.studio.pixiApp.renderer.resize(n,s),this.studio.opts.canvas&&(this.studio.opts.canvas.width=n,this.studio.opts.canvas.height=s)}}const t=[];if(e.clips){await this.ensureFontsForClips(e.clips);const i=e.clips.map(o=>o.src).filter(o=>o&&o.trim()!=="");this.studio.resourceManager.preload(i);const n=new Map;if(e.tracks){for(const o of e.tracks)if(o.clipIds)for(const a of o.clipIds)n.set(a,o.id)}if(e.tracks)for(const o of e.tracks)this.tracks.push({id:o.id,name:o.name,type:o.type,clipIds:[]});for(const o of e.clips)t.push((async()=>{try{let a=o.id?n.get(o.id):void 0;if(o.type==="Transition"){const u=o,c=u.toClipId||u.fromClipId;c&&(a=n.get(c))}if(o.type!=="Text"&&o.type!=="Caption"&&o.type!=="Effect"&&o.type!=="Transition"&&(!o.src||o.src.trim()===""))return console.warn(`Skipping clip ${o.type} with empty source`,o),{clip:null};const l=await Xo(o);return(l.type==="Video"||l.type==="Image")&&(!o.width||!o.height)&&this.studio.opts.width&&this.studio.opts.height&&(typeof l.scaleToFit=="function"&&await l.scaleToFit(this.studio.opts.width,this.studio.opts.height),typeof l.centerInScene=="function"&&l.centerInScene(this.studio.opts.width,this.studio.opts.height)),{clip:l,intendedTrackId:a}}catch(a){return console.error(`Failed to load clip ${o.id||"unknown"}:`,a),{clip:null}}})());const s=await Promise.all(t);for(const{clip:o,intendedTrackId:a}of s)o&&(o.id||(o.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`),this.clips.push(o),this.addClipToTrack(o,a))}this.studio.pixiApp&&this.clips.forEach(i=>{const n=async()=>{await this.studio.updateFrame(this.studio.currentTime);const s=this.studio.selection;s.activeTransformer!=null&&s.selectedClips.has(i)&&typeof s.activeTransformer.updateBounds=="function"&&s.activeTransformer.updateBounds()};i.on("propsChange",n),this.studio.clipListeners.set(i,n),typeof i.setRenderer=="function"&&i.setRenderer(this.studio.pixiApp.renderer),(async()=>{try{await i.ready,await this.setupClipVisuals(i),await this.studio.updateFrame(this.studio.currentTime)}catch(s){console.warn(`[Studio] Failed to setup visuals for clip ${i.id}:`,s)}})()});for(const i of this.clips){const n=i.effects;if(Array.isArray(n))for(const s of n)this.studio.globalEffects.has(s.id)||this.studio.globalEffects.set(s.id,{id:s.id,key:s.key,startTime:s.startTime,duration:s.duration})}for(const i of this.clips)if(i instanceof Bi){const n={name:i.transitionEffect.key,key:i.transitionEffect.key,duration:i.duration,fromClipId:i.fromClipId,toClipId:i.toClipId,start:i.display.from,end:i.display.to};if(i.fromClipId){const s=this.getClipById(i.fromClipId);s&&(s.transition={...n})}if(i.toClipId){const s=this.getClipById(i.toClipId);s&&(s.transition={...n})}}await this.recalculateMaxDuration();try{await this.studio.updateFrame(this.studio.currentTime)}catch(i){console.error("[Studio] Failed to update initial frame:",i)}this.studio.emit("studio:restored",{clips:this.clips,tracks:this.tracks,settings:this.studio.opts})}async deleteSelected(){const e=this.studio.selection.selectedClips,t=Array.from(e);if(t.length!==0)for(const i of t)await this.removeClip(i)}async duplicateSelected(){const e=this.studio.selection.selectedClips,t=Array.from(e).filter(n=>!n.locked);if(t.length===0)return;const i=[];for(const n of t){const s=this.findTrackIdByClipId(n.id);if(!s)continue;const o=this.tracks.find(h=>h.id===s);if(!o)continue;const a=Rl(n,!1),l=await Xo(a);l.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const u=`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,c=`${o.name} (Copy)`;this.addTrack({id:u,name:c,type:o.type}),await this.addClip(l,{trackId:u}),i.push(l.id)}i.length>0&&this.studio.selection.selectClipsByIds(i)}async splitSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==1){console.warn("[Studio] Split requires exactly one selected clip");return}const i=t[0];if(i.locked){console.warn("[Studio] Cannot split a locked clip");return}const n=e??this.studio.currentTime;if(n<=i.display.from||i.display.to>0&&n>=i.display.to){console.warn("[Studio] Split time is outside clip bounds");return}const s=Rl(i,!1),o=n-i.display.from,a=i.playbackRate||1,l=o*a,u={duration:o,display:{from:i.display.from,to:n}};i.trim&&(u.trim={from:i.trim.from,to:i.trim.from+l}),await this.updateClip(i.id,u);const c={...s};c.display={from:n,to:s.display.to},c.duration=s.duration-o,c.trim&&(c.trim={from:c.trim.from+l,to:c.trim.to});const h=await Xo(c);h.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const d=this.findTrackIdByClipId(i.id);d&&(await this.addClip(h,{trackId:d}),this.studio.selection.selectClipsByIds([h.id]))}async trimSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==1){console.warn("[Studio] Trim requires exactly one selected clip");return}const i=t[0];if(i.locked){console.warn("[Studio] Cannot trim a locked clip");return}const n=e*1e6,s=i.playbackRate||1,o=n*s;if(n>=i.duration){console.warn("[Studio] Trim amount exceeds clip duration");return}const a=i.duration-n,l=i.display.from+n,u=i.display.to,c={duration:a,display:{from:l,to:u}};if(i.trim)c.trim={from:i.trim.from+o,to:i.trim.to};else{const h=i.sourceDuration||i.duration;c.trim={from:o,to:h}}await this.updateClip(i.id,c)}async updateSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==0)for(const i of t)await this.updateClip(i.id,e)}async setTracks(e){this.tracks=JSON.parse(JSON.stringify(e)),await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime)}async ensureFontsForClips(e){const t=new Map;for(const i of e){if(i.type==="Text"){const n=i.style?.fontUrl||i.fontUrl;n&&t.set(n,{name:i.style?.fontFamily||i.fontFamily||"CustomFont",url:n})}if(i.type==="Caption"){const n=i.style?.fontUrl||i.fontUrl;n&&t.set(n,{name:i.style?.fontFamily||i.fontFamily||"CustomFont",url:n})}}if(t.size>0)try{await L4.loadFonts(Array.from(t.values()))}catch(i){console.warn("Failed to load some fonts:",i)}}async recalculateMaxDuration(){let e=0;for(const t of this.clips){t.display.to===0&&t.duration!==1/0&&!isNaN(t.duration)&&t.duration>0;const i=t.duration>0?t.duration:0;if(i===1/0)continue;const n=t.display.to>0?t.display.to:t.display.from+i;n>e&&(e=n)}this.studio.maxDuration=e}async setupPlaybackForClip(e,t){if(this.studio.pixiApp!=null&&this.isPlaybackCapable(e))try{const i=e;if(e.type==="Audio"&&t&&typeof t!="string"){const o=URL.createObjectURL(t);e.src=o}const{element:n,objectUrl:s}=await i.createPlaybackElement();if(e.type==="Video"){const o=Q.from(n),a=new Je(o);a.visible=!1,this.studio.clipsNormalContainer&&this.studio.clipsNormalContainer.addChild(a),this.studio.videoSprites.set(e,a)}this.studio.transport.playbackElements.set(e,{element:n,objectUrl:s})}catch(i){console.warn(`Failed to setup playback for ${e.constructor.name}`,i)}}isPlaybackCapable(e){return"createPlaybackElement"in e&&"play"in e&&"pause"in e&&"seek"in e&&"syncPlayback"in e&&"cleanupPlayback"in e}async clear(){this.studio.selection.deselectClip(),this.studio.selection.interactiveClips.clear();for(const[e,t]of this.studio.clipListeners)e.off("propsChange",t);this.studio.clipListeners.clear(),this.studio.globalEffects.clear(),this.studio.effectFilters.clear(),this.studio.transitionRenderers.forEach(e=>e.destroy()),this.studio.transitionRenderers.clear(),this.studio.transitionSprites.forEach(e=>{e.parent&&e.parent.removeChild(e),e.destroy()}),this.studio.transitionSprites.clear(),this.studio.spriteRenderers.forEach(e=>e.destroy()),this.studio.spriteRenderers.clear();for(const[e,t]of this.studio.transport.playbackElements)this.isPlaybackCapable(e)&&e.cleanupPlayback(t.element,t.objectUrl);this.studio.transport.playbackElements.clear();for(const e of this.studio.videoSprites.values())e.destroy();this.studio.videoSprites.clear(),this.tracks=[],this.clips=[],this.studio.maxDuration=0,this.studio.currentTime=0,this.studio.emit("reset")}async rippleDelete(e,t){if(e>=t)return;const i=t-e,n=[...this.clips];for(const s of n){const o=s.display.from,a=s.display.to;if(!(a<=e)){if(o>=t){await this.updateClip(s.id,{display:{from:s.display.from-i,to:s.display.to-i}});continue}if(o>=e&&a<=t){await this.removeClip(s);continue}if(o<e&&a>t){const l=await s.clone();l.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const u=e,c=e+(a-t),h=s.trim.from+(t-o)*s.playbackRate,d=s.trim.to,f=this.tracks.find(p=>p.clipIds.includes(s.id));f&&(await this.addClip(l,{trackId:f.id}),await this.updateClip(l.id,{display:{from:u,to:c},trim:{from:h,to:d}})),await this.updateClip(s.id,{display:{from:s.display.from,to:e},trim:{from:s.trim.from,to:s.trim.from+(e-o)*s.playbackRate}});continue}if(o<e&&a<=t){await this.updateClip(s.id,{display:{from:s.display.from,to:e},trim:{from:s.trim.from,to:s.trim.from+(e-o)*s.playbackRate}});continue}if(o>=e&&a>t){await this.updateClip(s.id,{display:{from:e,to:e+(a-t)},trim:{from:s.trim.from+(t-o)*s.playbackRate,to:s.trim.to}});continue}}}await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime)}}const Ste={Date:!0,RegExp:!0,String:!0,Number:!0};function N4(r,e,t={cyclesFix:!0},i=[]){let n=[];const s=Array.isArray(r);for(const a in r){const l=r[a],u=s?+a:a;if(!(a in e)){n.push({type:"REMOVE",path:[u],oldValue:r[a]});continue}const c=e[a],h=typeof l=="object"&&typeof c=="object"&&Array.isArray(l)===Array.isArray(c);l&&c&&h&&!Ste[Object.getPrototypeOf(l)?.constructor?.name]&&(!t.cyclesFix||!i.includes(l))?n.push.apply(n,N4(l,c,t,t.cyclesFix?i.concat([l]):[]).map(d=>(d.path.unshift(u),d))):l!==c&&!(Number.isNaN(l)&&Number.isNaN(c))&&!(h&&(isNaN(l)?l+""==c+"":+l==+c))&&n.push({path:[u],type:"CHANGE",value:c,oldValue:l})}const o=Array.isArray(e);for(const a in e)a in r||n.push({type:"CREATE",path:[o?+a:a],value:e[a]});return n}class Tte{past=[];future=[];lastState=null;maxSize;constructor(e={}){this.maxSize=e.maxSize||50}projectToHistoryState(e){const t={},i=JSON.parse(JSON.stringify(e.tracks||[]));return e.clips.forEach(n=>{n.id&&(t[n.id]=JSON.parse(JSON.stringify(n)))}),{clips:t,tracks:i,settings:JSON.parse(JSON.stringify(e.settings||{}))}}init(e){this.lastState=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),this.past=[],this.future=[]}push(e){if(!this.lastState){this.init(e);return}const t=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),i=N4(this.lastState,t);i.length!==0&&(this.past.push(i),this.past.length>this.maxSize&&this.past.shift(),this.future=[],this.lastState=t)}undo(e){const t=this.past.pop();if(!t)return null;const i=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),n=this.applyPatches(i,t,!0);return this.future.push(t),this.lastState=n,{patches:t,state:n}}redo(e){const t=this.future.pop();if(!t)return null;const i=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),n=this.applyPatches(i,t,!1);return this.past.push(t),this.lastState=n,{patches:t,state:n}}applyPatches(e,t,i){const n=JSON.parse(JSON.stringify(e)),s=i?[...t].reverse():t;for(const o of s){const{type:a,path:l}=o,u=o.value,c=o.oldValue;let h=n,d=!1;for(let p=0;p<l.length-1;p++){if(h[l[p]]===void 0||h[l[p]]===null){d=!0;break}h=h[l[p]]}if(d)continue;const f=l[l.length-1];if(i)switch(a){case"CREATE":Array.isArray(h)?h.splice(f,1):delete h[f];break;case"REMOVE":h[f]=c&&typeof c=="object"?JSON.parse(JSON.stringify(c)):c;break;case"CHANGE":h[f]=c&&typeof c=="object"?JSON.parse(JSON.stringify(c)):c;break}else switch(a){case"CREATE":h[f]=u&&typeof u=="object"?JSON.parse(JSON.stringify(u)):u;break;case"REMOVE":Array.isArray(h)?h.splice(f,1):delete h[f];break;case"CHANGE":h[f]=u&&typeof u=="object"?JSON.parse(JSON.stringify(u)):u;break}}return n}canUndo(){return this.past.length>0}canRedo(){return this.future.length>0}}class Cte extends X0{selection;transport;timeline;history;resourceManager;pixiApp=null;get tracks(){return this.timeline.tracks}get clips(){return this.timeline.clips}spriteRenderers=new Map;artboard=null;clipContainer=null;artboardMask=null;artboardBg=null;get activeTransformer(){return this.selection.activeTransformer}set activeTransformer(e){this.selection.activeTransformer=e}get selectedClips(){return this.selection.selectedClips}set selectedClips(e){this.selection.selectedClips=e}get interactiveClips(){return this.selection.interactiveClips}set interactiveClips(e){this.selection.interactiveClips=e}get playbackElements(){return this.transport.playbackElements}videoSprites=new Map;clipListeners=new Map;get isPlaying(){return this.transport.isPlaying}set isPlaying(e){this.transport.isPlaying=e}get currentTime(){return this.transport.currentTime}set currentTime(e){this.transport.currentTime=e}get maxDuration(){return this.transport.maxDuration}set maxDuration(e){this.transport.maxDuration=e}opts;destroyed=!1;renderingSuspended=!1;historyPaused=!1;processingHistory=!1;historyGroupDepth=0;clipCache=new Map;_isUpdatingLayout=!1;globalEffects=new Map;activeGlobalEffects=[];currentGlobalEffectSprite=null;effectFilters=new Map;transitionRenderers=new Map;transitionSprites=new Map;transFromTexture=null;transToTexture=null;transBgGraphics=null;clipsNormalContainer=null;clipsEffectContainer=null;videoTextureCache=new WeakMap;lastFromFrame=null;lastToFrame=null;hexToNumber(e){const t=e.startsWith("#")?e.slice(1):e;return parseInt(t,16)}ready;constructor(e){super(),this.opts={fps:30,bgColor:"#000000",interactivity:!0,spacing:0,...e},this.selection=new bte(this),this.transport=new _te(this),this.timeline=new wte(this),this.history=new Tte,this.resourceManager=new Lo,this.ready=this.initPixiApp().then(()=>{this.history.init(this.exportToJSON())}),this.on("clip:removed",this.handleClipRemoved),this.on("clips:removed",this.handleClipsRemoved),this.on("clip:updated",this.handleTimelineChange),this.on("clip:added",this.handleTimelineChange),this.on("clips:added",this.handleTimelineChange),this.on("track:removed",this.handleTimelineChange),this.on("track:added",this.handleTimelineChange)}handleTimelineChange=()=>{this.updateFrame(this.currentTime),this.saveHistory()};saveHistory(){this.historyPaused||this.processingHistory||(this.history.push(this.exportToJSON()),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()}))}beginHistoryGroup(){this.historyGroupDepth++,this.historyPaused=!0}endHistoryGroup(){this.historyGroupDepth=Math.max(0,this.historyGroupDepth-1),this.historyGroupDepth===0&&(this.historyPaused=!1,this.saveHistory())}setPath(e,t,i){let n=e;for(let s=0;s<t.length-1;s++){const o=t[s];n[o]||(n[o]=typeof t[s+1]=="number"?[]:{}),n=n[o]}n[t[t.length-1]]=i}async applyHistoryPatches(e,t,i){const n=new Map,s=new Map,o=new Set;for(const a of e){const{type:l,path:u}=a,c=a.value,h=a.oldValue;if(u[0]==="clips"){const d=u[1];i?l==="CREATE"?o.add(d):l==="REMOVE"?s.set(d,h):l==="CHANGE"&&(n.has(d)||n.set(d,{}),this.setPath(n.get(d),u.slice(2),h)):l==="CREATE"?s.set(d,c):l==="REMOVE"?o.add(d):l==="CHANGE"&&(n.has(d)||n.set(d,{}),this.setPath(n.get(d),u.slice(2),c))}else u[0]==="settings"&&(i?this.setPath(this.opts,u.slice(1),h):this.setPath(this.opts,u.slice(1),c))}for(const a of o){const l=this.timeline.getClipById(a);l&&await this.removeClip(l)}for(const[a,l]of s){let u=this.clipCache.get(a);u||(u=await Xo(l),this.clipCache.set(a,u));let c;for(const h of t.tracks)if(h.clipIds.includes(a)){c=h.id;break}await this.addClip(u,{trackId:c})}for(const[a,l]of n)await this.updateClip(a,l);this.timeline.setTracks(t.tracks),this.emit("studio:restored",{clips:this.clips,tracks:this.tracks,settings:this.opts})}async undo(){if(!(!this.history.canUndo()||this.processingHistory)){this.processingHistory=!0,this.historyPaused=!0;try{const e=this.history.undo(this.exportToJSON());e&&await this.applyHistoryPatches(e.patches,e.state,!0),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()})}finally{this.historyPaused=!1,this.processingHistory=!1}}}async redo(){if(!(!this.history.canRedo()||this.processingHistory)){this.processingHistory=!0,this.historyPaused=!0;try{const e=this.history.redo(this.exportToJSON());e&&await this.applyHistoryPatches(e.patches,e.state,!1),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()})}finally{this.historyPaused=!1,this.processingHistory=!1}}}cleanupClipVisuals=e=>{for(const[n,s]of this.spriteRenderers)if(n.id===e){const o=s.getRoot();o&&o.parent&&o.parent.removeChild(o),s.destroy(),this.spriteRenderers.delete(n);break}const t=this.transitionSprites.get(e);t&&(t.parent&&t.parent.removeChild(t),t.destroy(),this.transitionSprites.delete(e)),this.transitionRenderers.get(e)&&this.transitionRenderers.delete(e);for(const[n,s]of this.videoSprites)if(n.id===e){s.parent&&s.parent.removeChild(s),s.destroy(),this.videoSprites.delete(n);break}for(const[n]of this.clipListeners)if(n.id===e){this.clipListeners.delete(n);break}};handleClipRemoved=({clipId:e})=>{this.cleanupClipVisuals(e),this.updateFrame(this.currentTime),this.saveHistory()};handleClipsRemoved=({clipIds:e})=>{for(const t of e)this.cleanupClipVisuals(t);this.updateFrame(this.currentTime),this.saveHistory()};async initPixiApp(){if(this.destroyed)return;const e=this.opts.canvas||document.createElement("canvas");e.width=this.opts.width,e.height=this.opts.height;const t=new gc,i=e.parentElement||window;await t.init({canvas:e,resizeTo:i,backgroundColor:this.hexToNumber(this.opts.bgColor),antialias:!0,resolution:window.devicePixelRatio||1,autoDensity:!0,autoStart:!1}),this.pixiApp=t,t.render(),t.stage.eventMode="static",t.stage.hitArea=t.screen,this.artboard=new Pe,this.artboard.label="ArtboardRoot",t.stage.addChild(this.artboard),this.selection.init(t,this.artboard),this.artboardBg=new Ze,this.artboardBg.rect(0,0,this.opts.width,this.opts.height).fill({color:0}),this.artboard.addChild(this.artboardBg),this.clipContainer=new Pe,this.clipContainer.label="ClipContainer",this.artboard.addChild(this.clipContainer),this.artboardMask=new Ze,this.artboardMask.rect(0,0,this.opts.width,this.opts.height).fill({color:16777215}),this.clipContainer.addChild(this.artboardMask),this.clipContainer.mask=this.artboardMask,this.clipsEffectContainer=new Pe,this.clipsEffectContainer.label="ClipsEffect",this.clipsEffectContainer.visible=!1,this.clipsEffectContainer.zIndex=1,this.clipsEffectContainer.sortableChildren=!0,this.clipContainer.addChild(this.clipsEffectContainer),this.clipsNormalContainer=new Pe,this.clipsNormalContainer.label="ClipsNormal",this.clipsNormalContainer.zIndex=10,this.clipsNormalContainer.sortableChildren=!0,this.clipContainer.addChild(this.clipsNormalContainer),this.transFromTexture=Ot.create({width:this.opts.width,height:this.opts.height}),this.transToTexture=Ot.create({width:this.opts.width,height:this.opts.height}),this.transBgGraphics=new Ze,this.transBgGraphics.rect(0,0,this.opts.width,this.opts.height).fill({color:0,alpha:0}),this.clipContainer.sortableChildren=!0,this.updateArtboardLayout(),t.renderer.on("resize",()=>{this.handleResize()})}getOptions(){return this.opts}setSize(e,t){this.updateDimensions(e,t)}setBgColor(e){this.opts.bgColor=e;const t=this.hexToNumber(e);this.pixiApp&&(this.pixiApp.renderer.background.color=t,this.pixiApp.render()),this.updateFrame(this.currentTime)}updateDimensions(e,t){this.opts.width=e,this.opts.height=t,this.artboardBg&&this.artboardBg.clear().rect(0,0,e,t).fill({color:0}),this.artboardMask&&this.artboardMask.clear().rect(0,0,e,t).fill({color:16777215}),this.transFromTexture&&this.transFromTexture.resize(e,t),this.transToTexture&&this.transToTexture.resize(e,t),this.transBgGraphics&&this.transBgGraphics.clear().rect(0,0,e,t).fill({color:0,alpha:0}),this.updateArtboardLayout(),this.updateFrame(this.currentTime)}handleResize=()=>{this.destroyed||!this.pixiApp||this._isUpdatingLayout||this.updateArtboardLayout()};updateArtboardLayout(){if(!(!this.pixiApp||!this.artboard||this._isUpdatingLayout)){this._isUpdatingLayout=!0;try{this.pixiApp.resize();const t=this.pixiApp.canvas.parentElement,i=t?t.getBoundingClientRect().width:this.pixiApp.screen.width,n=t?t.getBoundingClientRect().height:this.pixiApp.screen.height,s=this.opts.width,o=this.opts.height,a=this.opts.spacing||0,l=Math.max(0,i-a*2),u=Math.max(0,n-a*2),c=l/s,h=u/o,d=Math.min(c,h);this.artboard.scale.set(d),this.artboard.x=(i-s*d)/2,this.artboard.y=(n-o*d)/2,this.pixiApp.render()}finally{this._isUpdatingLayout=!1}}}getCanvas(){if(this.opts.canvas)return this.opts.canvas;if(this.pixiApp?.canvas)return this.pixiApp.canvas;throw new Error("Canvas not initialized yet. Wait for initPixiApp to complete.")}async addTransition(e,t=2e6,i,n){return this.timeline.addTransition(e,t,i,n)}findTrackIdByClipId(e){return this.timeline.findTrackIdByClipId(e)}async addClip(e,t){(Array.isArray(e)?e:[e]).forEach(n=>this.clipCache.set(n.id,n)),this.beginHistoryGroup();try{return await this.timeline.addClip(e,t)}finally{this.endHistoryGroup()}}addTrack(e,t){return this.timeline.addTrack(e,t)}async setTracks(e){return this.timeline.setTracks(e)}async moveTrack(e,t){return this.timeline.moveTrack(e,t)}async setTrackOrder(e){return this.timeline.setTrackOrder(e)}async removeTrack(e){return this.timeline.removeTrack(e)}getClipById(e){return this.timeline.getClipById(e)}async updateClip(e,t){return this.timeline.updateClip(e,t)}async centerClip(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.width-t.width)/2,n=(this.opts.height-t.height)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{left:i,top:n});t.left=i,t.top=n}async centerClipH(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.width-t.width)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{left:i});t.left=i}async centerClipV(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.height-t.height)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{top:i});t.top=i}async scaleToFit(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=await t.ready,{width:n,height:s}=i;if(n===0||s===0)return;const o=Math.min(this.opts.width/n,this.opts.height/s),a=n*o,l=s*o;if(this.getClipById(t.id))return this.updateClip(t.id,{width:a,height:l});t.width=a,t.height=l}async scaleToCover(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=await t.ready,{width:n,height:s}=i;if(n===0||s===0)return;const o=Math.max(this.opts.width/n,this.opts.height/s),a=n*o,l=s*o;if(this.getClipById(t.id))return this.updateClip(t.id,{width:a,height:l});t.width=a,t.height=l}async updateClips(e){this.suspendRendering(),await this.timeline.updateClips(e),this.resumeRendering(),this.updateFrame(this.currentTime)}suspendRendering(){this.renderingSuspended=!0}resumeRendering(){this.renderingSuspended=!1}getTracks(){return this.timeline.tracks}getClip(e){return this.timeline.getClipById(e)}findClip(e){return this.timeline.getClipById(e)}setupSpriteInteractivity(e){this.selection.setupSpriteInteractivity(e)}async removeClip(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t){console.warn("[Studio] removeClip: Clip not found",e);return}this.beginHistoryGroup();try{return this.clipCache.set(t.id,t),this.timeline.removeClip(t,{permanent:!this.processingHistory})}finally{this.endHistoryGroup()}}async removeClips(e){this.beginHistoryGroup();try{return e.forEach(t=>this.clipCache.set(t.id,t)),this.timeline.removeClips(e,{permanent:!this.processingHistory})}finally{this.endHistoryGroup()}}async removeClipById(e){const t=this.timeline.getClipById(e);if(t)return this.removeClip(t)}async removeClipsById(e){const t=e.map(i=>this.timeline.getClipById(i)).filter(Boolean);return this.removeClips(t)}async deleteSelected(){const e=this.selection.selectedClips;if(e.size!==0){this.beginHistoryGroup();try{await this.removeClips(Array.from(e))}finally{this.endHistoryGroup()}}}async duplicateSelected(){this.beginHistoryGroup();try{return await this.timeline.duplicateSelected()}finally{this.endHistoryGroup()}}async splitSelected(e){this.beginHistoryGroup();try{return await this.timeline.splitSelected(e)}finally{this.endHistoryGroup()}}async trimSelected(e){return this.timeline.trimSelected(e)}async updateSelected(e){return this.timeline.updateSelected(e)}async clear(){await this.timeline.clear(),this.transFromTexture&&(this.transFromTexture.destroy(!0),this.transFromTexture=null),this.transToTexture&&(this.transToTexture.destroy(!0),this.transToTexture=null),this.transBgGraphics&&(this.transBgGraphics.destroy(!0),this.transBgGraphics=null),this.transitionRenderers.forEach(e=>e.destroy()),this.transitionRenderers.clear(),this.transitionSprites.forEach(e=>e.destroy()),this.transitionSprites.clear(),this.emit("reset")}async play(){return this.transport.play()}pause(){this.transport.pause()}async stop(){return this.transport.stop()}async seek(e){return this.transport.seek(e)}async frameNext(){return this.transport.frameNext()}async framePrev(){return this.transport.framePrev()}getCurrentTime(){return this.transport.currentTime}getMaxDuration(){return this.transport.maxDuration}getIsPlaying(){return this.transport.isPlaying}getSelectedClips(){return Array.from(this.selectedClips)}getVideoTexture(e){let t=this.videoTextureCache.get(e);return t||(t=Q.from(e),this.videoTextureCache.set(e,t)),t}isPlaybackCapable(e){return"createPlaybackElement"in e&&"play"in e&&"pause"in e&&"seek"in e&&"syncPlayback"in e&&"cleanupPlayback"in e}async updateFrame(e){if(this.destroyed||this.pixiApp==null||this.renderingSuspended)return;this.updateActiveGlobalEffect(e);const t=new Set,i=new Set,n=this.tracks.length;for(const o of this.clips){const a=this.getTrackIndex(o.id);if(a!==-1){const l=(n-a)*10;o.zIndex=l;const u=this.spriteRenderers.get(o);if(u){const h=u.getRoot();h&&(h.zIndex=l)}const c=this.videoSprites.get(o);c&&(c.zIndex=l)}}const s=[...this.clips].sort((o,a)=>o.zIndex-a.zIndex);for(const o of s){if(e<o.display.from){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}if(o.display.to>0&&e>=o.display.to){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}const a=e-o.display.from,l=a*o.playbackRate;o.animate(l);const u=await o.ready,c=o.duration||u.duration;if(c>0&&a>=c){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}const h=this.playbackElements.get(o),d=o.type==="Video"||o.type==="Image",f=o.transition?o.transition.start:0,p=o.transition?o.transition.end:0,m=d&&o.transition&&e>=f&&e<p;if(h!=null&&this.isPlaybackCapable(o)){const v=a/1e6;if(o.syncPlayback(h.element,this.isPlaying,v),o.type==="Video"&&this.isPlaybackCapable(o)){const x=this.videoSprites.get(o);if(x!=null){const y=o.meta.duration/1e6;if(this.spriteRenderers.has(o))x.visible=!1;else if(x.visible=!m&&v>=0&&v<y,x.visible&&cee(o,x),!m)continue}}else continue}if(m){const v=o?.transition?.fromClipId,x=o?.transition?.toClipId,y=`${v}_${x}`;if(i.has(y)){const E=this.spriteRenderers.get(o);E?.getRoot()&&(E.getRoot().visible=!1);const _=this.videoSprites.get(o);_&&(_.visible=!1);continue}i.add(y),this.transFromTexture||(this.transFromTexture=Ot.create({width:this.opts.width,height:this.opts.height})),this.transToTexture||(this.transToTexture=Ot.create({width:this.opts.width,height:this.opts.height})),this.transBgGraphics||(this.transBgGraphics=new Ze,this.transBgGraphics.rect(0,0,this.opts.width,this.opts.height).fill({color:0,alpha:0}));const b=v?this.getClipById(v):null,T=x?this.getClipById(x):null;let P=null,A=null;if(b){const E=Math.max(0,e-b.display.from),{video:_}=await b.getFrame(E);_ instanceof HTMLVideoElement?P=this.getVideoTexture(_):P=_,P&&(this.lastFromFrame=P)}if(T){const E=Math.max(0,e-T.display.from),{video:_}=await T.getFrame(E);_ instanceof HTMLVideoElement?A=this.getVideoTexture(_):A=_,A&&(this.lastToFrame=A)}if(P||(P=this.lastFromFrame),A||(A=this.lastToFrame),!P||!A)continue;if(P&&A&&this.pixiApp&&this.transFromTexture&&this.transToTexture){const E=(e-f)/o?.transition?.duration;b&&P&&this.renderClipToTransitionTexture(b,P,this.transFromTexture),T&&A&&this.renderClipToTransitionTexture(T,A,this.transToTexture);let _=this.transitionRenderers.get(y);if(!_)try{_=c1({name:o?.transition?.name,renderer:this.pixiApp.renderer}),this.transitionRenderers.set(y,_)}catch(S){console.error("[Studio] Failed to create transition renderer:",S)}if(_){const S=_.render({width:this.opts.width,height:this.opts.height,from:this.transFromTexture,to:this.transToTexture,progress:E});let I=this.transitionSprites.get(o.id);I||(I=new Je,I.label=`TransitionSprite_${o.id}`,this.transitionSprites.set(o.id,I),this.clipsNormalContainer&&this.clipsNormalContainer.addChild(I)),I.texture=S,I.visible=!0,I.x=0,I.y=0,I.width=this.opts.width,I.height=this.opts.height,I.anchor.set(0,0),I.zIndex=o.zIndex,t.add(o.id);const M=this.spriteRenderers.get(o);M?.getRoot()&&(M.getRoot().visible=!1);const O=this.videoSprites.get(o);if(O&&(O.visible=!1),b){const U=this.spriteRenderers.get(b);U?.getRoot()&&(U.getRoot().visible=!1);const X=this.videoSprites.get(b);X&&(X.visible=!1)}if(T){const U=this.spriteRenderers.get(T);U?.getRoot()&&(U.getRoot().visible=!1);const X=this.videoSprites.get(T);X&&(X.visible=!1)}continue}}}const g=this.spriteRenderers.get(o);if(g!=null){const v=this.selectedClips.has(o);if(o.type!=="Text"&&o.type!=="Caption"&&typeof o.getTexture=="function"&&o.getTexture()!=null){const y=o.getTexture();if(y!=null){await g.updateFrame(y),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}if(o.type==="Text"){const y=o;this.pixiApp?.renderer&&typeof y.setRenderer=="function"&&y.setRenderer(this.pixiApp.renderer);const b=await y.getTexture();if(b!=null){await g.updateFrame(b),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}if(o.type==="Caption"){o.updateState(a);const y=o;this.pixiApp?.renderer&&typeof y.setRenderer=="function"&&y.setRenderer(this.pixiApp.renderer);const b=await y.getTexture();if(b!=null){await g.updateFrame(b),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}const{video:x}=await o.getFrame(a);await g.updateFrame(x),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o)}}if(this.activeGlobalEffects.length>0&&this.clipsNormalContainer&&this.clipsEffectContainer){for(const o of this.clips)this.moveClipToEffectContainer(o,!1);this.clipsNormalContainer.visible=!0,await this.applyGlobalEffects(e)}else if(this.clipsNormalContainer){for(const o of this.clips)this.moveClipToEffectContainer(o,!1);this.clipsNormalContainer.visible=!0,this.currentGlobalEffectSprite&&(this.currentGlobalEffectSprite.parent&&this.currentGlobalEffectSprite.parent.removeChild(this.currentGlobalEffectSprite),this.currentGlobalEffectSprite.destroy(),this.currentGlobalEffectSprite=null)}for(const[o,a]of this.transitionSprites.entries())t.has(o)||(a.visible=!1);this.pixiApp!=null&&this.pixiApp.render()}moveClipToEffectContainer(e,t=!0){if(!this.clipsNormalContainer||!this.clipsEffectContainer)return;const i=t?this.clipsEffectContainer:this.clipsNormalContainer,n=this.spriteRenderers.get(e);if(n){const o=n.getRoot();if(o&&o.parent!==i){try{o.parent&&o.parent.removeChild&&o.parent.removeChild(o)}catch(a){console.warn("moveClipToEffectContainer: could not remove root from parent",a)}i.addChild(o)}}const s=this.transitionSprites.get(e.id);if(s&&s.parent!==i){try{s.parent&&s.parent.removeChild&&s.parent.removeChild(s)}catch(o){console.warn("moveClipToEffectContainer: could not remove transSprite from parent",o)}i.addChild(s)}}applyGlobalEffect(e,t,i){const n=t.id||`${e}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s={id:n,key:e,startTime:t.startTime,duration:t.duration??1e6};for(const o of i)o instanceof Bl&&o.addEffect(s),o instanceof br&&o.addEffect(s),o instanceof Ki&&o.addEffect(s),o instanceof On&&o.addEffect(s);return this.globalEffects.set(n,s),n}getTrackIndex(e){return this.tracks.findIndex(t=>t.clipIds.includes(e))}async getTransitionFromFrame(e,t){let i=null;if(e.transition?.prevClipId&&(i=this.clips.find(a=>a.id===e.transition.prevClipId)||null),i||(i=this.getPreviousClipOnTrack(e)),!i)return null;const n=i.duration>0?i.duration:0,s=Math.max(0,Math.min(t-i.display.from,n)),{video:o}=await i.getFrame(s);return o}getPreviousClipOnTrack(e){const t=this.getTrackIndex(e.id);return t===-1?null:this.clips.filter(i=>i.id!==e.id&&this.getTrackIndex(i.id)===t&&i.display.from<e.display.from&&(i instanceof br||i instanceof Bl)).sort((i,n)=>n.display.to-i.display.to)[0]||null}renderClipToTransitionTexture(e,t,i){if(!this.pixiApp)return;const n=e.style||{},{renderTransform:s}=e,o=(s?.mirror??0)>.5,a=t instanceof Q?t:Q.from(t),l=s?.x??0,u=s?.y??0,c=s?.angle??0,h=s?.scale??1,d=s?.opacity??1,f=s?.blur??0,p=s?.brightness??1,m=a.width||1,g=a.height||1,v=e.type==="Caption",x=!v&&e.width&&e.width!==0?Math.abs(e.width)/m:1,y=!v&&e.height&&e.height!==0?Math.abs(e.height)/g:1,b=new Pe;b.x=e.center.x+l,b.y=e.center.y+u,b.rotation=(e.flip==null?1:-1)*((e.angle+c)*Math.PI)/180,b.alpha=e.opacity*d;const T=new Je(a);T.anchor.set(.5,.5);let P=[];if(o){const U=x*h,X=y*h,D=m*U,k=g*X;T.position.set(0,0),T.scale.set(U,X);const Y=[[D,0,-U,X],[-D,0,-U,X],[0,k,U,-X],[0,-k,U,-X],[D,k,-U,-X],[-D,k,-U,-X],[D,-k,-U,-X],[-D,-k,-U,-X]];for(const[H,$,K,we]of Y){const Ie=new Je(a);Ie.anchor.set(.5,.5),Ie.position.set(H,$),Ie.scale.set(K,we),P.push(Ie)}if(e.flip==="horizontal"){T.scale.x=-U;for(let H=0;H<8;H++)P[H].scale.x=-Y[H][2]}else if(e.flip==="vertical"){T.scale.y=-X;for(let H=0;H<8;H++)P[H].scale.y=-Y[H][3]}b.addChild(T);for(const H of P)b.addChild(H)}else e.flip==="horizontal"?(T.scale.x=-x*h,T.scale.y=y*h):e.flip==="vertical"?(T.scale.x=x*h,T.scale.y=-y*h):(T.scale.x=x*h,T.scale.y=y*h),b.addChild(T);const A=[];if(f>0){const U=new ys;U.strength=f,U.quality=4,U.repeatEdgePixels=!0,A.push(U)}if(p!==1){const U=new Ro;U.brightness(p,!1),A.push(U)}b.filters=A;const E=n.borderRadius||0;let _=null;E>0&&(_=new Ze,_.roundRect(-m/2,-g/2,m,g,Math.min(E,m/2,g/2)),_.fill({color:16777215,alpha:1}),T.addChild(_),T.mask=_);const S=n.stroke;let I=null;if(S&&S.width>0){I=new Ze;const U=yt(S.color)??16777215;if(I.setStrokeStyle({width:S.width,color:U,alignment:1}),E>0){const X=Math.min(E,m/2,g/2);I.roundRect(-m/2,-g/2,m,g,X)}else I.rect(-m/2,-g/2,m,g);I.stroke(),T.addChild(I)}const M=n.dropShadow;let O=null;if(M&&(M.blur>0||M.distance>0)){O=new Ze;const U=yt(M.color)??0,X=M.alpha??.5,D=M.distance??0,k=M.angle??0,Y=Math.cos(k)*D,H=Math.sin(k)*D;if(E>0){const $=Math.min(E,m/2,g/2);O.roundRect(-m/2+Y,-g/2+H,m,g,$)}else O.rect(-m/2+Y,-g/2+H,m,g);O.fill({color:U,alpha:X}),b.addChildAt(O,0)}this.pixiApp.renderer.render({container:b,target:i,clear:!0}),t instanceof Q||T.texture.destroy(!0),_&&_.destroy(),I&&I.destroy(),O&&O.destroy();for(const U of P)U.destroy();T.destroy(),b.destroy()}removeGlobalEffect(e){this.globalEffects.delete(e)}clearGlobalEffects(){this.globalEffects.clear()}updateActiveGlobalEffect(e){const t=[];for(const i of this.clips)i instanceof Qi&&e>=i.display.from&&(i.display.to===0||e<i.display.to)&&t.push({id:i.id,key:i.effect.key,startTime:i.display.from,duration:i.duration>0?i.duration:i.display.to-i.display.from,trackIndex:this.getTrackIndex(i.id),values:i.effect.values});for(const i of this.globalEffects.values()){const n=i.startTime+i.duration;e>=i.startTime&&e<n&&t.push({id:i.id,key:i.key,startTime:i.startTime,duration:i.duration,trackIndex:-1})}this.activeGlobalEffects=t.sort((i,n)=>(n.trackIndex??-1)-(i.trackIndex??-1))}async applyGlobalEffects(e){if(this.currentGlobalEffectSprite&&(this.currentGlobalEffectSprite.parent&&this.currentGlobalEffectSprite.parent.removeChild(this.currentGlobalEffectSprite),this.currentGlobalEffectSprite.destroy(),this.currentGlobalEffectSprite=null),this.activeGlobalEffects.length===0||!this.pixiApp||!this.clipContainer||!this.clipsNormalContainer||!this.clipsEffectContainer)return;const t=this.opts.width,i=this.opts.height;let n=null,s=new Set;const o=[];for(const a of this.activeGlobalEffects){const{key:l,startTime:u,duration:c,trackIndex:h,values:d}=a,f=e-u,p=Math.min(Math.max(f/c,0),1);if(p<0||p>=1)continue;if(this.clipsEffectContainer.visible=!0,this.clipsEffectContainer.removeChildren(),n){const y=new Je(n);y.label="PrevEffectResult",y.width=t,y.height=i,this.clipsEffectContainer.addChild(y)}const m=h??-1;for(const y of this.clips){if(s.has(y.id))continue;const b=this.getTrackIndex(y.id);!(y instanceof Qi)&&(m===-1||b>m)&&(this.moveClipToEffectContainer(y,!0),s.add(y.id))}let g=this.effectFilters.get(l);if(!g)try{if(g=await l1({name:l,renderer:this.pixiApp.renderer,values:d}),g)this.effectFilters.set(l,g);else continue}catch(y){console.error(y);continue}const v=Ot.create({width:t,height:i});o.push(v),this.pixiApp.renderer.render({container:this.clipsEffectContainer,target:v,clear:!0});const x=g.render({canvasTexture:v,progress:p,width:t,height:i,values:d});this.clipsEffectContainer.visible=!1,n=x}if(n){const a=new Je(n);a.x=0,a.y=0,a.width=t,a.height=i,a.scale.set(1),a.zIndex=5,this.clipContainer.addChild(a),this.currentGlobalEffectSprite=a}for(const a of o)a.destroy(!0)}destroy(){if(!this.destroyed){window.removeEventListener("resize",this.handleResize),this.destroyed=!0,this.stop(),this.clear(),this.transitionRenderers.clear(),this.transFromTexture&&(this.transFromTexture.destroy(!0),this.transFromTexture=null),this.transToTexture&&(this.transToTexture.destroy(!0),this.transToTexture=null),this.transBgGraphics&&(this.transBgGraphics.destroy(!0),this.transBgGraphics=null);for(const e of this.transitionSprites.values())e.destroy();this.transitionSprites.clear(),this.pixiApp&&(this.pixiApp.destroy(!0,{children:!0,texture:!0}),this.pixiApp=null)}}selectClip(e,t=!1){this.selection.selectClip(e,t)}setSelection(e){this.selection.setSelection(e)}selectClipsByIds(e){this.selection.selectClipsByIds(e)}deselectClip(){this.selection.deselectClip()}async lockClip(e,t){const i=this.timeline.getClipById(e);i&&(await this.timeline.updateClip(e,{locked:t}),this.emit("clip:lock-changed",{clip:i,locked:t}),this.selection.selectedClips.has(i)&&this.selection.recreateTransformer(),await this.updateFrame(this.currentTime))}exportToJSON(){return this.timeline.exportToJSON()}async loadFromJSON(e){return this.timeline.loadFromJSON(e)}}xe.add($T),xe.mixin(Pe,eC),xe.add(Ox),xe.add(Ux),xe.add(Ly),xe.mixin(Pe,pP),xe.add(Oy),xe.add(yb),xe.add(kc),xe.add(_b),xe.add(Cb),xe.add(Ab),xe.add(Nb),xe.add(Lb),xe.add(Mb),xe.add(Ub),xe.add(Db),xe.add(kb),xe.add(Pb),xe.add(Ky),xe.add(Yy);const Ate=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Ete=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));_e.ANIMATABLE_PROPERTIES=FL,_e.Audio=Jr,_e.Caption=On,_e.Compositor=mte,_e.DEFAULT_AUDIO_CONF=rt,_e.Effect=Qi,_e.GL_EFFECT_OPTIONS=yQ,_e.GL_TRANSITION_OPTIONS=fte,_e.Image=Bl,_e.KeyframeAnimation=B,_e.Log=Ue,_e.MP4Clip=br,_e.Placeholder=kl,_e.Studio=Cte,_e.Text=Ki,_e.Transition=Bi,_e.VALUES_FILTER_SPECIAL=a1,_e.VALUES_FILTER_SPECIAL_LIMITS=aee,_e.Video=br,_e.animationRegistry=z,_e.clipToJSON=Rl,_e.createChromakey=TL,_e.createSlowMo=iS,_e.easings=Su,_e.fastConcatMP4=Hk,_e.fixFMP4Duration=Iq,_e.fontManager=L4,_e.getAllEffects=jb,_e.getAllTransitions=qo,_e.getEasing=Y0,_e.getEffectOptions=Yk,_e.getPresetTemplate=V,_e.getTransitionOptions=D4,_e.jsonToClip=Xo,_e.makeEffect=l1,_e.makeTransition=c1,_e.mixinMP4AndAudio=Fq,_e.registerCustomEffect=gQ,_e.registerCustomTransition=hte,_e.renderTxt2ImgBitmap=kL,_e.unregisterCustomEffect=vQ,_e.unregisterCustomTransition=dte,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})}));
14345
+ `,hte={radialSwipe:{label:"Radial Swipe",fragment:vee}},Ah={};function dte(r,e){Ah[r]=e}function fte(r){delete Ah[r]}function qo(){return{...Yo.reduce((r,e)=>(r[e.name]={label:e.name,fragment:e.glsl,uniforms:e.defaultParams,previewDynamic:""},r),{}),...hte,...Ah}}qo();function D4(){const r=Object.keys(Ah);return Object.entries(qo()).map(([e,t])=>({key:e,label:t.label,isCustom:r.includes(e),previewStatic:t.previewStatic||`https://cdn.subgen.co/previews/static/transition_${e}_static.webp`,previewDynamic:t.previewDynamic||`https://cdn.subgen.co/previews/dynamic/transition_${e}_dynamic.webp`}))}const pte=D4();function c1({name:r,renderer:e}){let t=Yo.find(G=>G.name===r);if(!t){const G=qo(),ne=Object.keys(G).find(oe=>oe.toLowerCase()===r.toLowerCase());ne&&(t=G[ne])}if(t||(t=Yo.find(G=>G.name.toLowerCase()===r.toLowerCase())),!t){const G=[r,r.toLowerCase(),r.charAt(0).toUpperCase()+r.slice(1).toLowerCase(),r.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,""),r.replace(/_/g,"")],ne=qo();for(const oe of G){if(t=Yo.find(be=>be.name.toLowerCase()===oe.toLowerCase()),t)break;const te=Object.keys(ne).find(be=>be.toLowerCase()===oe.toLowerCase());if(te){t=ne[te];break}}}if(!t){const G=Yo.length,ne=Yo.slice(0,5).map(be=>be.name).join(", "),oe=qo(),te=Object.keys(oe).slice(0,3).join(", ");throw console.error(`Transition not found: "${r}". Available in gl-transitions (${G} total):`,ne+"..."),console.error("Available locally:",te+"..."),new Error(`Transition "${r}" not found in gl-transitions library or local definitions`)}const i=new Je(Q.WHITE),n=Ot.create({width:e.width,height:e.height}),s=new jr({}),o=new jr({}),a=t.name==="displacement"||r.toLowerCase()==="displacement"||t.label==="displacement",l=a?new jr({}):void 0;let u=null;if(a){u=document.createElement("canvas"),u.width=256,u.height=256;const G=u.getContext("2d");if(G){const ne=G.createImageData(256,256);for(let oe=0;oe<ne.data.length;oe+=4){const te=Math.random();ne.data[oe]=te*255,ne.data[oe+1]=te*255,ne.data[oe+2]=te*255,ne.data[oe+3]=255}G.putImageData(ne,0,0)}}let c=t.glsl||t.fragment;if(!c)throw new Error(`Transition "${r}" has no glsl or fragment code`);let h={...st.basics,...st.custom(t)};Object.entries(h).forEach(([,G])=>{G.type==="int<f32>"&&(G.type="i32",typeof G.value=="number"&&(G.value=Math.trunc(G.value))),G.type==="ivec2<f32>"&&(G.type="vec2<f32>")});const d=t.name==="GridFlip"||r.toLowerCase()==="gridflip"||t.label==="gridflip",f=t.name==="circle"||r.toLowerCase()==="circle"||t.label==="circle",p=t.name==="directional"||r.toLowerCase()==="directional"||t.label==="directional",m=t.name==="UndulatingBurnOut"||r.toLowerCase()==="undulatingburnout"||t.label==="undulatingBurnOut",g=t.name==="SquaresWire"||r.toLowerCase()==="squareswire"||t.label==="squaresWire",v=t.name==="rotate_scale_fade"||r.toLowerCase()==="rotatescalefade"||t.label==="rotateScaleFade",x=t.name==="RandomSquares"||r.toLowerCase()==="randomsquares"||t.label==="randomSquares",y=t.name==="polar_function"||r.toLowerCase()==="polar_function"||t.label==="polar_function",b=t.name==="pixelate"||r.toLowerCase()==="pixelate"||t.label==="pixelate",T=t.name==="perlin"||r.toLowerCase()==="perlin"||t.label==="perlin",P=t.name==="luma"||r.toLowerCase()==="luma"||t.label==="luma",A=t.name==="luminance_melt"||r.toLowerCase()==="luminance_melt"||r.toLowerCase()==="luminancemelt"||t.label==="luminance_melt",E=t.name==="hexagonalize"||r.toLowerCase()==="hexagonalize"||t.label==="hexagonalize",_=t.name==="heart"||r.toLowerCase()==="heart"||t.label==="heart",S=t.name==="displacement"||r.toLowerCase()==="displacement"||t.label==="displacement",I=t.name==="directionalwipe"||r.toLowerCase()==="directionalwipe"||r.toLowerCase()==="directional_wipe"||t.label==="directionalwipe",M=t.name==="directionalwarp"||r.toLowerCase()==="directionalwarp"||r.toLowerCase()==="directional_warp"||t.label==="directionalwarp",O=t.name==="crosshatch"||r.toLowerCase()==="crosshatch"||t.label==="crosshatch",U=t.name==="circleopen"||r.toLowerCase()==="circleopen"||r.toLowerCase()==="circle_open"||t.label==="circleopen",X=t.name==="cannabisleaf"||r.toLowerCase()==="cannabisleaf"||r.toLowerCase()==="cannabis_leaf"||t.label==="cannabisleaf",D=t.name==="StereoViewer"||r.toLowerCase()==="stereoviewer"||r.toLowerCase()==="stereo_viewer"||t.label==="StereoViewer",k=t.name==="GlitchDisplace"||r.toLowerCase()==="glitchDisplace"||t.label==="GlitchDisplace",Y=t.name==="CrossZoom"||r.toLowerCase()==="crosszoom"||t.label==="CrossZoom",H=t.name==="CrazyParametricFun"||r.toLowerCase()==="crazyparametricfun"||t.label==="CrazyParametricFun",$=t.name==="BowTieHorizontal"||r.toLowerCase()==="bowtiehorizontal"||t.label==="BowTieHorizontal",K=t.name==="PolkaDotsCurtain"||r.toLowerCase()==="polkadotscurtain"||t.label==="PolkaDotsCurtain",we=t.name==="Pixelize"||r.toLowerCase()==="pixelize"||t.label==="Pixelize";d&&(c=xee,h={...st.basics,...yee}),f&&(c=bee,h={...st.basics,...M4}),p&&(c=_ee,h={...st.basics,...wee}),m&&(c=See,h={...st.basics,...Tee}),g&&(c=Cee,h={...st.basics,...Aee}),v&&(c=Eee,h={...st.basics,...Pee}),x&&(c=Iee,h={...st.basics,...Bee}),y&&(c=kee,h={...st.basics,...Ree}),b&&(c=Wk,h={...st.basics,...Vk}),T&&(c=Dee,h={...st.basics,...Oee}),P&&(c=Uee,h={...st.basics,...zee}),A&&(c=Lee,h={...st.basics,...Nee}),E&&(c=Gee,h={...st.basics,...Hee}),_&&(c=Wee,h={...st.basics,...Vee}),S&&(c=Xee,h={...st.basics,...Yee}),I&&(c=qee,h={...st.basics,...jee}),M&&(c=Kee,h={...st.basics,...Qee}),O&&(c=Zee,h={...st.basics,...Jee}),U&&(c=$ee,h={...st.basics,...M4}),X&&(c=ete,h={...st.basics,...tte}),D&&(c=rte,h={...st.basics,...ite}),k&&(c=nte),Y&&(c=ste,h={...st.basics,...ote}),H&&(c=ate,h={...st.basics,...lte}),$&&(c=ute),K&&(c=cte),we&&(c=Fee,h={...st.basics,...Mee});const Ie={from:s,to:o,uniforms:h};a&&l&&(Ie.displacementMap=l,u&&(l.resource=u,l.update()));const ve=new ge({glProgram:new ue({vertex:pee,fragment:gee(c)}),resources:Ie});return i.filters=[ve],{render({width:G,height:ne,from:oe,to:te,progress:be}){if((i.width!==G||i.height!==ne)&&(i.setSize({width:G,height:ne}),n.resize(G,ne)),oe instanceof Q?ve.resources.from=oe.source:(s.resource=oe,s.update(),ve.resources.from=s),te instanceof Q?ve.resources.to=te.source:(o.resource=te,o.update(),ve.resources.to=o),a&&l&&u){if(u.width!==G||u.height!==ne){u.width=G,u.height=ne;const Le=u.getContext("2d");if(Le){const ke=Le.createImageData(G,ne);for(let Ae=0;Ae<ke.data.length;Ae+=4){const je=Math.random();ke.data[Ae]=je*255,ke.data[Ae+1]=je*255,ke.data[Ae+2]=je*255,ke.data[Ae+3]=255}Le.putImageData(ke,0,0)}}l.resource=u,l.update()}return ve.resources.uniforms.uniforms.progress=be,e.render({container:i,target:n,clear:!0,width:G,height:ne}),n},destroy(){n.destroy(),i.destroy({children:!0})}}}let mte=0;async function O4(r){r()>50&&(await wu(15),await O4(r))}class gte extends X0{static async isSupported(e={}){return(self.OffscreenCanvas!=null&&self.VideoEncoder!=null&&self.VideoDecoder!=null&&self.VideoFrame!=null&&self.AudioEncoder!=null&&self.AudioDecoder!=null&&self.AudioData!=null&&((await self.VideoEncoder.isConfigSupported({codec:e.videoCodec??"avc1.42E032",width:e.width??1920,height:e.height??1080,bitrate:e.bitrate??7e6})).supported??!1)&&(await self.AudioEncoder.isConfigSupported({codec:(await kk()).codec,sampleRate:rt.sampleRate,numberOfChannels:rt.channelCount})).supported)??!1}logger=Ue.create(`id:${mte++},`);destroyed=!1;sprites=[];canvas;pixiApp=null;stopOutput=null;opts;hasVideoTrack;constructor(e={}){super(),console.log("Compositor constructor",e);const{width:t=0,height:i=0}=e;this.canvas=new OffscreenCanvas(t,i),this.opts=Object.assign({bgColor:"#000",width:0,height:0,format:"mp4",videoCodec:"avc1.42E032",audio:!0,audioCodec:"aac",audioSampleRate:48e3,bitrate:5e6,fps:30,metaDataTags:null},e),console.log("Compositor opts",this.opts),this.hasVideoTrack=t*i>0,kk().catch(n=>{this.logger.warn("Failed to detect audio codec:",n)})}async initPixiApp(){const{width:e,height:t}=this.opts;if(this.pixiApp=new gc,await this.pixiApp.init({canvas:this.canvas,width:e,height:t,backgroundColor:0,antialias:!1,autoDensity:!1,resolution:1,preference:"webgl"}),this.pixiApp.renderer==null||this.pixiApp.stage==null)throw new Error("Pixi.js Application failed to initialize properly");try{const i=this.pixiApp;i.ticker&&typeof i.ticker.stop=="function"&&i.ticker.stop()}catch{}}async addSprite(e,t={}){const i={rect:{x:e.left,y:e.top,w:e.width,h:e.height},display:{...e.display},duration:e.duration,playbackRate:e.playbackRate,zIndex:e.zIndex};this.logger.info("Compositor add clip",i);const n=await e.clone();this.pixiApp!=null&&this.pixiApp.renderer!=null&&typeof n.setRenderer=="function"&&n.setRenderer(this.pixiApp.renderer),this.logger.info("Compositor add clip ready"),this.sprites.push(Object.assign(n,{main:t.main??!1,expired:!1})),this.sprites.sort((s,o)=>s.zIndex-o.zIndex)}initMuxer(e){const{fps:t,width:i,height:n,videoCodec:s,bitrate:o,audio:a,metaDataTags:l,format:u,audioCodec:c,audioSampleRate:h}=this.opts,d=this.sprites.some(m=>m.width>0&&m.height>0),f=this.hasVideoTrack&&d;return UO({format:u||"mp4",video:f?{width:i,height:n,expectFPS:t,codec:s,bitrate:o,__unsafe_hardwareAcceleration__:this.opts.__unsafe_hardwareAcceleration__}:null,audio:a===!1?null:{codec:c||rt.codecType,sampleRate:h||rt.sampleRate,channelCount:rt.channelCount},duration:e,metaDataTags:l})}output(e={}){if(console.log("Compositor output",e),this.sprites.length===0)throw Error("No sprite added");const t=this.sprites.find(u=>u.main),n=this.sprites.map(u=>u.display.from+u.duration).filter(u=>u!==1/0),s=e.maxTime??(t!=null?t.display.from+t.duration:n.length>0?Math.max(...n):0);if(s===1/0||s<=0)throw Error("Unable to determine the end time, please specify a main sprite, or limit the duration of Image, Audio");s===-1&&this.logger.warn("Unable to determine the end time, process value don't update"),this.logger.info(`start combinate video, maxTime:${s}`);const o=this.initMuxer(s);let a=performance.now();const l=this.runEncoding(o,s,{onProgress:u=>{this.logger.debug("OutputProgress:",u),this.emit("OutputProgress",u)},onEnded:async()=>{await o.flush(),this.logger.info("===== output ended =====, cost:",performance.now()-a),this.emit("OutputProgress",1),this.destroy()},onError:u=>{this.emit("error",u),o.close(),this.destroy()}});return this.stopOutput=()=>{l(),o.close()},o.stream}destroy(){if(!this.destroyed&&(this.destroyed=!0,this.stopOutput?.(),this.off("OutputProgress"),this.off("error"),this.pixiApp!=null))try{const e=this.pixiApp;if(e.destroyed===!0){this.pixiApp=null;return}if(e.ticker&&typeof e.ticker.stop=="function")try{e.ticker.stop()}catch{}if(e.renderer!=null){const t=e.renderer.gl;if(t&&t.isContextLost()){this.pixiApp=null;return}this.pixiApp.destroy()}}catch(e){console.warn("Error while destroying Pixi application:",e)}finally{this.pixiApp=null}}runEncoding(e,t,{onProgress:i,onEnded:n,onError:s}){let o=0;const a={aborted:!1};let l=null,u=null;const c=async()=>{const{fps:f,bgColor:p,audio:m}=this.opts,g=Math.round(1e6/f),v=this.sprites.some(b=>b.width>0&&b.height>0);u=vte({pixiApp:this.pixiApp,sprites:this.sprites,aborter:a});const x=xte({muxer:e,canvas:this.canvas,outputAudio:m,hasVideoTrack:this.hasVideoTrack&&v,timeSlice:g,fps:f});let y=0;for(;;){if(l!=null)return;if(a.aborted||t!==-1&&y>t||this.sprites.length===0){h(),await n();return}o=y/t;const{audios:b,mainSprDone:T}=await u.render(y);if(T){h(),await n();return}if(a.aborted)return;this.hasVideoTrack&&await wu(0),x(y,b,!0),y+=g,await O4(e.getEncodeQueueSize)}},h=()=>{a.aborted||(a.aborted=!0,clearInterval(d),u?.cleanup(),this.sprites.forEach(f=>{f.destroy()}))};c().catch(f=>{l=f,this.logger.error(f),h(),s(f)});const d=setInterval(()=>{i(o)},500);return h}exportToJSON(){const e=this.sprites.map(i=>Rl(i,i.main)),t=[];return this.sprites.forEach(i=>{if(i.transition){const n=this.sprites.filter(s=>s.id!==i.id&&s.zIndex===i.zIndex&&s.display.from<i.display.from&&(s instanceof br||s instanceof Bl)).sort((s,o)=>o.display.to-s.display.to)[0];n&&t.push({key:i.transition.name,duration:i.transition.duration,clips:[n.id,i.id]})}}),{clips:e,settings:{width:this.opts.width,height:this.opts.height,fps:this.opts.fps,bgColor:this.opts.bgColor,format:this.opts.format,videoCodec:this.opts.videoCodec,bitrate:this.opts.bitrate,audio:this.opts.audio,audioCodec:this.opts.audioCodec,audioSampleRate:this.opts.audioSampleRate,metaDataTags:this.opts.metaDataTags}}}async loadFromJSON(e){this.sprites.forEach(t=>{t.destroy()}),this.sprites=[],e.settings&&(e.settings.width!==void 0&&(this.opts.width=e.settings.width),e.settings.height!==void 0&&(this.opts.height=e.settings.height),e.settings.fps!==void 0&&(this.opts.fps=e.settings.fps),e.settings.bgColor!==void 0&&(this.opts.bgColor=e.settings.bgColor),e.settings.format!==void 0&&(this.opts.format=e.settings.format),e.settings.videoCodec!==void 0&&(this.opts.videoCodec=e.settings.videoCodec),e.settings.bitrate!==void 0&&(this.opts.bitrate=e.settings.bitrate),e.settings.audio!==void 0&&(this.opts.audio=e.settings.audio===!1?!1:void 0),e.settings.audioCodec!==void 0&&(this.opts.audioCodec=e.settings.audioCodec),e.settings.audioSampleRate!==void 0&&(this.opts.audioSampleRate=e.settings.audioSampleRate),e.settings.metaDataTags!==void 0&&(this.opts.metaDataTags=e.settings.metaDataTags));for(const t of e.clips){const i=await Xo(t);await this.addSprite(i,{main:t.main||!1})}}}function vte(r){const{pixiApp:e,sprites:t,aborter:i}=r,n=e!=null,s=new Map,o=new Map,a=new Map,l=Ot.create({width:e?.renderer.width||0,height:e?.renderer.height||0}),u=Ot.create({width:e?.renderer.width||0,height:e?.renderer.height||0}),c=new Ze().rect(0,0,e?.renderer.width||0,e?.renderer.height||0).fill({color:0}),h=new Map,d=async(b,T,P)=>{const A=Math.max(0,Math.min(T-b.display.from,b.duration));b.animate(A*b.playbackRate);const{video:E}=await P(b,A);return E},f=(b,T,P)=>{if(!e)return;const A=b.style||{},{renderTransform:E}=b,_=(E?.mirror??0)>.5,S=T instanceof Q?T:Q.from(T),I=E?.x??0,M=E?.y??0,O=E?.angle??0,U=E?.scale??1,X=E?.scaleX??1,D=E?.scaleY??1,k=E?.opacity??1,Y=E?.blur??0,H=E?.brightness??1,$=S.width||1,K=S.height||1,we=b.type==="Caption",Ie=!we&&b.width&&b.width!==0?Math.abs(b.width)/$:1,ve=!we&&b.height&&b.height!==0?Math.abs(b.height)/K:1,G=Ie*U*X,ne=ve*U*D,oe=new Pe;oe.x=b.center.x+I,oe.y=b.center.y+M,oe.rotation=(b.flip==null?1:-1)*((b.angle+O)*Math.PI)/180,oe.alpha=b.opacity*k;const te=new Je(S);te.anchor.set(.5,.5);let be=[];if(_){const Re=G,nt=ne,Bt=$*Re,Vt=K*nt;te.position.set(0,0),te.scale.set(Re,nt);const Qe=[[Bt,0,-Re,nt],[-Bt,0,-Re,nt],[0,Vt,Re,-nt],[0,-Vt,Re,-nt],[Bt,Vt,-Re,-nt],[-Bt,Vt,-Re,-nt],[Bt,-Vt,-Re,-nt],[-Bt,-Vt,-Re,-nt]];for(const[Oe,Ri,As,Fl]of Qe){const Un=new Je(S);Un.anchor.set(.5,.5),Un.position.set(Oe,Ri),Un.scale.set(As,Fl),be.push(Un)}if(b.flip==="horizontal"){te.scale.x=-Re;for(let Oe=0;Oe<8;Oe++)be[Oe].scale.x=-Qe[Oe][2]}else if(b.flip==="vertical"){te.scale.y=-nt;for(let Oe=0;Oe<8;Oe++)be[Oe].scale.y=-Qe[Oe][3]}oe.addChild(te);for(const Oe of be)oe.addChild(Oe)}else b.flip==="horizontal"?(te.scale.x=-G,te.scale.y=ne):b.flip==="vertical"?(te.scale.x=G,te.scale.y=-ne):(te.scale.x=G,te.scale.y=ne),oe.addChild(te);const Le=[];if(Y>0){const Re=new ys;Re.strength=Y,Re.quality=4,Re.repeatEdgePixels=!0,Le.push(Re)}if(H!==1){const Re=new Ro;Re.brightness(H,!1),Le.push(Re)}if(b.chromaKey&&b.chromaKey.enabled){const Re=new ft({uKeyColor:{value:[0,1,0],type:"vec3<f32>"},uSimilarity:{value:.1,type:"f32"},uSpill:{value:0,type:"f32"}}),nt=Fk(b.chromaKey.color);nt&&(Re.uniforms.uKeyColor[0]=nt.r/255,Re.uniforms.uKeyColor[1]=nt.g/255,Re.uniforms.uKeyColor[2]=nt.b/255),Re.uniforms.uSimilarity=b.chromaKey.similarity,Re.uniforms.uSpill=b.chromaKey.spill;const Bt=new ge({glProgram:new ue({vertex:qb,fragment:Xk,name:"ChromaKeyShader"}),resources:{chromaUniforms:Re}});Le.push(Bt)}oe.filters=Le;const ke=A.borderRadius||0;let Ae=null;ke>0&&(Ae=new Ze,Ae.roundRect(-$/2,-K/2,$,K,Math.min(ke,$/2,K/2)),Ae.fill({color:16777215,alpha:1}),te.addChild(Ae),te.mask=Ae);const je=A.stroke;let Fe=null;if(je&&je.width>0){Fe=new Ze;const Re=yt(je.color)??16777215;if(Fe.setStrokeStyle({width:je.width,color:Re,alignment:1}),ke>0){const nt=Math.min(ke,$/2,K/2);Fe.roundRect(-$/2,-K/2,$,K,nt)}else Fe.rect(-$/2,-K/2,$,K);Fe.stroke(),te.addChild(Fe)}const at=A.dropShadow;let it=null;if(at&&(at.blur>0||at.distance>0)){it=new Ze;const Re=yt(at.color)??0,nt=at.alpha??.5,Bt=at.distance??0,Vt=at.angle??0,Qe=Math.cos(Vt)*Bt,Oe=Math.sin(Vt)*Bt;if(ke>0){const Ri=Math.min(ke,$/2,K/2);it.roundRect(-$/2+Qe,-K/2+Oe,$,K,Ri)}else it.rect(-$/2+Qe,-K/2+Oe,$,K);it.fill({color:Re,alpha:nt}),oe.addChildAt(it,0)}e.renderer.render({container:oe,target:P,clear:!0}),T instanceof Q||te.texture.destroy(!0),Fe&&Fe.destroy(),Ae&&Ae.destroy(),it&&it.destroy();for(const Re of be)Re.destroy();te.destroy(),oe.destroy()};let p=null,m=null,g=null;n&&e!=null&&(p=new Pe,m=new Pe,g=new Pe,m.sortableChildren=!0,g.sortableChildren=!0,e.stage.addChild(m),e.stage.addChild(g),p.visible=!1,e.stage.addChild(p));const v=[...t].sort((b,T)=>b.zIndex-T.zIndex);return{render:async b=>{const T=[];let P=!1,A=!1;const E=new Map,_=async(S,I)=>{if(E.has(S))return E.get(S);const M=await S.getFrame(I);return E.set(S,M),M};for(const S of a.values())S.visible=!1;for(const S of v){if(i.aborted)break;if(b<S.display.from||S.expired){if(n&&e!=null){const D=s.get(S);D&&await D.updateFrame(null)}continue}const I=b-S.display.from,M=I*S.playbackRate;S.animate(M);const{video:O,audio:U,done:X}=await _(S,I);if(T.push(U),n&&e!=null&&m!=null){if(S instanceof Bi){const k=t.find(H=>H.id===S.fromClipId),Y=t.find(H=>H.id===S.toClipId);if(k&&Y){const H=b-S.display.from;if(H>=S.duration){S.expired=!0;const $=a.get(S.id);$&&($.visible=!1)}else{const $=await d(k,b,_),K=await d(Y,b,_);if($&&K){const we=Math.min(Math.max(H/S.duration,0),1);f(k,$,l),f(Y,K,u);let Ie=o.get(S.id);Ie||(Ie=c1({name:S.transitionEffect.key,renderer:e.renderer}),o.set(S.id,Ie));const ve=Ie.render({width:e.renderer.width,height:e.renderer.height,from:l,to:u,progress:we});let G=a.get(S.id);G||(G=new Je,G.label=`TransitionSprite_${S.id}`,a.set(S.id,G),m.addChild(G)),G.texture=ve,G.visible=!0,G.x=0,G.y=0,G.width=e.renderer.width,G.height=e.renderer.height,G.anchor.set(0,0),G.zIndex=S.zIndex,A=!0;const ne=s.get(k);if(ne){const te=ne.getRoot();te&&(te.visible=!1)}const oe=s.get(Y);if(oe){const te=oe.getRoot();te&&(te.visible=!1)}continue}}}}let D=s.get(S);if(D==null&&O!=null&&(D=new R4(e,S,m),s.set(S,D)),D!=null){const k=D.getRoot();O!=null?(A=!0,k&&(k.visible=!0),await D.updateFrame(O)):(k&&(k.visible=!1),await D.updateFrame(null)),D.updateTransforms()}}if(S.duration>0&&I>S.duration||X){if(S.main&&(P=!0),S.expired=!0,n){const D=s.get(S);if(D!=null){const k=D.getRoot();k&&(k.visible=!1)}}}else if(n){const D=s.get(S);D?.updateTransforms()}}if(n&&e!=null&&p!=null&&m!=null&&g!=null){const S=[];for(const I of t)if(I instanceof Qi&&b>=I.display.from&&b<I.display.from+I.duration&&S.push({id:I.id,key:I.effect.key,startTime:I.display.from,duration:I.duration,zIndex:I.zIndex,values:I.effect.values}),I.effects&&I.effects.length>0)for(const M of I.effects)b>=M.startTime&&b<M.startTime+M.duration&&S.push({...M,zIndex:I.zIndex});S.sort((I,M)=>I.zIndex-M.zIndex),g.removeChildren();for(const I of s.values()){const M=I.getRoot();M&&M.parent!==m&&(M.parent&&M.parent.removeChild(M),m.addChild(M))}if(S.length>0){const I=e.renderer.width,M=e.renderer.height;let O=null;const U=new Set,X=[];for(const D of S){const{key:k,startTime:Y,duration:H,id:$,zIndex:K}=D,we=b-Y,Ie=H>0?Math.min(Math.max(we/H,0),1):0,ve=t.some(G=>G.id===$&&G instanceof Qi);if(p.removeChildren(),O){const G=new Je(O);G.width=I,G.height=M,p.addChild(G)}for(const G of t){if(U.has(G.id))continue;let ne=!1;if(ve?ne=G.id!==$&&G.zIndex<K:ne=!!G.effects&&G.effects.some(oe=>oe.id===$),ne){const oe=s.get(G);if(oe){const be=oe.getRoot();be&&(be.parent&&be.parent.removeChild(be),p.addChild(be),U.add(G.id))}const te=a.get(G.id);te&&(te.parent&&te.parent.removeChild(te),p.addChild(te),U.add(G.id))}}if(p.children.length>0){let G=h.get($);if(!G)try{const ne=await l1({name:k,renderer:e.renderer,values:D.values});ne&&ne.filter&&(G={filter:ne.filter,render:ne.render},h.set($,G))}catch(ne){console.warn("Failed to create effect",k,ne)}if(G){const{filter:ne,render:oe}=G;ne.resources&&ne.resources.effectUniforms&&(ne.resources.effectUniforms.uniforms.uTime=Ie);const te=Ot.create({width:I,height:M});X.push(te),p.visible=!0,e.renderer.render({container:p,target:te,clear:!0}),p.visible=!1,oe&&(O=oe({canvasTexture:te,progress:Ie,width:I,height:M}))}}}if(O){const D=new Je(O);D.width=I,D.height=M,g.addChild(D)}for(const D of X)D.destroy(!0)}}return n&&e!=null&&e.render(),{audios:T,mainSprDone:P,hasVideo:A}},cleanup:()=>{l&&l.destroy(!0),u&&u.destroy(!0),c&&c.destroy(!0);for(const b of a.values())b.destroy();a.clear(),o.clear(),p&&p.destroy({children:!0}),m&&m.destroy({children:!0}),g&&g.destroy({children:!0}),s.forEach(b=>{b.destroy()}),s.clear()}}}function xte(r){const{canvas:e,outputAudio:t,muxer:i,hasVideoTrack:n,timeSlice:s}=r;let o=0;const a=Math.floor(3*r.fps),l=yte(1024);return(u,c,h)=>{if(t!==!1)for(const d of l(u,c))i.encodeAudio(d);if(n&&h)try{const d=new VideoFrame(e,{duration:s,timestamp:u});i.encodeVideo(d,{keyFrame:o%a===0}),o+=1}catch(d){console.warn("Failed to create VideoFrame from canvas, skipping frame:",d)}}}function yte(r){const e=r*rt.channelCount,t=new Float32Array(e*3);let i=0,n=0;const s=r/rt.sampleRate*1e6,o=new Float32Array(e),a=l=>{let u=0;const c=Math.floor(i/e),h=[];for(let d=0;d<c;d++)h.push(new AudioData({timestamp:n,numberOfChannels:rt.channelCount,numberOfFrames:r,sampleRate:rt.sampleRate,format:"f32",data:t.subarray(u,u+e)})),u+=e,n+=s;for(t.set(t.subarray(u,i),0),i-=u;l-n>s;)h.push(new AudioData({timestamp:n,numberOfChannels:rt.channelCount,numberOfFrames:r,sampleRate:rt.sampleRate,format:"f32",data:o})),n+=s;return h};return(l,u)=>{const c=Math.max(...u.map(h=>h[0]?.length??0));for(let h=0;h<c;h++){let d=0,f=0;for(let p=0;p<u.length;p++){const m=u[p][0]?.[h]??0,g=u[p][1]?.[h]??m;d+=m,f+=g}t[i]=d,t[i+1]=f,i+=2}return a(l)}}class bte extends Ze{constructor(){super(),this.eventMode="static",this.cursor="move"}draw(e,t=1){const n=1.5*t;this.clear(),this.setStrokeStyle({width:n,color:165063}).rect(e.x,e.y,e.width,e.height).stroke(),this.hitArea=e}}class Ji extends Ze{#e=!1;handle;cursor;callbacks;constructor(e,t,i){super(),this.handle=e,this.cursor=t,this.callbacks=i,this.eventMode="static",this.#l(),this.on("pointerdown",this.#r),this.on("globalpointermove",this.#n),this.on("pointerup",this.#u),this.on("pointerupoutside",this.#u)}#l(){this.clear();const e=165063;if(this.handle==="rot")this.circle(0,0,8),this.fill({color:"#ffffff"}),this.stroke({width:1,color:13421772}),this.moveTo(0,-4),this.arc(0,0,4,-Math.PI/2,Math.PI,!1),this.stroke({width:1,color:0}),this.moveTo(0,-8),this.lineTo(-3,-5),this.lineTo(0,-2),this.stroke({width:1,color:0,cap:"round",join:"round"}),this.hitArea=new sl(0,0,24);else if(["ml","mr","mt","mb"].includes(this.handle)){const t=this.handle==="ml"||this.handle==="mr",i=t?6:24,n=t?24:6;this.roundRect(-i/2,-n/2,i,n,3),this.fill({color:"#ffffff"}),this.stroke({width:1,color:e}),this.hitArea=new he(-15,-15,30,30)}else this.rect(-4,-4,8,8),this.fill({color:"#ffffff"}),this.stroke({width:1,color:e}),this.hitArea=new he(-15,-15,30,30)}#r=e=>{this.#e=!0,this.cursor="grabbing",this.callbacks.beginDrag(this.handle,e.global)};#n=e=>{this.#e&&this.callbacks.updateDrag(this.handle,e.global)};#u=e=>{this.#e&&(this.#e=!1,this.cursor="pointer",this.callbacks.endDrag())}}class Eh{constructor(e,t,i=1){this.artboardWidth=e,this.artboardHeight=t,this.scale=i}static SNAP_THRESHOLD=5;updateContext(e,t,i){this.artboardWidth=e,this.artboardHeight=t,this.scale=i}snapMove(e){const t=[];let i=0,n=0;const s=Eh.SNAP_THRESHOLD/this.scale,o=[{value:this.artboardWidth/2,label:"center"},{value:0,label:"start"},{value:this.artboardWidth,label:"end"}],a=[{value:e.x,type:"start"},{value:e.x+e.width/2,type:"center"},{value:e.x+e.width,type:"end"}];let l=!1;for(const d of o){if(l)break;for(const f of a){const p=d.value-f.value;if(Math.abs(p)<s){i=p,l=!0,t.push({type:"vertical",position:d.value,start:Math.min(0,e.y),end:Math.max(this.artboardHeight,e.y+e.height)});break}}}const u=[{value:this.artboardHeight/2,label:"center"},{value:0,label:"start"},{value:this.artboardHeight,label:"end"}],c=[{value:e.y,type:"start"},{value:e.y+e.height/2,type:"center"},{value:e.y+e.height,type:"end"}];let h=!1;for(const d of u){if(h)break;for(const f of c){const p=d.value-f.value;if(Math.abs(p)<s){n=p,h=!0,t.push({type:"horizontal",position:d.value,start:Math.min(0,e.x),end:Math.max(this.artboardWidth,e.x+e.width)});break}}}return{dx:i,dy:n,guides:t}}snapResize(e){const t=e.clone(),{dx:i,dy:n,guides:s}=this.snapMove(t);return t.x+=i,t.y+=n,{corrected:t,guides:s}}snapPoint(e){const t=Eh.SNAP_THRESHOLD/this.scale,i=[],n=e.clone(),s=[0,this.artboardWidth/2,this.artboardWidth];for(const a of s)if(Math.abs(a-e.x)<t){n.x=a,i.push({type:"vertical",position:a,start:0,end:this.artboardHeight});break}const o=[0,this.artboardHeight/2,this.artboardHeight];for(const a of o)if(Math.abs(a-e.y)<t){n.y=a,i.push({type:"horizontal",position:a,start:0,end:this.artboardWidth});break}return{p:n,guides:i}}}const U4={delta:new ae};class z4 extends Pe{group;wireframe=new bte;selectionOutlines=new Ze;isDragging=!1;lastPointer=new me;activeHandle=null;#e;#l=new Map;#r=new me;#n=0;#u=0;#c=new he;#i=new me;#s=new he;#t=[new me,new me,new me,new me];#o=1;#a=1;#h;#d=new Ze;#m=new me;opts;constructor(e){super(),this.opts=e,this.group=e.group,this.eventMode="static",this.#h=new Eh(e.artboardWidth??1920,e.artboardHeight??1080),this.addChild(this.#d);const t={beginDrag:(i,n)=>this.#A(i,n),updateDrag:(i,n)=>this.#E(i,n),endDrag:()=>this.#v()};this.#e={tl:new Ji("tl","nwse-resize",t),tr:new Ji("tr","nesw-resize",t),bl:new Ji("bl","nesw-resize",t),br:new Ji("br","nwse-resize",t),ml:new Ji("ml","ew-resize",t),mr:new Ji("mr","ew-resize",t),mt:new Ji("mt","ns-resize",t),mb:new Ji("mb","ns-resize",t),rot:new Ji("rot","crosshair",{beginDrag:(i,n)=>this.#B(n),updateDrag:(i,n)=>this.#k(n),endDrag:()=>this.#v()})},this.addChild(this.selectionOutlines,this.wireframe,...Object.values(this.#e)),this.#w(),this.visible=!1,Ft.shared.addOnce(()=>{this.showImmediate()})}#x=!1;showImmediate(){this.#x||this.destroyed||!this.parent||(this.#f(),this.visible=!0,this.#x=!0)}#w(){this.on("pointerdown",this.#S),this.on("pointerup",this.#y),this.on("pointerupoutside",this.#y),this.on("globalpointermove",this.#T)}#f(){if(this.group.length===1){const e=this.group[0];this.#n=e.rotation;const t=this.#g(e);let i,n;this.opts.clip?(i=this.opts.clip.width,n=this.opts.clip.height):(i=t.width,n=t.height);const s=e.toGlobal(new me(0,0));this.#r.set(s.x,s.y),this.#s.copyFrom(new he(-i/2,-n/2,i,n))}else{let e=1/0,t=1/0,i=-1/0,n=-1/0;if(this.parent)for(const u of this.group){const c=this.#g(u);this.#t[0].set(c.x,c.y),this.#t[1].set(c.x+c.width,c.y),this.#t[2].set(c.x+c.width,c.y+c.height),this.#t[3].set(c.x,c.y+c.height);for(const h of this.#t)u.toGlobal(h,h),this.toLocal(h,void 0,h),e=Math.min(e,h.x),t=Math.min(t,h.y),i=Math.max(i,h.x),n=Math.max(n,h.y)}const s=i-e,o=n-t,a=e+s/2,l=t+o/2;if(this.#s.copyFrom(new he(-s/2,-o/2,s,o)),this.parent){const u=this.toGlobal(new me(a,l));this.#r.set(u.x,u.y)}}this.#p()}#g(e){let t=null;const i=u=>{if(u.label==="MainSprite"&&u instanceof Je)return u;for(const c of u.children)if(c instanceof Pe){const h=i(c);if(h)return h}return null};if(t=i(e),t){const u=t.getLocalBounds(),c=t.localTransform.clone(),h=c.apply(new me(u.x,u.y)),d=c.apply(new me(u.x+u.width,u.y)),f=c.apply(new me(u.x+u.width,u.y+u.height)),p=c.apply(new me(u.x,u.y+u.height)),m=Math.min(h.x,d.x,f.x,p.x),g=Math.max(h.x,d.x,f.x,p.x),v=Math.min(h.y,d.y,f.y,p.y),x=Math.max(h.y,d.y,f.y,p.y);return new he(m,v,g-m,x-v)}let n=1/0,s=1/0,o=-1/0,a=-1/0;const l=e.children.filter(u=>u.label!=="ShadowContainer"&&u.label!=="AnimationContainer");if(l.length===0&&e.children.length>0){const u=e.children.find(c=>c.label==="AnimationContainer");if(u){const c=u.getLocalBounds();return new he(c.minX,c.minY,c.maxX-c.minX,c.maxY-c.minY)}}for(const u of l){const c=u.getBounds(),h=e.toLocal(new me(c.minX,c.minY)),d=e.toLocal(new me(c.maxX,c.maxY));n=Math.min(n,h.x,d.x),s=Math.min(s,h.y,d.y),o=Math.max(o,h.x,d.x),a=Math.max(a,h.y,d.y)}if(n===1/0){const u=e.getLocalBounds();return new he(u.minX,u.minY,u.maxX-u.minX,u.maxY-u.minY)}return new he(n,s,o-n,a-s)}updateBounds(){this.#f()}#S=e=>{e.button===0&&(this.opts.locked||(this.#f(),this.#m.copyFrom(this.#r),this.isDragging=!0,this.lastPointer.copyFrom(e.global),this.cursor="grabbing"))};#y=()=>{this.isDragging&&this.#v(),this.cursor="default"};#T=e=>{if(!this.isDragging||this.activeHandle||!this.parent)return;const{moveDx:t,moveDy:i,newPivotWorld:n}=this.#C(e);for(const s of this.group)s.x+=t,s.y+=i;this.#r.copyFrom(n),this.lastPointer.copyFrom(e.global),this.#p(),this.emit("transforming")};#C(e){const t=Math.abs(this.parent.worldTransform.a);this.#h.updateContext(this.opts.artboardWidth??1920,this.opts.artboardHeight??1080,t);const i=e.global.x-this.lastPointer.x,n=e.global.y-this.lastPointer.y;this.#m.x+=i,this.#m.y+=n;const s=this.parent.toLocal(this.#m),o=new he(s.x+this.#s.x,s.y+this.#s.y,this.#s.width,this.#s.height),{dx:a,dy:l,guides:u}=this.#h.snapMove(o);this.#b(u,t);const c=s.x+a,h=s.y+l,d=this.parent.toLocal(this.#r),f=c-d.x,p=h-d.y,m=this.parent.toGlobal(new me(c,h));return{moveDx:f,moveDy:p,newPivotWorld:m}}#A(e,t){this.#f(),this.isDragging=!0,this.activeHandle=e,this.#l.clear();for(const i of this.group)this.#l.set(i,i.localTransform.clone());this.rotation=this.#n,this.#c.copyFrom(this.#s),this.#F(e)}#E(e,t){this.#P(e,t)}async#P(e,t){const{proposed:i,sx:n,sy:s,pivotWorld:o}=await this.#I(e,t),a=this.opts.clip&&this.opts.clip.type==="Text",l=this.opts.clip&&this.opts.clip.type==="Caption";a||l?this.emit("textClipResize",{handle:e,newWidth:i.width,newHeight:i.height,pivotWorld:o,proposed:i,sx:n,sy:s}):this.#_(this.#D(o,this.#n,n,s)),this.#s.copyFrom(i),this.#p(),this.emit("transforming")}async#I(e,t){const i=this.#i,n=this.#M(e,this.toLocal(t),i),s=this.parent?Math.abs(this.parent.worldTransform.a):1;this.#h.updateContext(this.opts.artboardWidth??1920,this.opts.artboardHeight??1080,s);const{dx:o,dy:a,guides:l}=this.#h.snapMove(n);n.x+=o,n.y+=a,this.#b(l,s);const u=n.width/this.#c.width,c=n.height/this.#c.height,h=this.toGlobal(i);return{proposed:n,sx:u,sy:c,pivotWorld:h}}#B(e){this.#f(),this.isDragging=!0,this.activeHandle="rot",this.#l.clear();for(const t of this.group)this.#l.set(t,t.localTransform.clone());this.#u=Math.atan2(e.y-this.#r.y,e.x-this.#r.x)}#k(e){const i=Math.atan2(e.y-this.#r.y,e.x-this.#r.x)-this.#u,n=this.#n+i;this.#_(this.#O(this.#r,i)),this.rotation=n,this.#p(n),this.emit("transforming")}#v(){this.isDragging=!1,this.#n=this.rotation,this.activeHandle=null,this.#d.clear(),this.#p(this.#n),this.emit("transformEnd")}#b(e,t){if(this.#d.clear(),!(!e.length||!this.parent)){this.#d.stroke({width:1/t,color:4774907});for(const i of e){let n,s;i.type==="vertical"?(n=new me(i.position,i.start),s=new me(i.position,i.end)):(n=new me(i.start,i.position),s=new me(i.end,i.position)),this.toLocal(n,this.parent,n),this.toLocal(s,this.parent,s),this.#d.moveTo(n.x,n.y).lineTo(s.x,s.y).stroke({width:1/t,color:4774907})}}}#p(e=this.#n){this.parent&&this.position.copyFrom(this.parent.toLocal(this.#r)),this.rotation=e;const i=1/((this.parent?Math.abs(this.parent.worldTransform.a):1)||1),n=this.#s;this.wireframe.draw(n,i);const s=n.x+n.width/2,o=n.y+n.height/2,l=this.opts.locked?[]:this.opts.clip?.getVisibleHandles?.()??["tl","tr","bl","br","ml","mr","mt","mb","rot"],u=[this.#e.tl,this.#e.tr,this.#e.bl,this.#e.br,this.#e.ml,this.#e.mr,this.#e.mt,this.#e.mb,this.#e.rot];for(const c of u)c.scale.set(i);this.#e.tl.visible=l.includes("tl"),this.#e.tr.visible=l.includes("tr"),this.#e.bl.visible=l.includes("bl"),this.#e.br.visible=l.includes("br"),this.#e.ml.visible=l.includes("ml"),this.#e.mr.visible=l.includes("mr"),this.#e.mt.visible=l.includes("mt"),this.#e.mb.visible=l.includes("mb"),this.#e.rot.visible=l.includes("rot"),this.#e.tl.position.set(n.x,n.y),this.#e.tr.position.set(n.x+n.width,n.y),this.#e.bl.position.set(n.x,n.y+n.height),this.#e.br.position.set(n.x+n.width,n.y+n.height),this.#e.ml.position.set(n.x,o),this.#e.mr.position.set(n.x+n.width,o),this.#e.mt.position.set(s,n.y),this.#e.mb.position.set(s,n.y+n.height),this.#e.rot.position.set(s,n.y-30*i),this.#R(i)}#R(e){if(this.selectionOutlines.clear(),this.group.length<=1||!this.parent)return;const t={width:1*e,color:43775,alpha:1};for(const i of this.group){const n=this.#g(i);this.#t[0].set(n.x,n.y),this.#t[1].set(n.x+n.width,n.y),this.#t[2].set(n.x+n.width,n.y+n.height),this.#t[3].set(n.x,n.y+n.height);for(const s of this.#t)i.toGlobal(s,s),this.toLocal(s,void 0,s);this.selectionOutlines.moveTo(this.#t[0].x,this.#t[0].y).lineTo(this.#t[1].x,this.#t[1].y).lineTo(this.#t[2].x,this.#t[2].y).lineTo(this.#t[3].x,this.#t[3].y).closePath().stroke(t)}}#F(e){const t=this.#c;if(this.opts.centeredScaling){this.#i.set(t.x+t.width/2,t.y+t.height/2);return}e==="tl"?this.#i.set(t.x+t.width,t.y+t.height):e==="tr"?this.#i.set(t.x,t.y+t.height):e==="bl"?this.#i.set(t.x+t.width,t.y):e==="br"?this.#i.set(t.x,t.y):e==="ml"?this.#i.set(t.x+t.width,t.y+t.height/2):e==="mr"?this.#i.set(t.x,t.y+t.height/2):e==="mt"?this.#i.set(t.x+t.width/2,t.y+t.height):e==="mb"&&this.#i.set(t.x+t.width/2,t.y)}#M(e,t,i){if(this.opts.centeredScaling){const s=Math.max(this.#o,Math.abs(t.x-i.x)*2),o=Math.max(this.#a,Math.abs(t.y-i.y)*2);return new he(i.x-s/2,i.y-o/2,s,o)}if(e==="tl"){const s=Math.min(t.x,i.x-this.#o),o=Math.min(t.y,i.y-this.#a);return new he(s,o,i.x-s,i.y-o)}if(e==="tr"){const s=Math.max(t.x,i.x+this.#o),o=Math.min(t.y,i.y-this.#a);return new he(i.x,o,s-i.x,i.y-o)}if(e==="bl"){const s=Math.min(t.x,i.x-this.#o),o=Math.max(t.y,i.y+this.#a);return new he(s,i.y,i.x-s,o-i.y)}if(e==="br"){const s=Math.max(t.x,i.x+this.#o),o=Math.max(t.y,i.y+this.#a);return new he(i.x,i.y,s-i.x,o-i.y)}const n=this.#c;if(e==="ml"){const s=Math.min(t.x,i.x-this.#o);return new he(s,n.y,i.x-s,n.height)}if(e==="mr"){const s=Math.max(t.x,i.x+this.#o);return new he(i.x,n.y,s-i.x,n.height)}if(e==="mt"){const s=Math.min(t.y,i.y-this.#a);return new he(n.x,s,n.width,i.y-s)}if(e==="mb"){const s=Math.max(t.y,i.y+this.#a);return new he(n.x,i.y,n.width,s-i.y)}return new he(i.x,i.y,this.#o,this.#a)}#D(e,t,i,n){return U4.delta.identity().translate(-e.x,-e.y).rotate(-t).scale(i,n).rotate(t).translate(e.x,e.y)}#O(e,t){return U4.delta.identity().translate(-e.x,-e.y).rotate(t).translate(e.x,e.y)}#_(e){for(const t of this.group){const i=this.#l.get(t),n=t.parent;if(!i||!n)continue;const s=n.worldTransform.clone().invert(),o=n.worldTransform.clone().append(i),a=e.clone().append(o),l=s.clone().append(a);t.setFromMatrix(l)}}}class _te{constructor(e){this.studio=e}selectedClips=new Set;activeTransformer=null;interactiveClips=new Set;selectionGraphics=null;isDragSelecting=!1;dragSelectionStart=new me;isUpdatingTextRealtime=!1;textClipResizedWidth=null;textClipResizeHandle=null;textClipResizedSx=null;textClipResizedSy=null;init(e,t){this.selectionGraphics=new Ze,this.selectionGraphics.visible=!1,this.selectionGraphics.zIndex=1e3,t.addChild(this.selectionGraphics),e.stage.eventMode="static",e.stage.hitArea=e.screen,e.stage.on("pointerdown",i=>this.onStagePointerDown(i)),e.stage.on("globalpointermove",i=>this.onStagePointerMove(i)),e.stage.on("pointerup",()=>this.onStagePointerUp()),e.stage.on("pointerupoutside",()=>this.onStagePointerUp())}onStagePointerDown(e){e.target===this.studio.pixiApp?.stage&&(e.shiftKey||this.deselectClip(),this.isDragSelecting=!0,this.studio.artboard?.toLocal(e.global,void 0,this.dragSelectionStart),this.selectionGraphics&&(this.selectionGraphics.clear(),this.selectionGraphics.visible=!0))}onStagePointerMove(e){if(this.isDragSelecting&&this.selectionGraphics&&this.studio.artboard){const t=this.studio.artboard.toLocal(e.global),i=Math.min(this.dragSelectionStart.x,t.x),n=Math.min(this.dragSelectionStart.y,t.y),s=Math.abs(t.x-this.dragSelectionStart.x),o=Math.abs(t.y-this.dragSelectionStart.y);this.selectionGraphics.clear(),this.selectionGraphics.rect(i,n,s,o).fill({color:703971,alpha:.3}),this.selectionGraphics.rect(i,n,s,o).stroke({width:2,color:703971});const a=this.selectionGraphics.getBounds(),l=new he(a.x,a.y,a.width,a.height);if(l.width>2||l.height>2){const u=this.getIntersectingClips(l);this.updatePreviewSelection(u)}else this.selectedClips.size===0&&this.destroyTransformer()}}onStagePointerUp(){if(this.isDragSelecting&&this.selectionGraphics&&this.studio.artboard){const e=this.selectionGraphics.getBounds(),t=new he(e.x,e.y,e.width,e.height);if(t.width>2||t.height>2){const i=this.getIntersectingClips(t);if(i.length>0){for(const n of i)this.selectedClips.add(n);this.recreateTransformer(),this.studio.emit("selection:created",{selected:Array.from(this.selectedClips)})}else this.selectedClips.size===0&&this.destroyTransformer()}else this.selectedClips.size===0&&this.destroyTransformer();this.selectionGraphics.clear(),this.selectionGraphics.visible=!1,this.isDragSelecting=!1,this.studio.pixiApp?.render()}}getIntersectingClips(e){const t=[];for(const i of this.studio.clips){const n=this.studio.spriteRenderers.get(i);if(!n)continue;const s=n.getRoot();if(!s||!s.visible)continue;const o=s.getBounds();e.x<o.x+o.width&&e.x+e.width>o.x&&e.y<o.y+o.height&&e.y+e.height>o.y&&t.push(i)}return t}updatePreviewSelection(e){if(e.length===0){this.selectedClips.size===0?this.destroyTransformer():this.recreateTransformer();return}const t=new Set(e),i=[];let n=null;for(const s of t){const o=this.studio.spriteRenderers.get(s);if(o==null)continue;const a=o.getRoot();a!=null&&(i.push(a),t.size===1&&(n=s))}if(i.length===0){this.selectedClips.size===0&&this.destroyTransformer();return}this.activeTransformer?(this.activeTransformer.group=i,this.activeTransformer.opts.group=i,this.activeTransformer.opts.clip=n,this.activeTransformer.updateBounds(),this.activeTransformer.showImmediate()):(this.activeTransformer=new z4({group:i,clip:n,artboardWidth:this.studio.opts.width,artboardHeight:this.studio.opts.height}),this.studio.artboard?.addChild(this.activeTransformer),this.activeTransformer.showImmediate()),this.studio.pixiApp?.render()}setupSpriteInteractivity(e){if(this.interactiveClips.has(e))return;const t=this.studio.spriteRenderers.get(e);if(t==null)return;const i=t.getRoot();i!=null&&(i.eventMode="static",i.cursor="pointer",i.on("pointerdown",n=>{const s=this.getTopmostClipAtPoint(n.global);s&&this.selectClip(s,n.shiftKey)}),this.interactiveClips.add(e))}getTopmostClipAtPoint(e){if(!this.studio.pixiApp)return null;let t=null,i=-1/0;for(const n of this.interactiveClips){const s=this.studio.spriteRenderers.get(n);if(!s)continue;const o=s.getRoot();if(!o||!o.visible)continue;const a=o.toLocal(e),l=o.getLocalBounds();a.x>=l.minX&&a.x<=l.maxX&&a.y>=l.minY&&a.y<=l.maxY&&n.zIndex>i&&(i=n.zIndex,t=n)}return t}selectClip(e,t=!1){if(!(this.studio.destroyed||this.studio.pixiApp==null)){if(t||this.deselectClip(),t&&this.selectedClips.has(e)){this.selectedClips.delete(e),this.recreateTransformer(),this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)}),this.studio.pixiApp?.render();return}this.selectedClips.add(e),this.recreateTransformer(),t?this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)}):this.studio.emit("selection:created",{selected:Array.from(this.selectedClips)}),this.studio.pixiApp?.render()}}selectClipsByIds(e){const t=this.studio.clips.filter(i=>e.includes(i.id));this.setSelection(t)}setSelection(e){if(!(this.studio.destroyed||this.studio.pixiApp==null)&&!(this.selectedClips.size===e.length&&e.every(t=>this.selectedClips.has(t)))){for(const t of this.selectedClips)this.syncSpriteToClipProperties(t);this.destroyTransformer(),this.selectedClips.clear();for(const t of e)this.selectedClips.add(t);this.selectedClips.size>0?(this.createTransformer(),this.studio.emit("selection:updated",{selected:Array.from(this.selectedClips)})):this.studio.emit("selection:cleared",{deselected:[]}),this.studio.pixiApp?.render()}}deselectClip(){if(this.selectedClips.size>0)for(const t of this.selectedClips)this.syncSpriteToClipProperties(t);this.destroyTransformer();const e=Array.from(this.selectedClips);this.selectedClips.clear(),e.length>0&&this.studio.emit("selection:cleared",{deselected:e}),this.studio.pixiApp?.render()}async move(e,t){if(this.selectedClips.size===0)return;const i=[];for(const n of this.selectedClips)i.push({id:n.id,updates:{left:(n.left??0)+e,top:(n.top??0)+t}});await this.studio.updateClips(i),this.activeTransformer&&this.activeTransformer.updateBounds()}clear(){this.deselectClip(),this.interactiveClips.clear()}recreateTransformer(){this.destroyTransformer(),this.selectedClips.size>0&&this.createTransformer()}destroyTransformer(){this.activeTransformer!=null&&(this.activeTransformer.parent!=null&&this.activeTransformer.parent.removeChild(this.activeTransformer),this.activeTransformer.destroy(),this.activeTransformer=null)}createTransformer(){if(this.studio.destroyed||this.studio.artboard==null||this.selectedClips.size===0)return;const e=[];let t=null;for(const s of this.selectedClips){const o=this.studio.spriteRenderers.get(s);if(o==null)continue;const a=o.getRoot();a!=null&&(e.push(a),this.selectedClips.size===1&&(t=s))}if(e.length===0){console.warn("Cannot create transformer: no sprites found");return}const i=t?.locked??!1;this.activeTransformer=new z4({group:e,clip:t,artboardWidth:this.studio.opts.width,artboardHeight:this.studio.opts.height,locked:i});let n=null;this.activeTransformer.on("transforming",()=>{n===null&&(n=requestAnimationFrame(()=>{n=null,this.syncSelectedClipsTransformsRealtime(),this.studio.pixiApp?.render()}))}),this.activeTransformer.on("textClipResize",s=>{this.textClipResizedWidth=s.newWidth,this.textClipResizeHandle=s.handle,this.textClipResizedSx=s.sx,this.textClipResizedSy=s.sy}),this.activeTransformer.on("transformEnd",async()=>{n!==null&&(cancelAnimationFrame(n),n=null),await this.syncSelectedClipsTransforms();for(const s of this.selectedClips)this.studio.emit("clip:updated",{clip:s});this.studio.emit("transform:end",{transformer:this.activeTransformer})}),this.activeTransformer.on("pointerdown",s=>{if(s.button!==0)return;this.studio.emit("transform:start",{transformer:this.activeTransformer});const o=this.getTopmostClipAtPoint(s.global);o&&!this.selectedClips.has(o)&&(this.selectClip(o,s.shiftKey),s.stopPropagation())}),this.studio.artboard.addChild(this.activeTransformer),this.activeTransformer.showImmediate(),this.studio.pixiApp?.render()}async syncSelectedClipsTransformsRealtime(){if(this.selectedClips.size===0||this.activeTransformer==null)return;const e=this.activeTransformer.activeHandle;if(e===null){for(const t of this.selectedClips){const i=this.studio.spriteRenderers.get(t);if(i==null)continue;const n=i.getRoot(),s=i.getSprite();if(n==null||s==null||s.texture==null)continue;const o=Math.abs(n.scale.x*s.scale.x)*s.texture.width,a=Math.abs(n.scale.y*s.scale.y)*s.texture.height;t.left=n.x-o/2,t.top=n.y-a/2}return}if(e==="mr"||e==="ml"){if(this.isUpdatingTextRealtime)return;this.isUpdatingTextRealtime=!0;try{for(const t of this.selectedClips){if(!(t instanceof Ki))continue;const i=this.studio.spriteRenderers.get(t);if(i==null)continue;const n=i.getRoot(),s=i.getSprite();if(n==null||s==null||s.texture==null)continue;const o=Math.abs(n.scale.x*s.scale.x);if(o===1)continue;const a=t.left,l=t.top,u=t.width,c=s.texture.width,h=o*c;await t.updateStyle({wordWrap:!0,wordWrapWidth:h});const d=await t.getTexture();d&&(await i.updateFrame(d),s.scale.set(1,1),n.scale.set(1,1),e==="ml"?t.left=a+u-t.width:t.left=a,t.top=l,n.x=t.left+t.width/2,n.y=t.top+t.height/2,this.activeTransformer.updateBounds())}}finally{this.isUpdatingTextRealtime=!1}}}async syncSelectedClipsTransforms(){if(!(this.selectedClips.size===0||this.activeTransformer==null)){for(const e of this.selectedClips){const t=this.studio.spriteRenderers.get(e);if(t==null)continue;const i=t.getRoot(),n=t.getSprite();if(i==null||n==null||n.texture==null)continue;const s=n.texture.width,o=n.texture.height,a=Math.abs(i.scale.x*n.scale.x)*s,l=Math.abs(i.scale.y*n.scale.y)*o,u=(e instanceof Ki||e instanceof On)&&this.textClipResizedWidth!==null?this.textClipResizedWidth:a,c=e.width,d=(e.style?.fontSize??16)*Math.max(this.textClipResizedSx||1,this.textClipResizedSy||1);let f=i.x;if((e instanceof Ki||e instanceof On)&&this.textClipResizedWidth!==null){const m={wordWrap:!0,wordWrapWidth:u};this.textClipResizeHandle==="mr"?(f=e.left+u/2,i.x=f):this.textClipResizeHandle==="ml"?(f=e.left+u/2-(u-c),i.x=f):["br","tr"].includes(this.textClipResizeHandle)?(f=e.left+u/2,m.fontSize=d):["bl","tl"].includes(this.textClipResizeHandle)&&(f=e.left+u/2-(u-c),m.fontSize=d),await e.updateStyle(m);const g=await e.getTexture();g&&(await t.updateFrame(g),e.width=u,e.height=g.height,this.textClipResizedWidth=null,e.left=f-e.width/2,e.top=i.y-e.height/2,n.scale.set(1,1),i.scale.set(1,1))}else{let m=a,g=l;e.left=i.x-m/2,e.top=i.y-g/2,e.width=m,e.height=g;const v=e.flip==null?1:-1;e.angle=v*i.angle}}this.activeTransformer!=null&&this.activeTransformer.updateBounds();for(const e of this.selectedClips){const t=this.studio.spriteRenderers.get(e);t?.updateTransforms()}}}syncSpriteToClipProperties(e){const t=this.studio.spriteRenderers.get(e);if(t!=null){const i=t.getRoot(),n=t.getSprite();if(i!=null&&n!=null&&n.texture!=null){const s=n.texture.width,o=n.texture.height,a=Math.abs(i.scale.x*n.scale.x)*s,l=Math.abs(i.scale.y*n.scale.y)*o;let u=a,c=l;const h=i.x-u/2,d=i.y-c/2;e.left=h,e.top=d,e.width=u,e.height=c;const f=e.flip==null?1:-1;e.angle=f*i.angle,t.updateTransforms(),this.studio.emit("clip:updated",{clip:e})}}}async deleteSelected(){return this.studio.deleteSelected()}}class wte{constructor(e){this.studio=e}isPlaying=!1;currentTime=0;maxDuration=0;playStartTime=0;playStartTimestamp=0;rafId=null;playbackElements=new Map;setMaxDuration(e){this.maxDuration=e}async play(){if(!(this.isPlaying||this.studio.destroyed)){if(this.maxDuration<=0||this.maxDuration===1/0||isNaN(this.maxDuration)){console.warn("Cannot play: invalid duration",this.maxDuration);return}this.isPlaying||(this.isPlaying=!0),this.playStartTime=this.currentTime,this.playStartTimestamp=performance.now();for(const[e,{element:t}]of this.playbackElements.entries()){if(!(this.currentTime>=e.display.from&&(e.display.to===0||this.currentTime<=e.display.to))){this.isPlaybackCapable(e)&&e.pause(t);continue}const n=(this.currentTime-e.display.from)/1e6;this.isPlaybackCapable(e)&&await e.play(t,n)}this.renderLoop(),this.studio.emit("play",{isPlaying:!0})}}pause(){this.isPlaying=!1,this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null);for(const[e,{element:t}]of this.playbackElements.entries())this.isPlaybackCapable(e)&&e.pause(t);this.studio.emit("pause",{isPlaying:!1})}async stop(){this.pause(),await this.seek(0)}async seek(e){if(this.studio.destroyed)return;const t=this.isPlaying;this.playStartTime=Math.max(0,Math.min(e,this.maxDuration)),this.playStartTimestamp=performance.now(),this.currentTime=this.playStartTime;for(const[i,{element:n}]of this.playbackElements.entries()){if(!(this.currentTime>=i.display.from&&(i.display.to===0||this.currentTime<=i.display.to))){this.isPlaybackCapable(i)&&i.pause(n);continue}const o=(this.currentTime-i.display.from)/1e6;this.isPlaybackCapable(i)&&await i.seek(n,o)}if(await this.studio.updateFrame(this.currentTime),this.studio.emit("currentTime",{currentTime:this.currentTime}),t){this.isPlaying=!0;for(const[i,{element:n}]of this.playbackElements.entries()){if(!(this.currentTime>=i.display.from&&(i.display.to===0||this.currentTime<=i.display.to)))continue;const o=(this.currentTime-i.display.from)/1e6;this.isPlaybackCapable(i)&&await i.play(n,o)}}}async frameNext(){const t=1e6/(this.studio.opts.fps||30),i=Math.min(this.currentTime+t,this.maxDuration);await this.seek(i)}async framePrev(){const t=1e6/(this.studio.opts.fps||30),i=Math.max(0,this.currentTime-t);await this.seek(i)}async renderLoop(){if(!this.isPlaying||this.studio.destroyed||this.studio.pixiApp==null)return;if(this.maxDuration<=0||this.maxDuration===1/0||isNaN(this.maxDuration)){this.pause();return}const e=async()=>{if(!this.isPlaying||this.studio.destroyed||this.studio.pixiApp==null)return;if(this.currentTime>=this.maxDuration){this.currentTime=this.maxDuration,this.pause();return}const i=(performance.now()-this.playStartTimestamp)*1e3;this.currentTime=Math.min(this.playStartTime+i,this.maxDuration),this.studio.emit("currentTime",{currentTime:this.currentTime});try{await this.studio.updateFrame(this.currentTime)}catch(n){console.warn("Error updating frame:",n)}this.isPlaying&&(this.rafId=requestAnimationFrame(e))};e()}isPlaybackCapable(e){return"play"in e&&"pause"in e&&"seek"in e}}class jo{static instance;fonts=new Map;constructor(){}static getInstance(){return jo.instance||(jo.instance=new jo),jo.instance}async addFont(e){if(!this.fonts.has(e.name))try{const i=await new FontFace(e.name,`url(${e.url})`).load();document.fonts.add(i),this.fonts.set(e.name,i)}catch(t){console.error(`Failed to load font ${e.name}:`,t)}}async loadFonts(e){await Promise.all(e.map(t=>this.addFont(t)))}removeFont(e){const t=this.fonts.get(e);t&&(document.fonts.delete(t),this.fonts.delete(e))}clear(){this.fonts.forEach(e=>{document.fonts.delete(e)}),this.fonts.clear()}getLoadedFonts(){return Array.from(this.fonts.keys())}}const L4=jo.getInstance();class Ste{constructor(e){this.studio=e}tracks=[];clips=[];getTrackById(e){return this.tracks.find(t=>t.id===e)}getClipById(e){return this.clips.find(t=>t.id===e)}findTrackIdByClipId(e){for(const t of this.tracks)if(t.clipIds.includes(e))return t.id}getTrackIndex(e){return this.tracks.findIndex(t=>t.id===e)}addTrack(e,t){const i={id:e.id||`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,name:e.name,type:e.type,clipIds:[]};return typeof t=="number"?this.tracks.splice(t,0,i):this.tracks.unshift(i),this.studio.emit("track:added",{track:i,index:t??0}),this.studio.emit("track:order-changed",{tracks:this.tracks}),i}async removeTrack(e){const t=this.tracks.findIndex(s=>s.id===e);if(t===-1)return;const n=[...this.tracks[t].clipIds];for(const s of n)await this.removeClipById(s);this.tracks.splice(t,1),this.studio.emit("track:removed",{trackId:e}),this.studio.emit("track:order-changed",{tracks:this.tracks})}async moveTrack(e,t){const i=this.tracks.findIndex(s=>s.id===e);if(i===-1)return;const n=this.tracks[i];this.tracks.splice(i,1),this.tracks.splice(t,0,n),this.studio.emit("track:order-changed",{tracks:this.tracks}),await this.studio.updateFrame(this.studio.currentTime)}async setTrackOrder(e){const t=[],i=new Map(this.tracks.map(n=>[n.id,n]));for(const n of e){const s=i.get(n);s&&t.push(s)}t.length!==this.tracks.length&&console.warn("[Studio] setTrackOrder: invalid track IDs provided, order not updated fully"),this.tracks=t,this.studio.emit("track:order-changed",{tracks:this.tracks}),await this.studio.updateFrame(this.studio.currentTime)}async addTransition(e,t=2e6,i,n){if(this.studio.destroyed)return;let s=null,o=null;if(i&&n&&(s=this.getClipById(i)??null,o=this.getClipById(n)??null),!s||!o){console.warn("[Studio] Invalid fromClipId or toClipId",{fromClipId:i,toClipId:n});return}await Promise.all([s.ready,o.ready]);const a=t,l=o.display.from-a/2,u=l+a,c={key:e,name:e,duration:a,fromClipId:s.id,toClipId:o.id,start:Math.max(0,l),end:u},h=this.findTrackIdByClipId(o.id);if(h){const p=this.tracks.find(m=>m.id===h);if(p){const m=p.clipIds.map(g=>this.getClipById(g)).filter(g=>{if(!g||g.type!=="Transition")return!1;const v=g;return v.fromClipId===s.id&&v.toClipId===o.id});for(const g of m)await this.removeClip(g)}}const d=`${s.id}_${o.id}`;this.studio.transitionRenderers.has(d)&&(this.studio.transitionRenderers.get(d)?.destroy(),this.studio.transitionRenderers.delete(d)),s.transition={...c},o.transition={...c};const f=new Bi(e);f.duration=a,f.fromClipId=Math.max(0,l)===0?null:s.id,f.toClipId=o.id,f.fromClipId===null&&s&&(f.fromClipId=s.id),f.display.from=Math.max(0,l),f.display.to=u,await this.addClip(f,{trackId:h}),this.studio.seek(this.studio.currentTime)}async addClip(e,t){const i=Array.isArray(e)?e:[e];if(i.length===0)return;const{trackId:n,audioSource:s}=this.normalizeAddClipOptions(t);if(this.studio.destroyed)return;if(this.studio.pixiApp==null)throw new Error("Failed to initialize Pixi.js Application");const o=[];for(const a of i)await this.prepareClipForTimeline(a,n),o.push(a);await this.recalculateMaxDuration();for(const a of o)await this.setupClipVisuals(a,s);await this.studio.updateFrame(this.studio.currentTime),this.emitAddClipEvents(o,n)}normalizeAddClipOptions(e){let t,i;if(e&&(typeof e=="string"||e instanceof File||e instanceof Blob))t=e;else if(typeof e=="object"&&e!==null&&!("size"in e)){const n=e;t=n.audioSource,i=n.trackId}return{trackId:i,audioSource:t}}async prepareClipForTimeline(e,t){e.id||(e.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`),this.clips.includes(e)||this.clips.push(e),this.addClipToTrack(e,t);const i=async()=>{await this.studio.updateFrame(this.studio.currentTime);const n=this.studio.selection;n.activeTransformer!=null&&n.selectedClips.has(e)&&typeof n.activeTransformer.updateBounds=="function"&&n.activeTransformer.updateBounds()};e.on("propsChange",i),this.studio.clipListeners.set(e,i),this.studio.pixiApp!=null&&typeof e.setRenderer=="function"&&e.setRenderer(this.studio.pixiApp.renderer),await e.ready}addClipToTrack(e,t){if(t){const i=this.tracks.find(n=>n.id===t);if(i)i.clipIds.includes(e.id)||i.clipIds.push(e.id);else{const n={id:t,name:`Track ${this.tracks.length+1}`,type:e.type,clipIds:[e.id]};this.tracks.unshift(n),this.studio.emit("track:added",{track:n,index:0}),this.studio.emit("track:order-changed",{tracks:this.tracks})}}else{const n={id:`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,name:`Track ${this.tracks.length+1}`,type:e.type,clipIds:[e.id]};this.tracks.unshift(n),this.studio.emit("track:added",{track:n,index:0}),this.studio.emit("track:order-changed",{tracks:this.tracks})}}async setupClipVisuals(e,t){const i=this.studio.spriteRenderers.get(e);if(i){const s=this.studio.clipsNormalContainer,o=i.getRoot();o&&!o.parent&&s.addChild(o);return}const n=await e.ready;if(await this.setupPlaybackForClip(e,t),n.width>0&&n.height>0){const s=this.studio.clipsNormalContainer,o=e.type==="Video"&&this.isPlaybackCapable(e);if(!o||o&&e.tickInterceptor!=null){const a=new R4(this.studio.pixiApp,e,s);this.studio.spriteRenderers.set(e,a)}}this.studio.opts.interactivity&&this.studio.selection.setupSpriteInteractivity(e)}emitAddClipEvents(e,t){if(e.length!==0)if(e.length===1){const i=e[0],n=t||this.tracks.find(s=>s.clipIds.includes(i.id))?.id||"";this.studio.emit("clip:added",{clip:i,trackId:n})}else this.studio.emit("clips:added",{clips:e,trackId:t})}async removeClip(e,t={permanent:!0}){const{permanent:i}=t;if(e.locked)return;const n=this.clips.findIndex(c=>c===e);if(n===-1)return;if(e instanceof Bi){if(e.fromClipId){const c=this.getClipById(e.fromClipId);c&&"transition"in c&&delete c.transition}if(e.toClipId){const c=this.getClipById(e.toClipId);c&&"transition"in c&&delete c.transition}}this.studio.selection.selectedClips.has(e)&&this.studio.selection.deselectClip(),this.clips.splice(n,1);const s=[];for(const c of this.tracks){const h=c.clipIds.indexOf(e.id);h!==-1&&(c.clipIds.splice(h,1),s.push(c.id))}for(const c of s){const h=this.tracks.findIndex(d=>d.id===c);h!==-1&&this.tracks[h].clipIds.length===0&&(this.tracks.splice(h,1),this.studio.emit("track:removed",{trackId:c}))}this.studio.selection.interactiveClips.delete(e);const o=this.studio.clipListeners.get(e);o&&(e.off("propsChange",o),this.studio.clipListeners.delete(e));const a=this.studio.spriteRenderers.get(e);if(a!=null)if(i)a.destroy(),this.studio.spriteRenderers.delete(e);else{const c=a.getRoot();c&&c.parent&&c.parent.removeChild(c)}const l=this.studio.transport.playbackElements.get(e);l!=null&&i&&this.isPlaybackCapable(e)&&(e.cleanupPlayback(l.element,l.objectUrl),this.studio.transport.playbackElements.delete(e));const u=this.studio.videoSprites.get(e);u!=null&&this.studio.pixiApp!=null&&(u.parent&&u.parent.removeChild(u),i&&(u.destroy(),this.studio.videoSprites.delete(e))),await this.recalculateMaxDuration(),this.studio.emit("clip:removed",{clipId:e.id})}async removeClips(e,t={permanent:!0}){if(e.length!==0){for(const i of e){if(i.locked)continue;const n=this.clips.findIndex(u=>u===i);if(n===-1)continue;if(i instanceof Bi){if(i.fromClipId){const u=this.getClipById(i.fromClipId);u&&"transition"in u&&delete u.transition}if(i.toClipId){const u=this.getClipById(i.toClipId);u&&"transition"in u&&delete u.transition}}this.studio.selection.selectedClips.has(i)&&this.studio.selection.deselectClip(),this.clips.splice(n,1);for(const u of this.tracks){const c=u.clipIds.indexOf(i.id);c!==-1&&u.clipIds.splice(c,1)}this.studio.selection.interactiveClips.delete(i);const s=this.studio.clipListeners.get(i);s&&(i.off("propsChange",s),this.studio.clipListeners.delete(i));const o=this.studio.spriteRenderers.get(i);if(o!=null)if(t.permanent)o.destroy(),this.studio.spriteRenderers.delete(i);else{const u=o.getRoot();u&&u.parent&&u.parent.removeChild(u)}const a=this.studio.transport.playbackElements.get(i);a!=null&&t.permanent&&this.isPlaybackCapable(i)&&(i.cleanupPlayback(a.element,a.objectUrl),this.studio.transport.playbackElements.delete(i));const l=this.studio.videoSprites.get(i);l!=null&&this.studio.pixiApp!=null&&(l.parent&&l.parent.removeChild(l),t.permanent&&(l.destroy(),this.studio.videoSprites.delete(i)))}for(let i=this.tracks.length-1;i>=0;i--)if(this.tracks[i].clipIds.length===0){const n=this.tracks[i].id;this.tracks.splice(i,1),this.studio.emit("track:removed",{trackId:n})}await this.recalculateMaxDuration(),this.studio.emit("clips:removed",{clipIds:e.map(i=>i.id)})}}async removeClipById(e){const t=this.clips.find(i=>i.id===e);t&&await this.removeClip(t)}async updateClip(e,t){const i=this.clips.find(n=>n.id===e);i&&(i.locked&&!("locked"in t)||(i.locked&&"locked"in t&&(Object.keys(t).length===1||(t={locked:t.locked})),await this.applyClipUpdate(i,t),await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime),this.updateTransformer(i),this.studio.emit("clip:updated",{clip:i})))}async updateClips(e){const t=[];for(const{id:i,updates:n}of e){const s=this.clips.find(o=>o.id===i);s&&(await this.applyClipUpdate(s,n),t.push(s))}if(t.length!==0){await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime);for(const i of t)this.updateTransformer(i),this.studio.emit("clip:updated",{clip:i})}}async replaceClipsBySource(e,t){const i=this.clips.filter(n=>n.src===e);if(i.length!==0){this.studio.suspendRendering();for(const n of i){if(!this.clips.includes(n))continue;const s=this.findTrackIdByClipId(n.id);if(!s)continue;const o=this.getTrackById(s);if(!o)continue;const a=await t(n),l=async()=>{await this.studio.updateFrame(this.studio.currentTime),this.updateTransformer(a)};a.on("propsChange",l),this.studio.clipListeners.set(a,l),this.studio.pixiApp!=null&&typeof a.setRenderer=="function"&&a.setRenderer(this.studio.pixiApp.renderer),await a.ready;const u=this.clips.indexOf(n);u!==-1&&(this.clips[u]=a);const c=o.clipIds.indexOf(n.id);c!==-1&&(o.clipIds[c]=a.id),await this.setupClipVisuals(a);const h=this.studio.spriteRenderers.get(n);h&&(h.destroy(),this.studio.spriteRenderers.delete(n));const d=this.studio.videoSprites.get(n);d&&(d.parent&&d.parent.removeChild(d),d.destroy(),this.studio.videoSprites.delete(n));const f=this.studio.clipListeners.get(n);f&&(n.off("propsChange",f),this.studio.clipListeners.delete(n)),this.studio.selection.selectedClips.has(n)&&(this.studio.selection.selectedClips.delete(n),this.studio.selection.selectedClips.add(a)),this.studio.emit("clip:replaced",{oldClip:n,newClip:a,trackId:s})}await this.recalculateMaxDuration(),this.studio.resumeRendering(),await this.studio.updateFrame(this.studio.currentTime)}}async applyClipUpdate(e,t){if(e.type==="Text"||e.type==="Caption"){const i=e;typeof i.updateStyle=="function"&&await i.updateStyle(t),"style"in t&&delete t.style}if(Object.assign(e,t),t.display&&!t.duration?e.duration=t.display.to-t.display.from:t.duration&&(!t.display||!t.display.to)&&(e.display||(e.display={from:0,to:t.duration}),e.display.to=e.display.from+t.duration),t.display&&t.duration){const i=t.display.to-t.display.from;i!==t.duration&&(e.duration=i)}else e.display&&(e.display.to=e.display.from+e.duration)}updateTransformer(e){const t=this.studio.selection;t.selectedClips.has(e)&&t.activeTransformer&&t.activeTransformer.updateBounds()}exportToJSON(){const e=this.clips.map(n=>Rl(n,!1)),t=this.tracks.map(n=>({id:n.id,name:n.name,type:n.type,clipIds:[...n.clipIds]})),i=[];return this.clips.forEach(n=>{if(n.transition){const s=this.tracks.find(o=>o.clipIds.includes(n.id));if(s){const o=s.clipIds.indexOf(n.id);if(o>0){const a=s.clipIds[o-1];i.push({key:n.transition.name,duration:n.transition.duration,clips:[a,n.id]})}}}}),{tracks:t,clips:e,settings:{width:this.studio.opts.width,height:this.studio.opts.height,fps:this.studio.opts.fps,bgColor:this.studio.opts.bgColor}}}async loadFromJSON(e){if(await this.clear(),e.settings){const i=e.settings.width&&e.settings.width!==this.studio.opts.width||e.settings.height&&e.settings.height!==this.studio.opts.height;if(e.settings.width&&(this.studio.opts.width=e.settings.width),e.settings.height&&(this.studio.opts.height=e.settings.height),e.settings.fps&&(this.studio.opts.fps=e.settings.fps),e.settings.bgColor&&(this.studio.opts.bgColor=e.settings.bgColor),i&&this.studio.pixiApp!=null){const n=this.studio.opts.width,s=this.studio.opts.height;this.studio.pixiApp.renderer.resize(n,s),this.studio.opts.canvas&&(this.studio.opts.canvas.width=n,this.studio.opts.canvas.height=s)}}const t=[];if(e.clips){await this.ensureFontsForClips(e.clips);const i=e.clips.map(o=>o.src).filter(o=>o&&o.trim()!=="");this.studio.resourceManager.preload(i);const n=new Map;if(e.tracks){for(const o of e.tracks)if(o.clipIds)for(const a of o.clipIds)n.set(a,o.id)}if(e.tracks)for(const o of e.tracks)this.tracks.push({id:o.id,name:o.name,type:o.type,clipIds:[]});for(const o of e.clips)t.push((async()=>{try{let a=o.id?n.get(o.id):void 0;if(o.type==="Transition"){const u=o,c=u.toClipId||u.fromClipId;c&&(a=n.get(c))}if(o.type!=="Text"&&o.type!=="Caption"&&o.type!=="Effect"&&o.type!=="Transition"&&(!o.src||o.src.trim()===""))return console.warn(`Skipping clip ${o.type} with empty source`,o),{clip:null};const l=await Xo(o);return(l.type==="Video"||l.type==="Image")&&(!o.width||!o.height)&&this.studio.opts.width&&this.studio.opts.height&&(typeof l.scaleToFit=="function"&&await l.scaleToFit(this.studio.opts.width,this.studio.opts.height),typeof l.centerInScene=="function"&&l.centerInScene(this.studio.opts.width,this.studio.opts.height)),{clip:l,intendedTrackId:a}}catch(a){return console.error(`Failed to load clip ${o.id||"unknown"}:`,a),{clip:null}}})());const s=await Promise.all(t);for(const{clip:o,intendedTrackId:a}of s)o&&(o.id||(o.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`),this.clips.push(o),this.addClipToTrack(o,a))}this.studio.pixiApp&&this.clips.forEach(i=>{const n=async()=>{await this.studio.updateFrame(this.studio.currentTime);const s=this.studio.selection;s.activeTransformer!=null&&s.selectedClips.has(i)&&typeof s.activeTransformer.updateBounds=="function"&&s.activeTransformer.updateBounds()};i.on("propsChange",n),this.studio.clipListeners.set(i,n),typeof i.setRenderer=="function"&&i.setRenderer(this.studio.pixiApp.renderer),(async()=>{try{await i.ready,await this.setupClipVisuals(i),await this.studio.updateFrame(this.studio.currentTime)}catch(s){console.warn(`[Studio] Failed to setup visuals for clip ${i.id}:`,s)}})()});for(const i of this.clips){const n=i.effects;if(Array.isArray(n))for(const s of n)this.studio.globalEffects.has(s.id)||this.studio.globalEffects.set(s.id,{id:s.id,key:s.key,startTime:s.startTime,duration:s.duration})}for(const i of this.clips)if(i instanceof Bi){const n={name:i.transitionEffect.key,key:i.transitionEffect.key,duration:i.duration,fromClipId:i.fromClipId,toClipId:i.toClipId,start:i.display.from,end:i.display.to};if(i.fromClipId){const s=this.getClipById(i.fromClipId);s&&(s.transition={...n})}if(i.toClipId){const s=this.getClipById(i.toClipId);s&&(s.transition={...n})}}await this.recalculateMaxDuration();try{await this.studio.updateFrame(this.studio.currentTime)}catch(i){console.error("[Studio] Failed to update initial frame:",i)}this.studio.emit("studio:restored",{clips:this.clips,tracks:this.tracks,settings:this.studio.opts})}async deleteSelected(){const e=this.studio.selection.selectedClips,t=Array.from(e);if(t.length!==0)for(const i of t)await this.removeClip(i)}async duplicateSelected(){const e=this.studio.selection.selectedClips,t=Array.from(e).filter(n=>!n.locked);if(t.length===0)return;const i=[];for(const n of t){const s=this.findTrackIdByClipId(n.id);if(!s)continue;const o=this.tracks.find(h=>h.id===s);if(!o)continue;const a=Rl(n,!1),l=await Xo(a);l.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const u=`track_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,c=`${o.name} (Copy)`;this.addTrack({id:u,name:c,type:o.type}),await this.addClip(l,{trackId:u}),i.push(l.id)}i.length>0&&this.studio.selection.selectClipsByIds(i)}async splitSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==1){console.warn("[Studio] Split requires exactly one selected clip");return}const i=t[0];if(i.locked){console.warn("[Studio] Cannot split a locked clip");return}const n=e??this.studio.currentTime;if(n<=i.display.from||i.display.to>0&&n>=i.display.to){console.warn("[Studio] Split time is outside clip bounds");return}const s=Rl(i,!1),o=n-i.display.from,a=i.playbackRate||1,l=o*a,u={duration:o,display:{from:i.display.from,to:n}};i.trim&&(u.trim={from:i.trim.from,to:i.trim.from+l}),await this.updateClip(i.id,u);const c={...s};c.display={from:n,to:s.display.to},c.duration=s.duration-o,c.trim&&(c.trim={from:c.trim.from+l,to:c.trim.to});const h=await Xo(c);h.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const d=this.findTrackIdByClipId(i.id);d&&(await this.addClip(h,{trackId:d}),this.studio.selection.selectClipsByIds([h.id]))}async trimSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==1){console.warn("[Studio] Trim requires exactly one selected clip");return}const i=t[0];if(i.locked){console.warn("[Studio] Cannot trim a locked clip");return}const n=e*1e6,s=i.playbackRate||1,o=n*s;if(n>=i.duration){console.warn("[Studio] Trim amount exceeds clip duration");return}const a=i.duration-n,l=i.display.from+n,u=i.display.to,c={duration:a,display:{from:l,to:u}};if(i.trim)c.trim={from:i.trim.from+o,to:i.trim.to};else{const h=i.sourceDuration||i.duration;c.trim={from:o,to:h}}await this.updateClip(i.id,c)}async updateSelected(e){const t=Array.from(this.studio.selection.selectedClips);if(t.length!==0)for(const i of t)await this.updateClip(i.id,e)}async setTracks(e){this.tracks=JSON.parse(JSON.stringify(e)),await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime)}async ensureFontsForClips(e){const t=new Map;for(const i of e){if(i.type==="Text"){const n=i.style?.fontUrl||i.fontUrl;n&&t.set(n,{name:i.style?.fontFamily||i.fontFamily||"CustomFont",url:n})}if(i.type==="Caption"){const n=i.style?.fontUrl||i.fontUrl;n&&t.set(n,{name:i.style?.fontFamily||i.fontFamily||"CustomFont",url:n})}}if(t.size>0)try{await L4.loadFonts(Array.from(t.values()))}catch(i){console.warn("Failed to load some fonts:",i)}}async recalculateMaxDuration(){let e=0;for(const t of this.clips){t.display.to===0&&t.duration!==1/0&&!isNaN(t.duration)&&t.duration>0;const i=t.duration>0?t.duration:0;if(i===1/0)continue;const n=t.display.to>0?t.display.to:t.display.from+i;n>e&&(e=n)}this.studio.maxDuration=e}async setupPlaybackForClip(e,t){if(this.studio.pixiApp!=null&&this.isPlaybackCapable(e))try{const i=e;if(e.type==="Audio"&&t&&typeof t!="string"){const o=URL.createObjectURL(t);e.src=o}const{element:n,objectUrl:s}=await i.createPlaybackElement();if(e.type==="Video"){const o=Q.from(n),a=new Je(o);a.visible=!1,this.studio.clipsNormalContainer&&this.studio.clipsNormalContainer.addChild(a),this.studio.videoSprites.set(e,a)}this.studio.transport.playbackElements.set(e,{element:n,objectUrl:s})}catch(i){console.warn(`Failed to setup playback for ${e.constructor.name}`,i)}}isPlaybackCapable(e){return"createPlaybackElement"in e&&"play"in e&&"pause"in e&&"seek"in e&&"syncPlayback"in e&&"cleanupPlayback"in e}async clear(){this.studio.selection.deselectClip(),this.studio.selection.interactiveClips.clear();for(const[e,t]of this.studio.clipListeners)e.off("propsChange",t);this.studio.clipListeners.clear(),this.studio.globalEffects.clear(),this.studio.effectFilters.clear(),this.studio.transitionRenderers.forEach(e=>e.destroy()),this.studio.transitionRenderers.clear(),this.studio.transitionSprites.forEach(e=>{e.parent&&e.parent.removeChild(e),e.destroy()}),this.studio.transitionSprites.clear(),this.studio.spriteRenderers.forEach(e=>e.destroy()),this.studio.spriteRenderers.clear();for(const[e,t]of this.studio.transport.playbackElements)this.isPlaybackCapable(e)&&e.cleanupPlayback(t.element,t.objectUrl);this.studio.transport.playbackElements.clear();for(const e of this.studio.videoSprites.values())e.destroy();this.studio.videoSprites.clear(),this.tracks=[],this.clips=[],this.studio.maxDuration=0,this.studio.currentTime=0,this.studio.emit("reset")}async rippleDelete(e,t){if(e>=t)return;const i=t-e,n=[...this.clips];for(const s of n){const o=s.display.from,a=s.display.to;if(!(a<=e)){if(o>=t){await this.updateClip(s.id,{display:{from:s.display.from-i,to:s.display.to-i}});continue}if(o>=e&&a<=t){await this.removeClip(s);continue}if(o<e&&a>t){const l=await s.clone();l.id=`clip_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;const u=e,c=e+(a-t),h=s.trim.from+(t-o)*s.playbackRate,d=s.trim.to,f=this.tracks.find(p=>p.clipIds.includes(s.id));f&&(await this.addClip(l,{trackId:f.id}),await this.updateClip(l.id,{display:{from:u,to:c},trim:{from:h,to:d}})),await this.updateClip(s.id,{display:{from:s.display.from,to:e},trim:{from:s.trim.from,to:s.trim.from+(e-o)*s.playbackRate}});continue}if(o<e&&a<=t){await this.updateClip(s.id,{display:{from:s.display.from,to:e},trim:{from:s.trim.from,to:s.trim.from+(e-o)*s.playbackRate}});continue}if(o>=e&&a>t){await this.updateClip(s.id,{display:{from:e,to:e+(a-t)},trim:{from:s.trim.from+(t-o)*s.playbackRate,to:s.trim.to}});continue}}}await this.recalculateMaxDuration(),await this.studio.updateFrame(this.studio.currentTime)}}const Tte={Date:!0,RegExp:!0,String:!0,Number:!0};function N4(r,e,t={cyclesFix:!0},i=[]){let n=[];const s=Array.isArray(r);for(const a in r){const l=r[a],u=s?+a:a;if(!(a in e)){n.push({type:"REMOVE",path:[u],oldValue:r[a]});continue}const c=e[a],h=typeof l=="object"&&typeof c=="object"&&Array.isArray(l)===Array.isArray(c);l&&c&&h&&!Tte[Object.getPrototypeOf(l)?.constructor?.name]&&(!t.cyclesFix||!i.includes(l))?n.push.apply(n,N4(l,c,t,t.cyclesFix?i.concat([l]):[]).map(d=>(d.path.unshift(u),d))):l!==c&&!(Number.isNaN(l)&&Number.isNaN(c))&&!(h&&(isNaN(l)?l+""==c+"":+l==+c))&&n.push({path:[u],type:"CHANGE",value:c,oldValue:l})}const o=Array.isArray(e);for(const a in e)a in r||n.push({type:"CREATE",path:[o?+a:a],value:e[a]});return n}class Cte{past=[];future=[];lastState=null;maxSize;constructor(e={}){this.maxSize=e.maxSize||50}projectToHistoryState(e){const t={},i=JSON.parse(JSON.stringify(e.tracks||[]));return e.clips.forEach(n=>{n.id&&(t[n.id]=JSON.parse(JSON.stringify(n)))}),{clips:t,tracks:i,settings:JSON.parse(JSON.stringify(e.settings||{}))}}init(e){this.lastState=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),this.past=[],this.future=[]}push(e){if(!this.lastState){this.init(e);return}const t=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),i=N4(this.lastState,t);i.length!==0&&(this.past.push(i),this.past.length>this.maxSize&&this.past.shift(),this.future=[],this.lastState=t)}undo(e){const t=this.past.pop();if(!t)return null;const i=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),n=this.applyPatches(i,t,!0);return this.future.push(t),this.lastState=n,{patches:t,state:n}}redo(e){const t=this.future.pop();if(!t)return null;const i=this.projectToHistoryState(JSON.parse(JSON.stringify(e))),n=this.applyPatches(i,t,!1);return this.past.push(t),this.lastState=n,{patches:t,state:n}}applyPatches(e,t,i){const n=JSON.parse(JSON.stringify(e)),s=i?[...t].reverse():t;for(const o of s){const{type:a,path:l}=o,u=o.value,c=o.oldValue;let h=n,d=!1;for(let p=0;p<l.length-1;p++){if(h[l[p]]===void 0||h[l[p]]===null){d=!0;break}h=h[l[p]]}if(d)continue;const f=l[l.length-1];if(i)switch(a){case"CREATE":Array.isArray(h)?h.splice(f,1):delete h[f];break;case"REMOVE":h[f]=c&&typeof c=="object"?JSON.parse(JSON.stringify(c)):c;break;case"CHANGE":h[f]=c&&typeof c=="object"?JSON.parse(JSON.stringify(c)):c;break}else switch(a){case"CREATE":h[f]=u&&typeof u=="object"?JSON.parse(JSON.stringify(u)):u;break;case"REMOVE":Array.isArray(h)?h.splice(f,1):delete h[f];break;case"CHANGE":h[f]=u&&typeof u=="object"?JSON.parse(JSON.stringify(u)):u;break}}return n}canUndo(){return this.past.length>0}canRedo(){return this.future.length>0}}class Ate extends X0{selection;transport;timeline;history;resourceManager;pixiApp=null;get tracks(){return this.timeline.tracks}get clips(){return this.timeline.clips}spriteRenderers=new Map;artboard=null;clipContainer=null;artboardMask=null;artboardBg=null;get activeTransformer(){return this.selection.activeTransformer}set activeTransformer(e){this.selection.activeTransformer=e}get selectedClips(){return this.selection.selectedClips}set selectedClips(e){this.selection.selectedClips=e}get interactiveClips(){return this.selection.interactiveClips}set interactiveClips(e){this.selection.interactiveClips=e}get playbackElements(){return this.transport.playbackElements}videoSprites=new Map;clipListeners=new Map;get isPlaying(){return this.transport.isPlaying}set isPlaying(e){this.transport.isPlaying=e}get currentTime(){return this.transport.currentTime}set currentTime(e){this.transport.currentTime=e}get maxDuration(){return this.transport.maxDuration}set maxDuration(e){this.transport.maxDuration=e}opts;destroyed=!1;renderingSuspended=!1;historyPaused=!1;processingHistory=!1;historyGroupDepth=0;clipCache=new Map;_isUpdatingLayout=!1;globalEffects=new Map;activeGlobalEffects=[];currentGlobalEffectSprite=null;effectFilters=new Map;transitionRenderers=new Map;transitionSprites=new Map;transFromTexture=null;transToTexture=null;transBgGraphics=null;clipsNormalContainer=null;clipsEffectContainer=null;videoTextureCache=new WeakMap;lastFromFrame=null;lastToFrame=null;hexToNumber(e){const t=e.startsWith("#")?e.slice(1):e;return parseInt(t,16)}ready;constructor(e){super(),this.opts={fps:30,bgColor:"#000000",interactivity:!0,spacing:0,...e},this.selection=new _te(this),this.transport=new wte(this),this.timeline=new Ste(this),this.history=new Cte,this.resourceManager=new Lo,this.ready=this.initPixiApp().then(()=>{this.history.init(this.exportToJSON())}),this.on("clip:removed",this.handleClipRemoved),this.on("clips:removed",this.handleClipsRemoved),this.on("clip:updated",this.handleTimelineChange),this.on("clip:added",this.handleTimelineChange),this.on("clips:added",this.handleTimelineChange),this.on("track:removed",this.handleTimelineChange),this.on("track:added",this.handleTimelineChange)}handleTimelineChange=()=>{this.updateFrame(this.currentTime),this.saveHistory()};saveHistory(){this.historyPaused||this.processingHistory||(this.history.push(this.exportToJSON()),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()}))}beginHistoryGroup(){this.historyGroupDepth++,this.historyPaused=!0}endHistoryGroup(){this.historyGroupDepth=Math.max(0,this.historyGroupDepth-1),this.historyGroupDepth===0&&(this.historyPaused=!1,this.saveHistory())}setPath(e,t,i){let n=e;for(let s=0;s<t.length-1;s++){const o=t[s];n[o]||(n[o]=typeof t[s+1]=="number"?[]:{}),n=n[o]}n[t[t.length-1]]=i}async applyHistoryPatches(e,t,i){const n=new Map,s=new Map,o=new Set;for(const a of e){const{type:l,path:u}=a,c=a.value,h=a.oldValue;if(u[0]==="clips"){const d=u[1];i?l==="CREATE"?o.add(d):l==="REMOVE"?s.set(d,h):l==="CHANGE"&&(n.has(d)||n.set(d,{}),this.setPath(n.get(d),u.slice(2),h)):l==="CREATE"?s.set(d,c):l==="REMOVE"?o.add(d):l==="CHANGE"&&(n.has(d)||n.set(d,{}),this.setPath(n.get(d),u.slice(2),c))}else u[0]==="settings"&&(i?this.setPath(this.opts,u.slice(1),h):this.setPath(this.opts,u.slice(1),c))}for(const a of o){const l=this.timeline.getClipById(a);l&&await this.removeClip(l)}for(const[a,l]of s){let u=this.clipCache.get(a);u||(u=await Xo(l),this.clipCache.set(a,u));let c;for(const h of t.tracks)if(h.clipIds.includes(a)){c=h.id;break}await this.addClip(u,{trackId:c})}for(const[a,l]of n)await this.updateClip(a,l);this.timeline.setTracks(t.tracks),this.emit("studio:restored",{clips:this.clips,tracks:this.tracks,settings:this.opts})}async undo(){if(!(!this.history.canUndo()||this.processingHistory)){this.processingHistory=!0,this.historyPaused=!0;try{const e=this.history.undo(this.exportToJSON());e&&await this.applyHistoryPatches(e.patches,e.state,!0),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()})}finally{this.historyPaused=!1,this.processingHistory=!1}}}async redo(){if(!(!this.history.canRedo()||this.processingHistory)){this.processingHistory=!0,this.historyPaused=!0;try{const e=this.history.redo(this.exportToJSON());e&&await this.applyHistoryPatches(e.patches,e.state,!1),this.emit("history:changed",{canUndo:this.history.canUndo(),canRedo:this.history.canRedo()})}finally{this.historyPaused=!1,this.processingHistory=!1}}}cleanupClipVisuals=e=>{for(const[n,s]of this.spriteRenderers)if(n.id===e){const o=s.getRoot();o&&o.parent&&o.parent.removeChild(o),s.destroy(),this.spriteRenderers.delete(n);break}const t=this.transitionSprites.get(e);t&&(t.parent&&t.parent.removeChild(t),t.destroy(),this.transitionSprites.delete(e)),this.transitionRenderers.get(e)&&this.transitionRenderers.delete(e);for(const[n,s]of this.videoSprites)if(n.id===e){s.parent&&s.parent.removeChild(s),s.destroy(),this.videoSprites.delete(n);break}for(const[n]of this.clipListeners)if(n.id===e){this.clipListeners.delete(n);break}};handleClipRemoved=({clipId:e})=>{this.cleanupClipVisuals(e),this.updateFrame(this.currentTime),this.saveHistory()};handleClipsRemoved=({clipIds:e})=>{for(const t of e)this.cleanupClipVisuals(t);this.updateFrame(this.currentTime),this.saveHistory()};async initPixiApp(){if(this.destroyed)return;const e=this.opts.canvas||document.createElement("canvas");e.width=this.opts.width,e.height=this.opts.height;const t=new gc,i=e.parentElement||window;await t.init({canvas:e,resizeTo:i,backgroundColor:this.hexToNumber(this.opts.bgColor),antialias:!0,resolution:window.devicePixelRatio||1,autoDensity:!0,autoStart:!1}),this.pixiApp=t,t.render(),t.stage.eventMode="static",t.stage.hitArea=t.screen,this.artboard=new Pe,this.artboard.label="ArtboardRoot",t.stage.addChild(this.artboard),this.selection.init(t,this.artboard),this.artboardBg=new Ze,this.artboardBg.rect(0,0,this.opts.width,this.opts.height).fill({color:0}),this.artboard.addChild(this.artboardBg),this.clipContainer=new Pe,this.clipContainer.label="ClipContainer",this.artboard.addChild(this.clipContainer),this.artboardMask=new Ze,this.artboardMask.rect(0,0,this.opts.width,this.opts.height).fill({color:16777215}),this.clipContainer.addChild(this.artboardMask),this.clipContainer.mask=this.artboardMask,this.clipsEffectContainer=new Pe,this.clipsEffectContainer.label="ClipsEffect",this.clipsEffectContainer.visible=!1,this.clipsEffectContainer.zIndex=1,this.clipsEffectContainer.sortableChildren=!0,this.clipContainer.addChild(this.clipsEffectContainer),this.clipsNormalContainer=new Pe,this.clipsNormalContainer.label="ClipsNormal",this.clipsNormalContainer.zIndex=10,this.clipsNormalContainer.sortableChildren=!0,this.clipContainer.addChild(this.clipsNormalContainer),this.transFromTexture=Ot.create({width:this.opts.width,height:this.opts.height}),this.transToTexture=Ot.create({width:this.opts.width,height:this.opts.height}),this.transBgGraphics=new Ze,this.transBgGraphics.rect(0,0,this.opts.width,this.opts.height).fill({color:0,alpha:0}),this.clipContainer.sortableChildren=!0,this.updateArtboardLayout(),t.renderer.on("resize",()=>{this.handleResize()})}getOptions(){return this.opts}setSize(e,t){this.updateDimensions(e,t)}setBgColor(e){this.opts.bgColor=e;const t=this.hexToNumber(e);this.pixiApp&&(this.pixiApp.renderer.background.color=t,this.pixiApp.render()),this.updateFrame(this.currentTime)}updateDimensions(e,t){this.opts.width=e,this.opts.height=t,this.artboardBg&&this.artboardBg.clear().rect(0,0,e,t).fill({color:0}),this.artboardMask&&this.artboardMask.clear().rect(0,0,e,t).fill({color:16777215}),this.transFromTexture&&this.transFromTexture.resize(e,t),this.transToTexture&&this.transToTexture.resize(e,t),this.transBgGraphics&&this.transBgGraphics.clear().rect(0,0,e,t).fill({color:0,alpha:0}),this.updateArtboardLayout(),this.updateFrame(this.currentTime)}handleResize=()=>{this.destroyed||!this.pixiApp||this._isUpdatingLayout||this.updateArtboardLayout()};updateArtboardLayout(){if(!(!this.pixiApp||!this.artboard||this._isUpdatingLayout)){this._isUpdatingLayout=!0;try{this.pixiApp.resize();const t=this.pixiApp.canvas.parentElement,i=t?t.getBoundingClientRect().width:this.pixiApp.screen.width,n=t?t.getBoundingClientRect().height:this.pixiApp.screen.height,s=this.opts.width,o=this.opts.height,a=this.opts.spacing||0,l=Math.max(0,i-a*2),u=Math.max(0,n-a*2),c=l/s,h=u/o,d=Math.min(c,h);this.artboard.scale.set(d),this.artboard.x=(i-s*d)/2,this.artboard.y=(n-o*d)/2,this.pixiApp.render()}finally{this._isUpdatingLayout=!1}}}getCanvas(){if(this.opts.canvas)return this.opts.canvas;if(this.pixiApp?.canvas)return this.pixiApp.canvas;throw new Error("Canvas not initialized yet. Wait for initPixiApp to complete.")}async addTransition(e,t=2e6,i,n){return this.timeline.addTransition(e,t,i,n)}findTrackIdByClipId(e){return this.timeline.findTrackIdByClipId(e)}async addClip(e,t){(Array.isArray(e)?e:[e]).forEach(n=>this.clipCache.set(n.id,n)),this.beginHistoryGroup();try{return await this.timeline.addClip(e,t)}finally{this.endHistoryGroup()}}addTrack(e,t){return this.timeline.addTrack(e,t)}async setTracks(e){return this.timeline.setTracks(e)}async moveTrack(e,t){return this.timeline.moveTrack(e,t)}async setTrackOrder(e){return this.timeline.setTrackOrder(e)}async removeTrack(e){return this.timeline.removeTrack(e)}getClipById(e){return this.timeline.getClipById(e)}async updateClip(e,t){return this.timeline.updateClip(e,t)}async centerClip(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.width-t.width)/2,n=(this.opts.height-t.height)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{left:i,top:n});t.left=i,t.top=n}async centerClipH(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.width-t.width)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{left:i});t.left=i}async centerClipV(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=(this.opts.height-t.height)/2;if(this.getClipById(t.id))return this.updateClip(t.id,{top:i});t.top=i}async scaleToFit(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=await t.ready,{width:n,height:s}=i;if(n===0||s===0)return;const o=Math.min(this.opts.width/n,this.opts.height/s),a=n*o,l=s*o;if(this.getClipById(t.id))return this.updateClip(t.id,{width:a,height:l});t.width=a,t.height=l}async scaleToCover(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t)return;const i=await t.ready,{width:n,height:s}=i;if(n===0||s===0)return;const o=Math.max(this.opts.width/n,this.opts.height/s),a=n*o,l=s*o;if(this.getClipById(t.id))return this.updateClip(t.id,{width:a,height:l});t.width=a,t.height=l}async updateClips(e){this.suspendRendering(),await this.timeline.updateClips(e),this.resumeRendering(),this.updateFrame(this.currentTime)}suspendRendering(){this.renderingSuspended=!0}resumeRendering(){this.renderingSuspended=!1}getTracks(){return this.timeline.tracks}getClip(e){return this.timeline.getClipById(e)}findClip(e){return this.timeline.getClipById(e)}setupSpriteInteractivity(e){this.selection.setupSpriteInteractivity(e)}async removeClip(e){const t=typeof e=="string"?this.getClipById(e):e;if(!t){console.warn("[Studio] removeClip: Clip not found",e);return}this.beginHistoryGroup();try{return this.clipCache.set(t.id,t),this.timeline.removeClip(t,{permanent:!this.processingHistory})}finally{this.endHistoryGroup()}}async removeClips(e){this.beginHistoryGroup();try{return e.forEach(t=>this.clipCache.set(t.id,t)),this.timeline.removeClips(e,{permanent:!this.processingHistory})}finally{this.endHistoryGroup()}}async removeClipById(e){const t=this.timeline.getClipById(e);if(t)return this.removeClip(t)}async removeClipsById(e){const t=e.map(i=>this.timeline.getClipById(i)).filter(Boolean);return this.removeClips(t)}async deleteSelected(){const e=this.selection.selectedClips;if(e.size!==0){this.beginHistoryGroup();try{await this.removeClips(Array.from(e))}finally{this.endHistoryGroup()}}}async duplicateSelected(){this.beginHistoryGroup();try{return await this.timeline.duplicateSelected()}finally{this.endHistoryGroup()}}async splitSelected(e){this.beginHistoryGroup();try{return await this.timeline.splitSelected(e)}finally{this.endHistoryGroup()}}async trimSelected(e){return this.timeline.trimSelected(e)}async updateSelected(e){return this.timeline.updateSelected(e)}async clear(){await this.timeline.clear(),this.transFromTexture&&(this.transFromTexture.destroy(!0),this.transFromTexture=null),this.transToTexture&&(this.transToTexture.destroy(!0),this.transToTexture=null),this.transBgGraphics&&(this.transBgGraphics.destroy(!0),this.transBgGraphics=null),this.transitionRenderers.forEach(e=>e.destroy()),this.transitionRenderers.clear(),this.transitionSprites.forEach(e=>e.destroy()),this.transitionSprites.clear(),this.emit("reset")}async play(){return this.transport.play()}pause(){this.transport.pause()}async stop(){return this.transport.stop()}async seek(e){return this.transport.seek(e)}async frameNext(){return this.transport.frameNext()}async framePrev(){return this.transport.framePrev()}getCurrentTime(){return this.transport.currentTime}getMaxDuration(){return this.transport.maxDuration}getIsPlaying(){return this.transport.isPlaying}getSelectedClips(){return Array.from(this.selectedClips)}getVideoTexture(e){let t=this.videoTextureCache.get(e);return t||(t=Q.from(e),this.videoTextureCache.set(e,t)),t}isPlaybackCapable(e){return"createPlaybackElement"in e&&"play"in e&&"pause"in e&&"seek"in e&&"syncPlayback"in e&&"cleanupPlayback"in e}async updateFrame(e){if(this.destroyed||this.pixiApp==null||this.renderingSuspended)return;this.updateActiveGlobalEffect(e);const t=new Set,i=new Set,n=this.tracks.length;for(const o of this.clips){const a=this.getTrackIndex(o.id);if(a!==-1){const l=(n-a)*10;o.zIndex=l;const u=this.spriteRenderers.get(o);if(u){const h=u.getRoot();h&&(h.zIndex=l)}const c=this.videoSprites.get(o);c&&(c.zIndex=l)}}const s=[...this.clips].sort((o,a)=>o.zIndex-a.zIndex);for(const o of s){if(e<o.display.from){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}if(o.display.to>0&&e>o.display.to){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}const a=e-o.display.from,l=a*o.playbackRate;o.animate(l);const u=await o.ready,c=o.duration||u.duration;if(c>0&&a>c){const v=this.spriteRenderers.get(o);v!=null&&await v.updateFrame(null);const x=this.playbackElements.get(o);x!=null&&this.isPlaybackCapable(o)&&o.pause(x.element);continue}const h=this.playbackElements.get(o),d=o.type==="Video"||o.type==="Image",f=o.transition?o.transition.start:0,p=o.transition?o.transition.end:0,m=d&&o.transition&&e>=f&&e<p;if(h!=null&&this.isPlaybackCapable(o)){const v=a/1e6;if(o.syncPlayback(h.element,this.isPlaying,v),o.type==="Video"&&this.isPlaybackCapable(o)){const x=this.videoSprites.get(o);if(x!=null){const y=o.meta.duration/1e6;if(this.spriteRenderers.has(o))x.visible=!1;else if(x.visible=!m&&v>=0&&v<y,x.visible&&hee(o,x),!m)continue}}else continue}if(m){const v=o?.transition?.fromClipId,x=o?.transition?.toClipId,y=`${v}_${x}`;if(i.has(y)){const E=this.spriteRenderers.get(o);E?.getRoot()&&(E.getRoot().visible=!1);const _=this.videoSprites.get(o);_&&(_.visible=!1);continue}i.add(y),this.transFromTexture||(this.transFromTexture=Ot.create({width:this.opts.width,height:this.opts.height})),this.transToTexture||(this.transToTexture=Ot.create({width:this.opts.width,height:this.opts.height})),this.transBgGraphics||(this.transBgGraphics=new Ze,this.transBgGraphics.rect(0,0,this.opts.width,this.opts.height).fill({color:0,alpha:0}));const b=v?this.getClipById(v):null,T=x?this.getClipById(x):null;let P=null,A=null;if(b){const E=Math.max(0,e-b.display.from),{video:_}=await b.getFrame(E);_ instanceof HTMLVideoElement?P=this.getVideoTexture(_):P=_,P&&(this.lastFromFrame=P)}if(T){const E=Math.max(0,e-T.display.from),{video:_}=await T.getFrame(E);_ instanceof HTMLVideoElement?A=this.getVideoTexture(_):A=_,A&&(this.lastToFrame=A)}if(P||(P=this.lastFromFrame),A||(A=this.lastToFrame),!P||!A)continue;if(P&&A&&this.pixiApp&&this.transFromTexture&&this.transToTexture){const E=(e-f)/o?.transition?.duration;b&&P&&this.renderClipToTransitionTexture(b,P,this.transFromTexture),T&&A&&this.renderClipToTransitionTexture(T,A,this.transToTexture);let _=this.transitionRenderers.get(y);if(!_)try{_=c1({name:o?.transition?.name,renderer:this.pixiApp.renderer}),this.transitionRenderers.set(y,_)}catch(S){console.error("[Studio] Failed to create transition renderer:",S)}if(_){const S=_.render({width:this.opts.width,height:this.opts.height,from:this.transFromTexture,to:this.transToTexture,progress:E});let I=this.transitionSprites.get(o.id);I||(I=new Je,I.label=`TransitionSprite_${o.id}`,this.transitionSprites.set(o.id,I),this.clipsNormalContainer&&this.clipsNormalContainer.addChild(I)),I.texture=S,I.visible=!0,I.x=0,I.y=0,I.width=this.opts.width,I.height=this.opts.height,I.anchor.set(0,0),I.zIndex=o.zIndex,t.add(o.id);const M=this.spriteRenderers.get(o);M?.getRoot()&&(M.getRoot().visible=!1);const O=this.videoSprites.get(o);if(O&&(O.visible=!1),b){const U=this.spriteRenderers.get(b);U?.getRoot()&&(U.getRoot().visible=!1);const X=this.videoSprites.get(b);X&&(X.visible=!1)}if(T){const U=this.spriteRenderers.get(T);U?.getRoot()&&(U.getRoot().visible=!1);const X=this.videoSprites.get(T);X&&(X.visible=!1)}continue}}}const g=this.spriteRenderers.get(o);if(g!=null){const v=this.selectedClips.has(o);if(o.type!=="Text"&&o.type!=="Caption"&&typeof o.getTexture=="function"&&o.getTexture()!=null){const y=o.getTexture();if(y!=null){await g.updateFrame(y),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}if(o.type==="Text"){const y=o;this.pixiApp?.renderer&&typeof y.setRenderer=="function"&&y.setRenderer(this.pixiApp.renderer);const b=await y.getTexture();if(b!=null){await g.updateFrame(b),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}if(o.type==="Caption"){o.updateState(a);const y=o;this.pixiApp?.renderer&&typeof y.setRenderer=="function"&&y.setRenderer(this.pixiApp.renderer);const b=await y.getTexture();if(b!=null){await g.updateFrame(b),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o);continue}}const{video:x}=await o.getFrame(a);await g.updateFrame(x),v||g.updateTransforms(),this.opts.interactivity&&this.selection.setupSpriteInteractivity(o)}}if(this.activeGlobalEffects.length>0&&this.clipsNormalContainer&&this.clipsEffectContainer){for(const o of this.clips)this.moveClipToEffectContainer(o,!1);this.clipsNormalContainer.visible=!0,await this.applyGlobalEffects(e)}else if(this.clipsNormalContainer){for(const o of this.clips)this.moveClipToEffectContainer(o,!1);this.clipsNormalContainer.visible=!0,this.currentGlobalEffectSprite&&(this.currentGlobalEffectSprite.parent&&this.currentGlobalEffectSprite.parent.removeChild(this.currentGlobalEffectSprite),this.currentGlobalEffectSprite.destroy(),this.currentGlobalEffectSprite=null)}for(const[o,a]of this.transitionSprites.entries())t.has(o)||(a.visible=!1);this.pixiApp!=null&&this.pixiApp.render()}moveClipToEffectContainer(e,t=!0){if(!this.clipsNormalContainer||!this.clipsEffectContainer)return;const i=t?this.clipsEffectContainer:this.clipsNormalContainer,n=this.spriteRenderers.get(e);if(n){const o=n.getRoot();if(o&&o.parent!==i){try{o.parent&&o.parent.removeChild&&o.parent.removeChild(o)}catch(a){console.warn("moveClipToEffectContainer: could not remove root from parent",a)}i.addChild(o)}}const s=this.transitionSprites.get(e.id);if(s&&s.parent!==i){try{s.parent&&s.parent.removeChild&&s.parent.removeChild(s)}catch(o){console.warn("moveClipToEffectContainer: could not remove transSprite from parent",o)}i.addChild(s)}}applyGlobalEffect(e,t,i){const n=t.id||`${e}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s={id:n,key:e,startTime:t.startTime,duration:t.duration??1e6};for(const o of i)o instanceof Bl&&o.addEffect(s),o instanceof br&&o.addEffect(s),o instanceof Ki&&o.addEffect(s),o instanceof On&&o.addEffect(s);return this.globalEffects.set(n,s),n}getTrackIndex(e){return this.tracks.findIndex(t=>t.clipIds.includes(e))}async getTransitionFromFrame(e,t){let i=null;if(e.transition?.prevClipId&&(i=this.clips.find(a=>a.id===e.transition.prevClipId)||null),i||(i=this.getPreviousClipOnTrack(e)),!i)return null;const n=i.duration>0?i.duration:0,s=Math.max(0,Math.min(t-i.display.from,n)),{video:o}=await i.getFrame(s);return o}getPreviousClipOnTrack(e){const t=this.getTrackIndex(e.id);return t===-1?null:this.clips.filter(i=>i.id!==e.id&&this.getTrackIndex(i.id)===t&&i.display.from<e.display.from&&(i instanceof br||i instanceof Bl)).sort((i,n)=>n.display.to-i.display.to)[0]||null}renderClipToTransitionTexture(e,t,i){if(!this.pixiApp)return;const n=e.style||{},{renderTransform:s}=e,o=(s?.mirror??0)>.5,a=t instanceof Q?t:Q.from(t),l=s?.x??0,u=s?.y??0,c=s?.angle??0,h=s?.scale??1,d=s?.opacity??1,f=s?.blur??0,p=s?.brightness??1,m=a.width||1,g=a.height||1,v=e.type==="Caption",x=!v&&e.width&&e.width!==0?Math.abs(e.width)/m:1,y=!v&&e.height&&e.height!==0?Math.abs(e.height)/g:1,b=new Pe;b.x=e.center.x+l,b.y=e.center.y+u,b.rotation=(e.flip==null?1:-1)*((e.angle+c)*Math.PI)/180,b.alpha=e.opacity*d;const T=new Je(a);T.anchor.set(.5,.5);let P=[];if(o){const U=x*h,X=y*h,D=m*U,k=g*X;T.position.set(0,0),T.scale.set(U,X);const Y=[[D,0,-U,X],[-D,0,-U,X],[0,k,U,-X],[0,-k,U,-X],[D,k,-U,-X],[-D,k,-U,-X],[D,-k,-U,-X],[-D,-k,-U,-X]];for(const[H,$,K,we]of Y){const Ie=new Je(a);Ie.anchor.set(.5,.5),Ie.position.set(H,$),Ie.scale.set(K,we),P.push(Ie)}if(e.flip==="horizontal"){T.scale.x=-U;for(let H=0;H<8;H++)P[H].scale.x=-Y[H][2]}else if(e.flip==="vertical"){T.scale.y=-X;for(let H=0;H<8;H++)P[H].scale.y=-Y[H][3]}b.addChild(T);for(const H of P)b.addChild(H)}else e.flip==="horizontal"?(T.scale.x=-x*h,T.scale.y=y*h):e.flip==="vertical"?(T.scale.x=x*h,T.scale.y=-y*h):(T.scale.x=x*h,T.scale.y=y*h),b.addChild(T);const A=[];if(f>0){const U=new ys;U.strength=f,U.quality=4,U.repeatEdgePixels=!0,A.push(U)}if(p!==1){const U=new Ro;U.brightness(p,!1),A.push(U)}b.filters=A;const E=n.borderRadius||0;let _=null;E>0&&(_=new Ze,_.roundRect(-m/2,-g/2,m,g,Math.min(E,m/2,g/2)),_.fill({color:16777215,alpha:1}),T.addChild(_),T.mask=_);const S=n.stroke;let I=null;if(S&&S.width>0){I=new Ze;const U=yt(S.color)??16777215;if(I.setStrokeStyle({width:S.width,color:U,alignment:1}),E>0){const X=Math.min(E,m/2,g/2);I.roundRect(-m/2,-g/2,m,g,X)}else I.rect(-m/2,-g/2,m,g);I.stroke(),T.addChild(I)}const M=n.dropShadow;let O=null;if(M&&(M.blur>0||M.distance>0)){O=new Ze;const U=yt(M.color)??0,X=M.alpha??.5,D=M.distance??0,k=M.angle??0,Y=Math.cos(k)*D,H=Math.sin(k)*D;if(E>0){const $=Math.min(E,m/2,g/2);O.roundRect(-m/2+Y,-g/2+H,m,g,$)}else O.rect(-m/2+Y,-g/2+H,m,g);O.fill({color:U,alpha:X}),b.addChildAt(O,0)}this.pixiApp.renderer.render({container:b,target:i,clear:!0}),t instanceof Q||T.texture.destroy(!0),_&&_.destroy(),I&&I.destroy(),O&&O.destroy();for(const U of P)U.destroy();T.destroy(),b.destroy()}removeGlobalEffect(e){this.globalEffects.delete(e)}clearGlobalEffects(){this.globalEffects.clear()}updateActiveGlobalEffect(e){const t=[];for(const i of this.clips)i instanceof Qi&&e>=i.display.from&&(i.display.to===0||e<i.display.to)&&t.push({id:i.id,key:i.effect.key,startTime:i.display.from,duration:i.duration>0?i.duration:i.display.to-i.display.from,trackIndex:this.getTrackIndex(i.id),values:i.effect.values});for(const i of this.globalEffects.values()){const n=i.startTime+i.duration;e>=i.startTime&&e<n&&t.push({id:i.id,key:i.key,startTime:i.startTime,duration:i.duration,trackIndex:-1})}this.activeGlobalEffects=t.sort((i,n)=>(n.trackIndex??-1)-(i.trackIndex??-1))}async applyGlobalEffects(e){if(this.currentGlobalEffectSprite&&(this.currentGlobalEffectSprite.parent&&this.currentGlobalEffectSprite.parent.removeChild(this.currentGlobalEffectSprite),this.currentGlobalEffectSprite.destroy(),this.currentGlobalEffectSprite=null),this.activeGlobalEffects.length===0||!this.pixiApp||!this.clipContainer||!this.clipsNormalContainer||!this.clipsEffectContainer)return;const t=this.opts.width,i=this.opts.height;let n=null,s=new Set;const o=[];for(const a of this.activeGlobalEffects){const{key:l,startTime:u,duration:c,trackIndex:h,values:d}=a,f=e-u,p=Math.min(Math.max(f/c,0),1);if(p<0||p>=1)continue;if(this.clipsEffectContainer.visible=!0,this.clipsEffectContainer.removeChildren(),n){const y=new Je(n);y.label="PrevEffectResult",y.width=t,y.height=i,this.clipsEffectContainer.addChild(y)}const m=h??-1;for(const y of this.clips){if(s.has(y.id))continue;const b=this.getTrackIndex(y.id);!(y instanceof Qi)&&(m===-1||b>m)&&(this.moveClipToEffectContainer(y,!0),s.add(y.id))}let g=this.effectFilters.get(l);if(!g)try{if(g=await l1({name:l,renderer:this.pixiApp.renderer,values:d}),g)this.effectFilters.set(l,g);else continue}catch(y){console.error(y);continue}const v=Ot.create({width:t,height:i});o.push(v),this.pixiApp.renderer.render({container:this.clipsEffectContainer,target:v,clear:!0});const x=g.render({canvasTexture:v,progress:p,width:t,height:i,values:d});this.clipsEffectContainer.visible=!1,n=x}if(n){const a=new Je(n);a.x=0,a.y=0,a.width=t,a.height=i,a.scale.set(1),a.zIndex=5,this.clipContainer.addChild(a),this.currentGlobalEffectSprite=a}for(const a of o)a.destroy(!0)}destroy(){if(!this.destroyed){window.removeEventListener("resize",this.handleResize),this.destroyed=!0,this.stop(),this.clear(),this.transitionRenderers.clear(),this.transFromTexture&&(this.transFromTexture.destroy(!0),this.transFromTexture=null),this.transToTexture&&(this.transToTexture.destroy(!0),this.transToTexture=null),this.transBgGraphics&&(this.transBgGraphics.destroy(!0),this.transBgGraphics=null);for(const e of this.transitionSprites.values())e.destroy();this.transitionSprites.clear(),this.pixiApp&&(this.pixiApp.destroy(!0,{children:!0,texture:!0}),this.pixiApp=null)}}selectClip(e,t=!1){this.selection.selectClip(e,t)}setSelection(e){this.selection.setSelection(e)}selectClipsByIds(e){this.selection.selectClipsByIds(e)}deselectClip(){this.selection.deselectClip()}async lockClip(e,t){const i=this.timeline.getClipById(e);i&&(await this.timeline.updateClip(e,{locked:t}),this.emit("clip:lock-changed",{clip:i,locked:t}),this.selection.selectedClips.has(i)&&this.selection.recreateTransformer(),await this.updateFrame(this.currentTime))}exportToJSON(){return this.timeline.exportToJSON()}async loadFromJSON(e){return this.timeline.loadFromJSON(e)}}xe.add($T),xe.mixin(Pe,eC),xe.add(Ox),xe.add(Ux),xe.add(Ly),xe.mixin(Pe,pP),xe.add(Oy),xe.add(yb),xe.add(kc),xe.add(_b),xe.add(Cb),xe.add(Ab),xe.add(Nb),xe.add(Lb),xe.add(Mb),xe.add(Ub),xe.add(Db),xe.add(kb),xe.add(Pb),xe.add(Ky),xe.add(Yy);const Ete=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Pte=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));_e.ANIMATABLE_PROPERTIES=FL,_e.Audio=Jr,_e.Caption=On,_e.Compositor=gte,_e.DEFAULT_AUDIO_CONF=rt,_e.Effect=Qi,_e.GL_EFFECT_OPTIONS=bQ,_e.GL_TRANSITION_OPTIONS=pte,_e.Image=Bl,_e.KeyframeAnimation=B,_e.Log=Ue,_e.MP4Clip=br,_e.Placeholder=kl,_e.Studio=Ate,_e.Text=Ki,_e.Transition=Bi,_e.VALUES_FILTER_SPECIAL=a1,_e.VALUES_FILTER_SPECIAL_LIMITS=lee,_e.Video=br,_e.animationRegistry=z,_e.clipToJSON=Rl,_e.createChromakey=TL,_e.createSlowMo=iS,_e.easings=Su,_e.fastConcatMP4=Hk,_e.fixFMP4Duration=Bq,_e.fontManager=L4,_e.getAllEffects=jb,_e.getAllTransitions=qo,_e.getEasing=Y0,_e.getEffectOptions=Yk,_e.getPresetTemplate=V,_e.getTransitionOptions=D4,_e.jsonToClip=Xo,_e.makeEffect=l1,_e.makeTransition=c1,_e.mixinMP4AndAudio=Mq,_e.registerCustomEffect=vQ,_e.registerCustomTransition=dte,_e.renderTxt2ImgBitmap=kL,_e.unregisterCustomEffect=xQ,_e.unregisterCustomTransition=fte,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})}));