modern-canvas 0.4.56 → 0.5.0
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.cjs +1 -1
- package/dist/index.js +59 -59
- package/dist/index.mjs +2 -2
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(g,At){typeof exports=="object"&&typeof module<"u"?At(exports):typeof define=="function"&&define.amd?define(["exports"],At):(g=typeof globalThis<"u"?globalThis:g||self,At(g.modernCanvas={}))})(this,function(g){"use strict";var DE=Object.defineProperty;var xE=(g,At,TA)=>At in g?DE(g,At,{enumerable:!0,configurable:!0,writable:!0,value:TA}):g[At]=TA;var u=(g,At,TA)=>xE(g,typeof At!="symbol"?At+"":At,TA);var NA,BA;var At=typeof document<"u"?document.currentScript:null,TA={grad:.9,turn:360,rad:360/(2*Math.PI)},Ht=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Ue=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=Math.pow(10,A)),Math.round(e*r)/e+0},Bt=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=1),r>e?e:r>A?r:A},fo=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},Io=function(r){return{r:Bt(r.r,0,255),g:Bt(r.g,0,255),b:Bt(r.b,0,255),a:Bt(r.a)}},ys=function(r){return{r:Ue(r.r),g:Ue(r.g),b:Ue(r.b),a:Ue(r.a,3)}},Hc=/^#([0-9a-f]{3,8})$/i,or=function(r){var A=r.toString(16);return A.length<2?"0"+A:A},po=function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=Math.max(A,e,t),n=s-Math.min(A,e,t),o=n?s===A?(e-t)/n:s===e?2+(t-A)/n:4+(A-e)/n:0;return{h:60*(o<0?o+6:o),s:s?n/s*100:0,v:s/255*100,a:i}},Eo=function(r){var A=r.h,e=r.s,t=r.v,i=r.a;A=A/360*6,e/=100,t/=100;var s=Math.floor(A),n=t*(1-e),o=t*(1-(A-s)*e),a=t*(1-(1-A+s)*e),l=s%6;return{r:255*[t,o,n,n,a,t][l],g:255*[a,t,t,o,n,n][l],b:255*[n,n,a,t,t,o][l],a:i}},Bo=function(r){return{h:fo(r.h),s:Bt(r.s,0,100),l:Bt(r.l,0,100),a:Bt(r.a)}},Co=function(r){return{h:Ue(r.h),s:Ue(r.s),l:Ue(r.l),a:Ue(r.a,3)}},Qo=function(r){return Eo((e=(A=r).s,{h:A.h,s:(e*=((t=A.l)<50?t:100-t)/100)>0?2*e/(t+e)*100:0,v:t+e,a:A.a}));var A,e,t},Ei=function(r){return{h:(A=po(r)).h,s:(i=(200-(e=A.s))*(t=A.v)/100)>0&&i<200?e*t/100/(i<=100?i:200-i)*100:0,l:i/2,a:A.a};var A,e,t,i},Jc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Kc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Vc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ms={string:[[function(r){var A=Hc.exec(r);return A?(r=A[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?Ue(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?Ue(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var A=Yc.exec(r)||Vc.exec(r);return A?A[2]!==A[4]||A[4]!==A[6]?null:Io({r:Number(A[1])/(A[2]?100/255:1),g:Number(A[3])/(A[4]?100/255:1),b:Number(A[5])/(A[6]?100/255:1),a:A[7]===void 0?1:Number(A[7])/(A[8]?100:1)}):null},"rgb"],[function(r){var A=Jc.exec(r)||Kc.exec(r);if(!A)return null;var e,t,i=Bo({h:(e=A[1],t=A[2],t===void 0&&(t="deg"),Number(e)*(TA[t]||1)),s:Number(A[3]),l:Number(A[4]),a:A[5]===void 0?1:Number(A[5])/(A[6]?100:1)});return Qo(i)},"hsl"]],object:[[function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=i===void 0?1:i;return Ht(A)&&Ht(e)&&Ht(t)?Io({r:Number(A),g:Number(e),b:Number(t),a:Number(s)}):null},"rgb"],[function(r){var A=r.h,e=r.s,t=r.l,i=r.a,s=i===void 0?1:i;if(!Ht(A)||!Ht(e)||!Ht(t))return null;var n=Bo({h:Number(A),s:Number(e),l:Number(t),a:Number(s)});return Qo(n)},"hsl"],[function(r){var A=r.h,e=r.s,t=r.v,i=r.a,s=i===void 0?1:i;if(!Ht(A)||!Ht(e)||!Ht(t))return null;var n=function(o){return{h:fo(o.h),s:Bt(o.s,0,100),v:Bt(o.v,0,100),a:Bt(o.a)}}({h:Number(A),s:Number(e),v:Number(t),a:Number(s)});return Eo(n)},"hsv"]]},yo=function(r,A){for(var e=0;e<A.length;e++){var t=A[e][0](r);if(t)return[t,A[e][1]]}return[null,void 0]},zc=function(r){return typeof r=="string"?yo(r.trim(),ms.string):typeof r=="object"&&r!==null?yo(r,ms.object):[null,void 0]},ws=function(r,A){var e=Ei(r);return{h:e.h,s:Bt(e.s+100*A,0,100),l:e.l,a:e.a}},vs=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},mo=function(r,A){var e=Ei(r);return{h:e.h,s:e.s,l:Bt(e.l+100*A,0,100),a:e.a}},_s=function(){function r(A){this.parsed=zc(A)[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 Ue(vs(this.rgba),2)},r.prototype.isDark=function(){return vs(this.rgba)<.5},r.prototype.isLight=function(){return vs(this.rgba)>=.5},r.prototype.toHex=function(){return A=ys(this.rgba),e=A.r,t=A.g,i=A.b,n=(s=A.a)<1?or(Ue(255*s)):"","#"+or(e)+or(t)+or(i)+n;var A,e,t,i,s,n},r.prototype.toRgb=function(){return ys(this.rgba)},r.prototype.toRgbString=function(){return A=ys(this.rgba),e=A.r,t=A.g,i=A.b,(s=A.a)<1?"rgba("+e+", "+t+", "+i+", "+s+")":"rgb("+e+", "+t+", "+i+")";var A,e,t,i,s},r.prototype.toHsl=function(){return Co(Ei(this.rgba))},r.prototype.toHslString=function(){return A=Co(Ei(this.rgba)),e=A.h,t=A.s,i=A.l,(s=A.a)<1?"hsla("+e+", "+t+"%, "+i+"%, "+s+")":"hsl("+e+", "+t+"%, "+i+"%)";var A,e,t,i,s},r.prototype.toHsv=function(){return A=po(this.rgba),{h:Ue(A.h),s:Ue(A.s),v:Ue(A.v),a:Ue(A.a,3)};var A},r.prototype.invert=function(){return St({r:255-(A=this.rgba).r,g:255-A.g,b:255-A.b,a:A.a});var A},r.prototype.saturate=function(A){return A===void 0&&(A=.1),St(ws(this.rgba,A))},r.prototype.desaturate=function(A){return A===void 0&&(A=.1),St(ws(this.rgba,-A))},r.prototype.grayscale=function(){return St(ws(this.rgba,-1))},r.prototype.lighten=function(A){return A===void 0&&(A=.1),St(mo(this.rgba,A))},r.prototype.darken=function(A){return A===void 0&&(A=.1),St(mo(this.rgba,-A))},r.prototype.rotate=function(A){return A===void 0&&(A=15),this.hue(this.hue()+A)},r.prototype.alpha=function(A){return typeof A=="number"?St({r:(e=this.rgba).r,g:e.g,b:e.b,a:A}):Ue(this.rgba.a,3);var e},r.prototype.hue=function(A){var e=Ei(this.rgba);return typeof A=="number"?St({h:A,s:e.s,l:e.l,a:e.a}):Ue(e.h)},r.prototype.isEqual=function(A){return this.toHex()===St(A).toHex()},r}(),St=function(r){return r instanceof _s?r:new _s(r)},wo=[],Wc=function(r){r.forEach(function(A){wo.indexOf(A)<0&&(A(_s,ms),wo.push(A))})};function ce(r){return r==null||r==="none"}function GA(r,A=0,e=10**A){return Math.round(e*r)/e+0}function bs(r,A=!1){if(typeof r!="object"||!r)return r;if(Array.isArray(r))return A?r.map(t=>bs(t,A)):r;const e={};for(const t in r){const i=r[t];i!=null&&(A?e[t]=bs(i,A):e[t]=i)}return e}function Ds(r,A){const e={};return A.forEach(t=>{t in r&&(e[t]=r[t])}),e}function qc(r,A,e){const t=A.length-1;if(t<0)return r===void 0?e:r;for(let i=0;i<t;i++){if(r==null)return e;r=r[A[i]]}return r==null||r[A[t]]===void 0?e:r[A[t]]}function Xc(r,A,e){const t=A.length-1;for(let i=0;i<t;i++)typeof r[A[i]]!="object"&&(r[A[i]]={}),r=r[A[i]];r[A[t]]=e}function jc(r,A,e){return r==null||!A||typeof A!="string"?e:r[A]!==void 0?r[A]:(A=A.replace(/\[(\w+)\]/g,".$1"),A=A.replace(/^\./,""),qc(r,A.split("."),e))}function Zc(r,A,e){if(!(typeof r!="object"||!A))return A=A.replace(/\[(\w+)\]/g,".$1"),A=A.replace(/^\./,""),Xc(r,A.split("."),e)}let xs=class{constructor(){u(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}};function Ss(r){let A;return typeof r=="number"?A={r:r>>24&255,g:r>>16&255,b:r>>8&255,a:(r&255)/255}:A=r,St(A)}function $c(r){return{r:GA(r.r),g:GA(r.g),b:GA(r.b),a:GA(r.a,3)}}function ar(r){const A=r.toString(16);return A.length<2?`0${A}`:A}const vo="#000000FF";function eh(r){return Ss(r).isValid()}function ct(r,A=!1){const e=Ss(r);if(!e.isValid()){if(typeof r=="string")return r;const o=`Failed to normalizeColor ${r}`;if(A)throw new Error(o);return console.warn(o),vo}const{r:t,g:i,b:s,a:n}=$c(e.rgba);return`#${ar(t)}${ar(i)}${ar(s)}${ar(GA(n*255))}`}var lr=lr||{};lr.parse=function(){const 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)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let A="";function e(N){const U=new Error(`${A}: ${N}`);throw U.source=A,U}function t(){const N=i();return A.length>0&&e("Invalid input not EOF"),N}function i(){return w(s)}function s(){return n("linear-gradient",r.linearGradient,a)||n("repeating-linear-gradient",r.repeatingLinearGradient,a)||n("radial-gradient",r.radialGradient,h)||n("repeating-radial-gradient",r.repeatingRadialGradient,h)}function n(N,U,X){return o(U,ee=>{const oe=X();return oe&&(J(r.comma)||e("Missing comma before color stops")),{type:N,orientation:oe,colorStops:w(R)}})}function o(N,U){const X=J(N);if(X){J(r.startCall)||e("Missing (");const ee=U(X);return J(r.endCall)||e("Missing )"),ee}}function a(){const N=l();if(N)return N;const U=ie("position-keyword",r.positionKeywords,1);return U?{type:"directional",value:U.value}:c()}function l(){return ie("directional",r.sideOrCorner,1)}function c(){return ie("angular",r.angleValue,1)||ie("angular",r.radianValue,1)}function h(){let N,U=f(),X;return U&&(N=[],N.push(U),X=A,J(r.comma)&&(U=f(),U?N.push(U):A=X)),N}function f(){let N=I()||d();if(N)N.at=p();else{const U=C();if(U){N=U;const X=p();X&&(N.at=X)}else{const X=p();if(X)N={type:"default-radial",at:X};else{const ee=x();ee&&(N={type:"default-radial",at:ee})}}}return N}function I(){const N=ie("shape",/^(circle)/i,0);return N&&(N.style=q()||C()),N}function d(){const N=ie("shape",/^(ellipse)/i,0);return N&&(N.style=x()||L()||C()),N}function C(){return ie("extent-keyword",r.extentKeywords,1)}function p(){if(ie("position",/^at/,0)){const N=x();return N||e("Missing positioning value"),N}}function x(){const N=P();if(N.x||N.y)return{type:"position",value:N}}function P(){return{x:L(),y:L()}}function w(N){let U=N();const X=[];if(U)for(X.push(U);J(r.comma);)U=N(),U?X.push(U):e("One extra comma");return X}function R(){const N=v();return N||e("Expected color definition"),N.length=L(),N}function v(){return b()||K()||W()||z()||D()||Ae()||m()}function m(){return ie("literal",r.literalColor,0)}function b(){return ie("hex",r.hexColor,1)}function D(){return o(r.rgbColor,()=>({type:"rgb",value:w(Y)}))}function z(){return o(r.rgbaColor,()=>({type:"rgba",value:w(Y)}))}function Ae(){return o(r.varColor,()=>({type:"var",value:te()}))}function W(){return o(r.hslColor,()=>{J(r.percentageValue)&&e("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const U=Y();J(r.comma);let X=J(r.percentageValue);const ee=X?X[1]:null;J(r.comma),X=J(r.percentageValue);const oe=X?X[1]:null;return(!ee||!oe)&&e("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[U,ee,oe]}})}function K(){return o(r.hslaColor,()=>{const N=Y();J(r.comma);let U=J(r.percentageValue);const X=U?U[1]:null;J(r.comma),U=J(r.percentageValue);const ee=U?U[1]:null;J(r.comma);const oe=Y();return(!X||!ee)&&e("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[N,X,ee,oe]}})}function te(){return J(r.variableName)[1]}function Y(){return J(r.number)[1]}function L(){return ie("%",r.percentageValue,1)||se()||H()||q()}function se(){return ie("position-keyword",r.positionKeywords,1)}function H(){return o(r.calcValue,()=>{let N=1,U=0;for(;N>0&&U<A.length;){const ee=A.charAt(U);ee==="("?N++:ee===")"&&N--,U++}N>0&&e("Missing closing parenthesis in calc() expression");const X=A.substring(0,U-1);return $(U-1),{type:"calc",value:X}})}function q(){return ie("px",r.pixelValue,1)||ie("em",r.emValue,1)}function ie(N,U,X){const ee=J(U);if(ee)return{type:N,value:ee[X]}}function J(N){let U,X;return X=/^\s+/.exec(A),X&&$(X[0].length),U=N.exec(A),U&&$(U[0].length),U}function $(N){A=A.substr(N)}return function(N){return A=N.toString().trim(),A.endsWith(";")&&(A=A.slice(0,-1)),t()}}();const th=lr.parse.bind(lr);var cr=cr||{};cr.stringify=function(){var r={"visit_linear-gradient":function(A){return r.visit_gradient(A)},"visit_repeating-linear-gradient":function(A){return r.visit_gradient(A)},"visit_radial-gradient":function(A){return r.visit_gradient(A)},"visit_repeating-radial-gradient":function(A){return r.visit_gradient(A)},visit_gradient:function(A){var e=r.visit(A.orientation);return e&&(e+=", "),A.type+"("+e+r.visit(A.colorStops)+")"},visit_shape:function(A){var e=A.value,t=r.visit(A.at),i=r.visit(A.style);return i&&(e+=" "+i),t&&(e+=" at "+t),e},"visit_default-radial":function(A){var e="",t=r.visit(A.at);return t&&(e+=t),e},"visit_extent-keyword":function(A){var e=A.value,t=r.visit(A.at);return t&&(e+=" at "+t),e},"visit_position-keyword":function(A){return A.value},visit_position:function(A){return r.visit(A.value.x)+" "+r.visit(A.value.y)},"visit_%":function(A){return A.value+"%"},visit_em:function(A){return A.value+"em"},visit_px:function(A){return A.value+"px"},visit_calc:function(A){return"calc("+A.value+")"},visit_literal:function(A){return r.visit_color(A.value,A)},visit_hex:function(A){return r.visit_color("#"+A.value,A)},visit_rgb:function(A){return r.visit_color("rgb("+A.value.join(", ")+")",A)},visit_rgba:function(A){return r.visit_color("rgba("+A.value.join(", ")+")",A)},visit_hsl:function(A){return r.visit_color("hsl("+A.value[0]+", "+A.value[1]+"%, "+A.value[2]+"%)",A)},visit_hsla:function(A){return r.visit_color("hsla("+A.value[0]+", "+A.value[1]+"%, "+A.value[2]+"%, "+A.value[3]+")",A)},visit_var:function(A){return r.visit_color("var("+A.value+")",A)},visit_color:function(A,e){var t=A,i=r.visit(e.length);return i&&(t+=" "+i),t},visit_angular:function(A){return A.value+"deg"},visit_directional:function(A){return"to "+A.value},visit_array:function(A){var e="",t=A.length;return A.forEach(function(i,s){e+=r.visit(i),s<t-1&&(e+=", ")}),e},visit_object:function(A){return A.width&&A.height?r.visit(A.width)+" "+r.visit(A.height):""},visit:function(A){if(!A)return"";if(A instanceof Array)return r.visit_array(A);if(typeof A=="object"&&!A.type)return r.visit_object(A);if(A.type){var e=r["visit_"+A.type];if(e)return e(A);throw Error("Missing visitor visit_"+A.type)}else throw Error("Invalid node.")}};return function(A){return r.visit(A)}}(),cr.stringify.bind(cr);function _o(r){const A=r.length-1;return r.map((e,t)=>{var o;const i=e.value;let s=GA(t/A,3),n="#00000000";switch(e.type){case"rgb":n=ct({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":n=ct({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":n=ct(e.value);break;case"hex":n=ct(`#${e.value}`);break}switch((o=e.length)==null?void 0:o.type){case"%":s=Number(e.length.value)/100;break}return{offset:s,color:n}})}function bo(r){var e;let A=0;switch((e=r.orientation)==null?void 0:e.type){case"angular":A=Number(r.orientation.value);break}return{type:"linear-gradient",angle:A,stops:_o(r.colorStops)}}function Do(r){var A;return(A=r.orientation)==null||A.map(e=>{switch(e==null?void 0:e.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:_o(r.colorStops)}}function Bi(r){return r.startsWith("linear-gradient(")||r.startsWith("radial-gradient(")}function Ah(r){return th(r).map(A=>{switch(A==null?void 0:A.type){case"linear-gradient":return bo(A);case"repeating-linear-gradient":return{...bo(A),repeat:!0};case"radial-gradient":return Do(A);case"repeating-radial-gradient":return{...Do(A),repeat:!0};default:return}}).filter(Boolean)}function ih(r){let A;return typeof r=="string"?A={color:r}:A=r,{color:ct(A.color)}}function rh(r){let A;if(typeof r=="string"?A={image:r}:A=r,A.image){const{type:e,...t}=Ah(A.image)[0]??{};switch(e){case"radial-gradient":return{radialGradient:t};case"linear-gradient":return{linearGradient:t}}}return A}function sh(r){let A;return typeof r=="string"?A={image:r}:A=r,A}function nh(r){let A;return typeof r=="string"?A={preset:r}:A=r,{preset:A.preset,foregroundColor:ce(A.foregroundColor)?void 0:ct(A.foregroundColor),backgroundColor:ce(A.backgroundColor)?void 0:ct(A.backgroundColor)}}function oh(r){return!ce(r.color)}function ah(r){return typeof r=="string"?eh(r):oh(r)}function lh(r){return!ce(r.image)&&Bi(r.image)||!!r.linearGradient||!!r.radialGradient}function ch(r){return typeof r=="string"?Bi(r):lh(r)}function hh(r){return!ce(r.image)&&!Bi(r.image)}function gh(r){return typeof r=="string"?!Bi(r):hh(r)}function uh(r){return!ce(r.preset)}function fh(r){return typeof r=="string"?!1:uh(r)}function yA(r){return ah(r)?ih(r):ch(r)?rh(r):gh(r)?sh(r):fh(r)?nh(r):{}}function dh(r){return typeof r=="string"?{...yA(r)}:{...yA(r),...Ds(r,["fillWithShape"])}}const xo=new xs;function Ms(r){let A=xo.get(r);if(!A){const e=Object.getPrototypeOf(r);A=new Map(e?Ms(e):void 0),xo.set(r,A)}return A}function hr(r,A,e={}){Ms(r).set(A,e);const{default:t,alias:i=Symbol.for(String(A))}=e,s=()=>typeof t=="function"?t():t,n=Object.getOwnPropertyDescriptor(r.prototype,A)||{get(){return typeof i=="string"?jc(this,i):this[i]},set(o){typeof i=="string"?Zc(this,i,o):this[i]=o}};Object.defineProperty(r.prototype,A,{get(){var a,l;let o=(a=n.get)==null?void 0:a.call(this);return o===void 0&&(o=s(),o!==void 0&&((l=n.set)==null||l.call(this,o))),o},set(o){var l,c,h;let a=(l=n.get)==null?void 0:l.call(this);a===void 0&&(a=s()),(c=n.set)==null||c.call(this,o),(h=this.requestUpdate)==null||h.call(this,A,o,a,e)},configurable:!0,enumerable:!0})}function M(r){return function(A,e){hr(A.constructor,e,r)}}function Ih(r){return typeof r=="string"?{...yA(r)}:{...yA(r),...Ds(r,["fillWithShape"])}}function ph(r){return typeof r=="string"?{...yA(r)}:{...yA(r),...Ds(r,["width","style","headEnd","tailEnd"])}}function Eh(r){return typeof r=="string"?{color:ct(r)}:{...r,color:ce(r.color)?vo:ct(r.color)}}function Bh(){return{boxShadow:"none"}}function Ch(r){return typeof r=="string"?r.startsWith("<svg")?{svg:r}:{paths:[{data:r}]}:Array.isArray(r)?{paths:r.map(A=>typeof A=="string"?{data:A}:A)}:r}function Qh(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function yh(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function mh(){return{...Qh(),...yh(),...Bh(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"rgb(0, 0, 0)",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function wh(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function vh(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function _h(){return{...wh(),color:"rgb(0, 0, 0)",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function bh(){return{...vh(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function Dh(){return{...bh(),..._h(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function gr(r){return bs({...r,color:ce(r.color)?void 0:ct(r.color),backgroundColor:ce(r.backgroundColor)?void 0:ct(r.backgroundColor),borderColor:ce(r.borderColor)?void 0:ct(r.borderColor),outlineColor:ce(r.outlineColor)?void 0:ct(r.outlineColor),shadowColor:ce(r.shadowColor)?void 0:ct(r.shadowColor)})}function So(){return{...mh(),...Dh()}}const xh=/\r\n|\n\r|\n|\r/,Sh=new RegExp(`^(${xh.source})$`),Mo=`
|
|
2
|
-
`;function Mh(r){return Sh.test(r)}function Rh(r,A){const e=Array.from(new Set([...Object.keys(r),...Object.keys(A)]));return!e.length||e.every(t=>r[t]===A[t])}function ur(r){const A=[];function e(){return A[A.length-1]}function t(o={}){let a=A[A.length-1];return(a==null?void 0:a.fragments.length)===0?(a={...o,fragments:[]},A[A.length-1]=a):(a={...o,fragments:[]},A.push(a)),a}function i(o="",a={}){Array.from(o).forEach(l=>{if(Mh(l)){const{fragments:c,...h}=e()||t();c.length||c.push({...a,content:Mo}),t(h)}else{const c=e()||t(),h=c.fragments[c.fragments.length-1];if(h){const{content:f,...I}=h;if(Rh(a,I)){h.content=`${f}${l}`;return}}c.fragments.push({...a,content:l})}})}(Array.isArray(r)?r:[r]).forEach(o=>{if(typeof o=="string")t(),i(o);else if("content"in o){const{content:a,...l}=o;t(gr(l)),i(a)}else if("fragments"in o){const{fragments:a,...l}=o;t(gr(l)),a.forEach(c=>{const{content:h,...f}=c;i(h,gr(f))})}else Array.isArray(o)?(t(),o.forEach(a=>{if(typeof a=="string")i(a);else{const{content:l,...c}=a;i(l,gr(c))}})):console.warn("Failed to parse text content",o)});const n=e();return n&&!n.fragments.length&&n.fragments.push({content:Mo}),A}function Ph(r){return typeof r=="string"?{content:ur(r)}:"content"in r?{...r,content:ur(r.content)}:{content:ur(r)}}const fr=new Map;function ne(r,A){return function(e){Object.defineProperty(e.prototype,"tag",{value:r,enumerable:!0,configurable:!0}),A&&Object.keys(A).forEach(t=>{hr(e,t,{default:A[t]})}),fr.set(r,e)}}function Ie(r){return M({...r,protected:!0})}function kh(r="node",A={}){const e=fr.get(r);if(!e)throw new Error(`Failed to createNode, tag: ${r}`);return new e().setProperties(A)}class Se{static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(A,e={}){const{sort:t=0,once:i=!1}=e;this._queue[t]||(this._queue[t]=[]),this._queue[t].push({cb:A,once:i})}static off(A,e={}){const{sort:t=0}=e,i=this._queue[t];if(!i)return;const s=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==A&&s.push(a)}s.length?this._queue[t]=s:this._queue.splice(t,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(A=>this._update(A)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(A){this._elapsed=A-this._currentTime,this._currentTime=A,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const A=this._queue,e=[];for(let t=A.length,i=t;i>=0;i--){const s=A[i];if(!s)continue;const n=[];for(let o=s.length,a=0;a<o;a++){const l=s[a];try{l.cb()}catch(c){console.warn(c)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}u(Se,"_queue",[]),u(Se,"_currentTime",0),u(Se,"_elapsed",0),u(Se,"_requestId"),Se.start();async function Rs(r){return new Promise(A=>{Se.on(()=>{r==null||r(),A()},{sort:1,once:!0})})}let Jt=class{constructor(){u(this,"eventListeners",new Map)}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}on(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}once(A,e){return this.on(A,e,{once:!0})}off(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const c=i[a];(c.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof c.options=="boolean"||!((s=c.options)!=null&&s.once)))&&o.push(c)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}emit(A,...e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,e)}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,e);return!0}else return!1}},Uh=0;class iA extends Jt{constructor(){super(...arguments);u(this,"instanceId",++Uh);u(this,"_defaultProperties");u(this,"_updatedProperties",new Map);u(this,"_changedProperties",new Set);u(this,"_updatingPromise",Promise.resolve());u(this,"_updating",!1)}is(e){return!!(e&&this.instanceId===e.instanceId)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await Rs(),this._updating&&(this.update(),this._updating=!1)}update(){this._update(this._updatedProperties),this._updatedProperties=new Map}_update(e){}_updateProperty(e,t,i,s){}isDirty(e){return this._updatedProperties.has(e)}getPropertyDeclarations(){return Ms(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[e,t]of this.getPropertyDeclarations())!t.protected&&!t.alias&&(this._defaultProperties[e]=typeof t.default=="function"?t.default():t.default)}return this._defaultProperties}getProperty(e){return this[e]}setProperty(e,t){return this[e]=t,this}getProperties(e){const t={};for(const[i,s]of this.getPropertyDeclarations())!s.protected&&!s.alias&&(!e||e.includes(i))&&(t[i]=this.getProperty(i));return t}setProperties(e){if(e&&typeof e=="object")for(const[t]of this.getPropertyDeclarations())t in e&&this.setProperty(t,e[t]);return this}resetProperties(){for(const[e,t]of this.getPropertyDeclarations())this.setProperty(e,t.default);return this}requestUpdate(e,t,i,s){if(e!==void 0)if(!Object.is(t,i))this._updatedProperties.set(e,i),this._changedProperties.add(e),s??(s=this.getPropertyDeclaration(e)),this._updateProperty(e,t,i,s),this.emit("updateProperty",e,t,i,s);else return;this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){const e={},t=this.getProperties(Array.from(this._changedProperties));for(const i in t){const s=t[i];s&&typeof s=="object"?"toJSON"in s&&typeof s.toJSON=="function"?e[i]=s.toJSON():e[i]={...s}:e[i]=s}return e}clone(){return new this.constructor(this.toJSON())}free(){this.removeAllListeners()}}class Ro extends iA{}const dr=Math.PI,it=dr*2;let Nh=0;function Po(r){var A;return((A=r==null?void 0:r.__SPECTOR_Object_TAG)==null?void 0:A.id)??++Nh}function Ps(r){return!(r&r-1)&&!!r}const Fh=/([\w-]+)\((.+?)\)/g,Th=/[^,]+/g,Gh=/([-e.\d]+)(.*)/;function ks(r){return Array.isArray(r)?r.map(A=>({name:A.name,args:A.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...r,normalizedIntValue:r.normalizedDefaultIntValue}}function Ci(r,A,e={}){const t=Qi(A,e);return t.length?t:ko(r,A,e)}function Qi(r,A={}){const e=[];let t;for(;(t=Fh.exec(r))!==null;){const[,i,s]=t;i&&e.push({name:i,args:Lh(i,s,A)})}return e}function Lh(r,A,e={}){const t=[];let i,s=0;for(;(i=Th.exec(A))!==null;)t.push(ko(r,i[0],{...e,index:s++}));return t}function ko(r,A,e={}){const{width:t=1,height:i=1,index:s=0}=e,n=A.match(Gh),o={unit:(n==null?void 0:n[2])??null,value:A,intValue:Number(n==null?void 0:n[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(r){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/it;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(s){case 0:o.normalizedIntValue=o.intValue/t;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const Uo="WebGL2RenderingContext"in globalThis,No="ImageBitmap"in globalThis,Fo="ResizeObserver"in globalThis,LA="PointerEvent"in globalThis,To="WheelEvent"in globalThis,Oh="MouseEvent"in globalThis,Kt="ontouchstart"in globalThis,Go="onclick"in globalThis,Us="createImageBitmap"in globalThis,Ns="AudioContext"in globalThis,Fs="webkitAudioContext"in globalThis,Ts="OfflineAudioContext"in globalThis,Lo="webkitOfflineAudioContext"in globalThis,Oo=Ns||Fs,yi=typeof window<"u",Gs=globalThis.devicePixelRatio||1,Ls=r=>r!==null&&typeof r=="object"&&r.nodeType===1,Ho=r=>Ls(r)&&r.tagName==="VIDEO",Hh=r=>Ls(r)&&r.tagName==="IMG";function Jo(r){return typeof r=="object"&&r!==null&&r.nodeType===1&&r.tagName==="CANVAS"}function Ko(r){return Uo&&r instanceof globalThis.WebGL2RenderingContext}function Yo(){if(yi)return globalThis.document.createElement("canvas")}function Vo(r,A=globalThis.location){if(r.startsWith("data:"))return"";A=A||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==A.hostname||e.port!==A.port||e.protocol!==A.protocol?"anonymous":""}function zo(r,A,e){e===null&&!A.startsWith("data:")?r.crossOrigin=Vo(A):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}class Os{constructor(){u(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}}class Ir{constructor(){u(this,"bubbles",!0);u(this,"cancelable",!1);u(this,"which");u(this,"cancelBubble",!0);u(this,"returnValue");u(this,"srcElement");u(this,"composed",!1);u(this,"currentTarget");u(this,"defaultPrevented",!1);u(this,"eventPhase",Ir.prototype.NONE);u(this,"isTrusted");u(this,"target");u(this,"timeStamp");u(this,"type");u(this,"nativeEvent");u(this,"originalEvent");u(this,"propagationStopped",!1);u(this,"propagationImmediatelyStopped",!1);u(this,"path");u(this,"detail");u(this,"view");u(this,"layer",{x:0,y:0});u(this,"page",{x:0,y:0});u(this,"NONE",0);u(this,"CAPTURING_PHASE",1);u(this,"AT_TARGET",2);u(this,"BUBBLING_PHASE",3)}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...A){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...A){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class Hs extends Ir{constructor(){super(...arguments);u(this,"altKey");u(this,"button");u(this,"buttons");u(this,"ctrlKey");u(this,"metaKey");u(this,"relatedTarget");u(this,"shiftKey");u(this,"client",{x:0,y:0});u(this,"movement",{x:0,y:0});u(this,"offset",{x:0,y:0});u(this,"global",{x:0,y:0});u(this,"screen",{x:0,y:0})}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(...e){throw new Error("Method not implemented.")}}class Wo extends Hs{constructor(){super(...arguments);u(this,"width",0);u(this,"height",0);u(this,"isPrimary",!1);u(this,"pointerType");u(this,"pressure");u(this,"tangentialPressure");u(this,"tiltX");u(this,"tiltY");u(this,"twist")}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class mi extends Hs{constructor(){super(...arguments);u(this,"deltaMode");u(this,"deltaX");u(this,"deltaY");u(this,"deltaZ");u(this,"DOM_DELTA_PIXEL",0);u(this,"DOM_DELTA_LINE",1);u(this,"DOM_DELTA_PAGE",2)}}u(mi,"DOM_DELTA_PIXEL",0),u(mi,"DOM_DELTA_LINE",1),u(mi,"DOM_DELTA_PAGE",2);const Jh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class qo extends Jt{constructor(){super(...arguments);u(this,"target");u(this,"cursor","default");u(this,"cursorStyles",{default:"inherit",pointer:"pointer"});u(this,"setuped",!1);u(this,"event");u(this,"enableMoveEvent",!0);u(this,"enableWheelEvent",!0);u(this,"enableClickEvent",!0);u(this,"onPointerDown",e=>{if(Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerdown",this.event=this.clonePointerEvent(t[i]));this.setCursor(this.cursor)});u(this,"onPointerOver",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerover",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerMove",e=>{if(!this.enableMoveEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointermove",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerUp",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.target?"outside":"",s=this.normalize(e);for(let n=0,o=s.length;n<o;n++){const a=this.clonePointerEvent(s[n]);a.type+=i,this.emit("pointerup",this.event=a)}});u(this,"onWheel",e=>{if(!this.enableWheelEvent)return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("wheel",this.event=this.cloneWheelEvent(t[i]))})}setTarget(e){this.removeEventListeners(),this.target=e,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const e=this.target.style;globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):LA&&(e.touchAction=""),LA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.removeEventListener("pointermove",this.onPointerMove),this.target.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.removeEventListener("mousemove",this.onPointerMove),this.target.removeEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const e=this.target.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):LA&&(e.touchAction="none")),LA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.addEventListener("pointermove",this.onPointerMove),this.target.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.addEventListener("mousemove",this.onPointerMove),this.target.addEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(e){const t=[];if(Kt&&e instanceof globalThis.TouchEvent)for(let i=0,s=e.changedTouches.length;i<s;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.type=e.type,t.push(n)}else if(To&&e instanceof globalThis.WheelEvent)t.push(e);else if(LA&&e instanceof globalThis.PointerEvent)t.push(e);else{const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=1),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),t.push(i)}return t}cloneWheelEvent(e){const t=new mi;return this.copyMouseEvent(t,e),t.wheelDeltaY=e.wheelDeltaY,t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.nativeEvent=e,t.type=e.type,t}clonePointerEvent(e){const t=new Wo;return t.originalEvent=null,t.nativeEvent=e,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,t.isTrusted=e.isTrusted,this.copyMouseEvent(t,e),this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.type==="pointerleave"?t.type="pointerout":t.type.startsWith("mouse")?t.type=t.type.replace("mouse","pointer"):t.type.startsWith("touch")&&(t.type=Jh[t.type]||t.type),t}copyMouseEvent(e,t){e.preventDefault=t.preventDefault.bind(t),e.stopPropagation=t.stopPropagation.bind(t),e.isTrusted=t.isTrusted,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}setCursor(e){if(!this.target||(e=e||"default",this.cursor===e))return;this.cursor=e;const t=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.target.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.target.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.target.style.cursor=e)}mapPositionToPoint(e,t,i){if(!this.target)return;const s=Number(this.target.getAttribute("width"))||0,n=Number(this.target.getAttribute("height"))||0,o=Number(this.target.getAttribute("data-pixel-ratio"))||1,a=this.target.isConnected?this.target.getBoundingClientRect():{width:s,height:n,left:0,top:0},l=1/o;e.x=(t-a.left)*(s/a.width)*l,e.y=(i-a.top)*(n/a.height)*l}}class Yt extends Ro{}function Kh(r,A){var e={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"},t={};for(var i in e)t[e[i]]=i;var s={};r.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=t[this.toHex()];if(l)return l;if(n!=null&&n.closest){var c=this.toRgb(),h=1/0,f="black";if(!s.length)for(var I in e)s[I]=new r(e[I]).toRgb();for(var d in e){var C=(o=c,a=s[d],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));C<h&&(h=C,f=d)}return f}},A.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new r(a).toRgb():null},"name"])}Wc([Kh]);class Vt{get value(){return this._value}set value(A){this._colord=Ss(A??"none")}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(A=0){this.value=A}toHex(){return this._colord.toHex()}toRgb(){return this._colord.toRgb()}toRgbString(){return this._colord.toRgbString()}toHsl(){return this._colord.toHsl()}toHslString(){return this._colord.toHslString()}toHsv(){return this._colord.toHsv()}toArgb(A=this.a,e=!0){if(A===1)return(255<<24)+this.rgb;if(A===0)return e?0:this.rgb;let t=this.r8,i=this.g8,s=this.b8;return e&&(t=t*A+.5|0,i=i*A+.5|0,s=s*A+.5|0),(A*255<<24)+(t<<16)+(i<<8)+s}toArray(){return[this.r,this.g,this.b,this.a]}}class wt extends Jt{constructor(e){super();u(this,"_array",[]);this.dim=e}get length(){return this.dim}_operate(e,t,i){const{dim:s,_array:n}=this;let o;typeof t=="number"?o=Array.from({length:s},()=>t):t instanceof Mt||t instanceof wt?o=t.toArray():o=t;let a,l=[];if(i?i instanceof wt?a=i:l=i:a=this,t instanceof Mt){const{cols:c}=t;switch(e){case"*":for(let h=0;h<s;h++){let f=0;for(let I=0;I<s;I++)f+=n[h]*o[I*c+h];l[h]=f}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"+":for(let c=0;c<s;c++)l[c]=n[c]+o[c];break;case"-":for(let c=0;c<s;c++)l[c]=n[c]-o[c];break;case"*":for(let c=0;c<s;c++)l[c]=n[c]*o[c];break;case"/":for(let c=0;c<s;c++)l[c]=n[c]/o[c];break;case"rot":{const c=Math.cos(o[0]),h=Math.sin(o[0]);l[0]=n[0]*c-n[1]*h,l[1]=n[1]*c+n[0]*h;break}case"==":{let c=!0;for(let h=0;h<s;h++)c=c&&n[h]===o[h];return c}case"=":for(let c=0;c<s;c++){const h=o[c];h!==void 0&&(n[c]=h)}return this._onUpdate(n),this.emit("update",n),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Vector'`)}return(a==null?void 0:a.set(l))??l}add(e,t){return this._operate("+",e,t)}sub(e,t){return this._operate("-",e,t)}multiply(e,t){return this._operate("*",e,t)}divide(e,t){return this._operate("/",e,t)}rotate(e){return this._operate("rot",e)}set(e,...t){return t.length&&typeof e=="number"&&(e=[e,...t]),this._operate("=",e)}equals(e){return this._operate("==",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}_onUpdate(e){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class Mt extends Jt{constructor(e,t,i){super();u(this,"_array",[]);u(this,"dirtyId",0);this.rows=e,this.cols=t,i?this.set(i):this.identity()}get length(){return this.cols*this.rows}_operate(e,t,i){const{cols:s,rows:n,length:o,_array:a}=this;let l;typeof t=="number"?l=Array.from({length:o},()=>t):t instanceof wt||t instanceof Mt?l=t.toArray():l=t;let c,h=[];if(i?i instanceof wt||i instanceof Mt?c=i:h=i:t instanceof wt?c=new t.constructor:c=this,t instanceof wt){const{dim:f}=t;switch(e){case"*":for(let I=0;I<f;I++){let d=0;for(let C=0;C<s;C++)C<f&&(d+=a[I*s+C]*(l[C]??0));h[I]=d}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"*":for(let f=0;f<s;f++)for(let I=0;I<n;I++){const d=I*s;let C=0;for(let p=0;p<n;p++){const x=d+p,P=p*s+f;C+=a[x]*(l[P]??0)}h[d+f]=C}break;case"=":for(let f=0;f<o;f++){const I=l[f];I!==void 0&&(a[f]=I)}return this._onUpdate(a),this.emit("update",a),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Matrix2'`)}return(c==null?void 0:c.set(h))??h}identity(){const{cols:e,rows:t}=this,i=[];for(let s=0;s<e;s++)for(let n=0;n<t;n++){const o=n*e,a=s+o;i[a]=n+o===a?1:0}return this.set(i)}set(e){return this._operate("=",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}multiply(e,t){return this._operate("*",e,t)}_onUpdate(e){this.dirtyId++}toArray(e=!1){const{cols:t,rows:i,_array:s}=this;if(e){const n=[];for(let o=0;o<i;o++)for(let a=0;a<t;a++)n[o+a*t]=s[a+o*t];return n}return s.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class Xo extends Mt{constructor(A){super(4,4,A)}}const jo=dr/180,Yh=180/dr;function zt(r,A,e){return Math.max(r,Math.min(A,e))}function Me(r,A,e){return(1-e)*r+e*A}const Vh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(r,A=20){if(!this.adaptive||!r||Number.isNaN(r))return A;let e=Math.ceil(r/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class Zo extends wt{constructor(A=0,e=0,t=0,i=0){super(4),this.set([A,e,t,i])}}class Js extends Mt{constructor(A){super(4,5,A)}hueRotate(A=0){const e=Math.sin(A),t=Math.cos(A),i=.213,s=.715,n=.072;return this.multiply([i+t*(1-i)+e*-i,s+t*-s+e*-s,n+t*-n+e*(1-n),0,0,i+t*-i+e*.143,s+t*(1-s)+e*.14,n+t*-n+e*-.283,0,0,i+t*-i+e*-.787,s+t*-s+e*s,n+t*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(A=1){const e=(A-1)*2/3+1,t=(e-1)*-.5;return this.multiply([e,t,t,0,0,t,e,t,0,0,t,t,e,0,0,0,0,0,1,0])}brightness(A=1){const e=A;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(A=1){const e=A,t=-128*(e-1);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}invert(A=1){const e=Me(1,-1,A),t=Me(0,255,A);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}sepia(A=1){const e=zt(0,A,1);return this.multiply([Me(1,.393,e),Me(0,.7689999,e),Me(0,.18899999,e),0,0,Me(0,.349,e),Me(1,.6859999,e),Me(0,.16799999,e),0,0,Me(0,.272,e),Me(0,.5339999,e),Me(1,.13099999,e),0,0,0,0,0,1,0])}opacity(A=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,A,0])}grayscale(A=1){const e=zt(0,A,1),t=Me(1,.3,e),i=Me(0,.3,e),s=Me(1,.59,e),n=Me(0,.59,e),o=Me(1,.11,e),a=Me(0,.11,e);return this.multiply([t,n,a,0,0,i,s,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(A){const e=A,t=this._array;return this.set([t[0]*e[0]+t[1]*e[5]+t[2]*e[10]+t[3]*e[15],t[0]*e[1]+t[1]*e[6]+t[2]*e[11]+t[3]*e[16],t[0]*e[2]+t[1]*e[7]+t[2]*e[12]+t[3]*e[17],t[0]*e[3]+t[1]*e[8]+t[2]*e[13]+t[3]*e[18],t[0]*e[4]+t[1]*e[9]+t[2]*e[14]+t[3]*e[19]+t[4],t[5]*e[0]+t[6]*e[5]+t[7]*e[10]+t[8]*e[15],t[5]*e[1]+t[6]*e[6]+t[7]*e[11]+t[8]*e[16],t[5]*e[2]+t[6]*e[7]+t[7]*e[12]+t[8]*e[17],t[5]*e[3]+t[6]*e[8]+t[7]*e[13]+t[8]*e[18],t[5]*e[4]+t[6]*e[9]+t[7]*e[14]+t[8]*e[19]+t[9],t[10]*e[0]+t[11]*e[5]+t[12]*e[10]+t[13]*e[15],t[10]*e[1]+t[11]*e[6]+t[12]*e[11]+t[13]*e[16],t[10]*e[2]+t[11]*e[7]+t[12]*e[12]+t[13]*e[17],t[10]*e[3]+t[11]*e[8]+t[12]*e[13]+t[13]*e[18],t[10]*e[4]+t[11]*e[9]+t[12]*e[14]+t[13]*e[19]+t[14],t[15]*e[0]+t[16]*e[5]+t[17]*e[10]+t[18]*e[15],t[15]*e[1]+t[16]*e[6]+t[17]*e[11]+t[18]*e[16],t[15]*e[2]+t[16]*e[7]+t[17]*e[12]+t[18]*e[17],t[15]*e[3]+t[16]*e[8]+t[17]*e[13]+t[18]*e[18],t[15]*e[4]+t[16]*e[9]+t[17]*e[14]+t[18]*e[19]+t[19]])}toMatrix4(){const A=this._array;return new Xo([A[0],A[1],A[2],A[3],A[5],A[6],A[7],A[8],A[10],A[11],A[12],A[13],A[15],A[16],A[17],A[18]])}toVector4(){const A=this._array;return new Zo(A[4]/255,A[9]/255,A[14]/255,A[19]/255)}}class zh extends Mt{constructor(A){super(2,2,A)}}let Ks=class extends Mt{constructor(A){super(3,3,A)}invert(){const[A,e,t,i,s,n,o,a,l]=this._array,c=l*s-n*a,h=n*o-l*i,f=a*i-s*o,I=A*c+e*h+t*f;if(I===0)return this.set([0,0,0,0,0,0,0,0,0]);const d=1/I;return this.set([c*d,(t*a-l*e)*d,(n*e-t*s)*d,h*d,(l*A-t*o)*d,(t*i-n*A)*d,f*d,(e*o-a*A)*d,(s*A-e*i)*d])}};class $o extends Ks{constructor(A=0,e=0,t=0,i=0,s=!1){super(),this._x=A,this._y=e,this._width=t,this._height=i,this._flipY=s,this._performUpdateArray()}flipY(A){return this._flipY!==A&&(this._flipY=A,this._performUpdateArray()),this}translate(A,e){return(this._x!==A||this._y!==e)&&(this._x=A,this._y=e,this._performUpdateArray()),this}resize(A,e){return(this._width!==A||this._height!==e)&&(this._width=A,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const A=this._width,e=this._height;if(!A||!e)return;const t=this._x,i=this._y,s=this._flipY?-1:1,n=1/A*2,o=s*(1/e*2),a=-1-t*n,l=-s-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let ut=class Qs extends wt{get x(){return this._array[0]}set x(A){const[e,t]=this._array;e!==A&&this.set(A,t)}get y(){return this._array[1]}set y(A){const[e,t]=this._array;t!==A&&this.set(e,A)}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}get left(){return this.x}set left(A){this.x=A}get top(){return this.y}set top(A){this.y=A}constructor(A=0,e){super(2),this.set(typeof A=="number"?[A,e??A]:A)}update(A,e){const[t,i]=this._array;return(t!==A||i!==e)&&this.set(A,e),this}getLength(){const[A,e]=this._array;return Math.sqrt(A*A+e*e)}getAngle(){const[A,e]=this._array;return Math.atan2(-A,-e)+Math.PI}distanceTo(A){return Math.hypot(A.x-this.x,A.y-this.y)}normalize(){const[A,e]=this._array,t=1/(this.getLength()||1);return this.set(A*t,e*t),this}static lerp(A,e,t){return new Qs(e).clone().sub(new Qs(A)).multiply(t).add(new Qs(A))}};class Ys{constructor(...A){u(this,"end",new ut);u(this,"position");u(this,"size");const e=new ut,t=new ut;switch(A.length){case 0:break;case 1:e.set(A[0].position),t.set(A[0].size);break;case 2:e.set(A[0]),t.set(A[1]);break;default:e.set(A[0],A[1]),t.set(A[2],A[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=t.on("update",this.update),this.update()}get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}const EA=class EA extends Ks{premultiply(A){return A.multiply(this,this)}skewX(A){return this.skew(A,0)}skewY(A){return this.skew(0,A)}skew(A,e){return this.premultiply(EA._t2d.makeSkew(A,e))}makeSkew(A,e){const t=Math.tan(A),i=Math.tan(e);return this.set([1,i,0,t,1,0,0,0,1]),this}translateX(A){return this.translate(A,0)}translateY(A){return this.translate(0,A)}translateZ(A){return this.translate(0,0,A)}translate3d(A,e,t){return this.translate(A,e,t)}translate(A,e,t=0){return this.premultiply(EA._t2d.makeTranslation(A,e,t))}makeTranslation(A,e,t=0){return this.set([1,0,A,0,1,e,0,0,1]),this}scaleX(A){return this.scale(A,1)}scaleY(A){return this.scale(1,A)}scale3d(A,e,t=1){return this.scale(A,e,t)}scale(A,e,t=1){return this.premultiply(EA._t2d.makeScale(A,e,t))}makeScale(A,e,t=1){return this.set([A,0,0,0,e,0,0,0,1]),this}rotateX(A){return this.scaleY(this._rotateToScale(A))}rotateY(A){return this.scaleX(this._rotateToScale(A))}rotateZ(A){return this.rotate(A)}rotate(A){return this.premultiply(EA._t2d.makeRotation(A))}rotate3d(A,e,t,i){const[s,n,o]=this._rotate3d(A,e,t,i);return s&&this.rotateX(s),n&&this.rotateY(n),o&&this.rotateZ(o),this}_rotateToScale(A){const e=A/it;return e<=.5?e*-4+1:(e-1)*4+1}_rotate3d(A,e,t,i){if(A===1&&e===0&&t===0)return[i,0,0];if(A===0&&e===1&&t===0)return[0,i,0];if(A===0&&e===0)return[0,0,i];{const s=Math.cos(i),n=Math.sin(i),o=s+A*A*(1-s),a=A*e*(1-s)-t*n,l=A*t*(1-s)+e*n,c=s+e*e*(1-s),h=e*t*(1-s)-A*n,f=s+t*t*(1-s),I=-Math.atan2(-h,c),d=-Math.atan2(l,Math.sqrt(h*h+f*f)),C=-Math.atan2(-a,o);return[I,d,C]}}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set([e,-t,0,t,e,0,0,0,1]),this}applyToPoint(A,e){const{a:t,c:i,tx:s,b:n,d:o,ty:a}=this.toObject();return[t*A+i*e+s,n*A+o*e+a]}inverse(){return this.clone().invert()}isIdentity(){const{a:A,b:e,c:t,d:i,tx:s,ty:n}=this.toObject();return A===1&&e===0&&t===0&&i===1&&s===0&&n===0}toObject(){const[A,e,t,i,s,n,,,o]=this._array;return{a:A,c:e,tx:t,b:i,d:s,ty:n,tz:o}}};u(EA,"_t2d",new EA);let ht=EA;class Wh extends wt{constructor(){super(3)}}var qh=Object.defineProperty,ea=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&qh(A,e,i),i};class pr extends iA{constructor(){super();u(this,"_starting",!1);u(this,"_nextDeltaTime",0);this._onNextTick=this._onNextTick.bind(this)}get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}start(e){this._starting||(this._starting=!0,this.off("process"),this.on("process",e),Se.on(this._onNextTick,{sort:0}))}stop(){this._starting&&(this._starting=!1,Se.off(this._onNextTick,{sort:0}))}_onNextTick(){const e=Se.elapsed*this.speed;if((this._nextDeltaTime-=e)<=0){const i=(this._nextDeltaTime=this.spf)||e;this.emit("process",i)}}free(){super.free(),this.stop()}}ea([M({default:24})],pr.prototype,"fps"),ea([M({default:1})],pr.prototype,"speed");class ta{constructor(){u(this,"view");u(this,"pixelRatio",Gs);u(this,"screen",{x:0,y:0,width:0,height:0});u(this,"related",new Os)}getRelated(A,e){let t=this.related.get(A);return t||(e?(this.related.set(A,t=e()),t):(console.warn("Failed to get related",A),null))}resize(A,e,t=!0){this.view&&(this.view.width=Math.floor(A*this.pixelRatio),this.view.height=Math.floor(e*this.pixelRatio)),this.screen.width=A,this.screen.height=e,t&&this.view&&(this.view.style.width=`${A}px`,this.view.style.height=`${e}px`)}}var OA=(r=>(r.NORMAL="normal",r.ADD="add",r.MULTIPLY="multiply",r.SCREEN="screen",r.NONE="none",r.NORMAL_NPM="normal_npm",r.ADD_NPM="add_npm",r.SCREEN_NPM="screen_npm",r.SRC_IN="src_in",r.SRC_OUT="src_out",r.SRC_ATOP="src_atop",r.DST_OVER="dst_over",r.DST_IN="dst_in",r.DST_OUT="dst_out",r.DST_ATOP="dst_atop",r.XOR="xor",r.SUBTRACT="subtract",r))(OA||{});function Aa(r){return{normal:[r.ONE,r.ONE_MINUS_SRC_ALPHA],add:[r.ONE,r.ONE],multiply:[r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],screen:[r.ONE,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],add_npm:[r.SRC_ALPHA,r.ONE,r.ONE,r.ONE],screen_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],src_in:[r.DST_ALPHA,r.ZERO],src_out:[r.ONE_MINUS_DST_ALPHA,r.ZERO],src_atop:[r.DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],dst_over:[r.ONE_MINUS_DST_ALPHA,r.ONE],dst_in:[r.ZERO,r.SRC_ALPHA],dst_out:[r.ZERO,r.ONE_MINUS_SRC_ALPHA],dst_atop:[r.ONE_MINUS_DST_ALPHA,r.SRC_ALPHA],xor:[r.ONE_MINUS_DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],subtract:[r.ONE,r.ONE,r.ONE,r.ONE,r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD]}}class Ct{get gl(){return this._renderer.gl}install(A){this._renderer=A}onUpdateContext(){}flush(){}reset(){}free(){}}const ss=class ss{constructor(A){u(this,"_blendMode",OA.NORMAL);u(this,"_polygonOffset",0);u(this,"bitmap",0);if(A)for(const e in A)this[e]=A[e]}static _init(){this._properties.forEach((A,e)=>{Object.defineProperty(this.prototype,A,{get(){return!!(this.bitmap&1<<e)},set(t){!!(this.bitmap&1<<e)!==t&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const A=new ss;return A.depthTest=!1,A.blend=!0,A}get blendMode(){return this._blendMode}set blendMode(A){this.blend=A!==OA.NONE,this._blendMode=A}get polygonOffset(){return this._polygonOffset}set polygonOffset(A){this.offsets=!!A,this._polygonOffset=A}};u(ss,"_properties",["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"]);let mA=ss;mA._init();class ia extends Ct{constructor(){super(...arguments);u(this,"_blendEq",!1);u(this,"_setters",mA._properties.map(e=>this[`set${e.replace(/^\S/,t=>t.toUpperCase())}`]));u(this,"boundStateBitmap",0);u(this,"boundBlendMode");u(this,"blendModes");u(this,"defaultState",new mA({blend:!0}))}install(e){super.install(e),e.state=this}onUpdateContext(){super.onUpdateContext(),this.blendModes=Aa(this._renderer.gl)}toggle(e,t){this._renderer.gl[t?"enable":"disable"](e)}setBlend(e){this.toggle(this._renderer.gl.BLEND,e)}setOffsets(e){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,e)}setCulling(e){this.toggle(this._renderer.gl.CULL_FACE,e)}setDepthTest(e){this.toggle(this._renderer.gl.DEPTH_TEST,e)}setDepthMask(e){this._renderer.gl.depthMask(e)}setClockwiseFrontFace(e){const t=this._renderer.gl;t.frontFace(t[e?"CW":"CCW"])}setBlendMode(e){if(e===this.boundBlendMode)return;this.boundBlendMode=e;const t=this.blendModes[e],i=this._renderer.gl;t.length===2?i.blendFunc(t[0],t[1]):i.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,i.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,t){this._renderer.gl.polygonOffset(e,t)}bind(e){var t;if(this.boundStateBitmap!==e.bitmap){let i=this.boundStateBitmap^e.bitmap,s=0;for(;i;)i&1&&((t=this._setters[s])==null||t.call(this,!!(e.bitmap&1<<s))),i=i>>1,s++;this.boundStateBitmap=e.bitmap}e.blend&&this.setBlendMode(e.blendMode),e.offsets&&this.setPolygonOffset(1,e.polygonOffset)}reset(){super.reset();const e=this._renderer.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(OA.NORMAL)}}class ra extends Ct{constructor(){super(...arguments);u(this,"_state",mA.for2D());u(this,"_batchSize",4096*4);u(this,"_drawCallUid",0);u(this,"_defaultModulate",4294967295);u(this,"_defaultBackgroundColor",0);u(this,"_defaultColorMatrixOffset",[0,0,0,0]);u(this,"_defaultColorMatrix",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);u(this,"_batchables",[]);u(this,"_vertexCount",0);u(this,"_indexCount",0);u(this,"_attributeBuffer",[]);u(this,"_indexBuffers",[]);u(this,"_shaders",new Map);u(this,"_attributes",{aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aDisableWrapMode:{size:4,normalized:!0,type:"float"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}});u(this,"_vertexSize",31)}install(e){super.install(e),e.batch2D=this}_getShader(e){let t=this._shaders.get(e);return t||this._shaders.set(e,t=this._createShader(e)),t}_createShader(e){const t=this._renderer,i=t.program.create({vert:`precision highp float;
|
|
1
|
+
(function(h,BA){typeof exports=="object"&&typeof module<"u"?BA(exports):typeof define=="function"&&define.amd?define(["exports"],BA):(h=typeof globalThis<"u"?globalThis:h||self,BA(h.modernCanvas={}))})(this,function(h){"use strict";var BA=typeof document<"u"?document.currentScript:null,xc={grad:.9,turn:360,rad:360/(2*Math.PI)},Oe=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Pt=function(r,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*r)/e+0},pe=function(r,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),r>e?e:r>t?r:t},$n=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},to=function(r){return{r:pe(r.r,0,255),g:pe(r.g,0,255),b:pe(r.b,0,255),a:pe(r.a)}},ns=function(r){return{r:Pt(r.r),g:Pt(r.g),b:Pt(r.b),a:Pt(r.a,3)}},Sc=/^#([0-9a-f]{3,8})$/i,$i=function(r){var t=r.toString(16);return t.length<2?"0"+t:t},eo=function(r){var t=r.r,e=r.g,A=r.b,i=r.a,s=Math.max(t,e,A),n=s-Math.min(t,e,A),o=n?s===t?(e-A)/n:s===e?2+(A-t)/n:4+(t-e)/n:0;return{h:60*(o<0?o+6:o),s:s?n/s*100:0,v:s/255*100,a:i}},Ao=function(r){var t=r.h,e=r.s,A=r.v,i=r.a;t=t/360*6,e/=100,A/=100;var s=Math.floor(t),n=A*(1-e),o=A*(1-(t-s)*e),a=A*(1-(1-t+s)*e),l=s%6;return{r:255*[A,o,n,n,a,A][l],g:255*[a,A,A,o,n,n][l],b:255*[n,n,a,A,A,o][l],a:i}},io=function(r){return{h:$n(r.h),s:pe(r.s,0,100),l:pe(r.l,0,100),a:pe(r.a)}},ro=function(r){return{h:Pt(r.h),s:Pt(r.s),l:Pt(r.l),a:Pt(r.a,3)}},so=function(r){return Ao((e=(t=r).s,{h:t.h,s:(e*=((A=t.l)<50?A:100-A)/100)>0?2*e/(A+e)*100:0,v:A+e,a:t.a}));var t,e,A},ci=function(r){return{h:(t=eo(r)).h,s:(i=(200-(e=t.s))*(A=t.v)/100)>0&&i<200?e*A/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,e,A,i},Mc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,kc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,os={string:[[function(r){var t=Sc.exec(r);return t?(r=t[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?Pt(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?Pt(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var t=Pc.exec(r)||kc.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:to({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(r){var t=Mc.exec(r)||Rc.exec(r);if(!t)return null;var e,A,i=io({h:(e=t[1],A=t[2],A===void 0&&(A="deg"),Number(e)*(xc[A]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return so(i)},"hsl"]],object:[[function(r){var t=r.r,e=r.g,A=r.b,i=r.a,s=i===void 0?1:i;return Oe(t)&&Oe(e)&&Oe(A)?to({r:Number(t),g:Number(e),b:Number(A),a:Number(s)}):null},"rgb"],[function(r){var t=r.h,e=r.s,A=r.l,i=r.a,s=i===void 0?1:i;if(!Oe(t)||!Oe(e)||!Oe(A))return null;var n=io({h:Number(t),s:Number(e),l:Number(A),a:Number(s)});return so(n)},"hsl"],[function(r){var t=r.h,e=r.s,A=r.v,i=r.a,s=i===void 0?1:i;if(!Oe(t)||!Oe(e)||!Oe(A))return null;var n=function(o){return{h:$n(o.h),s:pe(o.s,0,100),v:pe(o.v,0,100),a:pe(o.a)}}({h:Number(t),s:Number(e),v:Number(A),a:Number(s)});return Ao(n)},"hsv"]]},no=function(r,t){for(var e=0;e<t.length;e++){var A=t[e][0](r);if(A)return[A,t[e][1]]}return[null,void 0]},Uc=function(r){return typeof r=="string"?no(r.trim(),os.string):typeof r=="object"&&r!==null?no(r,os.object):[null,void 0]},as=function(r,t){var e=ci(r);return{h:e.h,s:pe(e.s+100*t,0,100),l:e.l,a:e.a}},ls=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},oo=function(r,t){var e=ci(r);return{h:e.h,s:e.s,l:pe(e.l+100*t,0,100),a:e.a}},cs=function(){function r(t){this.parsed=Uc(t)[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 Pt(ls(this.rgba),2)},r.prototype.isDark=function(){return ls(this.rgba)<.5},r.prototype.isLight=function(){return ls(this.rgba)>=.5},r.prototype.toHex=function(){return t=ns(this.rgba),e=t.r,A=t.g,i=t.b,n=(s=t.a)<1?$i(Pt(255*s)):"","#"+$i(e)+$i(A)+$i(i)+n;var t,e,A,i,s,n},r.prototype.toRgb=function(){return ns(this.rgba)},r.prototype.toRgbString=function(){return t=ns(this.rgba),e=t.r,A=t.g,i=t.b,(s=t.a)<1?"rgba("+e+", "+A+", "+i+", "+s+")":"rgb("+e+", "+A+", "+i+")";var t,e,A,i,s},r.prototype.toHsl=function(){return ro(ci(this.rgba))},r.prototype.toHslString=function(){return t=ro(ci(this.rgba)),e=t.h,A=t.s,i=t.l,(s=t.a)<1?"hsla("+e+", "+A+"%, "+i+"%, "+s+")":"hsl("+e+", "+A+"%, "+i+"%)";var t,e,A,i,s},r.prototype.toHsv=function(){return t=eo(this.rgba),{h:Pt(t.h),s:Pt(t.s),v:Pt(t.v),a:Pt(t.a,3)};var t},r.prototype.invert=function(){return De({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},r.prototype.saturate=function(t){return t===void 0&&(t=.1),De(as(this.rgba,t))},r.prototype.desaturate=function(t){return t===void 0&&(t=.1),De(as(this.rgba,-t))},r.prototype.grayscale=function(){return De(as(this.rgba,-1))},r.prototype.lighten=function(t){return t===void 0&&(t=.1),De(oo(this.rgba,t))},r.prototype.darken=function(t){return t===void 0&&(t=.1),De(oo(this.rgba,-t))},r.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},r.prototype.alpha=function(t){return typeof t=="number"?De({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):Pt(this.rgba.a,3);var e},r.prototype.hue=function(t){var e=ci(this.rgba);return typeof t=="number"?De({h:t,s:e.s,l:e.l,a:e.a}):Pt(e.h)},r.prototype.isEqual=function(t){return this.toHex()===De(t).toHex()},r}(),De=function(r){return r instanceof cs?r:new cs(r)},ao=[],Nc=function(r){r.forEach(function(t){ao.indexOf(t)<0&&(t(cs,os),ao.push(t))})};function lt(r){return r==null||r==="none"}function PA(r,t=0,e=10**t){return Math.round(e*r)/e+0}function hs(r,t=!1){if(typeof r!="object"||!r)return r;if(Array.isArray(r))return t?r.map(A=>hs(A,t)):r;const e={};for(const A in r){const i=r[A];i!=null&&(t?e[A]=hs(i,t):e[A]=i)}return e}function gs(r,t){const e={};return t.forEach(A=>{A in r&&(e[A]=r[A])}),e}function Fc(r,t,e){const A=t.length-1;if(A<0)return r===void 0?e:r;for(let i=0;i<A;i++){if(r==null)return e;r=r[t[i]]}return r==null||r[t[A]]===void 0?e:r[t[A]]}function Tc(r,t,e){const A=t.length-1;for(let i=0;i<A;i++)typeof r[t[i]]!="object"&&(r[t[i]]={}),r=r[t[i]];r[t[A]]=e}function Lc(r,t,e){return r==null||!t||typeof t!="string"?e:r[t]!==void 0?r[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),Fc(r,t.split("."),e))}function Gc(r,t,e){if(!(typeof r!="object"||!t))return t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),Tc(r,t.split("."),e)}let us=class{_map=new WeakMap;_toRaw(t){if(t&&typeof t=="object"){const e=t.__v_raw;e&&(t=this._toRaw(e))}return t}delete(t){return this._map.delete(this._toRaw(t))}get(t){return this._map.get(this._toRaw(t))}has(t){return this._map.has(this._toRaw(t))}set(t,e){return this._map.set(this._toRaw(t),this._toRaw(e)),this}};function fs(r){let t;return typeof r=="number"?t={r:r>>24&255,g:r>>16&255,b:r>>8&255,a:(r&255)/255}:t=r,De(t)}function Oc(r){return{r:PA(r.r),g:PA(r.g),b:PA(r.b),a:PA(r.a,3)}}function tr(r){const t=r.toString(16);return t.length<2?`0${t}`:t}const lo="#000000FF";function Hc(r){return fs(r).isValid()}function le(r,t=!1){const e=fs(r);if(!e.isValid()){if(typeof r=="string")return r;const o=`Failed to normalizeColor ${r}`;if(t)throw new Error(o);return console.warn(o),lo}const{r:A,g:i,b:s,a:n}=Oc(e.rgba);return`#${tr(A)}${tr(i)}${tr(s)}${tr(PA(n*255))}`}var er=er||{};er.parse=function(){const 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)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?((\d*\.\d+)|(\d+\.?)))px/,percentageValue:/^(-?((\d*\.\d+)|(\d+\.?)))%/,emValue:/^(-?((\d*\.\d+)|(\d+\.?)))em/,angleValue:/^(-?((\d*\.\d+)|(\d+\.?)))deg/,radianValue:/^(-?((\d*\.\d+)|(\d+\.?)))rad/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^#([0-9a-f]+)/i,literalColor:/^([a-z]+)/i,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,varColor:/^var/i,calcValue:/^calc/i,variableName:/^(--[a-z0-9-,\s#]+)/i,number:/^((\d*\.\d+)|(\d+\.?))/,hslColor:/^hsl/i,hslaColor:/^hsla/i};let t="";function e(U){const k=new Error(`${t}: ${U}`);throw k.source=t,k}function A(){const U=i();return t.length>0&&e("Invalid input not EOF"),U}function i(){return w(s)}function s(){return n("linear-gradient",r.linearGradient,a)||n("repeating-linear-gradient",r.repeatingLinearGradient,a)||n("radial-gradient",r.radialGradient,g)||n("repeating-radial-gradient",r.repeatingRadialGradient,g)}function n(U,k,q){return o(k,Z=>{const nt=q();return nt&&(T(r.comma)||e("Missing comma before color stops")),{type:U,orientation:nt,colorStops:w(D)}})}function o(U,k){const q=T(U);if(q){T(r.startCall)||e("Missing (");const Z=k(q);return T(r.endCall)||e("Missing )"),Z}}function a(){const U=l();if(U)return U;const k=At("position-keyword",r.positionKeywords,1);return k?{type:"directional",value:k.value}:c()}function l(){return At("directional",r.sideOrCorner,1)}function c(){return At("angular",r.angleValue,1)||At("angular",r.radianValue,1)}function g(){let U,k=u(),q;return k&&(U=[],U.push(k),q=t,T(r.comma)&&(k=u(),k?U.push(k):t=q)),U}function u(){let U=d()||f();if(U)U.at=p();else{const k=B();if(k){U=k;const q=p();q&&(U.at=q)}else{const q=p();if(q)U={type:"default-radial",at:q};else{const Z=S();Z&&(U={type:"default-radial",at:Z})}}}return U}function d(){const U=At("shape",/^(circle)/i,0);return U&&(U.style=W()||B()),U}function f(){const U=At("shape",/^(ellipse)/i,0);return U&&(U.style=S()||L()||B()),U}function B(){return At("extent-keyword",r.extentKeywords,1)}function p(){if(At("position",/^at/,0)){const U=S();return U||e("Missing positioning value"),U}}function S(){const U=R();if(U.x||U.y)return{type:"position",value:U}}function R(){return{x:L(),y:L()}}function w(U){let k=U();const q=[];if(k)for(q.push(k);T(r.comma);)k=U(),k?q.push(k):e("One extra comma");return q}function D(){const U=Q();return U||e("Expected color definition"),U.length=L(),U}function Q(){return x()||J()||z()||V()||M()||et()||m()}function m(){return At("literal",r.literalColor,0)}function x(){return At("hex",r.hexColor,1)}function M(){return o(r.rgbColor,()=>({type:"rgb",value:w(K)}))}function V(){return o(r.rgbaColor,()=>({type:"rgba",value:w(K)}))}function et(){return o(r.varColor,()=>({type:"var",value:$()}))}function z(){return o(r.hslColor,()=>{T(r.percentageValue)&&e("HSL hue value must be a number in degrees (0-360) or normalized (-360 to 360), not a percentage");const k=K();T(r.comma);let q=T(r.percentageValue);const Z=q?q[1]:null;T(r.comma),q=T(r.percentageValue);const nt=q?q[1]:null;return(!Z||!nt)&&e("Expected percentage value for saturation and lightness in HSL"),{type:"hsl",value:[k,Z,nt]}})}function J(){return o(r.hslaColor,()=>{const U=K();T(r.comma);let k=T(r.percentageValue);const q=k?k[1]:null;T(r.comma),k=T(r.percentageValue);const Z=k?k[1]:null;T(r.comma);const nt=K();return(!q||!Z)&&e("Expected percentage value for saturation and lightness in HSLA"),{type:"hsla",value:[U,q,Z,nt]}})}function $(){return T(r.variableName)[1]}function K(){return T(r.number)[1]}function L(){return At("%",r.percentageValue,1)||it()||G()||W()}function it(){return At("position-keyword",r.positionKeywords,1)}function G(){return o(r.calcValue,()=>{let U=1,k=0;for(;U>0&&k<t.length;){const Z=t.charAt(k);Z==="("?U++:Z===")"&&U--,k++}U>0&&e("Missing closing parenthesis in calc() expression");const q=t.substring(0,k-1);return tt(k-1),{type:"calc",value:q}})}function W(){return At("px",r.pixelValue,1)||At("em",r.emValue,1)}function At(U,k,q){const Z=T(k);if(Z)return{type:U,value:Z[q]}}function T(U){let k,q;return q=/^\s+/.exec(t),q&&tt(q[0].length),k=U.exec(t),k&&tt(k[0].length),k}function tt(U){t=t.substr(U)}return function(U){return t=U.toString().trim(),t.endsWith(";")&&(t=t.slice(0,-1)),A()}}();const Jc=er.parse.bind(er);var Ar=Ar||{};Ar.stringify=function(){var r={"visit_linear-gradient":function(t){return r.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return r.visit_gradient(t)},"visit_radial-gradient":function(t){return r.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return r.visit_gradient(t)},visit_gradient:function(t){var e=r.visit(t.orientation);return e&&(e+=", "),t.type+"("+e+r.visit(t.colorStops)+")"},visit_shape:function(t){var e=t.value,A=r.visit(t.at),i=r.visit(t.style);return i&&(e+=" "+i),A&&(e+=" at "+A),e},"visit_default-radial":function(t){var e="",A=r.visit(t.at);return A&&(e+=A),e},"visit_extent-keyword":function(t){var e=t.value,A=r.visit(t.at);return A&&(e+=" at "+A),e},"visit_position-keyword":function(t){return t.value},visit_position:function(t){return r.visit(t.value.x)+" "+r.visit(t.value.y)},"visit_%":function(t){return t.value+"%"},visit_em:function(t){return t.value+"em"},visit_px:function(t){return t.value+"px"},visit_calc:function(t){return"calc("+t.value+")"},visit_literal:function(t){return r.visit_color(t.value,t)},visit_hex:function(t){return r.visit_color("#"+t.value,t)},visit_rgb:function(t){return r.visit_color("rgb("+t.value.join(", ")+")",t)},visit_rgba:function(t){return r.visit_color("rgba("+t.value.join(", ")+")",t)},visit_hsl:function(t){return r.visit_color("hsl("+t.value[0]+", "+t.value[1]+"%, "+t.value[2]+"%)",t)},visit_hsla:function(t){return r.visit_color("hsla("+t.value[0]+", "+t.value[1]+"%, "+t.value[2]+"%, "+t.value[3]+")",t)},visit_var:function(t){return r.visit_color("var("+t.value+")",t)},visit_color:function(t,e){var A=t,i=r.visit(e.length);return i&&(A+=" "+i),A},visit_angular:function(t){return t.value+"deg"},visit_directional:function(t){return"to "+t.value},visit_array:function(t){var e="",A=t.length;return t.forEach(function(i,s){e+=r.visit(i),s<A-1&&(e+=", ")}),e},visit_object:function(t){return t.width&&t.height?r.visit(t.width)+" "+r.visit(t.height):""},visit:function(t){if(!t)return"";if(t instanceof Array)return r.visit_array(t);if(typeof t=="object"&&!t.type)return r.visit_object(t);if(t.type){var e=r["visit_"+t.type];if(e)return e(t);throw Error("Missing visitor visit_"+t.type)}else throw Error("Invalid node.")}};return function(t){return r.visit(t)}}(),Ar.stringify.bind(Ar);function co(r){const t=r.length-1;return r.map((e,A)=>{const i=e.value;let s=PA(A/t,3),n="#00000000";switch(e.type){case"rgb":n=le({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0)});break;case"rgba":n=le({r:Number(i[0]??0),g:Number(i[1]??0),b:Number(i[2]??0),a:Number(i[3]??0)});break;case"literal":n=le(e.value);break;case"hex":n=le(`#${e.value}`);break}switch(e.length?.type){case"%":s=Number(e.length.value)/100;break}return{offset:s,color:n}})}function ho(r){let t=0;switch(r.orientation?.type){case"angular":t=Number(r.orientation.value);break}return{type:"linear-gradient",angle:t,stops:co(r.colorStops)}}function go(r){return r.orientation?.map(t=>{switch(t?.type){case"shape":case"default-radial":case"extent-keyword":default:return null}}),{type:"radial-gradient",stops:co(r.colorStops)}}function hi(r){return r.startsWith("linear-gradient(")||r.startsWith("radial-gradient(")}function Kc(r){return Jc(r).map(t=>{switch(t?.type){case"linear-gradient":return ho(t);case"repeating-linear-gradient":return{...ho(t),repeat:!0};case"radial-gradient":return go(t);case"repeating-radial-gradient":return{...go(t),repeat:!0};default:return}}).filter(Boolean)}function Yc(r){let t;return typeof r=="string"?t={color:r}:t=r,{color:le(t.color)}}function Vc(r){let t;if(typeof r=="string"?t={image:r}:t=r,t.image){const{type:e,...A}=Kc(t.image)[0]??{};switch(e){case"radial-gradient":return{radialGradient:A};case"linear-gradient":return{linearGradient:A}}}return t}function zc(r){let t;return typeof r=="string"?t={image:r}:t=r,t}function Wc(r){let t;return typeof r=="string"?t={preset:r}:t=r,{preset:t.preset,foregroundColor:lt(t.foregroundColor)?void 0:le(t.foregroundColor),backgroundColor:lt(t.backgroundColor)?void 0:le(t.backgroundColor)}}function qc(r){return!lt(r.color)}function Xc(r){return typeof r=="string"?Hc(r):qc(r)}function jc(r){return!lt(r.image)&&hi(r.image)||!!r.linearGradient||!!r.radialGradient}function Zc(r){return typeof r=="string"?hi(r):jc(r)}function $c(r){return!lt(r.image)&&!hi(r.image)}function th(r){return typeof r=="string"?!hi(r):$c(r)}function eh(r){return!lt(r.preset)}function Ah(r){return typeof r=="string"?!1:eh(r)}function CA(r){return Xc(r)?Yc(r):Zc(r)?Vc(r):th(r)?zc(r):Ah(r)?Wc(r):{}}function ih(r){return typeof r=="string"?{...CA(r)}:{...CA(r),...gs(r,["fillWithShape"])}}const uo=new us;function ds(r){let t=uo.get(r);if(!t){const e=Object.getPrototypeOf(r);t=new Map(e?ds(e):void 0),uo.set(r,t)}return t}function ir(r,t,e={}){ds(r).set(t,e);const{default:A,alias:i=Symbol.for(String(t))}=e,s=()=>typeof A=="function"?A():A,n=Object.getOwnPropertyDescriptor(r.prototype,t)||{get(){return typeof i=="string"?Lc(this,i):this[i]},set(o){typeof i=="string"?Gc(this,i,o):this[i]=o}};Object.defineProperty(r.prototype,t,{get(){let o=n.get?.call(this);return o===void 0&&(o=s(),o!==void 0&&n.set?.call(this,o)),o},set(o){let a=n.get?.call(this);a===void 0&&(a=s()),n.set?.call(this,o),this.requestUpdate?.(t,o,a,e)},configurable:!0,enumerable:!0})}function b(r){return function(t,e){ir(t.constructor,e,r)}}function rh(r){return typeof r=="string"?{...CA(r)}:{...CA(r),...gs(r,["fillWithShape"])}}function sh(r){return typeof r=="string"?{...CA(r)}:{...CA(r),...gs(r,["width","style","headEnd","tailEnd"])}}function nh(r){return typeof r=="string"?{color:le(r)}:{...r,color:lt(r.color)?lo:le(r.color)}}function oh(){return{boxShadow:"none"}}function ah(r){return typeof r=="string"?r.startsWith("<svg")?{svg:r}:{paths:[{data:r}]}:Array.isArray(r)?{paths:r.map(t=>typeof t=="string"?{data:t}:t)}:r}function lh(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function ch(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function hh(){return{...lh(),...ch(),...oh(),backgroundImage:"none",backgroundSize:"auto, auto",backgroundColor:"none",backgroundColormap:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"rgb(0, 0, 0)",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function gh(){return{highlight:{},highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function uh(){return{listStyle:{},listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside"}}function fh(){return{...gh(),color:"rgb(0, 0, 0)",verticalAlign:"baseline",letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textTransform:"none",textOrientation:"mixed",textDecoration:"none"}}function dh(){return{...uh(),writingMode:"horizontal-tb",textWrap:"wrap",textAlign:"start",textIndent:0,lineHeight:1.2}}function Ih(){return{...dh(),...fh(),textStrokeWidth:0,textStrokeColor:"rgb(0, 0, 0)"}}function rr(r){return hs({...r,color:lt(r.color)?void 0:le(r.color),backgroundColor:lt(r.backgroundColor)?void 0:le(r.backgroundColor),borderColor:lt(r.borderColor)?void 0:le(r.borderColor),outlineColor:lt(r.outlineColor)?void 0:le(r.outlineColor),shadowColor:lt(r.shadowColor)?void 0:le(r.shadowColor)})}function fo(){return{...hh(),...Ih()}}const ph=/\r\n|\n\r|\n|\r/,Eh=new RegExp(`^(${ph.source})$`),Io=`
|
|
2
|
+
`;function Bh(r){return Eh.test(r)}function Ch(r,t){const e=Array.from(new Set([...Object.keys(r),...Object.keys(t)]));return!e.length||e.every(A=>r[A]===t[A])}function sr(r){const t=[];function e(){return t[t.length-1]}function A(o={}){let a=t[t.length-1];return a?.fragments.length===0?(a={...o,fragments:[]},t[t.length-1]=a):(a={...o,fragments:[]},t.push(a)),a}function i(o="",a={}){Array.from(o).forEach(l=>{if(Bh(l)){const{fragments:c,...g}=e()||A();c.length||c.push({...a,content:Io}),A(g)}else{const c=e()||A(),g=c.fragments[c.fragments.length-1];if(g){const{content:u,...d}=g;if(Ch(a,d)){g.content=`${u}${l}`;return}}c.fragments.push({...a,content:l})}})}(Array.isArray(r)?r:[r]).forEach(o=>{if(typeof o=="string")A(),i(o);else if("content"in o){const{content:a,...l}=o;A(rr(l)),i(a)}else if("fragments"in o){const{fragments:a,...l}=o;A(rr(l)),a.forEach(c=>{const{content:g,...u}=c;i(g,rr(u))})}else Array.isArray(o)?(A(),o.forEach(a=>{if(typeof a=="string")i(a);else{const{content:l,...c}=a;i(l,rr(c))}})):console.warn("Failed to parse text content",o)});const n=e();return n&&!n.fragments.length&&n.fragments.push({content:Io}),t}function Qh(r){return typeof r=="string"?{content:sr(r)}:"content"in r?{...r,content:sr(r.content)}:{content:sr(r)}}const nr=new Map;function st(r,t){return function(e){Object.defineProperty(e.prototype,"tag",{value:r,enumerable:!0,configurable:!0}),t&&Object.keys(t).forEach(A=>{ir(e,A,{default:t[A]})}),nr.set(r,e)}}function dt(r){return b({...r,protected:!0})}function yh(r="node",t={}){const e=nr.get(r);if(!e)throw new Error(`Failed to createNode, tag: ${r}`);return new e().setProperties(t)}class Wt{static _queue=[];static _currentTime=0;static _elapsed=0;static _requestId;static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(t,e={}){const{sort:A=0,once:i=!1}=e;this._queue[A]||(this._queue[A]=[]),this._queue[A].push({cb:t,once:i})}static off(t,e={}){const{sort:A=0}=e,i=this._queue[A];if(!i)return;const s=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==t&&s.push(a)}s.length?this._queue[A]=s:this._queue.splice(A,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(t=>this._update(t)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(t){this._elapsed=t-this._currentTime,this._currentTime=t,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const t=this._queue,e=[];for(let A=t.length,i=A;i>=0;i--){const s=t[i];if(!s)continue;const n=[];for(let o=s.length,a=0;a<o;a++){const l=s[a];try{l.cb()}catch(c){console.warn(c)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}Wt.start();async function Is(r){return new Promise(t=>{Wt.on(()=>{r?.(),t()},{sort:1,once:!0})})}let He=class{eventListeners=new Map;removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(t){return this.eventListeners.has(t)}on(t,e,A){const i={value:e,options:A},s=this.eventListeners.get(t);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(t,[s,i]):this.eventListeners.set(t,i),this}once(t,e){return this.on(t,e,{once:!0})}off(t,e,A){if(!e)return this.eventListeners.delete(t),this;const i=this.eventListeners.get(t);if(!i)return this;if(Array.isArray(i)){const s=[];for(let n=0,o=i.length;n<o;n++){const a=i[n];(a.value!==e||typeof A=="object"&&A?.once&&(typeof a.options=="boolean"||!a.options?.once))&&s.push(a)}s.length?this.eventListeners.set(t,s.length===1?s[0]:s):this.eventListeners.delete(t)}else i.value===e&&(typeof A=="boolean"||!A?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(t);return this}emit(t,...e){const A=this.eventListeners.get(t);if(A){if(Array.isArray(A))for(let i=A.length,s=0;s<i;s++){const n=A[s];typeof n.options=="object"&&n.options?.once&&this.off(t,n.value,n.options),n.value.apply(this,e)}else typeof A.options=="object"&&A.options?.once&&this.off(t,A.value,A.options),A.value.apply(this,e);return!0}else return!1}},mh=0;class AA extends He{instanceId=++mh;_defaultProperties;_updatedProperties=new Map;_changedProperties=new Set;_updatingPromise=Promise.resolve();_updating=!1;is(t){return!!(t&&this.instanceId===t.instanceId)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(t){Promise.reject(t)}await Is(),this._updating&&(this.update(),this._updating=!1)}update(){this._update(this._updatedProperties),this._updatedProperties=new Map}_update(t){}_updateProperty(t,e,A,i){}isDirty(t){return this._updatedProperties.has(t)}getPropertyDeclarations(){return ds(this.constructor)}getPropertyDeclaration(t){return this.getPropertyDeclarations().get(t)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[t,e]of this.getPropertyDeclarations())!e.protected&&!e.alias&&(this._defaultProperties[t]=typeof e.default=="function"?e.default():e.default)}return this._defaultProperties}getProperty(t){return this[t]}setProperty(t,e){return this[t]=e,this}getProperties(t){const e={};for(const[A,i]of this.getPropertyDeclarations())!i.protected&&!i.alias&&(!t||t.includes(A))&&(e[A]=this.getProperty(A));return e}setProperties(t){if(t&&typeof t=="object")for(const[e]of this.getPropertyDeclarations())e in t&&this.setProperty(e,t[e]);return this}resetProperties(){for(const[t,e]of this.getPropertyDeclarations())this.setProperty(t,e.default);return this}requestUpdate(t,e,A,i){if(t!==void 0)if(!Object.is(e,A))this._updatedProperties.set(t,A),this._changedProperties.add(t),i??=this.getPropertyDeclaration(t),this._updateProperty(t,e,A,i),this.emit("updateProperty",t,e,A,i);else return;this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){const t={},e=this.getProperties(Array.from(this._changedProperties));for(const A in e){const i=e[A];i&&typeof i=="object"?"toJSON"in i&&typeof i.toJSON=="function"?t[A]=i.toJSON():t[A]={...i}:t[A]=i}return t}clone(){return new this.constructor(this.toJSON())}free(){this.removeAllListeners()}}class po extends AA{}const or=Math.PI,Ae=or*2;let wh=0;function Eo(r){return r?.__SPECTOR_Object_TAG?.id??++wh}function ps(r){return!(r&r-1)&&!!r}const vh=/([\w-]+)\((.+?)\)/g,_h=/[^,]+/g,bh=/([-e.\d]+)(.*)/;function Es(r){return Array.isArray(r)?r.map(t=>({name:t.name,args:t.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...r,normalizedIntValue:r.normalizedDefaultIntValue}}function gi(r,t,e={}){const A=ui(t,e);return A.length?A:Bo(r,t,e)}function ui(r,t={}){const e=[];let A;for(;(A=vh.exec(r))!==null;){const[,i,s]=A;i&&e.push({name:i,args:Dh(i,s,t)})}return e}function Dh(r,t,e={}){const A=[];let i,s=0;for(;(i=_h.exec(t))!==null;)A.push(Bo(r,i[0],{...e,index:s++}));return A}function Bo(r,t,e={}){const{width:A=1,height:i=1,index:s=0}=e,n=t.match(bh),o={unit:n?.[2]??null,value:t,intValue:Number(n?.[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(r){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/Ae;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(s){case 0:o.normalizedIntValue=o.intValue/A;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const Co="WebGL2RenderingContext"in globalThis,Qo="ImageBitmap"in globalThis,yo="ResizeObserver"in globalThis,kA="PointerEvent"in globalThis,mo="WheelEvent"in globalThis,xh="MouseEvent"in globalThis,Je="ontouchstart"in globalThis,wo="onclick"in globalThis,Bs="createImageBitmap"in globalThis,Cs="AudioContext"in globalThis,Qs="webkitAudioContext"in globalThis,ys="OfflineAudioContext"in globalThis,vo="webkitOfflineAudioContext"in globalThis,_o=Cs||Qs,fi=typeof window<"u",ms=globalThis.devicePixelRatio||1,ws=r=>r!==null&&typeof r=="object"&&r.nodeType===1,bo=r=>ws(r)&&r.tagName==="VIDEO",Sh=r=>ws(r)&&r.tagName==="IMG";function Do(r){return typeof r=="object"&&r!==null&&r.nodeType===1&&r.tagName==="CANVAS"}function xo(r){return Co&&r instanceof globalThis.WebGL2RenderingContext}function So(){if(fi)return globalThis.document.createElement("canvas")}function Mo(r,t=globalThis.location){if(r.startsWith("data:"))return"";t=t||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol?"anonymous":""}function Ro(r,t,e){e===null&&!t.startsWith("data:")?r.crossOrigin=Mo(t):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}class vs{_map=new WeakMap;_toRaw(t){if(t&&typeof t=="object"){const e=t.__v_raw;e&&(t=this._toRaw(e))}return t}delete(t){return this._map.delete(this._toRaw(t))}get(t){return this._map.get(this._toRaw(t))}has(t){return this._map.has(this._toRaw(t))}set(t,e){return this._map.set(this._toRaw(t),this._toRaw(e)),this}}class ar{bubbles=!0;cancelable=!1;which;cancelBubble=!0;returnValue;srcElement;composed=!1;currentTarget;defaultPrevented=!1;eventPhase=ar.prototype.NONE;isTrusted;target;timeStamp;type;nativeEvent;originalEvent;propagationStopped=!1;propagationImmediatelyStopped=!1;path;detail;view;layer={x:0,y:0};get layerX(){return this.layer.x}get layerY(){return this.layer.y}page={x:0,y:0};get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...t){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...t){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}NONE=0;CAPTURING_PHASE=1;AT_TARGET=2;BUBBLING_PHASE=3}class _s extends ar{altKey;button;buttons;ctrlKey;metaKey;relatedTarget;shiftKey;client={x:0,y:0};get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}movement={x:0,y:0};get movementX(){return this.movement.x}get movementY(){return this.movement.y}offset={x:0,y:0};get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}global={x:0,y:0};get globalX(){return this.global.x}get globalY(){return this.global.y}screen={x:0,y:0};get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(t){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(t)}initMouseEvent(...t){throw new Error("Method not implemented.")}}class Po extends _s{width=0;height=0;isPrimary=!1;pointerType;pressure;tangentialPressure;tiltX;tiltY;twist;getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class ko extends _s{deltaMode;deltaX;deltaY;deltaZ;static DOM_DELTA_PIXEL=0;DOM_DELTA_PIXEL=0;static DOM_DELTA_LINE=1;DOM_DELTA_LINE=1;static DOM_DELTA_PAGE=2;DOM_DELTA_PAGE=2}const Mh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class Uo extends He{target;cursor="default";cursorStyles={default:"inherit",pointer:"pointer"};setuped=!1;event;enableMoveEvent=!0;enableWheelEvent=!0;enableClickEvent=!0;setTarget(t){this.removeEventListeners(),this.target=t,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const t=this.target.style;globalThis.navigator.msPointerEnabled?(t.msContentZooming="",t.msTouchAction=""):kA&&(t.touchAction=""),kA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.removeEventListener("pointermove",this.onPointerMove),this.target.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.removeEventListener("mousemove",this.onPointerMove),this.target.removeEventListener("mouseup",this.onPointerUp)),Je&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const t=this.target.style;t&&(globalThis.navigator.msPointerEnabled?(t.msContentZooming="none",t.msTouchAction="none"):kA&&(t.touchAction="none")),kA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.addEventListener("pointermove",this.onPointerMove),this.target.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.addEventListener("mousemove",this.onPointerMove),this.target.addEventListener("mouseup",this.onPointerUp)),Je&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(t){const e=[];if(Je&&t instanceof globalThis.TouchEvent)for(let A=0,i=t.changedTouches.length;A<i;A++){const s=t.changedTouches[A];typeof s.button>"u"&&(s.button=0),typeof s.buttons>"u"&&(s.buttons=1),typeof s.isPrimary>"u"&&(s.isPrimary=t.touches.length===1&&t.type==="touchstart"),typeof s.width>"u"&&(s.width=s.radiusX||1),typeof s.height>"u"&&(s.height=s.radiusY||1),typeof s.tiltX>"u"&&(s.tiltX=0),typeof s.tiltY>"u"&&(s.tiltY=0),typeof s.pointerType>"u"&&(s.pointerType="touch"),typeof s.pointerId>"u"&&(s.pointerId=s.identifier||0),typeof s.pressure>"u"&&(s.pressure=s.force||.5),typeof s.twist>"u"&&(s.twist=0),typeof s.tangentialPressure>"u"&&(s.tangentialPressure=0),typeof s.layerX>"u"&&(s.layerX=s.offsetX=s.clientX),typeof s.layerY>"u"&&(s.layerY=s.offsetY=s.clientY),s.type=t.type,e.push(s)}else if(mo&&t instanceof globalThis.WheelEvent)e.push(t);else if(kA&&t instanceof globalThis.PointerEvent)e.push(t);else{const A=t;typeof A.isPrimary>"u"&&(A.isPrimary=!0),typeof A.width>"u"&&(A.width=1),typeof A.height>"u"&&(A.height=1),typeof A.tiltX>"u"&&(A.tiltX=0),typeof A.tiltY>"u"&&(A.tiltY=0),typeof A.pointerType>"u"&&(A.pointerType="mouse"),typeof A.pointerId>"u"&&(A.pointerId=1),typeof A.pressure>"u"&&(A.pressure=.5),typeof A.twist>"u"&&(A.twist=0),typeof A.tangentialPressure>"u"&&(A.tangentialPressure=0),e.push(A)}return e}cloneWheelEvent(t){const e=new ko;return this.copyMouseEvent(e,t),e.wheelDeltaY=t.wheelDeltaY,e.deltaX=t.deltaX,e.deltaY=t.deltaY,e.deltaZ=t.deltaZ,e.deltaMode=t.deltaMode,this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.x=e.screen.x,e.global.y=e.screen.y,e.offset.x=e.screen.x,e.offset.y=e.screen.y,e.nativeEvent=t,e.type=t.type,e}clonePointerEvent(t){const e=new Po;return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,e.isTrusted=t.isTrusted,this.copyMouseEvent(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.x=e.screen.x,e.global.y=e.screen.y,e.offset.x=e.screen.x,e.offset.y=e.screen.y,e.type==="pointerleave"?e.type="pointerout":e.type.startsWith("mouse")?e.type=e.type.replace("mouse","pointer"):e.type.startsWith("touch")&&(e.type=Mh[e.type]||e.type),e}copyMouseEvent(t,e){t.preventDefault=e.preventDefault.bind(e),t.stopPropagation=e.stopPropagation.bind(e),t.isTrusted=e.isTrusted,t.timeStamp=performance.now(),t.type=e.type,t.altKey=e.altKey,t.button=e.button,t.buttons=e.buttons,t.client.x=e.clientX,t.client.y=e.clientY,t.ctrlKey=e.ctrlKey,t.metaKey=e.metaKey,t.movement.x=e.movementX,t.movement.y=e.movementY,t.page.x=e.pageX,t.page.y=e.pageY,t.relatedTarget=null,t.shiftKey=e.shiftKey}setCursor(t){if(!this.target||(t=t||"default",this.cursor===t))return;this.cursor=t;const e=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),A=this.cursorStyles[t];if(A)switch(typeof A){case"string":e&&(this.target.style.cursor=A);break;case"function":A(t);break;case"object":e&&Object.assign(this.target.style,A);break}else e&&typeof t=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,t)&&(this.target.style.cursor=t)}mapPositionToPoint(t,e,A){if(!this.target)return;const i=Number(this.target.getAttribute("width"))||0,s=Number(this.target.getAttribute("height"))||0,n=Number(this.target.getAttribute("data-pixel-ratio"))||1,o=this.target.isConnected?this.target.getBoundingClientRect():{width:i,height:s,left:0,top:0},a=1/n;t.x=(e-o.left)*(i/o.width)*a,t.y=(A-o.top)*(s/o.height)*a}onPointerDown=t=>{if(Je&&t.pointerType==="touch")return;const e=this.normalize(t);for(let A=0,i=e.length;A<i;A++)this.emit("pointerdown",this.event=this.clonePointerEvent(e[A]));this.setCursor(this.cursor)};onPointerOver=t=>{if(!this.enableClickEvent||Je&&t.pointerType==="touch")return;const e=this.normalize(t);for(let A=0,i=e.length;A<i;A++)this.emit("pointerover",this.event=this.clonePointerEvent(e[A]))};onPointerMove=t=>{if(!this.enableMoveEvent||Je&&t.pointerType==="touch")return;const e=this.normalize(t);for(let A=0,i=e.length;A<i;A++)this.emit("pointermove",this.event=this.clonePointerEvent(e[A]))};onPointerUp=t=>{if(!this.enableClickEvent||Je&&t.pointerType==="touch")return;let e=t.target;t.composedPath&&t.composedPath().length>0&&(e=t.composedPath()[0]);const A=e!==this.target?"outside":"",i=this.normalize(t);for(let s=0,n=i.length;s<n;s++){const o=this.clonePointerEvent(i[s]);o.type+=A,this.emit("pointerup",this.event=o)}};onWheel=t=>{if(!this.enableWheelEvent)return;const e=this.normalize(t);for(let A=0,i=e.length;A<i;A++)this.emit("wheel",this.event=this.cloneWheelEvent(e[A]))}}class Ke extends po{}function Rh(r,t){var e={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"},A={};for(var i in e)A[e[i]]=i;var s={};r.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=A[this.toHex()];if(l)return l;if(n?.closest){var c=this.toRgb(),g=1/0,u="black";if(!s.length)for(var d in e)s[d]=new r(e[d]).toRgb();for(var f in e){var B=(o=c,a=s[f],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));B<g&&(g=B,u=f)}return u}},t.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new r(a).toRgb():null},"name"])}Nc([Rh]);class Ye{get value(){return this._value}set value(t){this._colord=fs(t??"none")}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(t=0){this.value=t}toHex(){return this._colord.toHex()}toRgb(){return this._colord.toRgb()}toRgbString(){return this._colord.toRgbString()}toHsl(){return this._colord.toHsl()}toHslString(){return this._colord.toHslString()}toHsv(){return this._colord.toHsv()}toArgb(t=this.a,e=!0){if(t===1)return(255<<24)+this.rgb;if(t===0)return e?0:this.rgb;let A=this.r8,i=this.g8,s=this.b8;return e&&(A=A*t+.5|0,i=i*t+.5|0,s=s*t+.5|0),(t*255<<24)+(A<<16)+(i<<8)+s}toArray(){return[this.r,this.g,this.b,this.a]}}class Qe extends He{constructor(t){super(),this.dim=t}_array=[];get length(){return this.dim}_operate(t,e,A){const{dim:i,_array:s}=this;let n;typeof e=="number"?n=Array.from({length:i},()=>e):e instanceof xe||e instanceof Qe?n=e.toArray():n=e;let o,a=[];if(A?A instanceof Qe?o=A:a=A:o=this,e instanceof xe){const{cols:l}=e;switch(t){case"*":for(let c=0;c<i;c++){let g=0;for(let u=0;u<i;u++)g+=s[c]*n[u*l+c];a[c]=g}break;default:throw new Error(`Not support operator in '${this.toName()} ${t} ${e.toName()}'`)}}else switch(t){case"+":for(let l=0;l<i;l++)a[l]=s[l]+n[l];break;case"-":for(let l=0;l<i;l++)a[l]=s[l]-n[l];break;case"*":for(let l=0;l<i;l++)a[l]=s[l]*n[l];break;case"/":for(let l=0;l<i;l++)a[l]=s[l]/n[l];break;case"rot":{const l=Math.cos(n[0]),c=Math.sin(n[0]);a[0]=s[0]*l-s[1]*c,a[1]=s[1]*l+s[0]*c;break}case"==":{let l=!0;for(let c=0;c<i;c++)l=l&&s[c]===n[c];return l}case"=":for(let l=0;l<i;l++){const c=n[l];c!==void 0&&(s[l]=c)}return this._onUpdate(s),this.emit("update",s),this;default:throw new Error(`Not support operator in '${this.toName()} ${t} Vector'`)}return o?.set(a)??a}add(t,e){return this._operate("+",t,e)}sub(t,e){return this._operate("-",t,e)}multiply(t,e){return this._operate("*",t,e)}divide(t,e){return this._operate("/",t,e)}rotate(t){return this._operate("rot",t)}set(t,...e){return e.length&&typeof t=="number"&&(t=[t,...e]),this._operate("=",t)}equals(t){return this._operate("==",t)}copy(t){return this.set(t)}clone(){const t=new this.constructor;return t.set(this.toArray()),t}_onUpdate(t){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class xe extends He{constructor(t,e,A){super(),this.rows=t,this.cols=e,A?this.set(A):this.identity()}_array=[];dirtyId=0;get length(){return this.cols*this.rows}_operate(t,e,A){const{cols:i,rows:s,length:n,_array:o}=this;let a;typeof e=="number"?a=Array.from({length:n},()=>e):e instanceof Qe||e instanceof xe?a=e.toArray():a=e;let l,c=[];if(A?A instanceof Qe||A instanceof xe?l=A:c=A:e instanceof Qe?l=new e.constructor:l=this,e instanceof Qe){const{dim:g}=e;switch(t){case"*":for(let u=0;u<g;u++){let d=0;for(let f=0;f<i;f++)f<g&&(d+=o[u*i+f]*(a[f]??0));c[u]=d}break;default:throw new Error(`Not support operator in '${this.toName()} ${t} ${e.toName()}'`)}}else switch(t){case"*":for(let g=0;g<i;g++)for(let u=0;u<s;u++){const d=u*i;let f=0;for(let B=0;B<s;B++){const p=d+B,S=B*i+g;f+=o[p]*(a[S]??0)}c[d+g]=f}break;case"=":for(let g=0;g<n;g++){const u=a[g];u!==void 0&&(o[g]=u)}return this._onUpdate(o),this.emit("update",o),this;default:throw new Error(`Not support operator in '${this.toName()} ${t} Matrix2'`)}return l?.set(c)??c}identity(){const{cols:t,rows:e}=this,A=[];for(let i=0;i<t;i++)for(let s=0;s<e;s++){const n=s*t,o=i+n;A[o]=s+n===o?1:0}return this.set(A)}set(t){return this._operate("=",t)}copy(t){return this.set(t)}clone(){const t=new this.constructor;return t.set(this.toArray()),t}multiply(t,e){return this._operate("*",t,e)}_onUpdate(t){this.dirtyId++}toArray(t=!1){const{cols:e,rows:A,_array:i}=this;if(t){const s=[];for(let n=0;n<A;n++)for(let o=0;o<e;o++)s[n+o*e]=i[o+n*e];return s}return i.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class No extends xe{constructor(t){super(4,4,t)}}const Fo=or/180,Ph=180/or;function Ve(r,t,e){return Math.max(r,Math.min(t,e))}function xt(r,t,e){return(1-e)*r+e*t}const kh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(r,t=20){if(!this.adaptive||!r||Number.isNaN(r))return t;let e=Math.ceil(r/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class To extends Qe{constructor(t=0,e=0,A=0,i=0){super(4),this.set([t,e,A,i])}}class bs extends xe{constructor(t){super(4,5,t)}hueRotate(t=0){const e=Math.sin(t),A=Math.cos(t),i=.213,s=.715,n=.072;return this.multiply([i+A*(1-i)+e*-i,s+A*-s+e*-s,n+A*-n+e*(1-n),0,0,i+A*-i+e*.143,s+A*(1-s)+e*.14,n+A*-n+e*-.283,0,0,i+A*-i+e*-.787,s+A*-s+e*s,n+A*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(t=1){const e=(t-1)*2/3+1,A=(e-1)*-.5;return this.multiply([e,A,A,0,0,A,e,A,0,0,A,A,e,0,0,0,0,0,1,0])}brightness(t=1){const e=t;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(t=1){const e=t,A=-128*(e-1);return this.multiply([e,0,0,0,A,0,e,0,0,A,0,0,e,0,A,0,0,0,1,0])}invert(t=1){const e=xt(1,-1,t),A=xt(0,255,t);return this.multiply([e,0,0,0,A,0,e,0,0,A,0,0,e,0,A,0,0,0,1,0])}sepia(t=1){const e=Ve(0,t,1);return this.multiply([xt(1,.393,e),xt(0,.7689999,e),xt(0,.18899999,e),0,0,xt(0,.349,e),xt(1,.6859999,e),xt(0,.16799999,e),0,0,xt(0,.272,e),xt(0,.5339999,e),xt(1,.13099999,e),0,0,0,0,0,1,0])}opacity(t=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,t,0])}grayscale(t=1){const e=Ve(0,t,1),A=xt(1,.3,e),i=xt(0,.3,e),s=xt(1,.59,e),n=xt(0,.59,e),o=xt(1,.11,e),a=xt(0,.11,e);return this.multiply([A,n,a,0,0,i,s,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(t){const e=t,A=this._array;return this.set([A[0]*e[0]+A[1]*e[5]+A[2]*e[10]+A[3]*e[15],A[0]*e[1]+A[1]*e[6]+A[2]*e[11]+A[3]*e[16],A[0]*e[2]+A[1]*e[7]+A[2]*e[12]+A[3]*e[17],A[0]*e[3]+A[1]*e[8]+A[2]*e[13]+A[3]*e[18],A[0]*e[4]+A[1]*e[9]+A[2]*e[14]+A[3]*e[19]+A[4],A[5]*e[0]+A[6]*e[5]+A[7]*e[10]+A[8]*e[15],A[5]*e[1]+A[6]*e[6]+A[7]*e[11]+A[8]*e[16],A[5]*e[2]+A[6]*e[7]+A[7]*e[12]+A[8]*e[17],A[5]*e[3]+A[6]*e[8]+A[7]*e[13]+A[8]*e[18],A[5]*e[4]+A[6]*e[9]+A[7]*e[14]+A[8]*e[19]+A[9],A[10]*e[0]+A[11]*e[5]+A[12]*e[10]+A[13]*e[15],A[10]*e[1]+A[11]*e[6]+A[12]*e[11]+A[13]*e[16],A[10]*e[2]+A[11]*e[7]+A[12]*e[12]+A[13]*e[17],A[10]*e[3]+A[11]*e[8]+A[12]*e[13]+A[13]*e[18],A[10]*e[4]+A[11]*e[9]+A[12]*e[14]+A[13]*e[19]+A[14],A[15]*e[0]+A[16]*e[5]+A[17]*e[10]+A[18]*e[15],A[15]*e[1]+A[16]*e[6]+A[17]*e[11]+A[18]*e[16],A[15]*e[2]+A[16]*e[7]+A[17]*e[12]+A[18]*e[17],A[15]*e[3]+A[16]*e[8]+A[17]*e[13]+A[18]*e[18],A[15]*e[4]+A[16]*e[9]+A[17]*e[14]+A[18]*e[19]+A[19]])}toMatrix4(){const t=this._array;return new No([t[0],t[1],t[2],t[3],t[5],t[6],t[7],t[8],t[10],t[11],t[12],t[13],t[15],t[16],t[17],t[18]])}toVector4(){const t=this._array;return new To(t[4]/255,t[9]/255,t[14]/255,t[19]/255)}}class Uh extends xe{constructor(t){super(2,2,t)}}let Ds=class extends xe{constructor(t){super(3,3,t)}invert(){const[t,e,A,i,s,n,o,a,l]=this._array,c=l*s-n*a,g=n*o-l*i,u=a*i-s*o,d=t*c+e*g+A*u;if(d===0)return this.set([0,0,0,0,0,0,0,0,0]);const f=1/d;return this.set([c*f,(A*a-l*e)*f,(n*e-A*s)*f,g*f,(l*t-A*o)*f,(A*i-n*t)*f,u*f,(e*o-a*t)*f,(s*t-e*i)*f])}};class Lo extends Ds{constructor(t=0,e=0,A=0,i=0,s=!1){super(),this._x=t,this._y=e,this._width=A,this._height=i,this._flipY=s,this._performUpdateArray()}flipY(t){return this._flipY!==t&&(this._flipY=t,this._performUpdateArray()),this}translate(t,e){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._performUpdateArray()),this}resize(t,e){return(this._width!==t||this._height!==e)&&(this._width=t,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const t=this._width,e=this._height;if(!t||!e)return;const A=this._x,i=this._y,s=this._flipY?-1:1,n=1/t*2,o=s*(1/e*2),a=-1-A*n,l=-s-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let he=class ss extends Qe{get x(){return this._array[0]}set x(t){const[e,A]=this._array;e!==t&&this.set(t,A)}get y(){return this._array[1]}set y(t){const[e,A]=this._array;A!==t&&this.set(e,t)}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}get left(){return this.x}set left(t){this.x=t}get top(){return this.y}set top(t){this.y=t}constructor(t=0,e){super(2),this.set(typeof t=="number"?[t,e??t]:t)}update(t,e){const[A,i]=this._array;return(A!==t||i!==e)&&this.set(t,e),this}getLength(){const[t,e]=this._array;return Math.sqrt(t*t+e*e)}getAngle(){const[t,e]=this._array;return Math.atan2(-t,-e)+Math.PI}distanceTo(t){return Math.hypot(t.x-this.x,t.y-this.y)}normalize(){const[t,e]=this._array,A=1/(this.getLength()||1);return this.set(t*A,e*A),this}static lerp(t,e,A){return new ss(e).clone().sub(new ss(t)).multiply(A).add(new ss(t))}};class xs{get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}end=new he;position;size;constructor(...t){const e=new he,A=new he;switch(t.length){case 0:break;case 1:e.set(t[0].position),A.set(t[0].size);break;case 2:e.set(t[0]),A.set(t[1]);break;default:e.set(t[0],t[1]),A.set(t[2],t[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=A.on("update",this.update),this.update()}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}class kt extends Ds{static _t2d=new kt;premultiply(t){return t.multiply(this,this)}skewX(t){return this.skew(t,0)}skewY(t){return this.skew(0,t)}skew(t,e){return this.premultiply(kt._t2d.makeSkew(t,e))}makeSkew(t,e){const A=Math.tan(t),i=Math.tan(e);return this.set([1,i,0,A,1,0,0,0,1]),this}translateX(t){return this.translate(t,0)}translateY(t){return this.translate(0,t)}translateZ(t){return this.translate(0,0,t)}translate3d(t,e,A){return this.translate(t,e,A)}translate(t,e,A=0){return this.premultiply(kt._t2d.makeTranslation(t,e,A))}makeTranslation(t,e,A=0){return this.set([1,0,t,0,1,e,0,0,1]),this}scaleX(t){return this.scale(t,1)}scaleY(t){return this.scale(1,t)}scale3d(t,e,A=1){return this.scale(t,e,A)}scale(t,e,A=1){return this.premultiply(kt._t2d.makeScale(t,e,A))}makeScale(t,e,A=1){return this.set([t,0,0,0,e,0,0,0,1]),this}rotateX(t){return this.scaleY(this._rotateToScale(t))}rotateY(t){return this.scaleX(this._rotateToScale(t))}rotateZ(t){return this.rotate(t)}rotate(t){return this.premultiply(kt._t2d.makeRotation(t))}rotate3d(t,e,A,i){const[s,n,o]=this._rotate3d(t,e,A,i);return s&&this.rotateX(s),n&&this.rotateY(n),o&&this.rotateZ(o),this}_rotateToScale(t){const e=t/Ae;return e<=.5?e*-4+1:(e-1)*4+1}_rotate3d(t,e,A,i){if(t===1&&e===0&&A===0)return[i,0,0];if(t===0&&e===1&&A===0)return[0,i,0];if(t===0&&e===0)return[0,0,i];{const s=Math.cos(i),n=Math.sin(i),o=s+t*t*(1-s),a=t*e*(1-s)-A*n,l=t*A*(1-s)+e*n,c=s+e*e*(1-s),g=e*A*(1-s)-t*n,u=s+A*A*(1-s),d=-Math.atan2(-g,c),f=-Math.atan2(l,Math.sqrt(g*g+u*u)),B=-Math.atan2(-a,o);return[d,f,B]}}makeRotation(t){const e=Math.cos(t),A=Math.sin(t);return this.set([e,-A,0,A,e,0,0,0,1]),this}applyToPoint(t,e){const{a:A,c:i,tx:s,b:n,d:o,ty:a}=this.toObject();return[A*t+i*e+s,n*t+o*e+a]}inverse(){return this.clone().invert()}isIdentity(){const{a:t,b:e,c:A,d:i,tx:s,ty:n}=this.toObject();return t===1&&e===0&&A===0&&i===1&&s===0&&n===0}toObject(){const[t,e,A,i,s,n,,,o]=this._array;return{a:t,c:e,tx:A,b:i,d:s,ty:n,tz:o}}}class Nh extends Qe{constructor(){super(3)}}var Fh=Object.defineProperty,Go=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Fh(t,e,i),i};class lr extends AA{_starting=!1;_nextDeltaTime=0;get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}constructor(){super(),this._onNextTick=this._onNextTick.bind(this)}start(t){this._starting||(this._starting=!0,this.off("process"),this.on("process",t),Wt.on(this._onNextTick,{sort:0}))}stop(){this._starting&&(this._starting=!1,Wt.off(this._onNextTick,{sort:0}))}_onNextTick(){const t=Wt.elapsed*this.speed;if((this._nextDeltaTime-=t)<=0){const A=(this._nextDeltaTime=this.spf)||t;this.emit("process",A)}}free(){super.free(),this.stop()}}Go([b({default:24})],lr.prototype,"fps"),Go([b({default:1})],lr.prototype,"speed");class Oo{view;pixelRatio=ms;screen={x:0,y:0,width:0,height:0};related=new vs;getRelated(t,e){let A=this.related.get(t);return A||(e?(this.related.set(t,A=e()),A):(console.warn("Failed to get related",t),null))}resize(t,e,A=!0){this.view&&(this.view.width=Math.floor(t*this.pixelRatio),this.view.height=Math.floor(e*this.pixelRatio)),this.screen.width=t,this.screen.height=e,A&&this.view&&(this.view.style.width=`${t}px`,this.view.style.height=`${e}px`)}}var UA=(r=>(r.NORMAL="normal",r.ADD="add",r.MULTIPLY="multiply",r.SCREEN="screen",r.NONE="none",r.NORMAL_NPM="normal_npm",r.ADD_NPM="add_npm",r.SCREEN_NPM="screen_npm",r.SRC_IN="src_in",r.SRC_OUT="src_out",r.SRC_ATOP="src_atop",r.DST_OVER="dst_over",r.DST_IN="dst_in",r.DST_OUT="dst_out",r.DST_ATOP="dst_atop",r.XOR="xor",r.SUBTRACT="subtract",r))(UA||{});function Ho(r){return{normal:[r.ONE,r.ONE_MINUS_SRC_ALPHA],add:[r.ONE,r.ONE],multiply:[r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],screen:[r.ONE,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],add_npm:[r.SRC_ALPHA,r.ONE,r.ONE,r.ONE],screen_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],src_in:[r.DST_ALPHA,r.ZERO],src_out:[r.ONE_MINUS_DST_ALPHA,r.ZERO],src_atop:[r.DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],dst_over:[r.ONE_MINUS_DST_ALPHA,r.ONE],dst_in:[r.ZERO,r.SRC_ALPHA],dst_out:[r.ZERO,r.ONE_MINUS_SRC_ALPHA],dst_atop:[r.ONE_MINUS_DST_ALPHA,r.SRC_ALPHA],xor:[r.ONE_MINUS_DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],subtract:[r.ONE,r.ONE,r.ONE,r.ONE,r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD]}}class Ee{get gl(){return this._renderer.gl}install(t){this._renderer=t}onUpdateContext(){}flush(){}reset(){}free(){}}class QA{static _properties=["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"];static _init(){this._properties.forEach((t,e)=>{Object.defineProperty(this.prototype,t,{get(){return!!(this.bitmap&1<<e)},set(A){!!(this.bitmap&1<<e)!==A&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const t=new QA;return t.depthTest=!1,t.blend=!0,t}_blendMode=UA.NORMAL;_polygonOffset=0;bitmap=0;get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!==UA.NONE,this._blendMode=t}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}constructor(t){if(t)for(const e in t)this[e]=t[e]}}QA._init();class Jo extends Ee{install(t){super.install(t),t.state=this}_blendEq=!1;_setters=QA._properties.map(t=>this[`set${t.replace(/^\S/,e=>e.toUpperCase())}`]);boundStateBitmap=0;boundBlendMode;blendModes;defaultState=new QA({blend:!0});onUpdateContext(){super.onUpdateContext(),this.blendModes=Ho(this._renderer.gl)}toggle(t,e){this._renderer.gl[e?"enable":"disable"](t)}setBlend(t){this.toggle(this._renderer.gl.BLEND,t)}setOffsets(t){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,t)}setCulling(t){this.toggle(this._renderer.gl.CULL_FACE,t)}setDepthTest(t){this.toggle(this._renderer.gl.DEPTH_TEST,t)}setDepthMask(t){this._renderer.gl.depthMask(t)}setClockwiseFrontFace(t){const e=this._renderer.gl;e.frontFace(e[t?"CW":"CCW"])}setBlendMode(t){if(t===this.boundBlendMode)return;this.boundBlendMode=t;const e=this.blendModes[t],A=this._renderer.gl;e.length===2?A.blendFunc(e[0],e[1]):A.blendFuncSeparate(e[0],e[1],e[2],e[3]),e.length===6?(this._blendEq=!0,A.blendEquationSeparate(e[4],e[5])):this._blendEq&&(this._blendEq=!1,A.blendEquationSeparate(A.FUNC_ADD,A.FUNC_ADD))}setPolygonOffset(t,e){this._renderer.gl.polygonOffset(t,e)}bind(t){if(this.boundStateBitmap!==t.bitmap){let e=this.boundStateBitmap^t.bitmap,A=0;for(;e;)e&1&&this._setters[A]?.call(this,!!(t.bitmap&1<<A)),e=e>>1,A++;this.boundStateBitmap=t.bitmap}t.blend&&this.setBlendMode(t.blendMode),t.offsets&&this.setPolygonOffset(1,t.polygonOffset)}reset(){super.reset();const t=this._renderer.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(UA.NORMAL)}}class Ko extends Ee{install(t){super.install(t),t.batch2D=this}_state=QA.for2D();_batchSize=4096*4;_drawCallUid=0;_defaultModulate=4294967295;_defaultBackgroundColor=0;_defaultColorMatrixOffset=[0,0,0,0];_defaultColorMatrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];_batchables=[];_vertexCount=0;_indexCount=0;_attributeBuffer=[];_indexBuffers=[];_shaders=new Map;_attributes={aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aDisableWrapMode:{size:4,normalized:!0,type:"float"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}};_vertexSize=31;_getShader(t){let e=this._shaders.get(t);return e||this._shaders.set(t,e=this._createShader(t)),e}_createShader(t){const e=this._renderer,A=e.program.create({vert:`precision highp float;
|
|
3
3
|
attribute float aTextureId;
|
|
4
4
|
attribute vec2 aPosition;
|
|
5
5
|
attribute vec2 aUv;
|
|
@@ -39,7 +39,7 @@ varying mat4 vColorMatrix;
|
|
|
39
39
|
varying vec4 vColorMatrixOffset;
|
|
40
40
|
varying vec4 vDisableWrapMode;
|
|
41
41
|
|
|
42
|
-
uniform sampler2D samplers[${
|
|
42
|
+
uniform sampler2D samplers[${t}];
|
|
43
43
|
|
|
44
44
|
void main(void) {
|
|
45
45
|
vec4 color;
|
|
@@ -51,11 +51,11 @@ void main(void) {
|
|
|
51
51
|
if (vTextureId < 0.0)
|
|
52
52
|
{
|
|
53
53
|
color = vec4(0.0, 0.0, 0.0, 0.0);
|
|
54
|
-
}${Array.from({length:
|
|
55
|
-
else `),
|
|
56
|
-
if (vTextureId < ${
|
|
54
|
+
}${Array.from({length:t},(l,c)=>{let g=" ";return c>=0&&(g+=`
|
|
55
|
+
else `),c<t-1&&(g+=`
|
|
56
|
+
if (vTextureId < ${c}.5)`),`${g}
|
|
57
57
|
{
|
|
58
|
-
color = texture2D(samplers[${
|
|
58
|
+
color = texture2D(samplers[${c}], vUv);
|
|
59
59
|
}`}).join("")}
|
|
60
60
|
|
|
61
61
|
color += (1.0 - color.a) * vBackgroundColor;
|
|
@@ -65,39 +65,39 @@ void main(void) {
|
|
|
65
65
|
color += vColorMatrixOffset;
|
|
66
66
|
}
|
|
67
67
|
gl_FragColor = color;
|
|
68
|
-
}`}),s=t.buffer.create({target:"array_buffer",data:new Float32Array(1),usage:"dynamic_draw"}),n=t.buffer.create({target:"element_array_buffer",data:new Uint16Array(1),usage:"dynamic_draw"}),o={attributes:Object.fromEntries(Object.entries(this._attributes).map(([c,h])=>[c,{...h,buffer:s}])),elementArrayBuffer:n},a=t.vertexArray.create(i,o),l=new Int32Array(Array.from({length:e},(c,h)=>h));return{update:(c,h)=>{t.vertexArray.bind(a??o),t.buffer.update(s,{target:"array_buffer",data:c}),t.buffer.update(n,{target:"element_array_buffer",data:h})},draw:c=>{const h=this._renderer;h.program.bind(i),h.program.updateUniforms(i,{samplers:l,modulate:[1,1,1,1],translationMatrix:[1,0,0,0,1,0,0,0,1],...h.program.uniforms}),h.vertexArray.bind(a??o),h.draw(c)}}}render(e){const{vertices:t,indices:i}=e,s=t.length/2;this._vertexCount+s>this._batchSize&&this.flush(),this._vertexCount+=s,this._indexCount+=i.length,this._batchables.push(e)}flush(){if(super.flush(),this._vertexCount===0)return;const e=this._vertexCount,t=this._indexCount,i=this._batchables;this._batchables=[],this._vertexCount=0,this._indexCount=0;const s=this._renderer.texture.maxUnits,n=this._getAttributeBuffer(e),o=new Float32Array(n),a=new Uint32Array(n),l=this._getIndexBuffer(t);let c=0,h=0;const f=[];for(let d=i.length,C={id:++this._drawCallUid},p=[],x=new Map,P=0,w=0,R=0;R<d;R++){const v=i[R].texture,m=R===d-1;if(!v||x.has(v)){if(!m)continue}else p.push(v),x.set(v,P++);if(m||P>=s){C.textures=p,C.textureLocationMap=x,P=0,C.first=h;for(let b=w;b<=R;b++){const{indices:D,vertices:z,uvs:Ae=[],texture:W,modulate:K=this._defaultModulate,backgroundColor:te=this._defaultBackgroundColor,colorMatrix:Y=this._defaultColorMatrix,colorMatrixOffset:L=this._defaultColorMatrixOffset,blendMode:se=OA.NORMAL,disableWrapMode:H=!1}=i[b],q=(W?x.get(W):-1)??-1;w<b&&C.blendMode!==se&&(C.count=h-C.first,f.push(C),w=b,C={id:++this._drawCallUid},C.textures=p,C.first=h);const ie=c/this._vertexSize;for(let J=z.length,$=0;$<J;$+=2){o[c++]=q,o[c++]=z[$],o[c++]=z[$+1],o[c++]=Ae[$]??0,o[c++]=Ae[$+1]??0,a[c++]=K,a[c++]=te,o[c++]=H?1:0,o[c++]=0,o[c++]=0,o[c++]=0;for(let N=0;N<4;N++)o[c++]=L[N]??0;for(let N=0;N<16;N++)o[c++]=Y[N]??0}for(let J=D.length,$=0;$<J;$++)l[h++]=ie+D[$];C.blendMode=se}w=R+1,C.count=h-C.first,f.push(C),C={id:++this._drawCallUid},p=[],x=new Map}}const I=this._getShader(s);I.update(n,l);for(let d=f.length,C=0;C<d;C++){const p=f[C],{first:x=0,textures:P,textureLocationMap:w}=p;for(let R=P.length,v=0;v<R;v++){const m=P[v],b=w.get(m);b!==void 0&&this._renderer.texture.bind({target:"texture_2d",location:b,value:m})}this._state.blendMode=p.blendMode,this._renderer.state.bind(this._state),I.draw({mode:"triangles",count:p.count,first:x,bytesPerElement:2})}}_getAttributeBuffer(e){const t=Vs(Math.ceil(e/8)),i=zs(t),s=t*8;this._attributeBuffer.length<=i&&(this._indexBuffers.length=i+1);let n=this._attributeBuffer[s];return n||(this._attributeBuffer[s]=n=new ArrayBuffer(s*this._vertexSize*4)),n}_getIndexBuffer(e){const t=Vs(Math.ceil(e/12)),i=zs(t),s=t*12;this._indexBuffers.length<=i&&(this._indexBuffers.length=i+1);let n=this._indexBuffers[i];return n||(this._indexBuffers[i]=n=new Uint16Array(s)),n}}function Vs(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 zs(r){let A=(r>65535?1:0)<<4;r>>>=A;let e=(r>255?1:0)<<3;return r>>>=e,A|=e,e=(r>15?1:0)<<2,r>>>=e,A|=e,e=(r>3?1:0)<<1,r>>>=e,A|=e,A|r>>1}class sa extends Ct{constructor(){super(...arguments);u(this,"boundArrayBuffer",null);u(this,"boundTarget","array_buffer")}install(e){super.install(e),e.buffer=this}create(e){const t=this.gl.createBuffer();if(!t)throw new Error("failed to create");return e&&(this.bind({target:e.target,value:t}),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({id:Po(e),length:0,byteLength:0,bytesPerElement:0}))}update(...e){if(e.length>1){this.bind({target:e[1].target,value:e[0]}),this.update(e[1]);return}const t=e[0],i=(t.target??this.boundTarget)==="array_buffer"?this.boundArrayBuffer:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer;if(!i)return;const s=this.getMeta(i);Object.assign(s,{target:t.target,usage:t.usage});const n=s.target??this.boundTarget,o=s.usage??"static_draw",a=t.data,l=this.gl;let c;Array.isArray(a)?n==="array_buffer"?c=new Float32Array(a):c=new Uint32Array(a):c=a;const h=this._renderer.getBindPoint(n);c&&c.byteLength<=s.byteLength?l.bufferSubData(h,0,c):(l.bufferData(h,c,this._renderer.getBindPoint(o)),s.length=(c==null?void 0:c.length)??0,s.byteLength=(c==null?void 0:c.byteLength)??0,s.bytesPerElement=s.length?s.byteLength/s.length:0)}bind(e){let{target:t,value:i}=e;if(i){const n=this.getMeta(i);t??(t=n.target??this.boundTarget),n.target=t}else t??(t=this.boundTarget);const s=this._renderer.getBindPoint(t);this._renderer.gl.bindBuffer(s,i),t==="array_buffer"?this.boundArrayBuffer=i:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer=i,this.boundTarget=t}unbind(e){return this.bind({target:e,value:null})}reset(){super.reset(),this.boundArrayBuffer=null,this.boundTarget="array_buffer"}}class na extends Ct{constructor(){super(...arguments);u(this,"boundFramebuffer",null);u(this,"_msaaSamples",[]);u(this,"_hasMRT",!0);u(this,"_writeDepthTexture",!0)}install(e){super.install(e),e.framebuffer=this}onUpdateContext(){if(this._hasMRT=!0,this._writeDepthTexture=!0,this._renderer.version===1){const e=this._renderer.gl,t=this._renderer.extensions.drawBuffers,i=this._renderer.extensions.depthTexture;t?e.drawBuffers=s=>t.drawBuffersWEBGL(s):(this._hasMRT=!1,e.drawBuffers=()=>{}),i||(this._writeDepthTexture=!1)}else{const e=this._renderer.gl;this._msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}}create(e){const t=this._renderer.gl.createFramebuffer();if(!t)throw new Error("Unable to create framebuffer");return e&&(this.bind(t),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({width:0,height:0,mipLevel:0,stencil:!1,depth:!1,depthTexture:null,colorTextures:[],multisample:0}))}update(...e){if(e.length>1)return this.bind(e[0]),this.update(e[1]);const t=this.boundFramebuffer;if(!t)return;const i=e[0],s=this.getMeta(t);Object.assign(s,{...i});const n=this._renderer.gl;let o=s.colorTextures.length;"drawBuffers"in n||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=s.colorTextures[a];this._renderer.texture.bind({location:0,target:"texture_2d",value:l,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+a,n.TEXTURE_2D,l,s.mipLevel),this._renderer.texture.unbind(l)}if(o>1&&n.drawBuffers(s.colorTextures.map((a,l)=>n.COLOR_ATTACHMENT0+l)),s.depthTexture&&(this._renderer.version>1||this._renderer.extensions.depthTexture)&&(this._renderer.texture.bind({location:0,target:"texture_2d",value:s.depthTexture,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,s.depthTexture,s.mipLevel),this._renderer.texture.unbind(s.depthTexture)),(s.stencilBuffer||s.stencil||s.depth)&&!(s.depthTexture&&this._writeDepthTexture)){s.stencilBuffer??(s.stencilBuffer=n.createRenderbuffer()),n.bindRenderbuffer(n.RENDERBUFFER,s.stencilBuffer);const{attachment:a,format:l}=this._getAttachmentAndFormat(s);s.msaaBuffer?n.renderbufferStorageMultisample(n.RENDERBUFFER,s.multisample,l,s.width,s.height):n.renderbufferStorage(n.RENDERBUFFER,l,s.width*this._renderer.pixelRatio,s.height*this._renderer.pixelRatio),n.framebufferRenderbuffer(n.FRAMEBUFFER,a,n.RENDERBUFFER,s.stencilBuffer)}else s.stencilBuffer&&(n.deleteRenderbuffer(s.stencilBuffer),s.stencilBuffer=null)}_getAttachmentAndFormat(e){const t=this.gl;let i,s;return this._renderer.version===1?(i=t.DEPTH_STENCIL_ATTACHMENT,s=t.DEPTH_STENCIL):e.depth&&e.stencil?(i=t.DEPTH_STENCIL_ATTACHMENT,s=t.DEPTH24_STENCIL8):e.depth?(i=t.DEPTH_ATTACHMENT,s=t.DEPTH_COMPONENT24):(i=t.STENCIL_ATTACHMENT,s=t.STENCIL_INDEX8),{attachment:i,format:s}}resize(e,t,i){const s=this.gl,n=this.getMeta(e);if(Object.assign(n,{width:t,height:i}),n.stencil){const{format:a}=this._getAttachmentAndFormat(n);s.bindRenderbuffer(s.RENDERBUFFER,n.stencil),n.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,a,n.width,n.height):s.renderbufferStorage(s.RENDERBUFFER,a,n.width,n.height)}let o=n.colorTextures.length;s.drawBuffers||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=n.colorTextures[a];this._renderer.texture.update(l,{value:{pixels:null,width:n.width,height:n.height}}),a===0&&n.msaaBuffer&&(s.bindRenderbuffer(s.RENDERBUFFER,n.msaaBuffer),s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,s.RGBA,n.width,n.height))}n.depthTexture&&this._renderer.texture.update(n.depthTexture,{value:{pixels:null,width:n.width,height:n.height}})}bind(e){const t=this._renderer.gl,i=e;if({value:this.boundFramebuffer!==i}.value&&(t.bindFramebuffer(t.FRAMEBUFFER,i),this.boundFramebuffer=i),i){const o=this.getMeta(i);for(let c=0;c<o.colorTextures.length;c++)this._renderer.texture.unbind(o.colorTextures[c]);o.depthTexture&&this._renderer.texture.unbind(o.depthTexture);const a=o.width>>o.mipLevel,l=o.height>>o.mipLevel;this._renderer.viewport.bind({x:0,y:0,width:a*this._renderer.pixelRatio,height:l*this._renderer.pixelRatio})}else this._renderer.viewport.bind({x:0,y:0,width:this._renderer.screen.width*this._renderer.pixelRatio,height:this._renderer.screen.height*this._renderer.pixelRatio})}forceStencil(){const e=this.boundFramebuffer;if(!e)return;const t=this.getMeta(e);if(!t||t.stencilBuffer)return;const i=this._renderer.gl;t.stencilBuffer=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,t.stencilBuffer);let s,n;this._renderer.version===1?(s=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH_STENCIL):t.depth?(s=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH24_STENCIL8):(s=i.STENCIL_ATTACHMENT,n=i.STENCIL_INDEX8),t.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,t.multisample,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio):i.renderbufferStorage(i.RENDERBUFFER,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio),i.framebufferRenderbuffer(i.FRAMEBUFFER,s,i.RENDERBUFFER,t.stencilBuffer)}reset(){super.reset(),this.boundFramebuffer=null}}class oa extends Ct{constructor(){super(...arguments);u(this,"stack",[])}install(e){super.install(e),e.mask=this}get length(){return this.stack.length}get last(){return this.stack[this.length-1]}push(e,t){const i={source:e,mask:t};this.stack.push(i),typeof i.mask=="number"?this.pushColorMask(i):"render"in i.mask?this._renderer.stencil.push(i):this._renderer.scissor.push(i)}pop(e){const t=this.stack.pop();!t||t.source!==e||(typeof t.mask=="number"?this.popColorMask(t):"render"in t.mask?this._renderer.stencil.pop(t):this._renderer.scissor.pop(t))}pushColorMask(e){const t=e.preComputedColor??15,i=e.preComputedColor=t&e.mask;i!==t&&this.useColorMask(i)}popColorMask(e){const t=e.preComputedColor??15,i=this.length>0?this.last.preComputedColor??15:15;i!==t&&this.useColorMask(i)}useColorMask(e){this._renderer.gl.colorMask((e&1)!==0,(e&2)!==0,(e&4)!==0,(e&8)!==0)}}class aa extends Ct{constructor(){super(...arguments);u(this,"boundProgram",null);u(this,"uniforms",{projectionMatrix:[1,0,0,0,1,0,0,0,1]})}install(e){super.install(e),e.program=this}create(e){const t=this.gl.createProgram();if(!t)throw new Error("Unable to create program");return e&&this.update(t,e),t}getMeta(e){return this._renderer.getRelated(e,()=>({attributes:new Map,uniforms:new Map,boundUniforms:new xs}))}update(...e){if(e.length>1){const l=this.boundProgram;this.boundProgram=e[0],this.update(e[1]),this.boundProgram=l;return}const t=e[0],i=this.boundProgram;if(!i)return;const s=this.gl,n=this.getMeta(i),o=this.createShader(t.vert,"vertex_shader"),a=this.createShader(t.frag,"fragment_shader");if(s.attachShader(i,o),s.attachShader(i,a),s.linkProgram(i),s.deleteShader(o),s.deleteShader(a),!s.getProgramParameter(i,s.LINK_STATUS))throw new Error(`Unable to link program: ${s.getProgramInfoLog(i)}`);n.attributes.clear(),n.uniforms.clear();for(let l=s.getProgramParameter(i,s.ACTIVE_ATTRIBUTES),c=0;c<l;c++){const h=s.getActiveAttrib(i,c);if(!h||h.name.startsWith("gl_"))continue;const f=this._renderer.bindPoints.get(h.type)??String(h.type);n.attributes.set(h.name,{type:f,name:h.name,size:Xh(f),location:s.getAttribLocation(i,h.name)})}for(let l=s.getProgramParameter(i,s.ACTIVE_UNIFORMS),c=0;c<l;c++){const h=s.getActiveUniform(i,c);if(!h)continue;const f=h.name.replace(/\[.*?\]$/,"");let I=s.getUniformLocation(i,f);I||(I=s.getUniformLocation(i,h.name)),n.uniforms.set(f,{name:f,index:c,type:this._renderer.bindPoints.get(h.type)??String(h.type),size:h.size,isArray:f!==h.name,location:I})}}bind(e){const t=this.gl;({value:this.boundProgram!==e}).value&&(t.useProgram(e),this.boundProgram=e)}createShader(e,t){const i=this.gl,s=i.createShader(this._renderer.getBindPoint(t));if(!s)throw new Error("Unable to create shader");if(i.shaderSource(s,e),i.compileShader(s),!i.getShaderParameter(s,i.COMPILE_STATUS))throw new Error(`Unable to compiling shader :
|
|
69
|
-
${
|
|
70
|
-
${i.getShaderInfoLog(s)}`);return s}updateUniforms(...e){if(e.length>1){this.bind(e[0]),this.updateUniforms(e[1]);return}const t=this.boundProgram;if(!t)return;const i=this.gl,s=e[0],{uniforms:n,boundUniforms:o}=this.getMeta(t);for(const a in s){const l=s[a],c=n.get(a);if(!c)continue;const{type:h,isArray:f,location:I}=c;if(!(!I||o.get(I)===l))switch(o.set(I,l),h){case"float":f?i.uniform1fv(I,l):i.uniform1f(I,l);break;case"unsigned_int":f?i.uniform1uiv(I,l):i.uniform1ui(I,l);break;case"bool":case"int":case"sampler_2d":case"sampler_cube":case"sampler_2d_array":f?i.uniform1iv(I,l):i.uniform1i(I,l);break;case"bool_vec2":case"int_vec2":i.uniform2iv(I,l);break;case"unsigned_int_vec2":i.uniform2uiv(I,l);break;case"float_vec2":i.uniform2fv(I,l);break;case"bool_vec3":case"int_vec3":i.uniform3iv(I,l);break;case"unsigned_int_vec3":i.uniform3uiv(I,l);break;case"float_vec3":i.uniform3fv(I,l);break;case"bool_vec4":case"int_vec4":i.uniform4iv(I,l);break;case"unsigned_int_vec4":i.uniform4uiv(I,l);break;case"float_vec4":i.uniform4fv(I,l);break;case"float_mat2":i.uniformMatrix2fv(I,!1,l);break;case"float_mat3":i.uniformMatrix3fv(I,!1,l);break;case"float_mat4":i.uniformMatrix4fv(I,!1,l);break}}}reset(){super.reset(),this.boundProgram=null,this.uniforms={}}free(){super.free(),this.bind(null)}}function Xh(r){switch(r){case"float":case"int":case"unsigned_int":case"bool":case"sampler_2d":return 1;case"float_vec2":case"int_vec2":case"unsigned_int_vec2":case"bool_vec2":return 2;case"float_vec3":case"int_vec3":case"unsigned_int_vec3":case"bool_vec3":return 3;case"float_vec4":case"int_vec4":case"unsigned_int_vec4":case"bool_vec4":case"float_mat2":return 4;case"float_mat3":return 9;case"float_mat4":return 16;default:return 1}}class la extends Ct{install(A){super.install(A),A.scissor=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.scissorCounter)??0}push(A){const e=this._renderer.gl;e.enable(e.SCISSOR_TEST),A.scissorCounter??(A.scissorCounter=0),A.scissorCounter++,this.use()}pop(A){if(this.length>0)this.use();else{const e=this._renderer.gl;e.disable(e.SCISSOR_TEST)}}use(){const A=this._renderer,{pixelRatio:e,mask:t,viewport:i,screen:s,gl:n}=A,o=t.last.mask;let a;i.boundViewport?a=i.boundViewport.height-(o.height+o.y)*e:a=(s.height-(o.height+o.y))*e,n.scissor(o.x*e,a,o.width*e,o.height*e)}}class ca extends Ct{install(A){super.install(A),A.stencil=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.stencilCounter)??0}push(A){const e=this._renderer.gl,t=A.mask,i=A.stencilCounter??(A.stencilCounter=0);A.stencilCounter===0&&(this._renderer.framebuffer.forceStencil(),e.clearStencil(0),e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST)),A.stencilCounter++;const s=A.color;s&&(A.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilFunc(e.EQUAL,i,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.INCR),t.render(this._renderer),this._renderer.flush(),s&&(A.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}pop(A){const e=this._renderer.gl,t=A.mask;if(!this.length)e.disable(e.STENCIL_TEST);else{const i=this._renderer.mask.last,s=(i==null?void 0:i.color)??15;s!==0&&(i.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),t.render(this._renderer),this._renderer.flush(),s!==0&&(i.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}}use(){const A=this._renderer.gl;A.stencilFunc(A.EQUAL,this.length,4294967295),A.stencilOp(A.KEEP,A.KEEP,A.KEEP)}}function jh(r,A){const e=new Set([...Object.keys(r),...Object.keys(A)]),t={};return e.forEach(i=>{t[i]=r[i]!==A[i]}),t}class ha extends Ct{constructor(){super(...arguments);u(this,"maxUnits",0);u(this,"boundLocation",0);u(this,"boundTarget","texture_2d");u(this,"boundTextures",[]);u(this,"emptyTextures",{texture_2d:null,texture_cube_map:null})}install(e){super.install(e),e.texture=this}onUpdateContext(){super.onUpdateContext();const e=this.gl;this.maxUnits=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);for(let s=0;s<this.maxUnits;s++)this.boundTextures[s]={texture_2d:null,texture_cube_map:null};const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array(4));const i=e.createTexture();e.bindTexture(e.TEXTURE_CUBE_MAP,i);for(let s=0;s<6;s++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MIN_FILTER,e.LINEAR),this.emptyTextures={texture_2d:t,texture_cube_map:i};for(let s=this.boundTextures.length,n=0;n<s;n++)this.unbind(n)}create(e){const t=this.gl.createTexture();if(!t)throw new Error("Unable to create texture");return e&&(this.bind({location:e.location,target:e.target,value:t,forceUpdateLocation:!0}),this.update({filterMode:"linear",wrapMode:"repeat",...e})),t}getMeta(e){return this._renderer.getRelated(e,()=>({}))}update(...e){if(e.length>1){this.bind({location:e[1].location,target:e[1].target,value:e[0],forceUpdateLocation:!0}),this.update(e[1]);return}const t=e[0],{value:i,...s}=t,n=this.boundTextures[this.boundLocation][t.target??this.boundTarget];if(!n)return;const o=this.gl,a=this.getMeta(n),l=jh(a,s);Object.assign(a,s);const c=this._renderer.getBindPoint(a.target??this.boundTarget);if(i!==void 0&&(i===null?o.texImage2D(c,0,o.RGBA,1,1,0,o.RGBA,o.UNSIGNED_BYTE,null):"pixels"in i?o.texImage2D(c,0,o.RGBA,i.width,i.height,0,o.RGBA,o.UNSIGNED_BYTE,i.pixels):o.texImage2D(c,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,i)),l.wrapMode&&a.wrapMode){const f=this._renderer.getBindPoint(a.wrapMode);o.texParameteri(c,o.TEXTURE_WRAP_S,f),o.texParameteri(c,o.TEXTURE_WRAP_T,f)}const h=a.filterMode;if(l.filterMode&&h){const f=this._renderer.getBindPoint(h.split("_")[0]);h.includes("_")?o.texParameteri(c,o.TEXTURE_MIN_FILTER,this._renderer.getBindPoint(h)):o.texParameteri(c,o.TEXTURE_MIN_FILTER,f),o.texParameteri(c,o.TEXTURE_MAG_FILTER,f)}if(a.anisoLevel&&h==="linear"&&this._renderer.extensions.anisotropicFiltering&&l.anisoLevel){const{MAX_TEXTURE_MAX_ANISOTROPY_EXT:f,TEXTURE_MAX_ANISOTROPY_EXT:I}=this._renderer.extensions.anisotropicFiltering;o.texParameterf(c,I,Math.min(a.anisoLevel,o.getParameter(f)))}}bind(e){const t=this.gl;let i,s,n,o;if(e&&"value"in e?{target:s,value:i,location:n,forceUpdateLocation:o}=e:i=e,i){const d=this.getMeta(i);d.target=s??(s=d.target??"texture_2d"),d.location=n??(n=d.location??0)}else s??(s="texture_2d"),n??(n=0);let a=this.boundTextures[n];a||(this.boundTextures[n]=a={texture_2d:null,texture_cube_map:null});const l=a[s]??null,c=this.boundLocation,h=i!==l,f={location:n!==c&&(h||o),texture:h},I=this._renderer.getBindPoint(s);f.location&&(t.activeTexture(t.TEXTURE0+n),this.boundLocation=n),f.texture&&(t.bindTexture(I,i??this.emptyTextures[s]),a[s]=i),this.boundTarget=s}unbind(e,t="texture_2d"){const i=this._renderer.gl;if(typeof e=="number")this.bind({value:null,target:t,location:e});else{const s=this.getMeta(e),{target:n=this.boundTarget}=s,o=this._renderer.getBindPoint(n);for(let a=0;a<this.boundTextures.length;a++)this.boundTextures[a][n]===e&&(this.boundLocation!==a&&(i.activeTexture(i.TEXTURE0+a),this.boundLocation=a),i.bindTexture(o,this.emptyTextures[n]),this.boundTextures[a][n]=null)}}reset(){super.reset(),this.boundLocation=0,this.boundTarget="texture_2d",this.boundTextures=[],this.maxUnits=0}}class ga extends Ct{constructor(){super(...arguments);u(this,"boundVertexArrayNull",{attributes:{},elementArrayBuffer:null});u(this,"boundVertexArrayObject",null);u(this,"boundVertexArray",this.boundVertexArrayNull)}install(e){super.install(e),e.vertexArray=this}enableVertexAttrib(e,t,i,s=1){const{buffer:n,size:o=0,type:a="float",normalized:l=!1,stride:c=0,offset:h=0,divisor:f}=i,I=this._renderer.gl;this._renderer.buffer.bind({target:"array_buffer",value:n});for(let d=0;d<s;d++)I.enableVertexAttribArray(t+d),I.vertexAttribPointer(t+d,o,this._renderer.getBindPoint(a),l,c,h+(c-h)/s*d);f&&("vertexAttribDivisor"in I?I.vertexAttribDivisor(t,f):console.warn("Failed to active vertex array object, GPU Instancing is not supported on this device")),this.boundVertexArray.attributes[e]={enable:!0,...i}}create(...e){const t=this._renderer.gl;if(!("createVertexArray"in t))return null;const i=t.createVertexArray();if(!i)throw new Error("Unable to create vertex array");return e.length===2?this.update(e[0],i,e[1]):e.length===1&&this.update(i,e[0]),i}getVertexArrayMeta(e){return this._renderer.getRelated(e,()=>({attributes:{},elementArrayBuffer:null}))}update(...e){var n,o,a;if(e.length>2){this._renderer.program.bind(e[0]),this.update(e[1],e[2]);return}else if(e.length===2)if(e[0]){const l=e[0],c=e[1],h=this.getVertexArrayMeta(l);this.bind(l),this.update(c),h.attributes=this.boundVertexArray.attributes,h.elementArrayBuffer=this.boundVertexArray.elementArrayBuffer,this.unbind(),this._renderer.buffer.unbind("array_buffer");return}else return this.update(e[1]);const t=this._renderer.program.boundProgram;if(!t)return;const i=e[0];if(i.attributes){const l=this._renderer.program.getMeta(t),c={},h={};for(const I in i.attributes){const d=i.attributes[I],C=l.attributes.get(I);let p;"buffer"in d?p={...d}:p={buffer:d},p.size=p.size||(C==null?void 0:C.size)||0;const x=this._renderer.buffer.getMeta(p.buffer),P=Number(((n=C==null?void 0:C.type.match(/mat(\d)/))==null?void 0:n[1])??1);let w;switch(p.type){case"unsigned_byte":w=p.size;break;case"unsigned_short":w=p.size*2;break;case"float":default:w=p.size*4;break}w*=P,c[o=x.id]??(c[o]=0),c[x.id]+=w,h[I]={attrib:p,meta:x,info:C,byteLength:w,dimension:P}}const f={};for(const I in h){const{attrib:d,meta:C,info:p,byteLength:x,dimension:P}=h[I];(p==null?void 0:p.location)!==void 0&&(f[a=C.id]??(f[a]=0),d.offset??(d.offset=f[C.id]),d.stride??(d.stride=c[C.id]===x?0:c[C.id]),this.enableVertexAttrib(I,p.location,d,P),f[C.id]+=x)}}const s=i.elementArrayBuffer??null;this._renderer.buffer.bind({target:"element_array_buffer",value:s}),this.boundVertexArray.elementArrayBuffer=s}bind(e){const t=this._renderer.gl;if(e&&"attributes"in e)this.update(e);else if("bindVertexArray"in t){const i=this.boundVertexArrayObject;({value:e!==i}).value&&(t.bindVertexArray(e),this.boundVertexArrayObject=e,e?this.boundVertexArray={...this.getVertexArrayMeta(e)}:this.boundVertexArray=this.boundVertexArrayNull)}}unbind(){return this.bind(null)}reset(){super.reset(),this.boundVertexArrayNull={attributes:{},elementArrayBuffer:null},this.boundVertexArray=this.boundVertexArrayNull,this.boundVertexArrayObject=null}}class ua extends Ct{constructor(){super(...arguments);u(this,"boundViewport",{x:0,y:0,width:0,height:0})}install(e){super.install(e),e.viewport=this}bind(e){const t=this.boundViewport,i=Math.floor(e.x),s=Math.floor(e.y),n=Math.floor(e.width),o=Math.floor(e.height);t.x===i&&t.y===s&&t.width===n&&t.height===o||(this._renderer.gl.viewport(i,s,n,o),t.x=i,t.y=s,t.width=n,t.height=o)}reset(){super.reset(),this.boundViewport={x:0,y:0,width:0,height:0}}}class fa extends ta{constructor(e=Yo(),t){super();u(this,"_modules",[new ha,new sa,new na,new aa,new ga,new ua,new ia,new oa,new la,new ca,new ra]);u(this,"bindPoints",new Map);if(!e)throw new Error("Failed to createHTMLCanvas");Jo(e)?this._setupContext(e,t):(this.gl=e,this.version=Ko(this.gl)?2:1),this._setupBindPoints()._setupExtensions()._setupPolyfill(),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this._modules.forEach(i=>i.install(this)),this._modules.forEach(i=>i.onUpdateContext())}_setupContext(e,t){this.view=e;let i=e.getContext("webgl2",t)||e.getContext("experimental-webgl2",t),s=2;if(i||(i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),s=1),!i)throw new Error("Unable to getContext");return this.gl=i,this.version=s,this._onContextLost=this._onContextLost.bind(this),this._onContextRestored=this._onContextRestored.bind(this),e.addEventListener("webglcontextlost",this._onContextLost,!1),e.addEventListener("webglcontextrestored",this._onContextRestored,!1),this}_setupExtensions(){const e=this.gl,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tcSRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc")};return this.version===1?(t.instancedArrays=e.getExtension("ANGLE_instanced_arrays"),t.drawBuffers=e.getExtension("WEBGL_draw_buffers"),t.depthTexture=e.getExtension("WEBGL_depth_texture"),t.vertexArrayObject=e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),t.uint32ElementIndex=e.getExtension("OES_element_index_uint"),t.floatTexture=e.getExtension("OES_texture_float"),t.textureHalfFloat=e.getExtension("OES_texture_half_float"),t.textureHalfFloatLinear=e.getExtension("OES_texture_half_float_linear")):this.version===2&&(t.colorBufferFloat=e.getExtension("EXT_color_buffer_float")),this.extensions=t,this}_setupBindPoints(){for(const e in this.gl)if(e===e.toUpperCase()){const t=this.gl[e];typeof t=="number"&&this.bindPoints.set(t,e.toLowerCase())}return this}_setupPolyfill(){if(this.version===1){const{instancedArrays:e,vertexArrayObject:t,drawBuffers:i}=this.extensions,s=this.gl;t&&(s.createVertexArray=()=>t.createVertexArrayOES(),s.bindVertexArray=n=>t.bindVertexArrayOES(n),s.deleteVertexArray=n=>t.deleteVertexArrayOES(n)),e&&(s.vertexAttribDivisor=(n,o)=>e.vertexAttribDivisorANGLE(n,o),s.drawElementsInstanced=(n,o,a,l,c)=>e.drawElementsInstancedANGLE(n,o,a,l,c),s.drawArraysInstanced=(n,o,a,l)=>e.drawArraysInstancedANGLE(n,o,a,l)),i&&(s.drawBuffers=n=>i.drawBuffersWEBGL(n))}return this}_onContextLost(e){e.preventDefault(),setTimeout(()=>{var t;this.gl.isContextLost()&&((t=this.extensions.loseContext)==null||t.restoreContext())},0)}_onContextRestored(){}getBindPoint(e){return this.gl[e.toUpperCase()]}clear(e=this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT){this.gl.clear(e)}draw(e={}){const{mode:t="triangles",first:i=0,instanceCount:s}=e;let{count:n=0,bytesPerElement:o=0}=e;if(!n||!o){const l=this.vertexArray.boundVertexArray.elementArrayBuffer??Object.values(this.vertexArray.boundVertexArray.attributes)[0];if(l){const c=this.buffer.getMeta(l);n||(n=c.length),o||(o=c.bytesPerElement)}}const a=this.getBindPoint(t);if(o)if(o===2||o===4&&this.extensions.uint32ElementIndex){const l=o===2?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT;s&&"drawElementsInstanced"in this.gl?this.gl.drawElementsInstanced(a,n,l,i*o,s):this.gl.drawElements(a,n,l,i*o)}else console.warn("Unsupported index buffer type: uint32");else s&&"drawArraysInstanced"in this.gl?this.gl.drawArraysInstanced(a,i,n,s):this.gl.drawArrays(a,i,n)}reset(){this._modules.forEach(e=>e.reset())}flush(){this._modules.forEach(e=>e.flush())}free(){var e,t,i;this._modules.forEach(s=>s.free()),(e=this.view)==null||e.removeEventListener("webglcontextlost",this._onContextLost,!1),(t=this.view)==null||t.removeEventListener("webglcontextrestored",this._onContextRestored,!1),(i=this.extensions.loseContext)==null||i.loseContext()}toPixels(){const e=this.gl.drawingBufferWidth,t=this.gl.drawingBufferHeight,i=e*t*4,s=e*4,n=(t-1)*s,o=new Uint8Array(i),a=new Uint8ClampedArray(i);this.gl.readPixels(0,0,e,t,this.gl.RGBA,this.gl.UNSIGNED_BYTE,o);for(let l=0;l<i;l+=s)a.set(o.subarray(l,l+s),n-l);return a}}class rA{}class da extends rA{install(A){const e=async t=>{const{parseFont:i}=await Promise.resolve().then(()=>uI);return await A.fetch(t).then(s=>s.arrayBuffer()).then(s=>i(s))};return this.load=t=>A.loadBy(t,()=>e(t)),["woff","ttf","otf"].forEach(t=>{A.register(t,e)}),A.font=this,this}}const Ia={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};function pa(r){const A=new Js;if(r==="none")return A;const e=Qi(r).reduce((t,{name:i,args:s})=>(t[i]=s[0].normalizedIntValue,t),{});Object.keys(Ia).forEach(t=>{e[t]=e[t]??Ia[t]});for(const t in e){const i=e[t];switch(t){case"hue-rotate":A.hueRotate(i*it);break;case"saturate":A.saturate(i);break;case"brightness":A.brightness(i);break;case"contrast":A.contrast(i);break;case"invert":A.invert(i);break;case"sepia":A.sepia(i);break;case"opacity":A.opacity(i);break;case"grayscale":A.grayscale(i);break}}return A}function Ea(r,A,e,t=new ht){return r=!r||r==="none"?"":r,Qi(r,{width:A,height:e}).forEach(({name:i,args:s})=>{const n=s.map(o=>o.normalizedIntValue);switch(i){case"translate":t.translate(n[0]*A,(n[1]??n[0])*e);break;case"translateX":t.translateX(n[0]*A);break;case"translateY":t.translateY(n[0]*e);break;case"translateZ":t.translateZ(n[0]);break;case"translate3d":t.translate3d(n[0]*A,(n[1]??n[0])*e,n[2]??n[1]??n[0]);break;case"scale":t.scale(n[0],n[1]??n[0]);break;case"scaleX":t.scaleX(n[0]);break;case"scaleY":t.scaleY(n[0]);break;case"scale3d":t.scale3d(n[0],n[1]??n[0],n[2]??n[1]??n[0]);break;case"rotate":t.rotate(n[0]*it);break;case"rotateX":t.rotateX(n[0]*it);break;case"rotateY":t.rotateY(n[0]*it);break;case"rotateZ":t.rotateZ(n[0]*it);break;case"rotate3d":t.rotate3d(n[0]*it,(n[1]??n[0])*it,(n[2]??n[1]??n[0])*it,(n[3]??n[2]??n[1]??n[0])*it);break;case"skew":t.skew(n[0],n[0]??n[1]);break;case"skewX":t.skewX(n[0]);break;case"skewY":t.skewY(n[0]);break;case"matrix":t.set(n);break}}),t}function Ba(r){const[A,e=A]=r.split(" ");return[A,e].map(t=>{switch(t=t.trim(),t){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(t)}})}class Er extends Yt{constructor(e={}){super();u(this,"vertexAttributes");u(this,"indexBuffer");u(this,"instanceCount");u(this,"mode");u(this,"_materialWeakMap",new Os);this.vertexAttributes=new Map(Object.entries((e==null?void 0:e.vertexAttributes)??{})),this.indexBuffer=e==null?void 0:e.indexBuffer,this.instanceCount=e==null?void 0:e.instanceCount,this.mode=(e==null?void 0:e.mode)??"triangles"}_glVertexArray(e){var t;return{attributes:Object.fromEntries(Array.from(this.vertexAttributes).map(([i,s])=>[i,{buffer:s.buffer._glBuffer(e),size:s.size,type:s.type,normalized:s.normalized,stride:s.stride,offset:s.offset,divisor:s.divisor}])),elementArrayBuffer:(t=this.indexBuffer)==null?void 0:t._glBuffer(e)}}_glVertexArrayObject(e,t){let i=this._materialWeakMap.get(t);return i||(i={material:t.instanceId,geometry:this.instanceId},this._materialWeakMap.set(t,i)),e.getRelated(i,()=>e.vertexArray.create(t._glProgram(e),this._glVertexArray(e)))}draw(e,t,i){var a;e.flush(),t.activate(e,i);const s=this._glVertexArrayObject(e,t);let n=!1,o;this.vertexAttributes.forEach(l=>{(o==null?void 0:o.instanceId)!==l.buffer.instanceId&&(o=l.buffer,o.upload(e)&&(n=!0)),l.upload()&&(n=!0)}),(a=this.indexBuffer)!=null&&a.upload(e)&&(n=!0),n&&s&&e.vertexArray.update(t._glProgram(e),s,this._glVertexArray(e)),e.vertexArray.bind(s??this._glVertexArray(e)),e.draw({mode:this.mode,instanceCount:this.instanceCount}),e.vertexArray.unbind()}}var Zh=Object.defineProperty,Ca=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Zh(A,e,i),i};class HA extends Yt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"element_array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}Ca([Ie({default:null})],HA.prototype,"data"),Ca([Ie({default:!1})],HA.prototype,"dynamic");var $h=Object.defineProperty,Qa=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&$h(A,e,i),i};class Wt extends Yt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}Qa([Ie({default:null})],Wt.prototype,"data"),Qa([Ie({default:!1})],Wt.prototype,"dynamic");var eg=Object.defineProperty,wA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&eg(A,e,i),i};class ft extends Yt{constructor(e){super();u(this,"stride");u(this,"offset");u(this,"divisor");u(this,"needsUpload",!1);this.setProperties({buffer:new Wt,...e})}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"buffer":case"size":case"normalized":case"type":case"stride":case"offset":case"divisor":this.needsUpload=!0;break}}upload(){const e=this.needsUpload;return e&&(this.needsUpload=!1),e}}wA([Ie()],ft.prototype,"buffer"),wA([Ie({default:0})],ft.prototype,"size"),wA([Ie({default:!1})],ft.prototype,"normalized"),wA([Ie({default:"float"})],ft.prototype,"type"),wA([Ie()],ft.prototype,"stride"),wA([Ie()],ft.prototype,"offset"),wA([Ie()],ft.prototype,"divisor");class tg extends Er{constructor(){super({vertexAttributes:{position:new ft({buffer:new Wt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new HA({data:new Uint16Array([0,1,3,2]),dynamic:!1}),mode:"triangle_strip"})}}const ns=class ns extends Yt{constructor(e={}){super();u(this,"vert");u(this,"frag");u(this,"uniforms");this.vert=e.vert??`precision highp float;
|
|
68
|
+
}`}),i=e.buffer.create({target:"array_buffer",data:new Float32Array(1),usage:"dynamic_draw"}),s=e.buffer.create({target:"element_array_buffer",data:new Uint16Array(1),usage:"dynamic_draw"}),n={attributes:Object.fromEntries(Object.entries(this._attributes).map(([l,c])=>[l,{...c,buffer:i}])),elementArrayBuffer:s},o=e.vertexArray.create(A,n),a=new Int32Array(Array.from({length:t},(l,c)=>c));return{update:(l,c)=>{e.vertexArray.bind(o??n),e.buffer.update(i,{target:"array_buffer",data:l}),e.buffer.update(s,{target:"element_array_buffer",data:c})},draw:l=>{const c=this._renderer;c.program.bind(A),c.program.updateUniforms(A,{samplers:a,modulate:[1,1,1,1],translationMatrix:[1,0,0,0,1,0,0,0,1],...c.program.uniforms}),c.vertexArray.bind(o??n),c.draw(l)}}}render(t){const{vertices:e,indices:A}=t,i=e.length/2;this._vertexCount+i>this._batchSize&&this.flush(),this._vertexCount+=i,this._indexCount+=A.length,this._batchables.push(t)}flush(){if(super.flush(),this._vertexCount===0)return;const t=this._vertexCount,e=this._indexCount,A=this._batchables;this._batchables=[],this._vertexCount=0,this._indexCount=0;const i=this._renderer.texture.maxUnits,s=this._getAttributeBuffer(t),n=new Float32Array(s),o=new Uint32Array(s),a=this._getIndexBuffer(e);let l=0,c=0;const g=[];for(let d=A.length,f={id:++this._drawCallUid},B=[],p=new Map,S=0,R=0,w=0;w<d;w++){const D=A[w].texture,Q=w===d-1;if(!D||p.has(D)){if(!Q)continue}else B.push(D),p.set(D,S++);if(Q||S>=i){f.textures=B,f.textureLocationMap=p,S=0,f.first=c;for(let m=R;m<=w;m++){const{indices:x,vertices:M,uvs:V=[],texture:et,modulate:z=this._defaultModulate,backgroundColor:J=this._defaultBackgroundColor,colorMatrix:$=this._defaultColorMatrix,colorMatrixOffset:K=this._defaultColorMatrixOffset,blendMode:L=UA.NORMAL,disableWrapMode:it=!1}=A[m],G=(et?p.get(et):-1)??-1;R<m&&f.blendMode!==L&&(f.count=c-f.first,g.push(f),R=m,f={id:++this._drawCallUid},f.textures=B,f.first=c);const W=l/this._vertexSize;for(let At=M.length,T=0;T<At;T+=2){n[l++]=G,n[l++]=M[T],n[l++]=M[T+1],n[l++]=V[T]??0,n[l++]=V[T+1]??0,o[l++]=z,o[l++]=J,n[l++]=it?1:0,n[l++]=0,n[l++]=0,n[l++]=0;for(let tt=0;tt<4;tt++)n[l++]=K[tt]??0;for(let tt=0;tt<16;tt++)n[l++]=$[tt]??0}for(let At=x.length,T=0;T<At;T++)a[c++]=W+x[T];f.blendMode=L}R=w+1,f.count=c-f.first,g.push(f),f={id:++this._drawCallUid},B=[],p=new Map}}const u=this._getShader(i);u.update(s,a);for(let d=g.length,f=0;f<d;f++){const B=g[f],{first:p=0,textures:S,textureLocationMap:R}=B;for(let w=S.length,D=0;D<w;D++){const Q=S[D],m=R.get(Q);m!==void 0&&this._renderer.texture.bind({target:"texture_2d",location:m,value:Q})}this._state.blendMode=B.blendMode,this._renderer.state.bind(this._state),u.draw({mode:"triangles",count:B.count,first:p,bytesPerElement:2})}}_getAttributeBuffer(t){const e=Ss(Math.ceil(t/8)),A=Ms(e),i=e*8;this._attributeBuffer.length<=A&&(this._indexBuffers.length=A+1);let s=this._attributeBuffer[i];return s||(this._attributeBuffer[i]=s=new ArrayBuffer(i*this._vertexSize*4)),s}_getIndexBuffer(t){const e=Ss(Math.ceil(t/12)),A=Ms(e),i=e*12;this._indexBuffers.length<=A&&(this._indexBuffers.length=A+1);let s=this._indexBuffers[A];return s||(this._indexBuffers[A]=s=new Uint16Array(i)),s}}function Ss(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 Ms(r){let t=(r>65535?1:0)<<4;r>>>=t;let e=(r>255?1:0)<<3;return r>>>=e,t|=e,e=(r>15?1:0)<<2,r>>>=e,t|=e,e=(r>3?1:0)<<1,r>>>=e,t|=e,t|r>>1}class Yo extends Ee{install(t){super.install(t),t.buffer=this}boundArrayBuffer=null;boundTarget="array_buffer";create(t){const e=this.gl.createBuffer();if(!e)throw new Error("failed to create");return t&&(this.bind({target:t.target,value:e}),this.update(t)),e}getMeta(t){return this._renderer.getRelated(t,()=>({id:Eo(t),length:0,byteLength:0,bytesPerElement:0}))}update(...t){if(t.length>1){this.bind({target:t[1].target,value:t[0]}),this.update(t[1]);return}const e=t[0],A=(e.target??this.boundTarget)==="array_buffer"?this.boundArrayBuffer:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer;if(!A)return;const i=this.getMeta(A);Object.assign(i,{target:e.target,usage:e.usage});const s=i.target??this.boundTarget,n=i.usage??"static_draw",o=e.data,a=this.gl;let l;Array.isArray(o)?s==="array_buffer"?l=new Float32Array(o):l=new Uint32Array(o):l=o;const c=this._renderer.getBindPoint(s);l&&l.byteLength<=i.byteLength?a.bufferSubData(c,0,l):(a.bufferData(c,l,this._renderer.getBindPoint(n)),i.length=l?.length??0,i.byteLength=l?.byteLength??0,i.bytesPerElement=i.length?i.byteLength/i.length:0)}bind(t){let{target:e,value:A}=t;if(A){const s=this.getMeta(A);e??=s.target??this.boundTarget,s.target=e}else e??=this.boundTarget;const i=this._renderer.getBindPoint(e);this._renderer.gl.bindBuffer(i,A),e==="array_buffer"?this.boundArrayBuffer=A:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer=A,this.boundTarget=e}unbind(t){return this.bind({target:t,value:null})}reset(){super.reset(),this.boundArrayBuffer=null,this.boundTarget="array_buffer"}}class Vo extends Ee{install(t){super.install(t),t.framebuffer=this}boundFramebuffer=null;_msaaSamples=[];_hasMRT=!0;_writeDepthTexture=!0;onUpdateContext(){if(this._hasMRT=!0,this._writeDepthTexture=!0,this._renderer.version===1){const t=this._renderer.gl,e=this._renderer.extensions.drawBuffers,A=this._renderer.extensions.depthTexture;e?t.drawBuffers=i=>e.drawBuffersWEBGL(i):(this._hasMRT=!1,t.drawBuffers=()=>{}),A||(this._writeDepthTexture=!1)}else{const t=this._renderer.gl;this._msaaSamples=t.getInternalformatParameter(t.RENDERBUFFER,t.RGBA8,t.SAMPLES)}}create(t){const e=this._renderer.gl.createFramebuffer();if(!e)throw new Error("Unable to create framebuffer");return t&&(this.bind(e),this.update(t)),e}getMeta(t){return this._renderer.getRelated(t,()=>({width:0,height:0,mipLevel:0,stencil:!1,depth:!1,depthTexture:null,colorTextures:[],multisample:0}))}update(...t){if(t.length>1)return this.bind(t[0]),this.update(t[1]);const e=this.boundFramebuffer;if(!e)return;const A=t[0],i=this.getMeta(e);Object.assign(i,{...A});const s=this._renderer.gl;let n=i.colorTextures.length;"drawBuffers"in s||(n=Math.min(n,1));for(let o=0;o<n;o++){const a=i.colorTextures[o];this._renderer.texture.bind({location:0,target:"texture_2d",value:a,forceUpdateLocation:!0}),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+o,s.TEXTURE_2D,a,i.mipLevel),this._renderer.texture.unbind(a)}if(n>1&&s.drawBuffers(i.colorTextures.map((o,a)=>s.COLOR_ATTACHMENT0+a)),i.depthTexture&&(this._renderer.version>1||this._renderer.extensions.depthTexture)&&(this._renderer.texture.bind({location:0,target:"texture_2d",value:i.depthTexture,forceUpdateLocation:!0}),s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,i.depthTexture,i.mipLevel),this._renderer.texture.unbind(i.depthTexture)),(i.stencilBuffer||i.stencil||i.depth)&&!(i.depthTexture&&this._writeDepthTexture)){i.stencilBuffer??=s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,i.stencilBuffer);const{attachment:o,format:a}=this._getAttachmentAndFormat(i);i.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,i.multisample,a,i.width,i.height):s.renderbufferStorage(s.RENDERBUFFER,a,i.width*this._renderer.pixelRatio,i.height*this._renderer.pixelRatio),s.framebufferRenderbuffer(s.FRAMEBUFFER,o,s.RENDERBUFFER,i.stencilBuffer)}else i.stencilBuffer&&(s.deleteRenderbuffer(i.stencilBuffer),i.stencilBuffer=null)}_getAttachmentAndFormat(t){const e=this.gl;let A,i;return this._renderer.version===1?(A=e.DEPTH_STENCIL_ATTACHMENT,i=e.DEPTH_STENCIL):t.depth&&t.stencil?(A=e.DEPTH_STENCIL_ATTACHMENT,i=e.DEPTH24_STENCIL8):t.depth?(A=e.DEPTH_ATTACHMENT,i=e.DEPTH_COMPONENT24):(A=e.STENCIL_ATTACHMENT,i=e.STENCIL_INDEX8),{attachment:A,format:i}}resize(t,e,A){const i=this.gl,s=this.getMeta(t);if(Object.assign(s,{width:e,height:A}),s.stencil){const{format:o}=this._getAttachmentAndFormat(s);i.bindRenderbuffer(i.RENDERBUFFER,s.stencil),s.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,s.multisample,o,s.width,s.height):i.renderbufferStorage(i.RENDERBUFFER,o,s.width,s.height)}let n=s.colorTextures.length;i.drawBuffers||(n=Math.min(n,1));for(let o=0;o<n;o++){const a=s.colorTextures[o];this._renderer.texture.update(a,{value:{pixels:null,width:s.width,height:s.height}}),o===0&&s.msaaBuffer&&(i.bindRenderbuffer(i.RENDERBUFFER,s.msaaBuffer),i.renderbufferStorageMultisample(i.RENDERBUFFER,s.multisample,i.RGBA,s.width,s.height))}s.depthTexture&&this._renderer.texture.update(s.depthTexture,{value:{pixels:null,width:s.width,height:s.height}})}bind(t){const e=this._renderer.gl,A=t;if({value:this.boundFramebuffer!==A}.value&&(e.bindFramebuffer(e.FRAMEBUFFER,A),this.boundFramebuffer=A),A){const n=this.getMeta(A);for(let l=0;l<n.colorTextures.length;l++)this._renderer.texture.unbind(n.colorTextures[l]);n.depthTexture&&this._renderer.texture.unbind(n.depthTexture);const o=n.width>>n.mipLevel,a=n.height>>n.mipLevel;this._renderer.viewport.bind({x:0,y:0,width:o*this._renderer.pixelRatio,height:a*this._renderer.pixelRatio})}else this._renderer.viewport.bind({x:0,y:0,width:this._renderer.screen.width*this._renderer.pixelRatio,height:this._renderer.screen.height*this._renderer.pixelRatio})}forceStencil(){const t=this.boundFramebuffer;if(!t)return;const e=this.getMeta(t);if(!e||e.stencilBuffer)return;const A=this._renderer.gl;e.stencilBuffer=A.createRenderbuffer(),A.bindRenderbuffer(A.RENDERBUFFER,e.stencilBuffer);let i,s;this._renderer.version===1?(i=A.DEPTH_STENCIL_ATTACHMENT,s=A.DEPTH_STENCIL):e.depth?(i=A.DEPTH_STENCIL_ATTACHMENT,s=A.DEPTH24_STENCIL8):(i=A.STENCIL_ATTACHMENT,s=A.STENCIL_INDEX8),e.msaaBuffer?A.renderbufferStorageMultisample(A.RENDERBUFFER,e.multisample,s,e.width*this._renderer.pixelRatio,e.height*this._renderer.pixelRatio):A.renderbufferStorage(A.RENDERBUFFER,s,e.width*this._renderer.pixelRatio,e.height*this._renderer.pixelRatio),A.framebufferRenderbuffer(A.FRAMEBUFFER,i,A.RENDERBUFFER,e.stencilBuffer)}reset(){super.reset(),this.boundFramebuffer=null}}class zo extends Ee{install(t){super.install(t),t.mask=this}stack=[];get length(){return this.stack.length}get last(){return this.stack[this.length-1]}push(t,e){const A={source:t,mask:e};this.stack.push(A),typeof A.mask=="number"?this.pushColorMask(A):"render"in A.mask?this._renderer.stencil.push(A):this._renderer.scissor.push(A)}pop(t){const e=this.stack.pop();!e||e.source!==t||(typeof e.mask=="number"?this.popColorMask(e):"render"in e.mask?this._renderer.stencil.pop(e):this._renderer.scissor.pop(e))}pushColorMask(t){const e=t.preComputedColor??15,A=t.preComputedColor=e&t.mask;A!==e&&this.useColorMask(A)}popColorMask(t){const e=t.preComputedColor??15,A=this.length>0?this.last.preComputedColor??15:15;A!==e&&this.useColorMask(A)}useColorMask(t){this._renderer.gl.colorMask((t&1)!==0,(t&2)!==0,(t&4)!==0,(t&8)!==0)}}class Wo extends Ee{install(t){super.install(t),t.program=this}boundProgram=null;uniforms={projectionMatrix:[1,0,0,0,1,0,0,0,1]};create(t){const e=this.gl.createProgram();if(!e)throw new Error("Unable to create program");return t&&this.update(e,t),e}getMeta(t){return this._renderer.getRelated(t,()=>({attributes:new Map,uniforms:new Map,boundUniforms:new us}))}update(...t){if(t.length>1){const a=this.boundProgram;this.boundProgram=t[0],this.update(t[1]),this.boundProgram=a;return}const e=t[0],A=this.boundProgram;if(!A)return;const i=this.gl,s=this.getMeta(A),n=this.createShader(e.vert,"vertex_shader"),o=this.createShader(e.frag,"fragment_shader");if(i.attachShader(A,n),i.attachShader(A,o),i.linkProgram(A),i.deleteShader(n),i.deleteShader(o),!i.getProgramParameter(A,i.LINK_STATUS))throw new Error(`Unable to link program: ${i.getProgramInfoLog(A)}`);s.attributes.clear(),s.uniforms.clear();for(let a=i.getProgramParameter(A,i.ACTIVE_ATTRIBUTES),l=0;l<a;l++){const c=i.getActiveAttrib(A,l);if(!c||c.name.startsWith("gl_"))continue;const g=this._renderer.bindPoints.get(c.type)??String(c.type);s.attributes.set(c.name,{type:g,name:c.name,size:Th(g),location:i.getAttribLocation(A,c.name)})}for(let a=i.getProgramParameter(A,i.ACTIVE_UNIFORMS),l=0;l<a;l++){const c=i.getActiveUniform(A,l);if(!c)continue;const g=c.name.replace(/\[.*?\]$/,"");let u=i.getUniformLocation(A,g);u||(u=i.getUniformLocation(A,c.name)),s.uniforms.set(g,{name:g,index:l,type:this._renderer.bindPoints.get(c.type)??String(c.type),size:c.size,isArray:g!==c.name,location:u})}}bind(t){const e=this.gl;({value:this.boundProgram!==t}).value&&(e.useProgram(t),this.boundProgram=t)}createShader(t,e){const A=this.gl,i=A.createShader(this._renderer.getBindPoint(e));if(!i)throw new Error("Unable to create shader");if(A.shaderSource(i,t),A.compileShader(i),!A.getShaderParameter(i,A.COMPILE_STATUS))throw new Error(`Unable to compiling shader :
|
|
69
|
+
${t}
|
|
70
|
+
${A.getShaderInfoLog(i)}`);return i}updateUniforms(...t){if(t.length>1){this.bind(t[0]),this.updateUniforms(t[1]);return}const e=this.boundProgram;if(!e)return;const A=this.gl,i=t[0],{uniforms:s,boundUniforms:n}=this.getMeta(e);for(const o in i){const a=i[o],l=s.get(o);if(!l)continue;const{type:c,isArray:g,location:u}=l;if(!(!u||n.get(u)===a))switch(n.set(u,a),c){case"float":g?A.uniform1fv(u,a):A.uniform1f(u,a);break;case"unsigned_int":g?A.uniform1uiv(u,a):A.uniform1ui(u,a);break;case"bool":case"int":case"sampler_2d":case"sampler_cube":case"sampler_2d_array":g?A.uniform1iv(u,a):A.uniform1i(u,a);break;case"bool_vec2":case"int_vec2":A.uniform2iv(u,a);break;case"unsigned_int_vec2":A.uniform2uiv(u,a);break;case"float_vec2":A.uniform2fv(u,a);break;case"bool_vec3":case"int_vec3":A.uniform3iv(u,a);break;case"unsigned_int_vec3":A.uniform3uiv(u,a);break;case"float_vec3":A.uniform3fv(u,a);break;case"bool_vec4":case"int_vec4":A.uniform4iv(u,a);break;case"unsigned_int_vec4":A.uniform4uiv(u,a);break;case"float_vec4":A.uniform4fv(u,a);break;case"float_mat2":A.uniformMatrix2fv(u,!1,a);break;case"float_mat3":A.uniformMatrix3fv(u,!1,a);break;case"float_mat4":A.uniformMatrix4fv(u,!1,a);break}}}reset(){super.reset(),this.boundProgram=null,this.uniforms={}}free(){super.free(),this.bind(null)}}function Th(r){switch(r){case"float":case"int":case"unsigned_int":case"bool":case"sampler_2d":return 1;case"float_vec2":case"int_vec2":case"unsigned_int_vec2":case"bool_vec2":return 2;case"float_vec3":case"int_vec3":case"unsigned_int_vec3":case"bool_vec3":return 3;case"float_vec4":case"int_vec4":case"unsigned_int_vec4":case"bool_vec4":case"float_mat2":return 4;case"float_mat3":return 9;case"float_mat4":return 16;default:return 1}}class qo extends Ee{install(t){super.install(t),t.scissor=this}get length(){return this._renderer.mask.last?.scissorCounter??0}push(t){const e=this._renderer.gl;e.enable(e.SCISSOR_TEST),t.scissorCounter??=0,t.scissorCounter++,this.use()}pop(t){if(this.length>0)this.use();else{const e=this._renderer.gl;e.disable(e.SCISSOR_TEST)}}use(){const t=this._renderer,{pixelRatio:e,mask:A,viewport:i,screen:s,gl:n}=t,o=A.last.mask;let a;i.boundViewport?a=i.boundViewport.height-(o.height+o.y)*e:a=(s.height-(o.height+o.y))*e,n.scissor(o.x*e,a,o.width*e,o.height*e)}}class Xo extends Ee{install(t){super.install(t),t.stencil=this}get length(){return this._renderer.mask.last?.stencilCounter??0}push(t){const e=this._renderer.gl,A=t.mask,i=t.stencilCounter??=0;t.stencilCounter===0&&(this._renderer.framebuffer.forceStencil(),e.clearStencil(0),e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST)),t.stencilCounter++;const s=t.color;s&&(t.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilFunc(e.EQUAL,i,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.INCR),A.render(this._renderer),this._renderer.flush(),s&&(t.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}pop(t){const e=this._renderer.gl,A=t.mask;if(!this.length)e.disable(e.STENCIL_TEST);else{const i=this._renderer.mask.last,s=i?.color??15;s!==0&&(i.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),A.render(this._renderer),this._renderer.flush(),s!==0&&(i.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}}use(){const t=this._renderer.gl;t.stencilFunc(t.EQUAL,this.length,4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP)}}function Lh(r,t){const e=new Set([...Object.keys(r),...Object.keys(t)]),A={};return e.forEach(i=>{A[i]=r[i]!==t[i]}),A}class jo extends Ee{install(t){super.install(t),t.texture=this}maxUnits=0;boundLocation=0;boundTarget="texture_2d";boundTextures=[];emptyTextures={texture_2d:null,texture_cube_map:null};onUpdateContext(){super.onUpdateContext();const t=this.gl;this.maxUnits=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);for(let i=0;i<this.maxUnits;i++)this.boundTextures[i]={texture_2d:null,texture_cube_map:null};const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array(4));const A=t.createTexture();t.bindTexture(t.TEXTURE_CUBE_MAP,A);for(let i=0;i<6;i++)t.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,null);t.texParameteri(t.TEXTURE_CUBE_MAP,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_CUBE_MAP,t.TEXTURE_MIN_FILTER,t.LINEAR),this.emptyTextures={texture_2d:e,texture_cube_map:A};for(let i=this.boundTextures.length,s=0;s<i;s++)this.unbind(s)}create(t){const e=this.gl.createTexture();if(!e)throw new Error("Unable to create texture");return t&&(this.bind({location:t.location,target:t.target,value:e,forceUpdateLocation:!0}),this.update({filterMode:"linear",wrapMode:"repeat",...t})),e}getMeta(t){return this._renderer.getRelated(t,()=>({}))}update(...t){if(t.length>1){this.bind({location:t[1].location,target:t[1].target,value:t[0],forceUpdateLocation:!0}),this.update(t[1]);return}const e=t[0],{value:A,...i}=e,s=this.boundTextures[this.boundLocation][e.target??this.boundTarget];if(!s)return;const n=this.gl,o=this.getMeta(s),a=Lh(o,i);Object.assign(o,i);const l=this._renderer.getBindPoint(o.target??this.boundTarget);if(A!==void 0&&(A===null?n.texImage2D(l,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,null):"pixels"in A?n.texImage2D(l,0,n.RGBA,A.width,A.height,0,n.RGBA,n.UNSIGNED_BYTE,A.pixels):n.texImage2D(l,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,A)),a.wrapMode&&o.wrapMode){const g=this._renderer.getBindPoint(o.wrapMode);n.texParameteri(l,n.TEXTURE_WRAP_S,g),n.texParameteri(l,n.TEXTURE_WRAP_T,g)}const c=o.filterMode;if(a.filterMode&&c){const g=this._renderer.getBindPoint(c.split("_")[0]);c.includes("_")?n.texParameteri(l,n.TEXTURE_MIN_FILTER,this._renderer.getBindPoint(c)):n.texParameteri(l,n.TEXTURE_MIN_FILTER,g),n.texParameteri(l,n.TEXTURE_MAG_FILTER,g)}if(o.anisoLevel&&c==="linear"&&this._renderer.extensions.anisotropicFiltering&&a.anisoLevel){const{MAX_TEXTURE_MAX_ANISOTROPY_EXT:g,TEXTURE_MAX_ANISOTROPY_EXT:u}=this._renderer.extensions.anisotropicFiltering;n.texParameterf(l,u,Math.min(o.anisoLevel,n.getParameter(g)))}}bind(t){const e=this.gl;let A,i,s,n;if(t&&"value"in t?{target:i,value:A,location:s,forceUpdateLocation:n}=t:A=t,A){const d=this.getMeta(A);d.target=i??=d.target??"texture_2d",d.location=s??=d.location??0}else i??="texture_2d",s??=0;let o=this.boundTextures[s];o||(this.boundTextures[s]=o={texture_2d:null,texture_cube_map:null});const a=o[i]??null,l=this.boundLocation,c=A!==a,g={location:s!==l&&(c||n),texture:c},u=this._renderer.getBindPoint(i);g.location&&(e.activeTexture(e.TEXTURE0+s),this.boundLocation=s),g.texture&&(e.bindTexture(u,A??this.emptyTextures[i]),o[i]=A),this.boundTarget=i}unbind(t,e="texture_2d"){const A=this._renderer.gl;if(typeof t=="number")this.bind({value:null,target:e,location:t});else{const i=this.getMeta(t),{target:s=this.boundTarget}=i,n=this._renderer.getBindPoint(s);for(let o=0;o<this.boundTextures.length;o++)this.boundTextures[o][s]===t&&(this.boundLocation!==o&&(A.activeTexture(A.TEXTURE0+o),this.boundLocation=o),A.bindTexture(n,this.emptyTextures[s]),this.boundTextures[o][s]=null)}}reset(){super.reset(),this.boundLocation=0,this.boundTarget="texture_2d",this.boundTextures=[],this.maxUnits=0}}class Zo extends Ee{install(t){super.install(t),t.vertexArray=this}boundVertexArrayNull={attributes:{},elementArrayBuffer:null};boundVertexArrayObject=null;boundVertexArray=this.boundVertexArrayNull;enableVertexAttrib(t,e,A,i=1){const{buffer:s,size:n=0,type:o="float",normalized:a=!1,stride:l=0,offset:c=0,divisor:g}=A,u=this._renderer.gl;this._renderer.buffer.bind({target:"array_buffer",value:s});for(let d=0;d<i;d++)u.enableVertexAttribArray(e+d),u.vertexAttribPointer(e+d,n,this._renderer.getBindPoint(o),a,l,c+(l-c)/i*d);g&&("vertexAttribDivisor"in u?u.vertexAttribDivisor(e,g):console.warn("Failed to active vertex array object, GPU Instancing is not supported on this device")),this.boundVertexArray.attributes[t]={enable:!0,...A}}create(...t){const e=this._renderer.gl;if(!("createVertexArray"in e))return null;const A=e.createVertexArray();if(!A)throw new Error("Unable to create vertex array");return t.length===2?this.update(t[0],A,t[1]):t.length===1&&this.update(A,t[0]),A}getVertexArrayMeta(t){return this._renderer.getRelated(t,()=>({attributes:{},elementArrayBuffer:null}))}update(...t){if(t.length>2){this._renderer.program.bind(t[0]),this.update(t[1],t[2]);return}else if(t.length===2)if(t[0]){const s=t[0],n=t[1],o=this.getVertexArrayMeta(s);this.bind(s),this.update(n),o.attributes=this.boundVertexArray.attributes,o.elementArrayBuffer=this.boundVertexArray.elementArrayBuffer,this.unbind(),this._renderer.buffer.unbind("array_buffer");return}else return this.update(t[1]);const e=this._renderer.program.boundProgram;if(!e)return;const A=t[0];if(A.attributes){const s=this._renderer.program.getMeta(e),n={},o={};for(const l in A.attributes){const c=A.attributes[l],g=s.attributes.get(l);let u;"buffer"in c?u={...c}:u={buffer:c},u.size=u.size||g?.size||0;const d=this._renderer.buffer.getMeta(u.buffer),f=Number(g?.type.match(/mat(\d)/)?.[1]??1);let B;switch(u.type){case"unsigned_byte":B=u.size;break;case"unsigned_short":B=u.size*2;break;case"float":default:B=u.size*4;break}B*=f,n[d.id]??=0,n[d.id]+=B,o[l]={attrib:u,meta:d,info:g,byteLength:B,dimension:f}}const a={};for(const l in o){const{attrib:c,meta:g,info:u,byteLength:d,dimension:f}=o[l];u?.location!==void 0&&(a[g.id]??=0,c.offset??=a[g.id],c.stride??=n[g.id]===d?0:n[g.id],this.enableVertexAttrib(l,u.location,c,f),a[g.id]+=d)}}const i=A.elementArrayBuffer??null;this._renderer.buffer.bind({target:"element_array_buffer",value:i}),this.boundVertexArray.elementArrayBuffer=i}bind(t){const e=this._renderer.gl;if(t&&"attributes"in t)this.update(t);else if("bindVertexArray"in e){const A=this.boundVertexArrayObject;({value:t!==A}).value&&(e.bindVertexArray(t),this.boundVertexArrayObject=t,t?this.boundVertexArray={...this.getVertexArrayMeta(t)}:this.boundVertexArray=this.boundVertexArrayNull)}}unbind(){return this.bind(null)}reset(){super.reset(),this.boundVertexArrayNull={attributes:{},elementArrayBuffer:null},this.boundVertexArray=this.boundVertexArrayNull,this.boundVertexArrayObject=null}}class $o extends Ee{install(t){super.install(t),t.viewport=this}boundViewport={x:0,y:0,width:0,height:0};bind(t){const e=this.boundViewport,A=Math.floor(t.x),i=Math.floor(t.y),s=Math.floor(t.width),n=Math.floor(t.height);e.x===A&&e.y===i&&e.width===s&&e.height===n||(this._renderer.gl.viewport(A,i,s,n),e.x=A,e.y=i,e.width=s,e.height=n)}reset(){super.reset(),this.boundViewport={x:0,y:0,width:0,height:0}}}class ta extends Oo{_modules=[new jo,new Yo,new Vo,new Wo,new Zo,new $o,new Jo,new zo,new qo,new Xo,new Ko];bindPoints=new Map;constructor(t=So(),e){if(super(),!t)throw new Error("Failed to createHTMLCanvas");Do(t)?this._setupContext(t,e):(this.gl=t,this.version=xo(this.gl)?2:1),this._setupBindPoints()._setupExtensions()._setupPolyfill(),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this._modules.forEach(A=>A.install(this)),this._modules.forEach(A=>A.onUpdateContext())}_setupContext(t,e){this.view=t;let A=t.getContext("webgl2",e)||t.getContext("experimental-webgl2",e),i=2;if(A||(A=t.getContext("webgl",e)||t.getContext("experimental-webgl",e),i=1),!A)throw new Error("Unable to getContext");return this.gl=A,this.version=i,this._onContextLost=this._onContextLost.bind(this),this._onContextRestored=this._onContextRestored.bind(this),t.addEventListener("webglcontextlost",this._onContextLost,!1),t.addEventListener("webglcontextrestored",this._onContextRestored,!1),this}_setupExtensions(){const t=this.gl,e={loseContext:t.getExtension("WEBGL_lose_context"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tcSRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc")};return this.version===1?(e.instancedArrays=t.getExtension("ANGLE_instanced_arrays"),e.drawBuffers=t.getExtension("WEBGL_draw_buffers"),e.depthTexture=t.getExtension("WEBGL_depth_texture"),e.vertexArrayObject=t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),e.uint32ElementIndex=t.getExtension("OES_element_index_uint"),e.floatTexture=t.getExtension("OES_texture_float"),e.textureHalfFloat=t.getExtension("OES_texture_half_float"),e.textureHalfFloatLinear=t.getExtension("OES_texture_half_float_linear")):this.version===2&&(e.colorBufferFloat=t.getExtension("EXT_color_buffer_float")),this.extensions=e,this}_setupBindPoints(){for(const t in this.gl)if(t===t.toUpperCase()){const e=this.gl[t];typeof e=="number"&&this.bindPoints.set(e,t.toLowerCase())}return this}_setupPolyfill(){if(this.version===1){const{instancedArrays:t,vertexArrayObject:e,drawBuffers:A}=this.extensions,i=this.gl;e&&(i.createVertexArray=()=>e.createVertexArrayOES(),i.bindVertexArray=s=>e.bindVertexArrayOES(s),i.deleteVertexArray=s=>e.deleteVertexArrayOES(s)),t&&(i.vertexAttribDivisor=(s,n)=>t.vertexAttribDivisorANGLE(s,n),i.drawElementsInstanced=(s,n,o,a,l)=>t.drawElementsInstancedANGLE(s,n,o,a,l),i.drawArraysInstanced=(s,n,o,a)=>t.drawArraysInstancedANGLE(s,n,o,a)),A&&(i.drawBuffers=s=>A.drawBuffersWEBGL(s))}return this}_onContextLost(t){t.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0)}_onContextRestored(){}getBindPoint(t){return this.gl[t.toUpperCase()]}clear(t=this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT){this.gl.clear(t)}draw(t={}){const{mode:e="triangles",first:A=0,instanceCount:i}=t;let{count:s=0,bytesPerElement:n=0}=t;if(!s||!n){const a=this.vertexArray.boundVertexArray.elementArrayBuffer??Object.values(this.vertexArray.boundVertexArray.attributes)[0];if(a){const l=this.buffer.getMeta(a);s||(s=l.length),n||(n=l.bytesPerElement)}}const o=this.getBindPoint(e);if(n)if(n===2||n===4&&this.extensions.uint32ElementIndex){const a=n===2?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT;i&&"drawElementsInstanced"in this.gl?this.gl.drawElementsInstanced(o,s,a,A*n,i):this.gl.drawElements(o,s,a,A*n)}else console.warn("Unsupported index buffer type: uint32");else i&&"drawArraysInstanced"in this.gl?this.gl.drawArraysInstanced(o,A,s,i):this.gl.drawArrays(o,A,s)}reset(){this._modules.forEach(t=>t.reset())}flush(){this._modules.forEach(t=>t.flush())}free(){this._modules.forEach(t=>t.free()),this.view?.removeEventListener("webglcontextlost",this._onContextLost,!1),this.view?.removeEventListener("webglcontextrestored",this._onContextRestored,!1),this.extensions.loseContext?.loseContext()}toPixels(){const t=this.gl.drawingBufferWidth,e=this.gl.drawingBufferHeight,A=t*e*4,i=t*4,s=(e-1)*i,n=new Uint8Array(A),o=new Uint8ClampedArray(A);this.gl.readPixels(0,0,t,e,this.gl.RGBA,this.gl.UNSIGNED_BYTE,n);for(let a=0;a<A;a+=i)o.set(n.subarray(a,a+i),s-a);return o}}class iA{}class ea extends iA{install(t){const e=async A=>{const{parseFont:i}=await Promise.resolve().then(()=>eI);return await t.fetch(A).then(s=>s.arrayBuffer()).then(s=>i(s))};return this.load=A=>t.loadBy(A,()=>e(A)),["woff","ttf","otf"].forEach(A=>{t.register(A,e)}),t.font=this,this}}const Aa={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};function ia(r){const t=new bs;if(r==="none")return t;const e=ui(r).reduce((A,{name:i,args:s})=>(A[i]=s[0].normalizedIntValue,A),{});Object.keys(Aa).forEach(A=>{e[A]=e[A]??Aa[A]});for(const A in e){const i=e[A];switch(A){case"hue-rotate":t.hueRotate(i*Ae);break;case"saturate":t.saturate(i);break;case"brightness":t.brightness(i);break;case"contrast":t.contrast(i);break;case"invert":t.invert(i);break;case"sepia":t.sepia(i);break;case"opacity":t.opacity(i);break;case"grayscale":t.grayscale(i);break}}return t}function ra(r,t,e,A=new kt){return r=!r||r==="none"?"":r,ui(r,{width:t,height:e}).forEach(({name:i,args:s})=>{const n=s.map(o=>o.normalizedIntValue);switch(i){case"translate":A.translate(n[0]*t,(n[1]??n[0])*e);break;case"translateX":A.translateX(n[0]*t);break;case"translateY":A.translateY(n[0]*e);break;case"translateZ":A.translateZ(n[0]);break;case"translate3d":A.translate3d(n[0]*t,(n[1]??n[0])*e,n[2]??n[1]??n[0]);break;case"scale":A.scale(n[0],n[1]??n[0]);break;case"scaleX":A.scaleX(n[0]);break;case"scaleY":A.scaleY(n[0]);break;case"scale3d":A.scale3d(n[0],n[1]??n[0],n[2]??n[1]??n[0]);break;case"rotate":A.rotate(n[0]*Ae);break;case"rotateX":A.rotateX(n[0]*Ae);break;case"rotateY":A.rotateY(n[0]*Ae);break;case"rotateZ":A.rotateZ(n[0]*Ae);break;case"rotate3d":A.rotate3d(n[0]*Ae,(n[1]??n[0])*Ae,(n[2]??n[1]??n[0])*Ae,(n[3]??n[2]??n[1]??n[0])*Ae);break;case"skew":A.skew(n[0],n[0]??n[1]);break;case"skewX":A.skewX(n[0]);break;case"skewY":A.skewY(n[0]);break;case"matrix":A.set(n);break}}),A}function sa(r){const[t,e=t]=r.split(" ");return[t,e].map(A=>{switch(A=A.trim(),A){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(A)}})}class cr extends Ke{vertexAttributes;indexBuffer;instanceCount;mode;_materialWeakMap=new vs;constructor(t={}){super(),this.vertexAttributes=new Map(Object.entries(t?.vertexAttributes??{})),this.indexBuffer=t?.indexBuffer,this.instanceCount=t?.instanceCount,this.mode=t?.mode??"triangles"}_glVertexArray(t){return{attributes:Object.fromEntries(Array.from(this.vertexAttributes).map(([e,A])=>[e,{buffer:A.buffer._glBuffer(t),size:A.size,type:A.type,normalized:A.normalized,stride:A.stride,offset:A.offset,divisor:A.divisor}])),elementArrayBuffer:this.indexBuffer?._glBuffer(t)}}_glVertexArrayObject(t,e){let A=this._materialWeakMap.get(e);return A||(A={material:e.instanceId,geometry:this.instanceId},this._materialWeakMap.set(e,A)),t.getRelated(A,()=>t.vertexArray.create(e._glProgram(t),this._glVertexArray(t)))}draw(t,e,A){t.flush(),e.activate(t,A);const i=this._glVertexArrayObject(t,e);let s=!1,n;this.vertexAttributes.forEach(o=>{n?.instanceId!==o.buffer.instanceId&&(n=o.buffer,n.upload(t)&&(s=!0)),o.upload()&&(s=!0)}),this.indexBuffer?.upload(t)&&(s=!0),s&&i&&t.vertexArray.update(e._glProgram(t),i,this._glVertexArray(t)),t.vertexArray.bind(i??this._glVertexArray(t)),t.draw({mode:this.mode,instanceCount:this.instanceCount}),t.vertexArray.unbind()}}var Gh=Object.defineProperty,na=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Gh(t,e,i),i};class NA extends Ke{needsUpload=!1;constructor(t){super(),this.setProperties(t)}_glBufferOptions(){return{target:"element_array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(t){return t.getRelated(this,()=>t.buffer.create(this._glBufferOptions()))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"data":case"dynamic":this.needsUpload=!0;break}}upload(t){const e=this.needsUpload;return e&&(this.needsUpload=!1,t.buffer.update(this._glBuffer(t),this._glBufferOptions())),e}}na([dt({default:null})],NA.prototype,"data"),na([dt({default:!1})],NA.prototype,"dynamic");var Oh=Object.defineProperty,oa=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Oh(t,e,i),i};class ze extends Ke{needsUpload=!1;constructor(t){super(),this.setProperties(t)}_glBufferOptions(){return{target:"array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(t){return t.getRelated(this,()=>t.buffer.create(this._glBufferOptions()))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"data":case"dynamic":this.needsUpload=!0;break}}upload(t){const e=this.needsUpload;return e&&(this.needsUpload=!1,t.buffer.update(this._glBuffer(t),this._glBufferOptions())),e}}oa([dt({default:null})],ze.prototype,"data"),oa([dt({default:!1})],ze.prototype,"dynamic");var Hh=Object.defineProperty,yA=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Hh(t,e,i),i};class ge extends Ke{stride;offset;divisor;needsUpload=!1;constructor(t){super(),this.setProperties({buffer:new ze,...t})}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"buffer":case"size":case"normalized":case"type":case"stride":case"offset":case"divisor":this.needsUpload=!0;break}}upload(){const t=this.needsUpload;return t&&(this.needsUpload=!1),t}}yA([dt()],ge.prototype,"buffer"),yA([dt({default:0})],ge.prototype,"size"),yA([dt({default:!1})],ge.prototype,"normalized"),yA([dt({default:"float"})],ge.prototype,"type"),yA([dt()],ge.prototype,"stride"),yA([dt()],ge.prototype,"offset"),yA([dt()],ge.prototype,"divisor");class Jh extends cr{constructor(){super({vertexAttributes:{position:new ge({buffer:new ze({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array([0,1,3,2]),dynamic:!1}),mode:"triangle_strip"})}}class Qt extends Ke{static instance=new this;vert;frag;uniforms;constructor(t={}){super(),this.vert=t.vert??`precision highp float;
|
|
71
71
|
attribute vec2 position;
|
|
72
72
|
uniform mat3 projectionMatrix;
|
|
73
73
|
uniform mat3 modelViewMatrix;
|
|
74
74
|
void main(void) {
|
|
75
75
|
gl_Position = vec4((projectionMatrix * modelViewMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
|
76
|
-
}`,this.frag=
|
|
76
|
+
}`,this.frag=t.frag??`uniform vec4 tint;
|
|
77
77
|
void main(void) {
|
|
78
78
|
gl_FragColor = tint;
|
|
79
|
-
}`,this.uniforms=new Map(Object.entries(
|
|
80
|
-
${
|
|
81
|
-
${
|
|
79
|
+
}`,this.uniforms=new Map(Object.entries(t.uniforms??{projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}))}_glProgram(t){return t.getRelated(this,()=>{let e=this.vert,A=this.frag;return A.includes("precision")||(A=`precision mediump float;
|
|
80
|
+
${A}`),e.includes("precision")||(e=`precision mediump float;
|
|
81
|
+
${e}`),t.program.create({vert:e,frag:A})})}activate(t,e){t.program.bind(this._glProgram(t)),(e||this.uniforms.size>0)&&t.program.updateUniforms({...Object.fromEntries(this.uniforms.entries()),...e})}}const Kh=/^uniform \w+ (.+?);\s*\/\/\s*=\s*([^;]+?)[\s;]*$/gm,Yh=/vec(\d)\((.*)\)/;function Vh(r){r=r.trim();const t=r.match(Yh);if(t){const e=Array.from({length:Number(t[1])},()=>0);return t[2].split(",").forEach((A,i)=>{e[i]=Number(A.trim())}),e}return Number(r)}class di extends Qt{vert=`attribute vec2 position;
|
|
82
82
|
attribute vec2 uv;
|
|
83
83
|
varying vec2 vUv;
|
|
84
84
|
void main() {
|
|
85
85
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
86
86
|
vUv = uv;
|
|
87
|
-
}
|
|
87
|
+
}`;uniforms=new Map([["ratio",0],["from",0],["to",1],["progress",0]]);static RE={getColor:/\sgetColor\s*\(/,getFromColor:/\sgetFromColor\s*\(/,getToColor:/\sgetToColor\s*\(/,transform:/\stransform\s*\(/,transition:/\stransition\s*\(/};has={getColor:!1,getFromColor:!1,getToColor:!1,transform:!1,transition:!1};constructor(t){super();const e=this.has;for(const i in di.RE)e[i]=di.RE[i].test(t);this.frag=`precision highp float;
|
|
88
88
|
varying vec2 vUv;
|
|
89
89
|
uniform float ratio;
|
|
90
90
|
uniform float progress;
|
|
91
|
-
${
|
|
92
|
-
uniform sampler2D from;`:""}${
|
|
91
|
+
${e.getColor||e.getFromColor||e.getToColor?`
|
|
92
|
+
uniform sampler2D from;`:""}${e.getFromColor||e.getToColor?`
|
|
93
93
|
uniform sampler2D to;`:""}
|
|
94
|
-
${
|
|
95
|
-
vec4 getColor(vec2 uv) { return texture2D(from, uv); }`:""}${
|
|
94
|
+
${e.getColor?`
|
|
95
|
+
vec4 getColor(vec2 uv) { return texture2D(from, uv); }`:""}${e.getFromColor||e.getToColor?`
|
|
96
96
|
vec4 getFromColor(vec2 uv) { return texture2D(from, uv); }
|
|
97
97
|
vec4 getToColor(vec2 uv) { return texture2D(to, uv); }`:""}
|
|
98
|
-
${
|
|
99
|
-
void main(void) { gl_FragColor = transform(vUv); }`:
|
|
100
|
-
void main(void) { gl_FragColor = transition(vUv); }`:""}`;const
|
|
98
|
+
${t}${e.transform?`
|
|
99
|
+
void main(void) { gl_FragColor = transform(vUv); }`:e.transition?`
|
|
100
|
+
void main(void) { gl_FragColor = transition(vUv); }`:""}`;const A=t.matchAll(Kh);for(const i of A)i[1]&&i[2]&&i[1].split(",").forEach(s=>{this.uniforms.set(s.trim(),Vh(i[2]))})}}class Ii extends Qt{static _instance;static get instance(){return this._instance??=new this}constructor(){super({vert:`precision highp float;
|
|
101
101
|
attribute vec2 position;
|
|
102
102
|
attribute vec2 uv;
|
|
103
103
|
uniform mat3 projectionMatrix;
|
|
@@ -111,7 +111,7 @@ uniform sampler2D sampler;
|
|
|
111
111
|
uniform vec4 tint;
|
|
112
112
|
void main(void) {
|
|
113
113
|
gl_FragColor = texture2D(sampler, vUv) * tint;
|
|
114
|
-
}`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}u(JA,"_instance");class fe extends Er{static get instance(){return this._instance??(this._instance=new this)}static draw(A,e=JA.instance,t){this.instance.draw(A,e,t)}constructor(){super({vertexAttributes:{position:new ft({buffer:new Wt({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new ft({buffer:new Wt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new HA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}u(fe,"_instance");class sg extends Er{constructor(){const e=new Wt({data:new Float32Array,dynamic:!0}),t=new Wt({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new ft({buffer:e,size:2,normalized:!1,type:"float"}),uv:new ft({buffer:t,size:2,normalized:!1,type:"float"})},indexBuffer:new HA({data:new Uint16Array,dynamic:!0})});u(this,"positionBuffer");u(this,"uvBuffer");this.positionBuffer=e,this.uvBuffer=t}}var ng=Object.defineProperty,KA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&ng(A,e,i),i};class _e extends Yt{constructor(e){super();u(this,"_isPowerOfTwo",!1);u(this,"_needsUpload",!1);this.source=e,this._updateSize()}static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}_glTextureOptions(e,t){let i=this.wrapMode;return e.version===1&&!this._isPowerOfTwo&&(i="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:i,...t}}_glTexture(e,t){return e.getRelated(this,()=>e.texture.create(this._glTextureOptions(e,t)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=Ps(this.realWidth)&&Ps(this.realHeight),this.requestUpload()}_updateSize(){const e=this.source;"pixels"in e?(this.width=e.width/this.pixelRatio,this.height=e.height/this.pixelRatio):(this.width=Number(e.naturalWidth||e.videoWidth||e.width||0)/this.pixelRatio,this.height=Number(e.naturalHeight||e.videoHeight||e.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(e,t){return this._needsUpload&&this.valid?(this._needsUpload=!1,e.texture.update(this._glTexture(e,t),this._glTextureOptions(e,t)),!0):!1}activate(e,t=0){return this.valid?(e.texture.bind({target:"texture_2d",value:this._glTexture(e,{location:t}),location:t}),this.upload(e,{location:t}),!0):!1}inactivate(e){e.texture.unbind(this._glTexture(e))}free(){No&&this.source instanceof ImageBitmap&&this.source.close()}}KA([Ie()],_e.prototype,"source"),KA([M({default:0})],_e.prototype,"width"),KA([M({default:0})],_e.prototype,"height"),KA([M({default:"linear"})],_e.prototype,"filterMode"),KA([M({default:"clamp_to_edge"})],_e.prototype,"wrapMode"),KA([M({default:1})],_e.prototype,"pixelRatio");class Cr extends Yt{constructor(e){super();u(this,"frames");let t;if(Array.isArray(e))t=e;else if(e instanceof _e)t=[{texture:e,duration:0}];else throw new TypeError("Failed new AnimatedTexture");this.frames=t,this.updateDuration()}updateDuration(){return this.duration=this.frames.reduce((e,t)=>t.duration+e,0),this}free(){this.frames.forEach(e=>{e.texture.free()})}}var og=Object.defineProperty,ag=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&og(A,e,i),i};class YA extends _e{constructor(A=document.createElement("canvas")){super(A)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(A,e,t,i)}}ag([M({default:2})],YA.prototype,"pixelRatio");class ya extends _e{constructor(A){const e=new Vt(A);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}class Qr extends _e{static test(A){return Bi(A)}static linearGradient(A,e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=i.getContext("2d");if(!s)throw new Error("Failed to parse linear gradient, get canvas context is null.");let{angle:n=0,stops:o}=A;n-=Math.PI/2;const a=e/2,l=t/2,c=Math.sqrt(e*e+t*t)/2,h=a+c*Math.cos(n+Math.PI),f=l+c*Math.sin(n+Math.PI),I=a+c*Math.cos(n),d=l+c*Math.sin(n),C=s.createLinearGradient(h,f,I,d);o.forEach(x=>{C.addColorStop(x.offset,x.color)}),s.fillStyle=C,s.fillRect(0,0,i.width,i.height);const p=s.getImageData(0,0,i.width,i.height);return{width:p.width,height:p.height,pixels:new Uint8Array(p.data.buffer)}}constructor(A,e,t){super(Qr.linearGradient(A,e,t))}}function lg(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),useBitmap:!!((r==null?void 0:r.useBitmap)??!0)&&Us,crossorigin:(r==null?void 0:r.crossorigin)??null}}class cg extends _e{constructor(e,t){const i=lg(t);super(e);u(this,"bitmap");u(this,"useBitmap");u(this,"preserveBitmap",!1);u(this,"_loadSource");u(this,"_loadBitmap");const s=e.src,n=s.includes(".svg")||s.startsWith("data:image/svg+xml");this.useBitmap=i.useBitmap&&!n,i.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(e=>{this._loadSource=void 0;const t=this.source,i=()=>{t.onload=null,t.onerror=null},s=()=>{i(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>e(this)):e(this)},n=o=>{i(),console.warn(`Failed to load ImageTexture, src: ${t.src}`,o),this.emit("error",o),e(this)};t.complete&&t.src?s():(t.onload=s,t.onerror=n)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!Us)return Promise.resolve(this);const e=this.source,t=!e.crossOrigin||e.crossOrigin==="anonymous";return this._loadBitmap=fetch(e.src,{mode:t?"cors":"no-cors"}).then(i=>i.blob()).then(i=>createImageBitmap(i,0,0,e.width,e.height,{premultiplyAlpha:"premultiply"})).then(i=>(this.bitmap=i,this.requestUpload(),this._loadBitmap=void 0,this)).catch(i=>(console.warn("Failed to genBitmap",i),this)),this._loadBitmap}_glTextureOptions(e){return{...super._glTextureOptions(e),value:this.bitmap??this.source}}upload(e){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const i=this.source;if(yi&&i instanceof HTMLImageElement&&(!i.complete||i.naturalWidth===0))return!1}const t=super.upload(e);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),t}}class Ws extends _e{constructor(A,e=1,t=1){const i={width:e,height:t,pixels:null};A&&(ArrayBuffer.isView(A)?i.pixels=new Uint8Array(A.buffer):i.pixels=new Uint8Array(A)),super(i)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.round(this.width*this.pixelRatio);break;case"height":this.source.height=Math.round(this.height*this.pixelRatio);break;case"pixelRatio":this.source.width=Math.round(this.width*this.pixelRatio),this.source.height=Math.round(this.height*this.pixelRatio);break}super._updateProperty(A,e,t,i)}}var hg=Object.defineProperty,ma=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&hg(A,e,i),i};function gg(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),autoPlay:!!((r==null?void 0:r.autoPlay)??!1),fps:Number((r==null?void 0:r.fps)??0),crossorigin:(r==null?void 0:r.crossorigin)??null,loop:!!((r==null?void 0:r.loop)??!1),muted:!!((r==null?void 0:r.muted)??!1),playsinline:!!((r==null?void 0:r.playsinline)??!0)}}const qs=(NA=class extends _e{constructor(e,t){const i=gg(t);if(!Ho(e)){typeof e=="string"&&(e=[e]);const s=e[0].src||e[0],n=document.createElement("video");i.autoLoad&&n.setAttribute("preload","auto"),i.playsinline&&(n.setAttribute("webkit-playsinline",""),n.setAttribute("playsinline","")),i.muted&&(n.setAttribute("muted",""),n.muted=!0),i.loop&&n.setAttribute("loop",""),i.autoPlay&&n.setAttribute("autoplay",""),zo(n,s,i.crossorigin);for(let o=0;o<e.length;++o){let{src:a,mime:l}=e[o];if(a=a||e[o],a.startsWith("data:"))l=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){const h=a.split("?").shift().toLowerCase(),f=h.slice(h.lastIndexOf(".")+1);l=l||NA.mimeTypes.get(f)||`video/${f}`}const c=document.createElement("source");c.src=a,l&&(c.type=l),n.appendChild(c)}e=n}super(e);u(this,"_spf",0);u(this,"_autoPlay",!1);u(this,"_sourceLoad");u(this,"_nextTime",0);u(this,"_connected",!1);u(this,"_requestId");u(this,"_resolve");u(this,"_reject");u(this,"_onPlayStart",()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()});u(this,"_onPlayStop",()=>{this._setupAutoUpdate()});u(this,"_onCanPlay",()=>{const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!t&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&e.play()});u(this,"_onError",e=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=void 0,this._resolve=void 0)});u(this,"_onSeeked",()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)});u(this,"_videoFrameRequestCallback",()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)});u(this,"requestUpload",()=>{const e=Math.floor(Se.elapsed*this.source.playbackRate);this._nextTime-=e,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)});this.fps=i.fps,this._autoPlay=i.autoPlay,i.autoPlay&&this.load(),this._setupAutoUpdate()}get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(e){this.source.currentTime=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"fps":this._spf=t?Math.floor(1e3/t):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(Se.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(Se.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(Se.off(this.requestUpload),this._connected=!1,this._nextTime=0))}async load(){if(!this._sourceLoad){const e=this.source;(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.isReady?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((t,i)=>{this.valid?(this._sourceLoad=void 0,t(this)):(this._resolve=t,this._reject=i,e.load())})}return this._sourceLoad}free(){this._setupAutoUpdate();const e=this.source;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._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load())}},u(NA,"mimeTypes",new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}))),NA);ma([Ie({default:!0})],qs.prototype,"autoUpdate"),ma([Ie({default:0})],qs.prototype,"fps");let wa=qs;class Xs extends Ws{}class va extends Array{constructor(...e){super();u(this,"front",[]);u(this,"back",[]);this.set(e)}get internal(){return[...this.front,...this,...this.back]}set(e){return this.front.length=0,this.length=0,this.back.length=0,e.forEach(t=>{switch(t.internalMode){case"front":this.front.push(t);break;case"default":this.push(t);break;case"back":this.back.push(t);break}}),this}getInternal(e){switch(e){case"front":return this.front;case"default":return this;case"back":return this.back;default:throw new Error(`Unknown internal mode: ${e}`)}}toJSON(){return[...this]}}var ug=Object.defineProperty,fg=Object.getOwnPropertyDescriptor,sA=(r,A,e,t)=>{for(var i=t>1?void 0:t?fg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ug(A,e,i),i};const _a={};function dg(r){let A=_a[r]??0;return A++,_a[r]=A,A}g.Node=class extends iA{constructor(e,t=[]){super();u(this,"_readyed",!1);u(this,"_tree");u(this,"_parent");u(this,"_children",new va);this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties({name:`${this.tag}:${dg(this.tag)}`,...e}).append(t),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}setProperties(e){if(e){const{meta:t,...i}=e;if(t)for(const s in t)this.meta[s]=t[s];super.setProperties(i)}return this}getName(){return this.name}setName(e){return this.name=e,this}get tree(){return this.getTree()}set tree(e){this.setTree(e)}getTree(){return this._tree}getViewport(){var e;return(e=this._tree)==null?void 0:e.getCurrentViewport()}getWindow(){var e;return(e=this._tree)==null?void 0:e.root}isInsideTree(){return!!this._tree}setTree(e){const t=this._tree;if(!(e!=null&&e.is(t))){t&&this.emit("treeExit",t),this._tree=e,e&&this.emit("treeEnter",e);const i=this._children.internal;for(let s=i.length,n=0;n<s;n++){const o=i[n];!e&&this.emit("childExitingTree",o),o.setTree(e),e&&this.emit("childEnteredTree",o)}e&&(this.emit("treePostEnter",e),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}get parent(){return this._parent}set parent(e){this.setParent(e)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(e){var t;if(!((t=this._parent)!=null&&t.is(e))){const i=this._parent;i&&this.emit("unparented",i),this._parent=e,e&&this.emit("parented",e),this.setTree(e==null?void 0:e._tree)}return this}get children(){return this._children}set children(e){e instanceof va?this._children=e:this._children.set(e)}getChild(e=0){return this._children[e]}get siblingIndex(){return this.getIndex()}set siblingIndex(e){var t;(t=this._parent)==null||t.moveChild(this,e)}get previousSibling(){var e;return(e=this._parent)==null?void 0:e.children[this.getIndex()-1]}get nextSibling(){var e;return(e=this._parent)==null?void 0:e.children[this.getIndex()+1]}get firstSibling(){var e;return(e=this._parent)==null?void 0:e.children[0]}get lastSibling(){var t;const e=(t=this._parent)==null?void 0:t.children;return e?e[e.length-1]:void 0}canProcess(){var e;if(!this._tree)return!1;switch(this.processMode){case"inherit":return((e=this._parent)==null?void 0:e.canProcess())??!0;case"pausable":return!this._tree.processPaused;case"when_paused":return this._tree.processPaused;case"always":return!0;case"disabled":default:return!1}}canRender(){var e;if(!this._tree)return!1;switch(this.renderMode){case"inherit":return((e=this._parent)==null?void 0:e.canRender())??!0;case"always":return!0;case"disabled":default:return!1}}_update(e){super._update(e)}_updateProperty(e,t,i,s){super._updateProperty(e,t,i,s)}_onTreeEnter(e){this._treeEnter(e),this.emit("treeEntered",e)}_onTreeExit(e){this.emit("treeExiting",e),this._treeExit(e),this.emit("treeExited",e)}_onParented(e){this._parented(e)}_onUnparented(e){this._unparented(e)}_onReady(){this._ready()}_onProcess(e=0){const t=this._tree,i=this.canRender(),s=this.canProcess(),n=[],o=[];this._children.internal.forEach(l=>{switch(l.processSortMode){case"default":o.push(l);break;case"parent_before":n.push(l);break}}),n.forEach(l=>{l.emit("process",e)}),s&&(t==null||t.emit("nodeProcessing",this),this.emit("processing",e),this._process(e));let a;if(i){const l=t.renderStack.push(this);a=t.renderStack.currentCall,t.renderStack.currentCall=l}if(this.mask instanceof g.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const l=this.getNode("__$mask");l&&this.removeChild(l)}o.forEach(l=>{l.emit("process",e)}),i&&(t.renderStack.currentCall=a),s&&(this.emit("processed",e),t==null||t.emit("nodeProcessed",this))}render(e,t){const i=this.mask;i&&(e.flush(),e.mask.push(this,i)),this._render(e),t==null||t(),i&&(e.flush(),e.mask.pop(this))}input(e,t){this._children.internal.forEach(i=>i.input(e,t)),this._input(e,t)}getIndex(){var e;return((e=this._parent)==null?void 0:e.children.getInternal(this.internalMode).indexOf(this))??0}getNode(e){return this._children.internal.find(t=>t.name===e)}removeNode(e){var t;(t=this.getNode(e))==null||t.remove()}addSibling(e){return this.is(e)||!this.hasParent()||e.hasParent()?this:(e.internalMode=this.internalMode,this._parent.moveChild(e,this.getIndex()+1),this)}prepend(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.moveChild(i,0)})}append(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.appendChild(i)})}before(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var s;(s=this._parent)==null||s.moveChild(i,this.getIndex())})}after(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var s;(s=this._parent)==null||s.moveChild(i,this.getIndex()+1)})}insertBefore(e,t){return!t.hasParent()||!this.is(t.parent)||this.moveChild(e,t.getIndex()),e}appendChild(e,t=e.internalMode){if(this.is(e)||e.hasParent())return e;switch(t){case"front":this._children.front.push(e);break;case"default":this._children.push(e);break;case"back":this._children.back.push(e);break}return e.internalMode=t,e.setParent(this),this.emit("appendChild",e),e}moveChild(e,t,i=e.internalMode){if(this.is(e)||e.hasParent()&&!this.is(e.parent))return this;const s=this._children.getInternal(e.internalMode),n=s.indexOf(e),o=this._children.getInternal(i);return(e.internalMode!==i||t!==n)&&(n>-1&&s.splice(n,1),e.setParent(this),t>-1&&t<o.length?o.splice(t,0,e):o.push(e),n>-1?this.emit("moveChild",e,t,n):this.emit("appendChild",e)),e.internalMode=i,this}removeChild(e){const t=e.getIndex();return this.is(e.parent)&&t>-1&&(this._children.getInternal(e.internalMode).splice(t,1),e.setParent(void 0),this.emit("removeChild",e,t)),e}removeChildren(){this._children.forEach(e=>this.removeChild(e))}remove(){var e;(e=this._parent)==null||e.removeChild(this)}forEachChild(e){return this._children.forEach(e),this}forEachDescendant(e){return this._children.forEach(t=>{e(t),t.forEachDescendant(e)}),this}forEachAncestor(e){const t=this.parent;return t&&(e(t),t.forEachAncestor(e)),this}_ready(){}_treeEnter(e){}_treeExit(e){}_parented(e){}_unparented(e){}_process(e){}_input(e,t){}_render(e){}clone(){return new this.constructor(this.toJSON().props,this._children.internal)}toJSON(){return{tag:this.tag,props:super.toJSON(),children:[...this._children.map(e=>e.toJSON())]}}static parse(e){if(Array.isArray(e))return e.map(a=>this.parse(a));const{tag:t,props:i,children:s}=e,n=fr.get(t)??g.Node,o=new n(i);return s==null||s.forEach(a=>o.appendChild(this.parse(a))),o}},sA([M()],g.Node.prototype,"name",2),sA([M()],g.Node.prototype,"mask",2),sA([M({default:"inherit"})],g.Node.prototype,"processMode",2),sA([M({default:"default"})],g.Node.prototype,"processSortMode",2),sA([M({default:"inherit"})],g.Node.prototype,"renderMode",2),sA([M({default:"default"})],g.Node.prototype,"internalMode",2),sA([M({default:()=>({})})],g.Node.prototype,"meta",2),g.Node=sA([ne("Node")],g.Node);var Ig=Object.defineProperty,pg=Object.getOwnPropertyDescriptor,wi=(r,A,e,t)=>{for(var i=t>1?void 0:t?pg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ig(A,e,i),i};g.TimelineNode=class extends g.Node{constructor(e,t=[]){super();u(this,"computedDuration",0);u(this,"_currentTime",0);u(this,"_startTime",0);this.setProperties(e).append(t)}get timeline(){var e;return(e=this._tree)==null?void 0:e.timeline}get timelineCurrentTime(){var e;return((e=this.timeline)==null?void 0:e.currentTime)??0}get parentStartTime(){var e;return((e=this._parent)==null?void 0:e.startTime)??0}get currentTime(){return zt(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(e){this.delay=e-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?zt(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const e=this._currentTime;return this.computedDuration?e>=0&&e<=this.computedDuration:e>=0}_updateCurrentTime(e=!1){if(e||!this.paused){const t=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=t!=null&&t.computedDuration?Math.min(this._startTime+this.duration,t.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime),this.insideTimeRange=this.isInsideTimeRange()}}_process(e){super._process(e),this._updateCurrentTime()}},wi([M({default:0})],g.TimelineNode.prototype,"delay",2),wi([M({default:0})],g.TimelineNode.prototype,"duration",2),wi([M({default:!1})],g.TimelineNode.prototype,"paused",2),wi([Ie()],g.TimelineNode.prototype,"insideTimeRange",2),g.TimelineNode=wi([ne("TimelineNode")],g.TimelineNode);var Eg=Object.defineProperty,Bg=Object.getOwnPropertyDescriptor,vi=(r,A,e,t)=>{for(var i=t>1?void 0:t?Bg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Eg(A,e,i),i};g.Viewport=class extends g.Node{constructor(e=!1){super();u(this,"_projection",new $o);u(this,"_framebufferIndex",0);u(this,"_framebuffers",[{texture:new Xs,needsUpload:!1},{texture:new Xs,needsUpload:!1}]);this.flipY=e,this._projection.flipY(e)}get valid(){return!!(this.width&&this.height)}get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(e){const{width:t,height:i}=this,{pixelRatio:s}=e;return this._framebuffers.forEach(n=>{const o=n.texture;o.width=t,o.height=i,o.pixelRatio=s,o.upload(e)}),{width:t,height:i,colorTextures:[this.texture._glTexture(e)]}}_glFramebuffer(e){return e.getRelated(this.framebuffer,()=>e.framebuffer.create(this._glFramebufferOptions(e)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(e=>e.needsUpload=!0)}resize(e,t){this.width=e,this.height=t}upload(e){const t=this.framebuffer;return t.needsUpload&&this.valid?(t.needsUpload=!1,e.framebuffer.update(this._glFramebuffer(e),this._glFramebufferOptions(e)),!0):!1}activate(e){var t;return this.valid?(e.flush(),(t=this._tree)==null||t.setCurrentViewport(this),this.upload(e),e.framebuffer.bind(this._glFramebuffer(e)),!0):!1}redraw(e,t){if(this.valid){e.flush();const i=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(e),e.clear(),i.activate(e,0),t(),!0}return!1}activateWithCopy(e,t){this.resize(t.width,t.height),this.activate(e)&&(e.clear(),t.texture.activate(e,0),fe.draw(e,JA.instance,{sampler:0}))}render(e,t){var s,n;const i=(s=this._tree)==null?void 0:s.getCurrentViewport();this.activate(e),e.clear(),super.render(e,t),e.flush(),i?i.activate(e):(e.framebuffer.bind(null),(n=this._tree)==null||n.setCurrentViewport(void 0))}getRect(){return new Ys(this.x,this.y,this.width,this.height)}toProjectionArray(e=!1){return this._projection.toArray(e)}},vi([M({default:0})],g.Viewport.prototype,"x",2),vi([M({default:0})],g.Viewport.prototype,"y",2),vi([M({default:0})],g.Viewport.prototype,"width",2),vi([M({default:0})],g.Viewport.prototype,"height",2),g.Viewport=vi([ne("Viewport")],g.Viewport);var Cg=Object.defineProperty,Qg=Object.getOwnPropertyDescriptor,_i=(r,A,e,t)=>{for(var i=t>1?void 0:t?Qg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Cg(A,e,i),i};g.Effect=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"viewport1",new g.Viewport);u(this,"viewport2",new g.Viewport);u(this,"_renderId",0);u(this,"_renderViewport");u(this,"_previousSibling");u(this,"_nextSibling");this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(e).append(t)}get _effectMode(){return this.effectMode??"parent"}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"glsl":{const n=new Br(t);!this.effectMode&&n.has.transition&&(this.effectMode="transition"),this.material=n;break}case"glslSrc":{t?Gt.text.load(t).then(n=>this.glsl=n):this.glsl="";break}}}_treeEnter(e){e.on("processing",this._onProcessing),e.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(e),this.viewport2.setTree(e)}_treeExit(e){e.off("processing",this._onProcessing),e.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){if(this.canProcess())switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(e){var i;if(!this.canProcess()||!this.isInsideTimeRange())return;const t=(i=this._tree)==null?void 0:i.renderStack;if(t)switch(this._effectMode){case"transition":e.is(this._previousSibling)?(this._previousSibling=void 0,t.push(this)):e.is(this._nextSibling)&&(this._nextSibling=void 0,t.push(this));break}}_processParent(){var o,a;const e=(o=this._tree)==null?void 0:o.renderStack;if(!e)return;const t=(a=e.currentCall)==null?void 0:a.parentCall;if(!t)return;const i=t.calls;let s,n;i.forEach((l,c)=>{var h;(l.renderable.is(this._parent)||(h=l.renderable.parent)!=null&&h.is(this._parent))&&(s=s??c,n=c)}),!(s===void 0||n===void 0)&&(i.splice(n+1,0,e.createCall(this)),i.splice(s,0,e.createCall(this)))}_processChildren(){var e;this._children.length&&(super.emit("process"),(e=this._tree)==null||e.renderStack.push(this))}_onProcess(e=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(e);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(e){var i;const t=(i=this._tree)==null?void 0:i.getCurrentViewport();t&&this.apply(e,t,{redraw:!0})}_renderTransition(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(e,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(i.activate(e),e.clear(),this.viewport1.texture.activate(e,0),this.viewport2.texture.activate(e,1),this.apply(e,i,{from:this.viewport1,to:this.viewport2}),e.texture.unbind(0),e.texture.unbind(1))}}_renderParentOrChildren(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(this.viewport1.activate(e),this.apply(e,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),i.activate(e),this.viewport1.texture.activate(e,0),fe.draw(e))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const e=this._parent.getRect();if(e)return[e.left/this.viewport1.width,e.top/this.viewport1.height,e.width/this.viewport1.width,e.height/this.viewport1.height]}}_render(e){switch(this._effectMode){case"before":this._renderBefore(e);break;case"transition":this._renderTransition(e);break;case"parent":case"children":default:this._renderParentOrChildren(e);break}this._renderId++}apply(e,t,i){this.material&&(i!=null&&i.redraw?t.redraw(e,()=>{fe.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:t.width/t.height})}):fe.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:i!=null&&i.from?i.from.width/i.from.height:0}))}},_i([Ie()],g.Effect.prototype,"material",2),_i([M()],g.Effect.prototype,"effectMode",2),_i([M({default:""})],g.Effect.prototype,"glsl",2),_i([M({default:""})],g.Effect.prototype,"glslSrc",2),g.Effect=_i([ne("Effect")],g.Effect);var ba=Object.defineProperty,yg=Object.getOwnPropertyDescriptor,mg=(r,A,e)=>A in r?ba(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,qt=(r,A,e,t)=>{for(var i=t>1?void 0:t?yg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ba(A,e,i),i},wg=(r,A,e)=>mg(r,A+"",e);g.ColorAdjustEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{fe.draw(A,g.ColorAdjustEffect.material,{sampler:0,saturation:this.saturation,contrast:this.contrast,brightness:this.brightness,red:this.red,green:this.green,blue:this.blue,alpha:this.alpha,gamma:Math.max(this.gamma??1,1e-4)})})}},wg(g.ColorAdjustEffect,"material",new Ce({vert:`precision mediump float;
|
|
114
|
+
}`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}class ut extends cr{static _instance;static get instance(){return this._instance??=new this}static draw(t,e=Ii.instance,A){this.instance.draw(t,e,A)}constructor(){super({vertexAttributes:{position:new ge({buffer:new ze({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new ge({buffer:new ze({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}class zh extends cr{positionBuffer;uvBuffer;constructor(){const t=new ze({data:new Float32Array,dynamic:!0}),e=new ze({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new ge({buffer:t,size:2,normalized:!1,type:"float"}),uv:new ge({buffer:e,size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array,dynamic:!0})}),this.positionBuffer=t,this.uvBuffer=e}}var Wh=Object.defineProperty,FA=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Wh(t,e,i),i};class vt extends Ke{static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}_isPowerOfTwo=!1;_needsUpload=!1;get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}constructor(t){super(),this.source=t,this._updateSize()}_glTextureOptions(t,e){let A=this.wrapMode;return t.version===1&&!this._isPowerOfTwo&&(A="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:A,...e}}_glTexture(t,e){return t.getRelated(this,()=>t.texture.create(this._glTextureOptions(t,e)))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=ps(this.realWidth)&&ps(this.realHeight),this.requestUpload()}_updateSize(){const t=this.source;"pixels"in t?(this.width=t.width/this.pixelRatio,this.height=t.height/this.pixelRatio):(this.width=Number(t.naturalWidth||t.videoWidth||t.width||0)/this.pixelRatio,this.height=Number(t.naturalHeight||t.videoHeight||t.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(t,e){return this._needsUpload&&this.valid?(this._needsUpload=!1,t.texture.update(this._glTexture(t,e),this._glTextureOptions(t,e)),!0):!1}activate(t,e=0){return this.valid?(t.texture.bind({target:"texture_2d",value:this._glTexture(t,{location:e}),location:e}),this.upload(t,{location:e}),!0):!1}inactivate(t){t.texture.unbind(this._glTexture(t))}free(){Qo&&this.source instanceof ImageBitmap&&this.source.close()}}FA([dt()],vt.prototype,"source"),FA([b({default:0})],vt.prototype,"width"),FA([b({default:0})],vt.prototype,"height"),FA([b({default:"linear"})],vt.prototype,"filterMode"),FA([b({default:"clamp_to_edge"})],vt.prototype,"wrapMode"),FA([b({default:1})],vt.prototype,"pixelRatio");class hr extends Ke{frames;constructor(t){super();let e;if(Array.isArray(t))e=t;else if(t instanceof vt)e=[{texture:t,duration:0}];else throw new TypeError("Failed new AnimatedTexture");this.frames=e,this.updateDuration()}updateDuration(){return this.duration=this.frames.reduce((t,e)=>e.duration+t,0),this}free(){this.frames.forEach(t=>{t.texture.free()})}}var qh=Object.defineProperty,Xh=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&qh(t,e,i),i};class TA extends vt{constructor(t=document.createElement("canvas")){super(t)}_updateProperty(t,e,A,i){switch(t){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(t,e,A,i)}}Xh([b({default:2})],TA.prototype,"pixelRatio");class aa extends vt{constructor(t){const e=new Ye(t);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}class gr extends vt{static test(t){return hi(t)}static linearGradient(t,e,A){const i=document.createElement("canvas");i.width=e,i.height=A;const s=i.getContext("2d");if(!s)throw new Error("Failed to parse linear gradient, get canvas context is null.");let{angle:n=0,stops:o}=t;n-=Math.PI/2;const a=e/2,l=A/2,c=Math.sqrt(e*e+A*A)/2,g=a+c*Math.cos(n+Math.PI),u=l+c*Math.sin(n+Math.PI),d=a+c*Math.cos(n),f=l+c*Math.sin(n),B=s.createLinearGradient(g,u,d,f);o.forEach(S=>{B.addColorStop(S.offset,S.color)}),s.fillStyle=B,s.fillRect(0,0,i.width,i.height);const p=s.getImageData(0,0,i.width,i.height);return{width:p.width,height:p.height,pixels:new Uint8Array(p.data.buffer)}}constructor(t,e,A){super(gr.linearGradient(t,e,A))}}function jh(r){return{autoLoad:!!(r?.autoLoad??!0),useBitmap:!!(r?.useBitmap??!0)&&Bs,crossorigin:r?.crossorigin??null}}class Zh extends vt{bitmap;useBitmap;preserveBitmap=!1;_loadSource;_loadBitmap;constructor(t,e){const A=jh(e);super(t);const i=t.src,s=i.includes(".svg")||i.startsWith("data:image/svg+xml");this.useBitmap=A.useBitmap&&!s,A.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(t=>{this._loadSource=void 0;const e=this.source,A=()=>{e.onload=null,e.onerror=null},i=()=>{A(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>t(this)):t(this)},s=n=>{A(),console.warn(`Failed to load ImageTexture, src: ${e.src}`,n),this.emit("error",n),t(this)};e.complete&&e.src?i():(e.onload=i,e.onerror=s)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!Bs)return Promise.resolve(this);const t=this.source,e=!t.crossOrigin||t.crossOrigin==="anonymous";return this._loadBitmap=fetch(t.src,{mode:e?"cors":"no-cors"}).then(A=>A.blob()).then(A=>createImageBitmap(A,0,0,t.width,t.height,{premultiplyAlpha:"premultiply"})).then(A=>(this.bitmap=A,this.requestUpload(),this._loadBitmap=void 0,this)).catch(A=>(console.warn("Failed to genBitmap",A),this)),this._loadBitmap}_glTextureOptions(t){return{...super._glTextureOptions(t),value:this.bitmap??this.source}}upload(t){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const A=this.source;if(fi&&A instanceof HTMLImageElement&&(!A.complete||A.naturalWidth===0))return!1}const e=super.upload(t);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),e}}class Rs extends vt{constructor(t,e=1,A=1){const i={width:e,height:A,pixels:null};t&&(ArrayBuffer.isView(t)?i.pixels=new Uint8Array(t.buffer):i.pixels=new Uint8Array(t)),super(i)}_updateProperty(t,e,A,i){switch(t){case"width":this.source.width=Math.round(this.width*this.pixelRatio);break;case"height":this.source.height=Math.round(this.height*this.pixelRatio);break;case"pixelRatio":this.source.width=Math.round(this.width*this.pixelRatio),this.source.height=Math.round(this.height*this.pixelRatio);break}super._updateProperty(t,e,A,i)}}var $h=Object.defineProperty,la=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&$h(t,e,i),i};function tg(r){return{autoLoad:!!(r?.autoLoad??!0),autoPlay:!!(r?.autoPlay??!1),fps:Number(r?.fps??0),crossorigin:r?.crossorigin??null,loop:!!(r?.loop??!1),muted:!!(r?.muted??!1),playsinline:!!(r?.playsinline??!0)}}const Ps=class wc extends vt{static mimeTypes=new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}));get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(t){this.source.currentTime=t}_spf=0;_autoPlay=!1;_sourceLoad;_nextTime=0;_connected=!1;_requestId;_resolve;_reject;constructor(t,e){const A=tg(e);if(!bo(t)){typeof t=="string"&&(t=[t]);const i=t[0].src||t[0],s=document.createElement("video");A.autoLoad&&s.setAttribute("preload","auto"),A.playsinline&&(s.setAttribute("webkit-playsinline",""),s.setAttribute("playsinline","")),A.muted&&(s.setAttribute("muted",""),s.muted=!0),A.loop&&s.setAttribute("loop",""),A.autoPlay&&s.setAttribute("autoplay",""),Ro(s,i,A.crossorigin);for(let n=0;n<t.length;++n){let{src:o,mime:a}=t[n];if(o=o||t[n],o.startsWith("data:"))a=o.slice(5,o.indexOf(";"));else if(!o.startsWith("blob:")){const c=o.split("?").shift().toLowerCase(),g=c.slice(c.lastIndexOf(".")+1);a=a||wc.mimeTypes.get(g)||`video/${g}`}const l=document.createElement("source");l.src=o,a&&(l.type=a),s.appendChild(l)}t=s}super(t),this.fps=A.fps,this._autoPlay=A.autoPlay,A.autoPlay&&this.load(),this._setupAutoUpdate()}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"fps":this._spf=e?Math.floor(1e3/e):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_onPlayStart=()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()};_onPlayStop=()=>{this._setupAutoUpdate()};_onCanPlay=()=>{const t=this.source;t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlay);const e=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!e&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&t.play()};_onError=t=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=void 0,this._resolve=void 0)};_onSeeked=()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)};_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(Wt.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(Wt.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(Wt.off(this.requestUpload),this._connected=!1,this._nextTime=0))}_videoFrameRequestCallback=()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)};requestUpload=()=>{const t=Math.floor(Wt.elapsed*this.source.playbackRate);this._nextTime-=t,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)};async load(){if(!this._sourceLoad){const t=this.source;(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this.isReady?this._onCanPlay():(t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlay),t.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((e,A)=>{this.valid?(this._sourceLoad=void 0,e(this)):(this._resolve=e,this._reject=A,t.load())})}return this._sourceLoad}free(){this._setupAutoUpdate();const t=this.source;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlay),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load())}};la([dt({default:!0})],Ps.prototype,"autoUpdate"),la([dt({default:0})],Ps.prototype,"fps");let ca=Ps;class ks extends Rs{}class ha extends Array{front=[];back=[];get internal(){return[...this.front,...this,...this.back]}constructor(...t){super(),this.set(t)}set(t){return this.front.length=0,this.length=0,this.back.length=0,t.forEach(e=>{switch(e.internalMode){case"front":this.front.push(e);break;case"default":this.push(e);break;case"back":this.back.push(e);break}}),this}getInternal(t){switch(t){case"front":return this.front;case"default":return this;case"back":return this.back;default:throw new Error(`Unknown internal mode: ${t}`)}}toJSON(){return[...this]}}var eg=Object.defineProperty,Ag=Object.getOwnPropertyDescriptor,rA=(r,t,e,A)=>{for(var i=A>1?void 0:A?Ag(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&eg(t,e,i),i};const ga={};function ig(r){let t=ga[r]??0;return t++,ga[r]=t,t}h.Node=class extends AA{_readyed=!1;constructor(t,e=[]){super(),this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties({name:`${this.tag}:${ig(this.tag)}`,...t}).append(e),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}setProperties(t){if(t){const{meta:e,...A}=t;if(e)for(const i in e)this.meta[i]=e[i];super.setProperties(A)}return this}getName(){return this.name}setName(t){return this.name=t,this}_tree;get tree(){return this.getTree()}set tree(t){this.setTree(t)}getTree(){return this._tree}getViewport(){return this._tree?.getCurrentViewport()}getWindow(){return this._tree?.root}isInsideTree(){return!!this._tree}setTree(t){const e=this._tree;if(!t?.is(e)){e&&this.emit("treeExit",e),this._tree=t,t&&this.emit("treeEnter",t);const A=this._children.internal;for(let i=A.length,s=0;s<i;s++){const n=A[s];!t&&this.emit("childExitingTree",n),n.setTree(t),t&&this.emit("childEnteredTree",n)}t&&(this.emit("treePostEnter",t),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}_parent;get parent(){return this._parent}set parent(t){this.setParent(t)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(t){if(!this._parent?.is(t)){const e=this._parent;e&&this.emit("unparented",e),this._parent=t,t&&this.emit("parented",t),this.setTree(t?._tree)}return this}_children=new ha;get children(){return this._children}set children(t){t instanceof ha?this._children=t:this._children.set(t)}getChild(t=0){return this._children[t]}get siblingIndex(){return this.getIndex()}set siblingIndex(t){this._parent?.moveChild(this,t)}get previousSibling(){return this._parent?.children[this.getIndex()-1]}get nextSibling(){return this._parent?.children[this.getIndex()+1]}get firstSibling(){return this._parent?.children[0]}get lastSibling(){const t=this._parent?.children;return t?t[t.length-1]:void 0}canProcess(){if(!this._tree)return!1;switch(this.processMode){case"inherit":return this._parent?.canProcess()??!0;case"pausable":return!this._tree.processPaused;case"when_paused":return this._tree.processPaused;case"always":return!0;case"disabled":default:return!1}}canRender(){if(!this._tree)return!1;switch(this.renderMode){case"inherit":return this._parent?.canRender()??!0;case"always":return!0;case"disabled":default:return!1}}_update(t){super._update(t)}_updateProperty(t,e,A,i){super._updateProperty(t,e,A,i)}_onTreeEnter(t){this._treeEnter(t),this.emit("treeEntered",t)}_onTreeExit(t){this.emit("treeExiting",t),this._treeExit(t),this.emit("treeExited",t)}_onParented(t){this._parented(t)}_onUnparented(t){this._unparented(t)}_onReady(){this._ready()}_onProcess(t=0){const e=this._tree,A=this.canRender(),i=this.canProcess(),s=[],n=[];this._children.internal.forEach(a=>{switch(a.processSortMode){case"default":n.push(a);break;case"parent_before":s.push(a);break}}),s.forEach(a=>{a.emit("process",t)}),i&&(e?.emit("nodeProcessing",this),this.emit("processing",t),this._process(t));let o;if(A){const a=e.renderStack.push(this);o=e.renderStack.currentCall,e.renderStack.currentCall=a}if(this.mask instanceof h.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const a=this.getNode("__$mask");a&&this.removeChild(a)}n.forEach(a=>{a.emit("process",t)}),A&&(e.renderStack.currentCall=o),i&&(this.emit("processed",t),e?.emit("nodeProcessed",this))}render(t,e){const A=this.mask;A&&(t.flush(),t.mask.push(this,A)),this._render(t),e?.(),A&&(t.flush(),t.mask.pop(this))}input(t,e){this._children.internal.forEach(A=>A.input(t,e)),this._input(t,e)}getIndex(){return this._parent?.children.getInternal(this.internalMode).indexOf(this)??0}getNode(t){return this._children.internal.find(e=>e.name===t)}removeNode(t){this.getNode(t)?.remove()}addSibling(t){return this.is(t)||!this.hasParent()||t.hasParent()?this:(t.internalMode=this.internalMode,this._parent.moveChild(t,this.getIndex()+1),this)}prepend(...t){let e;Array.isArray(t[0])?e=t[0]:e=t,e.forEach(A=>{this.moveChild(A,0)})}append(...t){let e;Array.isArray(t[0])?e=t[0]:e=t,e.forEach(A=>{this.appendChild(A)})}before(...t){let e;Array.isArray(t[0])?e=t[0]:e=t,e.forEach(A=>{this._parent?.moveChild(A,this.getIndex())})}after(...t){let e;Array.isArray(t[0])?e=t[0]:e=t,e.forEach(A=>{this._parent?.moveChild(A,this.getIndex()+1)})}insertBefore(t,e){return!e.hasParent()||!this.is(e.parent)||this.moveChild(t,e.getIndex()),t}appendChild(t,e=t.internalMode){if(this.is(t)||t.hasParent())return t;switch(e){case"front":this._children.front.push(t);break;case"default":this._children.push(t);break;case"back":this._children.back.push(t);break}return t.internalMode=e,t.setParent(this),this.emit("appendChild",t),t}moveChild(t,e,A=t.internalMode){if(this.is(t)||t.hasParent()&&!this.is(t.parent))return this;const i=this._children.getInternal(t.internalMode),s=i.indexOf(t),n=this._children.getInternal(A);return(t.internalMode!==A||e!==s)&&(s>-1&&i.splice(s,1),t.setParent(this),e>-1&&e<n.length?n.splice(e,0,t):n.push(t),s>-1?this.emit("moveChild",t,e,s):this.emit("appendChild",t)),t.internalMode=A,this}removeChild(t){const e=t.getIndex();return this.is(t.parent)&&e>-1&&(this._children.getInternal(t.internalMode).splice(e,1),t.setParent(void 0),this.emit("removeChild",t,e)),t}removeChildren(){this._children.forEach(t=>this.removeChild(t))}remove(){this._parent?.removeChild(this)}forEachChild(t){return this._children.forEach(t),this}forEachDescendant(t){return this._children.forEach(e=>{t(e),e.forEachDescendant(t)}),this}forEachAncestor(t){const e=this.parent;return e&&(t(e),e.forEachAncestor(t)),this}_ready(){}_treeEnter(t){}_treeExit(t){}_parented(t){}_unparented(t){}_process(t){}_input(t,e){}_render(t){}clone(){return new this.constructor(this.toJSON().props,this._children.internal)}toJSON(){return{tag:this.tag,props:super.toJSON(),children:[...this._children.map(t=>t.toJSON())]}}static parse(t){if(Array.isArray(t))return t.map(o=>this.parse(o));const{tag:e,props:A,children:i}=t,s=nr.get(e)??h.Node,n=new s(A);return i?.forEach(o=>n.appendChild(this.parse(o))),n}},rA([b()],h.Node.prototype,"name",2),rA([b()],h.Node.prototype,"mask",2),rA([b({default:"inherit"})],h.Node.prototype,"processMode",2),rA([b({default:"default"})],h.Node.prototype,"processSortMode",2),rA([b({default:"inherit"})],h.Node.prototype,"renderMode",2),rA([b({default:"default"})],h.Node.prototype,"internalMode",2),rA([b({default:()=>({})})],h.Node.prototype,"meta",2),h.Node=rA([st("Node")],h.Node);var rg=Object.defineProperty,sg=Object.getOwnPropertyDescriptor,pi=(r,t,e,A)=>{for(var i=A>1?void 0:A?sg(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&rg(t,e,i),i};h.TimelineNode=class extends h.Node{constructor(t,e=[]){super(),this.setProperties(t).append(e)}computedDuration=0;_currentTime=0;_startTime=0;get timeline(){return this._tree?.timeline}get timelineCurrentTime(){return this.timeline?.currentTime??0}get parentStartTime(){return this._parent?.startTime??0}get currentTime(){return Ve(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(t){this.delay=t-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?Ve(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const t=this._currentTime;return this.computedDuration?t>=0&&t<=this.computedDuration:t>=0}_updateCurrentTime(t=!1){if(t||!this.paused){const e=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=e?.computedDuration?Math.min(this._startTime+this.duration,e.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime),this.insideTimeRange=this.isInsideTimeRange()}}_process(t){super._process(t),this._updateCurrentTime()}},pi([b({default:0})],h.TimelineNode.prototype,"delay",2),pi([b({default:0})],h.TimelineNode.prototype,"duration",2),pi([b({default:!1})],h.TimelineNode.prototype,"paused",2),pi([dt()],h.TimelineNode.prototype,"insideTimeRange",2),h.TimelineNode=pi([st("TimelineNode")],h.TimelineNode);var ng=Object.defineProperty,og=Object.getOwnPropertyDescriptor,Ei=(r,t,e,A)=>{for(var i=A>1?void 0:A?og(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&ng(t,e,i),i};h.Viewport=class extends h.Node{constructor(t=!1){super(),this.flipY=t,this._projection.flipY(t)}get valid(){return!!(this.width&&this.height)}_projection=new Lo;_framebufferIndex=0;_framebuffers=[{texture:new ks,needsUpload:!1},{texture:new ks,needsUpload:!1}];get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(t){const{width:e,height:A}=this,{pixelRatio:i}=t;return this._framebuffers.forEach(s=>{const n=s.texture;n.width=e,n.height=A,n.pixelRatio=i,n.upload(t)}),{width:e,height:A,colorTextures:[this.texture._glTexture(t)]}}_glFramebuffer(t){return t.getRelated(this.framebuffer,()=>t.framebuffer.create(this._glFramebufferOptions(t)))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(t=>t.needsUpload=!0)}resize(t,e){this.width=t,this.height=e}upload(t){const e=this.framebuffer;return e.needsUpload&&this.valid?(e.needsUpload=!1,t.framebuffer.update(this._glFramebuffer(t),this._glFramebufferOptions(t)),!0):!1}activate(t){return this.valid?(t.flush(),this._tree?.setCurrentViewport(this),this.upload(t),t.framebuffer.bind(this._glFramebuffer(t)),!0):!1}redraw(t,e){if(this.valid){t.flush();const A=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(t),t.clear(),A.activate(t,0),e(),!0}return!1}activateWithCopy(t,e){this.resize(e.width,e.height),this.activate(t)&&(t.clear(),e.texture.activate(t,0),ut.draw(t,Ii.instance,{sampler:0}))}render(t,e){const A=this._tree?.getCurrentViewport();this.activate(t),t.clear(),super.render(t,e),t.flush(),A?A.activate(t):(t.framebuffer.bind(null),this._tree?.setCurrentViewport(void 0))}getRect(){return new xs(this.x,this.y,this.width,this.height)}toProjectionArray(t=!1){return this._projection.toArray(t)}},Ei([b({default:0})],h.Viewport.prototype,"x",2),Ei([b({default:0})],h.Viewport.prototype,"y",2),Ei([b({default:0})],h.Viewport.prototype,"width",2),Ei([b({default:0})],h.Viewport.prototype,"height",2),h.Viewport=Ei([st("Viewport")],h.Viewport);var ag=Object.defineProperty,lg=Object.getOwnPropertyDescriptor,Bi=(r,t,e,A)=>{for(var i=A>1?void 0:A?lg(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&ag(t,e,i),i};h.Effect=class extends h.TimelineNode{get _effectMode(){return this.effectMode??"parent"}viewport1=new h.Viewport;viewport2=new h.Viewport;_renderId=0;_renderViewport;_previousSibling;_nextSibling;constructor(t,e=[]){super(),this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(t).append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"glsl":{const s=new di(e);!this.effectMode&&s.has.transition&&(this.effectMode="transition"),this.material=s;break}case"glslSrc":{e?Te.text.load(e).then(s=>this.glsl=s):this.glsl="";break}}}_treeEnter(t){t.on("processing",this._onProcessing),t.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(t),this.viewport2.setTree(t)}_treeExit(t){t.off("processing",this._onProcessing),t.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){if(this.canProcess())switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(t){if(!this.canProcess()||!this.isInsideTimeRange())return;const e=this._tree?.renderStack;if(e)switch(this._effectMode){case"transition":t.is(this._previousSibling)?(this._previousSibling=void 0,e.push(this)):t.is(this._nextSibling)&&(this._nextSibling=void 0,e.push(this));break}}_processParent(){const t=this._tree?.renderStack;if(!t)return;const e=t.currentCall?.parentCall;if(!e)return;const A=e.calls;let i,s;A.forEach((n,o)=>{(n.renderable.is(this._parent)||n.renderable.parent?.is(this._parent))&&(i=i??o,s=o)}),!(i===void 0||s===void 0)&&(A.splice(s+1,0,t.createCall(this)),A.splice(i,0,t.createCall(this)))}_processChildren(){this._children.length&&(super.emit("process"),this._tree?.renderStack.push(this))}_onProcess(t=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(t);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(t){const e=this._tree?.getCurrentViewport();e&&this.apply(t,e,{redraw:!0})}_renderTransition(t){if(this._renderId%2===0)this._renderViewport=this._tree?.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(t,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(t),t.clear();else{const e=this._renderViewport;this._renderViewport=void 0,e&&(e.activate(t),t.clear(),this.viewport1.texture.activate(t,0),this.viewport2.texture.activate(t,1),this.apply(t,e,{from:this.viewport1,to:this.viewport2}),t.texture.unbind(0),t.texture.unbind(1))}}_renderParentOrChildren(t){if(this._renderId%2===0)this._renderViewport=this._tree?.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(t),t.clear();else{const e=this._renderViewport;this._renderViewport=void 0,e&&(this.viewport1.activate(t),this.apply(t,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),e.activate(t),this.viewport1.texture.activate(t,0),ut.draw(t))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const t=this._parent.getRect();if(t)return[t.left/this.viewport1.width,t.top/this.viewport1.height,t.width/this.viewport1.width,t.height/this.viewport1.height]}}_render(t){switch(this._effectMode){case"before":this._renderBefore(t);break;case"transition":this._renderTransition(t);break;case"parent":case"children":default:this._renderParentOrChildren(t);break}this._renderId++}apply(t,e,A){this.material&&(A?.redraw?e.redraw(t,()=>{ut.draw(t,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:e.width/e.height})}):ut.draw(t,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:A?.from?A.from.width/A.from.height:0}))}},Bi([dt()],h.Effect.prototype,"material",2),Bi([b()],h.Effect.prototype,"effectMode",2),Bi([b({default:""})],h.Effect.prototype,"glsl",2),Bi([b({default:""})],h.Effect.prototype,"glslSrc",2),h.Effect=Bi([st("Effect")],h.Effect);var ua=Object.defineProperty,cg=Object.getOwnPropertyDescriptor,hg=(r,t,e)=>t in r?ua(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,We=(r,t,e,A)=>{for(var i=A>1?void 0:A?cg(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&ua(t,e,i),i},gg=(r,t,e)=>hg(r,t+"",e);h.ColorAdjustEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){e.redraw(t,()=>{ut.draw(t,h.ColorAdjustEffect.material,{sampler:0,saturation:this.saturation,contrast:this.contrast,brightness:this.brightness,red:this.red,green:this.green,blue:this.blue,alpha:this.alpha,gamma:Math.max(this.gamma??1,1e-4)})})}},gg(h.ColorAdjustEffect,"material",new Qt({vert:`precision mediump float;
|
|
115
115
|
attribute vec2 position;
|
|
116
116
|
attribute vec2 uv;
|
|
117
117
|
varying vec2 vUv;
|
|
@@ -142,7 +142,7 @@ void main(void) {
|
|
|
142
142
|
c.rgb *= c.a;
|
|
143
143
|
}
|
|
144
144
|
gl_FragColor = c * alpha;
|
|
145
|
-
}`})),
|
|
145
|
+
}`})),We([b({default:1})],h.ColorAdjustEffect.prototype,"saturation",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"contrast",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"brightness",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"red",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"green",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"blue",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"alpha",2),We([b({default:1})],h.ColorAdjustEffect.prototype,"gamma",2),h.ColorAdjustEffect=We([st("ColorAdjustEffect")],h.ColorAdjustEffect);var fa=Object.defineProperty,ug=Object.getOwnPropertyDescriptor,fg=(r,t,e)=>t in r?fa(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,da=(r,t,e,A)=>{for(var i=A>1?void 0:A?ug(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&fa(t,e,i),i},dg=(r,t,e)=>fg(r,t+"",e);h.ColorFilterEffect=class extends h.Effect{_colorMatrix=new bs;constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){if(!this.filter)return;const A=ui(this.filter),i=this._colorMatrix.identity();A.forEach(({name:s,args:n})=>{const o=n.map(a=>a.normalizedIntValue);switch(s){case"hue-rotate":case"hueRotate":i.hueRotate(o[0]*Ae);break;case"saturate":i.saturate(o[0]);break;case"brightness":i.brightness(o[0]);break;case"contrast":i.contrast(o[0]);break;case"invert":i.invert(o[0]);break;case"sepia":i.sepia(o[0]);break;case"opacity":i.opacity(o[0]);break;case"grayscale":i.grayscale(o[0]);break}}),e.redraw(t,()=>{ut.draw(t,h.ColorFilterEffect.material,{sampler:0,m:i.toArray()})})}},dg(h.ColorFilterEffect,"material",new Qt({vert:`precision mediump float;
|
|
146
146
|
attribute vec2 position;
|
|
147
147
|
attribute vec2 uv;
|
|
148
148
|
varying vec2 vUv;
|
|
@@ -165,7 +165,7 @@ void main(void) {
|
|
|
165
165
|
m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14] / 255.0,
|
|
166
166
|
m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19] / 255.0
|
|
167
167
|
);
|
|
168
|
-
}`})),
|
|
168
|
+
}`})),da([b()],h.ColorFilterEffect.prototype,"filter",2),h.ColorFilterEffect=da([st("ColorFilterEffect")],h.ColorFilterEffect);var Ia=Object.defineProperty,Ig=Object.getOwnPropertyDescriptor,pg=(r,t,e)=>t in r?Ia(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Us=(r,t,e,A)=>{for(var i=A>1?void 0:A?Ig(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Ia(t,e,i),i},Eg=(r,t,e)=>pg(r,t+"",e);const Ci=50;h.ColorOverlayEffect=class extends h.Effect{_color=new Ye;constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){e.redraw(t,()=>{const A=this.colors.map(i=>{this._color.value=i;const s=this._color.toArray();return s[3]=this.alpha,s});for(;A.length<Ci;)A.push([0,0,0,0]);ut.draw(t,h.ColorOverlayEffect.material,{sampler:0,colors:A.slice(0,Ci).flatMap(i=>i)})})}},Eg(h.ColorOverlayEffect,"material",new Qt({vert:`precision mediump float;
|
|
169
169
|
attribute vec2 position;
|
|
170
170
|
attribute vec2 uv;
|
|
171
171
|
varying vec2 vUv;
|
|
@@ -174,7 +174,7 @@ void main() {
|
|
|
174
174
|
vUv = uv;
|
|
175
175
|
}`,frag:`precision mediump float;
|
|
176
176
|
uniform sampler2D sampler;
|
|
177
|
-
uniform vec4 colors[${
|
|
177
|
+
uniform vec4 colors[${Ci}];
|
|
178
178
|
varying vec2 vUv;
|
|
179
179
|
|
|
180
180
|
float calcWidth() {
|
|
@@ -183,7 +183,7 @@ float calcWidth() {
|
|
|
183
183
|
|
|
184
184
|
int calcCount() {
|
|
185
185
|
int count = 0;
|
|
186
|
-
for (int i = 0; i < ${
|
|
186
|
+
for (int i = 0; i < ${Ci}; i++) {
|
|
187
187
|
if (colors[i] != vec4(0,0,0,0)){
|
|
188
188
|
count++;
|
|
189
189
|
}
|
|
@@ -195,7 +195,7 @@ vec4 calcColor(float x) {
|
|
|
195
195
|
float perUnit = calcWidth() / float(calcCount());
|
|
196
196
|
int index = int(x / perUnit);
|
|
197
197
|
|
|
198
|
-
for(int i=0; i<${
|
|
198
|
+
for(int i=0; i<${Ci}; i++){
|
|
199
199
|
if(i==index){
|
|
200
200
|
return colors[i];
|
|
201
201
|
}
|
|
@@ -208,7 +208,7 @@ void main(void) {
|
|
|
208
208
|
vec4 color = texture2D(sampler, vUv);
|
|
209
209
|
vec4 mask = calcColor(vUv.x);
|
|
210
210
|
gl_FragColor = vec4(mix(color.rgb, mask.rgb, color.a * mask.a), color.a);
|
|
211
|
-
}`})),
|
|
211
|
+
}`})),Us([b({default:()=>[]})],h.ColorOverlayEffect.prototype,"colors",2),Us([b({default:.5})],h.ColorOverlayEffect.prototype,"alpha",2),h.ColorOverlayEffect=Us([st("ColorOverlayEffect")],h.ColorOverlayEffect);var pa=Object.defineProperty,Bg=Object.getOwnPropertyDescriptor,Cg=(r,t,e)=>t in r?pa(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Ns=(r,t,e,A)=>{for(var i=A>1?void 0:A?Bg(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&pa(t,e,i),i},Qg=(r,t,e)=>Cg(r,t+"",e);h.ColorRemoveEffect=class extends h.Effect{_color=new Ye;constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){const i=new Float32Array(150),s=this.colors.map(n=>(this._color.value=n,this._color.toArray().slice(0,3)));for(;s.length<50;)s.push([-1,0,0]);s.slice(0,50).forEach((n,o)=>{i[o*3]=n[0],i[o*3+1]=n[1],i[o*3+2]=n[2]}),e.redraw(t,()=>{ut.draw(t,h.ColorRemoveEffect.material,{sampler:0,epsilon:this.epsilon,originalColors:i})})}},Qg(h.ColorRemoveEffect,"material",new Qt({vert:`precision mediump float;
|
|
212
212
|
attribute vec2 position;
|
|
213
213
|
attribute vec2 uv;
|
|
214
214
|
varying vec2 vUv;
|
|
@@ -237,7 +237,7 @@ void main(void) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
gl_FragColor = color;
|
|
240
|
-
}`})),
|
|
240
|
+
}`})),Ns([b({default:()=>[]})],h.ColorRemoveEffect.prototype,"colors",2),Ns([b({default:.5})],h.ColorRemoveEffect.prototype,"epsilon",2),h.ColorRemoveEffect=Ns([st("ColorRemoveEffect")],h.ColorRemoveEffect);var Ea=Object.defineProperty,yg=Object.getOwnPropertyDescriptor,mg=(r,t,e)=>t in r?Ea(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Fs=(r,t,e,A)=>{for(var i=A>1?void 0:A?yg(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Ea(t,e,i),i},wg=(r,t,e)=>mg(r,t+"",e);const Qi=50;h.ColorReplaceEffect=class extends h.Effect{_color=new Ye;constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){const A=this.colors.map(o=>{this._color.value=o[0];const a=this._color.toArray().slice(0,3);this._color.value=o[1];const l=this._color.toArray().slice(0,3);return[a,l]}),i=this.epsilon,s=new Float32Array(Qi*3),n=new Float32Array(Qi*3);for(;A.length<Qi;)A.push([[-1,0,0],[0,0,0,1]]);A.slice(0,Qi).forEach(([o,a],l)=>{s[l*3]=o[0],s[l*3+1]=o[1],s[l*3+2]=o[2],n[l*3]=a[0],n[l*3+1]=a[1],n[l*3+2]=a[2]}),e.redraw(t,()=>{ut.draw(t,h.ColorReplaceEffect.material,{sampler:0,epsilon:i,originalColors:s,targetColors:n})})}},wg(h.ColorReplaceEffect,"material",new Qt({vert:`precision mediump float;
|
|
241
241
|
attribute vec2 position;
|
|
242
242
|
attribute vec2 uv;
|
|
243
243
|
varying vec2 vUv;
|
|
@@ -247,7 +247,7 @@ void main() {
|
|
|
247
247
|
}`,frag:`varying vec2 vUv;
|
|
248
248
|
uniform sampler2D sampler;
|
|
249
249
|
uniform float epsilon;
|
|
250
|
-
const int MAX_COLORS = ${
|
|
250
|
+
const int MAX_COLORS = ${Qi};
|
|
251
251
|
uniform vec3 originalColors[MAX_COLORS];
|
|
252
252
|
uniform vec3 targetColors[MAX_COLORS];
|
|
253
253
|
|
|
@@ -273,8 +273,8 @@ void main(void) {
|
|
|
273
273
|
return;
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
|
-
}`})),$s([M({default:[]})],g.ColorReplaceEffect.prototype,"colors",2),$s([M({default:.05})],g.ColorReplaceEffect.prototype,"epsilon",2),g.ColorReplaceEffect=$s([ne("ColorReplaceEffect")],g.ColorReplaceEffect);function Fg(r,A,e=2){const t=A&&A.length,i=t?A[0]*e:r.length;let s=Pa(r,0,i,e,!0);const n=[];if(!s||s.next===s.prev)return n;let o,a,l;if(t&&(s=Hg(r,A,s,e)),r.length>80*e){o=1/0,a=1/0;let c=-1/0,h=-1/0;for(let f=e;f<i;f+=e){const I=r[f],d=r[f+1];I<o&&(o=I),d<a&&(a=d),I>c&&(c=I),d>h&&(h=d)}l=Math.max(c-o,h-a),l=l!==0?32767/l:0}return xi(s,n,e,o,a,l,0),n}function Pa(r,A,e,t,i){let s;if(i===$g(r,A,e,t)>0)for(let n=A;n<e;n+=t)s=Fa(n/t|0,r[n],r[n+1],s);else for(let n=e-t;n>=A;n-=t)s=Fa(n/t|0,r[n],r[n+1],s);return s&&VA(s,s.next)&&(Ri(s),s=s.next),s}function vA(r,A){if(!r)return r;A||(A=r);let e=r,t;do if(t=!1,!e.steiner&&(VA(e,e.next)||me(e.prev,e,e.next)===0)){if(Ri(e),e=A=e.prev,e===e.next)break;t=!0}else e=e.next;while(t||e!==A);return A}function xi(r,A,e,t,i,s,n){if(!r)return;!n&&s&&zg(r,t,i,s);let o=r;for(;r.prev!==r.next;){const a=r.prev,l=r.next;if(s?Gg(r,t,i,s):Tg(r)){A.push(a.i,r.i,l.i),Ri(r),r=l.next,o=l.next;continue}if(r=l,r===o){n?n===1?(r=Lg(vA(r),A),xi(r,A,e,t,i,s,2)):n===2&&Og(r,A,e,t,i,s):xi(vA(r),A,e,t,i,s,1);break}}}function Tg(r){const A=r.prev,e=r,t=r.next;if(me(A,e,t)>=0)return!1;const i=A.x,s=e.x,n=t.x,o=A.y,a=e.y,l=t.y,c=Math.min(i,s,n),h=Math.min(o,a,l),f=Math.max(i,s,n),I=Math.max(o,a,l);let d=t.next;for(;d!==A;){if(d.x>=c&&d.x<=f&&d.y>=h&&d.y<=I&&Si(i,o,s,a,n,l,d.x,d.y)&&me(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function Gg(r,A,e,t){const i=r.prev,s=r,n=r.next;if(me(i,s,n)>=0)return!1;const o=i.x,a=s.x,l=n.x,c=i.y,h=s.y,f=n.y,I=Math.min(o,a,l),d=Math.min(c,h,f),C=Math.max(o,a,l),p=Math.max(c,h,f),x=en(I,d,A,e,t),P=en(C,p,A,e,t);let w=r.prevZ,R=r.nextZ;for(;w&&w.z>=x&&R&&R.z<=P;){if(w.x>=I&&w.x<=C&&w.y>=d&&w.y<=p&&w!==i&&w!==n&&Si(o,c,a,h,l,f,w.x,w.y)&&me(w.prev,w,w.next)>=0||(w=w.prevZ,R.x>=I&&R.x<=C&&R.y>=d&&R.y<=p&&R!==i&&R!==n&&Si(o,c,a,h,l,f,R.x,R.y)&&me(R.prev,R,R.next)>=0))return!1;R=R.nextZ}for(;w&&w.z>=x;){if(w.x>=I&&w.x<=C&&w.y>=d&&w.y<=p&&w!==i&&w!==n&&Si(o,c,a,h,l,f,w.x,w.y)&&me(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;R&&R.z<=P;){if(R.x>=I&&R.x<=C&&R.y>=d&&R.y<=p&&R!==i&&R!==n&&Si(o,c,a,h,l,f,R.x,R.y)&&me(R.prev,R,R.next)>=0)return!1;R=R.nextZ}return!0}function Lg(r,A){let e=r;do{const t=e.prev,i=e.next.next;!VA(t,i)&&Ua(t,e,e.next,i)&&Mi(t,i)&&Mi(i,t)&&(A.push(t.i,e.i,i.i),Ri(e),Ri(e.next),e=r=i),e=e.next}while(e!==r);return vA(e)}function Og(r,A,e,t,i,s){let n=r;do{let o=n.next.next;for(;o!==n.prev;){if(n.i!==o.i&&Xg(n,o)){let a=Na(n,o);n=vA(n,n.next),a=vA(a,a.next),xi(n,A,e,t,i,s,0),xi(a,A,e,t,i,s,0);return}o=o.next}n=n.next}while(n!==r)}function Hg(r,A,e,t){const i=[];for(let s=0,n=A.length;s<n;s++){const o=A[s]*t,a=s<n-1?A[s+1]*t:r.length,l=Pa(r,o,a,t,!1);l===l.next&&(l.steiner=!0),i.push(qg(l))}i.sort(Jg);for(let s=0;s<i.length;s++)e=Kg(i[s],e);return e}function Jg(r,A){let e=r.x-A.x;if(e===0&&(e=r.y-A.y,e===0)){const t=(r.next.y-r.y)/(r.next.x-r.x),i=(A.next.y-A.y)/(A.next.x-A.x);e=t-i}return e}function Kg(r,A){const e=Yg(r,A);if(!e)return A;const t=Na(e,r);return vA(t,t.next),vA(e,e.next)}function Yg(r,A){let e=A;const t=r.x,i=r.y;let s=-1/0,n;if(VA(r,e))return e;do{if(VA(r,e.next))return e.next;if(i<=e.y&&i>=e.next.y&&e.next.y!==e.y){const h=e.x+(i-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(h<=t&&h>s&&(s=h,n=e.x<e.next.x?e:e.next,h===t))return n}e=e.next}while(e!==A);if(!n)return null;const o=n,a=n.x,l=n.y;let c=1/0;e=n;do{if(t>=e.x&&e.x>=a&&t!==e.x&&ka(i<l?t:s,i,a,l,i<l?s:t,i,e.x,e.y)){const h=Math.abs(i-e.y)/(t-e.x);Mi(e,r)&&(h<c||h===c&&(e.x>n.x||e.x===n.x&&Vg(n,e)))&&(n=e,c=h)}e=e.next}while(e!==o);return n}function Vg(r,A){return me(r.prev,r,A.prev)<0&&me(A.next,r,r.next)<0}function zg(r,A,e,t){let i=r;do i.z===0&&(i.z=en(i.x,i.y,A,e,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,Wg(i)}function Wg(r){let A,e=1;do{let t=r,i;r=null;let s=null;for(A=0;t;){A++;let n=t,o=0;for(let l=0;l<e&&(o++,n=n.nextZ,!!n);l++);let a=e;for(;o>0||a>0&&n;)o!==0&&(a===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,o--):(i=n,n=n.nextZ,a--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;t=n}s.nextZ=null,e*=2}while(A>1);return r}function en(r,A,e,t,i){return r=(r-e)*i|0,A=(A-t)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,r|A<<1}function qg(r){let A=r,e=r;do(A.x<e.x||A.x===e.x&&A.y<e.y)&&(e=A),A=A.next;while(A!==r);return e}function ka(r,A,e,t,i,s,n,o){return(i-n)*(A-o)>=(r-n)*(s-o)&&(r-n)*(t-o)>=(e-n)*(A-o)&&(e-n)*(s-o)>=(i-n)*(t-o)}function Si(r,A,e,t,i,s,n,o){return!(r===n&&A===o)&&ka(r,A,e,t,i,s,n,o)}function Xg(r,A){return r.next.i!==A.i&&r.prev.i!==A.i&&!jg(r,A)&&(Mi(r,A)&&Mi(A,r)&&Zg(r,A)&&(me(r.prev,r,A.prev)||me(r,A.prev,A))||VA(r,A)&&me(r.prev,r,r.next)>0&&me(A.prev,A,A.next)>0)}function me(r,A,e){return(A.y-r.y)*(e.x-A.x)-(A.x-r.x)*(e.y-A.y)}function VA(r,A){return r.x===A.x&&r.y===A.y}function Ua(r,A,e,t){const i=mr(me(r,A,e)),s=mr(me(r,A,t)),n=mr(me(e,t,r)),o=mr(me(e,t,A));return!!(i!==s&&n!==o||i===0&&yr(r,e,A)||s===0&&yr(r,t,A)||n===0&&yr(e,r,t)||o===0&&yr(e,A,t))}function yr(r,A,e){return A.x<=Math.max(r.x,e.x)&&A.x>=Math.min(r.x,e.x)&&A.y<=Math.max(r.y,e.y)&&A.y>=Math.min(r.y,e.y)}function mr(r){return r>0?1:r<0?-1:0}function jg(r,A){let e=r;do{if(e.i!==r.i&&e.next.i!==r.i&&e.i!==A.i&&e.next.i!==A.i&&Ua(e,e.next,r,A))return!0;e=e.next}while(e!==r);return!1}function Mi(r,A){return me(r.prev,r,r.next)<0?me(r,A,r.next)>=0&&me(r,r.prev,A)>=0:me(r,A,r.prev)<0||me(r,r.next,A)<0}function Zg(r,A){let e=r,t=!1;const i=(r.x+A.x)/2,s=(r.y+A.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&i<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(t=!t),e=e.next;while(e!==r);return t}function Na(r,A){const e=tn(r.i,r.x,r.y),t=tn(A.i,A.x,A.y),i=r.next,s=A.prev;return r.next=A,A.prev=r,e.next=i,i.prev=e,t.next=e,e.prev=t,s.next=t,t.prev=s,t}function Fa(r,A,e,t){const i=tn(r,A,e);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function Ri(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function tn(r,A,e){return{i:r,x:A,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function $g(r,A,e,t){let i=0;for(let s=A,n=e-t;s<e;s+=t)i+=(r[n]-r[s])*(r[s+1]+r[n+1]),n=s;return i}function eu(r,A,e,t={}){const{radius:i=1}=t;r.moveTo(A,e),r.arc(A,e,i,0,Math.PI*2)}const tu={arcs:"bevel",bevel:"bevel",miter:"miter","miter-clip":"miter",round:"round"};function An(r,A){const{fill:e="#000",stroke:t="none",strokeWidth:i=t==="none"?0:1,strokeLinecap:s="round",strokeLinejoin:n="miter",strokeMiterlimit:o=0,strokeDasharray:a=[],strokeDashoffset:l=0,shadowOffsetX:c=0,shadowOffsetY:h=0,shadowBlur:f=0,shadowColor:I="rgba(0, 0, 0, 0)"}=A;r.fillStyle=e,r.strokeStyle=t,r.lineWidth=i,r.lineCap=s,r.lineJoin=tu[n],r.miterLimit=o,r.setLineDash(a),r.lineDashOffset=l,r.shadowOffsetX=c,r.shadowOffsetY=h,r.shadowBlur=f,r.shadowColor=I}class G{constructor(A=0,e=0){this.x=A,this.y=e}static get MAX(){return new G(1/0,1/0)}static get MIN(){return new G(-1/0,-1/0)}get array(){return[this.x,this.y]}finite(){return this.x=Number.isFinite(this.x)?this.x:0,this.y=Number.isFinite(this.y)?this.y:0,this}set(A,e){return this.x=A,this.y=e,this}add(A){return this.x+=A.x,this.y+=A.y,this}sub(A){return this.x-=A.x,this.y-=A.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}divide(A){return this.x/=A.x,this.y/=A.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}rotate(A,e={x:0,y:0}){const t=-A/180*Math.PI,i=this.x-e.x,s=-(this.y-e.y),n=Math.sin(t),o=Math.cos(t);return this.set(e.x+(i*o-s*n),e.y-(i*n+s*o)),this}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y;return e*e+t*t}lengthSquared(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.lengthSquared())}scale(A,e=A,t={x:0,y:0}){const i=A<0?t.x-this.x+t.x:this.x,s=e<0?t.y-this.y+t.y:this.y;return this.x=i*Math.abs(A),this.y=s*Math.abs(e),this}skew(A,e=0,t={x:0,y:0}){const i=this.x-t.x,s=this.y-t.y;return this.x=t.x+(i+Math.tan(A)*s),this.y=t.y+(s+Math.tan(e)*i),this}min(...A){return this.x=Math.min(this.x,...A.map(e=>e.x)),this.y=Math.min(this.y,...A.map(e=>e.y)),this}max(...A){return this.x=Math.max(this.x,...A.map(e=>e.x)),this.y=Math.max(this.y,...A.map(e=>e.y)),this}normalize(){return this.scale(1/(this.length()||1))}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this}multiplyVectors(A,e){return this.x=A.x*e.x,this.y=A.y*e.y,this}divideVectors(A,e){return this.x=A.x/e.x,this.y=A.y/e.y,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this}equals(A){return this.x===A.x&&this.y===A.y}applyMatrix3(A){const e=this.x,t=this.y,i=A.elements;return this.x=i[0]*e+i[3]*t+i[6],this.y=i[1]*e+i[4]*t+i[7],this}copy(A){return this.x=A.x,this.y=A.y,this}clone(){return new G(this.x,this.y)}}class he{constructor(A=0,e=0,t=0,i=0){this.left=A,this.top=e,this.width=t,this.height=i}get x(){return this.left}set x(A){this.left=A}get y(){return this.top}set y(A){this.top=A}get right(){return this.left+this.width}get bottom(){return this.top+this.height}get center(){return new G((this.left+this.right)/2,(this.top+this.bottom)/2)}get array(){return[this.left,this.top,this.width,this.height]}static from(...A){if(A.length===0)return new he;if(A.length===1)return A[0].clone();const e=A[0],t=A.slice(1).reduce((i,s)=>(i.left=Math.min(i.left,s.left),i.top=Math.min(i.top,s.top),i.right=Math.max(i.right,s.right),i.bottom=Math.max(i.bottom,s.bottom),i),{left:(e==null?void 0:e.left)??0,top:(e==null?void 0:e.top)??0,right:(e==null?void 0:e.right)??0,bottom:(e==null?void 0:e.bottom)??0});return new he(t.left,t.top,t.right-t.left,t.bottom-t.top)}translate(A,e){return this.left+=A,this.top+=e,this}copy(A){return this.left=A.left,this.top=A.top,this.width=A.width,this.height=A.height,this}clone(){return new he(this.left,this.top,this.width,this.height)}}class Ke{constructor(A=1,e=0,t=0,i=0,s=1,n=0,o=0,a=0,l=1){u(this,"elements",[]);this.set(A,e,t,i,s,n,o,a,l)}set(A,e,t,i,s,n,o,a,l){const c=this.elements;return c[0]=A,c[1]=i,c[2]=o,c[3]=e,c[4]=s,c[5]=a,c[6]=t,c[7]=n,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const e=this.elements,t=A.elements;return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,s=this.elements,n=t[0],o=t[3],a=t[6],l=t[1],c=t[4],h=t[7],f=t[2],I=t[5],d=t[8],C=i[0],p=i[3],x=i[6],P=i[1],w=i[4],R=i[7],v=i[2],m=i[5],b=i[8];return s[0]=n*C+o*P+a*v,s[3]=n*p+o*w+a*m,s[6]=n*x+o*R+a*b,s[1]=l*C+c*P+h*v,s[4]=l*p+c*w+h*m,s[7]=l*x+c*R+h*b,s[2]=f*C+I*P+d*v,s[5]=f*p+I*w+d*m,s[8]=f*x+I*R+d*b,this}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],s=A[3],n=A[4],o=A[5],a=A[6],l=A[7],c=A[8],h=c*n-o*l,f=o*a-c*s,I=l*s-n*a,d=e*h+t*f+i*I;if(d===0)return this.set(0,0,0,0,0,0,0,0,0);const C=1/d;return A[0]=h*C,A[1]=(i*l-c*t)*C,A[2]=(o*t-i*n)*C,A[3]=f*C,A[4]=(c*e-i*a)*C,A[5]=(i*s-o*e)*C,A[6]=I*C,A[7]=(t*a-l*e)*C,A[8]=(n*e-t*s)*C,this}transpose(){let A;const e=this.elements;return A=e[1],e[1]=e[3],e[3]=A,A=e[2],e[2]=e[6],e[6]=A,A=e[5],e[5]=e[7],e[7]=A,this}scale(A,e){return this.premultiply(rn.makeScale(A,e)),this}rotate(A){return this.premultiply(rn.makeRotation(-A)),this}translate(A,e){return this.premultiply(rn.makeTranslation(A,e)),this}makeTranslation(A,e){return this.set(1,0,A,0,1,e,0,0,1),this}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,t,e,0,0,0,1),this}makeScale(A,e){return this.set(A,0,0,0,e,0,0,0,1),this}fromArray(A,e=0){for(let t=0;t<9;t++)this.elements[t]=A[t+e];return this}clone(){return new this.constructor().fromArray(this.elements)}}const rn=new Ke;function Ta(r,A,e,t){const i=r*e+A*t,s=Math.sqrt(r*r+A*A)*Math.sqrt(e*e+t*t);let n=Math.acos(Math.max(-1,Math.min(1,i/s)));return r*t-A*e<0&&(n=-n),n}function Au(r,A,e,t,i,s,n,o){if(A===0||e===0){r.lineTo(o.x,o.y);return}t=t*Math.PI/180,A=Math.abs(A),e=Math.abs(e);const a=(n.x-o.x)/2,l=(n.y-o.y)/2,c=Math.cos(t)*a+Math.sin(t)*l,h=-Math.sin(t)*a+Math.cos(t)*l;let f=A*A,I=e*e;const d=c*c,C=h*h,p=d/f+C/I;if(p>1){const Ae=Math.sqrt(p);A=Ae*A,e=Ae*e,f=A*A,I=e*e}const x=f*C+I*d,P=(f*I-x)/x;let w=Math.sqrt(Math.max(0,P));i===s&&(w=-w);const R=w*A*h/e,v=-w*e*c/A,m=Math.cos(t)*R-Math.sin(t)*v+(n.x+o.x)/2,b=Math.sin(t)*R+Math.cos(t)*v+(n.y+o.y)/2,D=Ta(1,0,(c-R)/A,(h-v)/e),z=Ta((c-R)/A,(h-v)/e,(-c-R)/A,(-h-v)/e)%(Math.PI*2);r.ellipse(m,b,A,e,t,D,D+z,s===0)}const be={WHITESPACE:/[ \t\r\n]/,DIGIT:/\d/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/};function Rt(r,A,e=0){let o=0,a=!0,l="",c="";const h=[];function f(p,x,P){const w=new SyntaxError(`Unexpected character "${p}" at index ${x}.`);throw w.partial=P,w}function I(){l!==""&&(c===""?h.push(Number(l)):h.push(Number(l)*10**Number(c))),l="",c=""}let d;const C=r.length;for(let p=0;p<C;p++){if(d=r[p],Array.isArray(A)&&A.includes(h.length%e)&&be.FLAGS.test(d)){o=1,l=d,I();continue}if(o===0){if(be.WHITESPACE.test(d))continue;if(be.DIGIT.test(d)||be.SIGN.test(d)){o=1,l=d;continue}if(be.POINT.test(d)){o=2,l=d;continue}be.COMMA.test(d)&&(a&&f(d,p,h),a=!0)}if(o===1){if(be.DIGIT.test(d)){l+=d;continue}if(be.POINT.test(d)){l+=d,o=2;continue}if(be.EXP.test(d)){o=3;continue}be.SIGN.test(d)&&l.length===1&&be.SIGN.test(l[0])&&f(d,p,h)}if(o===2){if(be.DIGIT.test(d)){l+=d;continue}if(be.EXP.test(d)){o=3;continue}be.POINT.test(d)&&l[l.length-1]==="."&&f(d,p,h)}if(o===3){if(be.DIGIT.test(d)){c+=d;continue}if(be.SIGN.test(d)){if(c===""){c+=d;continue}c.length===1&&be.SIGN.test(c)&&f(d,p,h)}}be.WHITESPACE.test(d)?(I(),o=0,a=!1):be.COMMA.test(d)?(I(),o=0,a=!0):be.SIGN.test(d)?(I(),o=1,l=d):be.POINT.test(d)?(I(),o=2,l=d):f(d,p,h)}return I(),h}function zA(r,A){return r-(A-r)}function Ga(r,A){const e=new G,t=new G;for(let i=0,s=r.length;i<s;i++){const n=r[i];if(n.type==="m"||n.type==="M")n.type==="m"?e.add(n):e.copy(n),A.moveTo(e.x,e.y),t.copy(e);else if(n.type==="h"||n.type==="H")n.type==="h"?e.x+=n.x:e.x=n.x,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="v"||n.type==="V")n.type==="v"?e.y+=n.y:e.y=n.y,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="l"||n.type==="L")n.type==="l"?e.add(n):e.copy(n),A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="c"||n.type==="C")n.type==="c"?(A.bezierCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(n.x1,n.y1,n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="s"||n.type==="S")n.type==="s"?(A.bezierCurveTo(zA(e.x,t.x),zA(e.y,t.y),e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(zA(e.x,t.x),zA(e.y,t.y),n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="q"||n.type==="Q")n.type==="q"?(A.quadraticCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x,e.y+n.y),t.x=e.x+n.x1,t.y=e.y+n.y1,e.add(n)):(A.quadraticCurveTo(n.x1,n.y1,n.x,n.y),t.x=n.x1,t.y=n.y1,e.copy(n));else if(n.type==="t"||n.type==="T"){const o=zA(e.x,t.x),a=zA(e.y,t.y);t.x=o,t.y=a,n.type==="t"?(A.quadraticCurveTo(o,a,e.x+n.x,e.y+n.y),e.add(n)):(A.quadraticCurveTo(o,a,n.x,n.y),e.copy(n))}else if(n.type==="a"||n.type==="A"){const o=e.clone();if(n.type==="a"){if(n.x===0&&n.y===0)continue;e.add(n)}else{if(e.equals(n))continue;e.copy(n)}t.copy(e),Au(A,n.rx,n.ry,n.angle,n.largeArcFlag,n.sweepFlag,o,e)}else n.type==="z"||n.type==="Z"?(A.startPoint&&e.copy(A.startPoint),A.closePath()):console.warn("Unsupported commands",n)}}function iu(r){let A,e;const t=[];for(let i=0,s=r.length;i<s;i++){const n=r[i];switch(n.type){case"m":case"M":if(n.x.toFixed(4)===(e==null?void 0:e.x.toFixed(4))&&n.y.toFixed(4)===(e==null?void 0:e.y.toFixed(4)))continue;t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y},A={x:n.x,y:n.y};break;case"h":case"H":t.push(`${n.type} ${n.x}`),e={x:n.x,y:(e==null?void 0:e.y)??0};break;case"v":case"V":t.push(`${n.type} ${n.y}`),e={x:(e==null?void 0:e.x)??0,y:n.y};break;case"l":case"L":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"c":case"C":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"s":case"S":t.push(`${n.type} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"q":case"Q":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"t":case"T":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"a":case"A":t.push(`${n.type} ${n.rx} ${n.ry} ${n.angle} ${n.largeArcFlag} ${n.sweepFlag} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"z":case"Z":t.push(n.type),A&&(e={x:A.x,y:A.y});break}}return t.join(" ")}const ru=/[a-df-z][^a-df-z]*/gi;function La(r){const A=[],e=r.match(ru);if(!e)return A;for(let t=0,i=e.length;t<i;t++){const s=e[t],n=s.charAt(0),o=s.slice(1).trim();let a;switch(n){case"m":case"M":a=Rt(o);for(let l=0,c=a.length;l<c;l+=2)l===0?A.push({type:n,x:a[l],y:a[l+1]}):A.push({type:n==="m"?"l":"L",x:a[l],y:a[l+1]});break;case"h":case"H":a=Rt(o);for(let l=0,c=a.length;l<c;l++)A.push({type:n,x:a[l]});break;case"v":case"V":a=Rt(o);for(let l=0,c=a.length;l<c;l++)A.push({type:n,y:a[l]});break;case"l":case"L":a=Rt(o);for(let l=0,c=a.length;l<c;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"c":case"C":a=Rt(o);for(let l=0,c=a.length;l<c;l+=6)A.push({type:n,x1:a[l],y1:a[l+1],x2:a[l+2],y2:a[l+3],x:a[l+4],y:a[l+5]});break;case"s":case"S":a=Rt(o);for(let l=0,c=a.length;l<c;l+=4)A.push({type:n,x2:a[l],y2:a[l+1],x:a[l+2],y:a[l+3]});break;case"q":case"Q":a=Rt(o);for(let l=0,c=a.length;l<c;l+=4)A.push({type:n,x1:a[l],y1:a[l+1],x:a[l+2],y:a[l+3]});break;case"t":case"T":a=Rt(o);for(let l=0,c=a.length;l<c;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"a":case"A":a=Rt(o,[3,4],7);for(let l=0,c=a.length;l<c;l+=7)A.push({type:n,rx:a[l],ry:a[l+1],angle:a[l+2],largeArcFlag:a[l+3],sweepFlag:a[l+4],x:a[l+5],y:a[l+6]});break;case"z":case"Z":A.push({type:n});break;default:console.warn(s)}}return A}function Oa(r,A,e,t,i){const s=(t-A)*.5,n=(i-e)*.5,o=r*r,a=r*o;return(2*e-2*t+s+n)*a+(-3*e+3*t-2*s-n)*o+s*r+e}function su(r,A){const e=1-r;return e*e*e*A}function nu(r,A){const e=1-r;return 3*e*e*r*A}function ou(r,A){return 3*(1-r)*r*r*A}function au(r,A){return r*r*r*A}function Ha(r,A,e,t,i){return su(r,A)+nu(r,e)+ou(r,t)+au(r,i)}function Ja(r,A={}){let{vertices:e=[],indices:t=[],holes:i=[],verticesStride:s=2,verticesOffset:n=e.length/s,indicesOffset:o=t.length}=A;const a=Fg(r,i,2);if(a.length){for(let c=0;c<a.length;c+=3)t[o++]=a[c]+n,t[o++]=a[c+1]+n,t[o++]=a[c+2]+n;let l=n*s;for(let c=0;c<r.length;c+=2)e[l]=r[c],e[l+1]=r[c+1],l+=s}return{vertices:e,indices:t}}const lu=8,wr=11920929e-14,cu=1;function hu(r,A,e,t,i,s,n,o,a=.5,l=[]){const h=Math.min(.99,Math.max(0,a));let f=(cu-h)/1;return f*=f,sn(r,A,e,t,i,s,n,o,l,f,0),l.push(n,o),l}function sn(r,A,e,t,i,s,n,o,a,l,c){if(c>lu)return;const h=(r+e)/2,f=(A+t)/2,I=(e+i)/2,d=(t+s)/2,C=(i+n)/2,p=(s+o)/2,x=(h+I)/2,P=(f+d)/2,w=(I+C)/2,R=(d+p)/2,v=(x+w)/2,m=(P+R)/2;if(c>0){let b=n-r,D=o-A;const z=Math.abs((e-n)*D-(t-o)*b),Ae=Math.abs((i-n)*D-(s-o)*b);if(z>wr&&Ae>wr){if((z+Ae)*(z+Ae)<=l*(b*b+D*D)){a.push(v,m);return}}else if(z>wr){if(z*z<=l*(b*b+D*D)){a.push(v,m);return}}else if(Ae>wr){if(Ae*Ae<=l*(b*b+D*D)){a.push(v,m);return}}else if(b=v-(r+n)/2,D=m-(A+o)/2,b*b+D*D<=l){a.push(v,m);return}}sn(r,A,h,f,x,P,v,m,a,l,c+1),sn(v,m,w,R,C,p,n,o,a,l,c+1)}const gu=8,uu=11920929e-14,fu=1;function du(r,A,e,t,i,s,n=.5,o=[]){const l=Math.min(.99,Math.max(0,n));let c=(fu-l)/1;return c*=c,nn(o,r,A,e,t,i,s,c,0),o.push(i,s),o}function nn(r,A,e,t,i,s,n,o,a){if(a>gu)return;const l=(A+t)/2,c=(e+i)/2,h=(t+s)/2,f=(i+n)/2,I=(l+h)/2,d=(c+f)/2;let C=s-A,p=n-e;const x=Math.abs((t-s)*p-(i-n)*C);if(x>uu){if(x*x<=o*(C*C+p*p)){r.push(I,d);return}}else if(C=I-(A+s)/2,p=d-(e+n)/2,C*C+p*p<=o){r.push(I,d);return}nn(r,A,e,l,c,I,d,o,a+1),nn(r,I,d,h,f,s,n,o,a+1)}function Iu(r,A){let e=!1;const[t,i]=r,s=A.length/2;for(let n=0,o=s-1;n<s;o=n++){const a=A[n*2],l=A[n*2+1],c=A[o*2],h=A[o*2+1];l>i!=h>i&&t<(c-a)*(i-l)/(h-l)+a&&(e=!e)}return e}function pu(r,A){const e=1-r;return e*e*A}function Eu(r,A){return 2*(1-r)*r*A}function Bu(r,A){return r*r*A}function Ka(r,A,e,t){return pu(r,A)+Eu(r,e)+Bu(r,t)}const Cu=1e-4,Ya=1e-4;function Qu(r,A={}){const{vertices:e=[],indices:t=[],lineStyle:i={alignment:.5,cap:"butt",join:"miter",width:1,miterLimit:10},flipAlignment:s=!1,closed:n=!0}=A,o=Cu;if(r.length===0)return{vertices:e,indices:t};const a=i;let l=a.alignment;if(i.alignment!==.5){let J=yu(r);s&&(J*=-1),l=(l-.5)*J+.5}const c={x:r[0],y:r[1]},h={x:r[r.length-2],y:r[r.length-1]},f=n,I=Math.abs(c.x-h.x)<o&&Math.abs(c.y-h.y)<o;if(f){r=r.slice(),I&&(r.pop(),r.pop(),h.x=r[r.length-2],h.y=r[r.length-1]);const J=(c.x+h.x)*.5,$=(h.y+c.y)*.5;r.unshift(J,$),r.push(J,$)}const d=e,C=r.length/2;let p=r.length;const x=d.length/2,P=a.width/2,w=P*P,R=a.miterLimit*a.miterLimit;let v=r[0],m=r[1],b=r[2],D=r[3],z=0,Ae=0,W=-(m-D),K=v-b,te=0,Y=0,L=Math.sqrt(W*W+K*K);W/=L,K/=L,W*=P,K*=P;const se=l,H=(1-se)*2,q=se*2;f||(a.cap==="round"?p+=_A(v-W*(H-q)*.5,m-K*(H-q)*.5,v-W*H,m-K*H,v+W*q,m+K*q,d,!0)+2:a.cap==="square"&&(p+=Va(v,m,W,K,H,q,!0,d))),d.push(v-W*H,m-K*H),d.push(v+W*q,m+K*q);for(let J=1;J<C-1;++J){v=r[(J-1)*2],m=r[(J-1)*2+1],b=r[J*2],D=r[J*2+1],z=r[(J+1)*2],Ae=r[(J+1)*2+1],W=-(m-D),K=v-b,L=Math.sqrt(W*W+K*K),W/=L,K/=L,W*=P,K*=P,te=-(D-Ae),Y=b-z,L=Math.sqrt(te*te+Y*Y),te/=L,Y/=L,te*=P,Y*=P;const $=b-v,N=m-D,U=b-z,X=Ae-D,ee=$*U+N*X,oe=N*U-X*$,j=oe<0;if(Math.abs(oe)<.001*Math.abs(ee)){d.push(b-W*H,D-K*H),d.push(b+W*q,D+K*q),ee>=0&&(a.join==="round"?p+=_A(b,D,b-W*H,D-K*H,b-te*H,D-Y*H,d,!1)+4:p+=2,d.push(b-te*q,D-Y*q),d.push(b+te*H,D+Y*H));continue}const Ee=(-W+v)*(-K+D)-(-W+b)*(-K+m),at=(-te+z)*(-Y+D)-(-te+b)*(-Y+Ae),lt=($*at-U*Ee)/oe,He=(X*Ee-N*at)/oe,ge=(lt-b)*(lt-b)+(He-D)*(He-D),we=b+(lt-b)*H,Je=D+(He-D)*H,We=b-(lt-b)*q,xe=D-(He-D)*q,tt=Math.min($*$+N*N,U*U+X*X),Ot=j?H:q,hs=tt+Ot*Ot*w;ge<=hs?a.join==="bevel"||ge/w>R?(j?(d.push(we,Je),d.push(b+W*q,D+K*q),d.push(we,Je),d.push(b+te*q,D+Y*q)):(d.push(b-W*H,D-K*H),d.push(We,xe),d.push(b-te*H,D-Y*H),d.push(We,xe)),p+=2):a.join==="round"?j?(d.push(we,Je),d.push(b+W*q,D+K*q),p+=_A(b,D,b+W*q,D+K*q,b+te*q,D+Y*q,d,!0)+4,d.push(we,Je),d.push(b+te*q,D+Y*q)):(d.push(b-W*H,D-K*H),d.push(We,xe),p+=_A(b,D,b-W*H,D-K*H,b-te*H,D-Y*H,d,!1)+4,d.push(b-te*H,D-Y*H),d.push(We,xe)):(d.push(we,Je),d.push(We,xe)):(d.push(b-W*H,D-K*H),d.push(b+W*q,D+K*q),a.join==="round"?j?p+=_A(b,D,b+W*q,D+K*q,b+te*q,D+Y*q,d,!0)+2:p+=_A(b,D,b-W*H,D-K*H,b-te*H,D-Y*H,d,!1)+2:a.join==="miter"&&ge/w<=R&&(j?(d.push(We,xe),d.push(We,xe)):(d.push(we,Je),d.push(we,Je)),p+=2),d.push(b-te*H,D-Y*H),d.push(b+te*q,D+Y*q),p+=2)}v=r[(C-2)*2],m=r[(C-2)*2+1],b=r[(C-1)*2],D=r[(C-1)*2+1],W=-(m-D),K=v-b,L=Math.sqrt(W*W+K*K),W/=L,K/=L,W*=P,K*=P,d.push(b-W*H,D-K*H),d.push(b+W*q,D+K*q),f||(a.cap==="round"?p+=_A(b-W*(H-q)*.5,D-K*(H-q)*.5,b-W*H,D-K*H,b+W*q,D+K*q,d,!1)+2:a.cap==="square"&&(p+=Va(b,D,W,K,H,q,!1,d)));const ie=Ya*Ya;for(let J=x;J<p+x-2;++J)v=d[J*2],m=d[J*2+1],b=d[(J+1)*2],D=d[(J+1)*2+1],z=d[(J+2)*2],Ae=d[(J+2)*2+1],!(Math.abs(v*(D-Ae)+b*(Ae-m)+z*(m-D))<ie)&&t.push(J,J+1,J+2);return{vertices:e,indices:t}}function yu(r){const A=r.length;if(A<6)return 1;let e=0;for(let t=0,i=r[A-2],s=r[A-1];t<A;t+=2){const n=r[t],o=r[t+1];e+=(n-i)*(o+s),i=n,s=o}return e<0?-1:1}function Va(r,A,e,t,i,s,n,o){const a=r-e*i,l=A-t*i,c=r+e*s,h=A+t*s;let f,I;n?(f=t,I=-e):(f=-t,I=e);const d=a+f,C=l+I,p=c+f,x=h+I;return o.push(d,C),o.push(p,x),2}function _A(r,A,e,t,i,s,n,o){const a=e-r,l=t-A;let c=Math.atan2(a,l),h=Math.atan2(i-r,s-A);o&&c<h?c+=Math.PI*2:!o&&c>h&&(h+=Math.PI*2);let f=c;const I=h-c,d=Math.abs(I),C=Math.sqrt(a*a+l*l),p=(15*d*Math.sqrt(C)/Math.PI>>0)+1,x=I/p;if(f+=x,o){n.push(r,A),n.push(e,t);for(let P=1,w=f;P<p;P++,w+=x)n.push(r,A),n.push(r+Math.sin(w)*C,A+Math.cos(w)*C);n.push(r,A),n.push(i,s)}else{n.push(e,t),n.push(r,A);for(let P=1,w=f;P<p;P++,w+=x)n.push(r+Math.sin(w)*C,A+Math.cos(w)*C),n.push(r,A);n.push(i,s),n.push(r,A)}return p*2}class WA{constructor(){u(this,"arcLengthDivision",200);u(this,"_arcLengths")}getPointAt(A,e=new G){return this.getPoint(this.getUToTMapping(A),e)}isClockwise(){const A=this.getPoint(1),e=this.getPoint(.5),t=this.getPoint(1);return(e.x-A.x)*(t.y-e.y)-(e.y-A.y)*(t.x-e.x)<0}getControlPointRefs(){return[]}applyTransform(A){const e=typeof A=="function";return this.getControlPointRefs().forEach(t=>{e?A(t):t.applyMatrix3(A)}),this}getUnevenVertices(A=5,e=[]){const t=new G;for(let i=0,s=Math.max(1,A)-1;i<=s;i++)this.getPoint(i/s,t),e.push(t.x,t.y);return e}getSpacedVertices(A=5,e=[]){const t=new G;for(let i=0,s=Math.max(1,A)-1;i<=s;i++)this.getPointAt(i/s,t),e.push(t.x,t.y);return e}getAdaptiveVertices(A=[]){return this.getUnevenVertices(5,A)}_verticesToPoints(A,e=[]){for(let t=0,i=A.length;t<i;t+=2){const s=A[t],n=A[t+1];e.push(new G(s,n))}return e}getSpacedPoints(A,e=[]){const t=this.getSpacedVertices(A);return this._verticesToPoints(t,e),e}getUnevenPoints(A,e=[]){const t=this.getUnevenVertices(A);return this._verticesToPoints(t,e),e}getAdaptivePoints(A=[]){const e=this.getAdaptiveVertices();return this._verticesToPoints(e,A),A}getPoints(A,e=[]){let t;return A?t=this.getUnevenVertices(A):t=this.getAdaptiveVertices(),this._verticesToPoints(t,e),e}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(){return(!this._arcLengths||this._arcLengths.length!==this.arcLengthDivision+1)&&this.updateLengths(),this._arcLengths}updateLengths(){const A=this.arcLengthDivision,e=[0];for(let t=0,i=this.getPoint(0),s=1;s<=A;s++){const n=this.getPoint(s/A);t+=n.distanceTo(i),e.push(t),i=n}this._arcLengths=e}getUToTMapping(A,e){const t=this.getLengths(),i=t.length,s=e??A*t[i-1];if(i<2)return s/t[0];let n=0,o=0,a=i-1,l;for(;o<=a;)if(n=Math.floor(o+(a-o)/2),l=t[n]-s,l<0)o=n+1;else if(l>0)a=n-1;else{a=n;break}if(n=a,t[n]===s)return n/(i-1);const c=t[n],f=t[n+1]-c,I=(s-c)/f;return(n+I)/(i-1)}getTangent(A,e=new G){const i=Math.max(0,A-1e-4),s=Math.min(1,A+1e-4);return e.copy(this.getPoint(s).sub(this.getPoint(i)).normalize())}getTangentAt(A,e){return this.getTangent(this.getUToTMapping(A),e)}getNormal(A,e=new G){return this.getTangent(A,e),e.set(-e.y,e.x).normalize()}getNormalAt(A,e){return this.getNormal(this.getUToTMapping(A),e)}getTForPoint(A,e=.001){let t=0,i=1,s=(t+i)/2;for(;i-t>e;){s=(t+i)/2;const n=this.getPoint(s);if(n.distanceTo(A)<e)return s;n.x<A.x?t=s:i=s}return s}getMinMax(A=G.MAX,e=G.MIN){const t=this.getPoints();for(let i=0,s=t.length;i<s;i++){const n=t[i];A.min(n),e.max(n)}return{min:A.finite(),max:e.finite()}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new he(A.x,A.y,e.x-A.x,e.y-A.y)}getFillVertices(A){return this.getAdaptiveVertices()}fillTriangulate(A){return Ja(this.getFillVertices(A),A)}strokeTriangulate(A){return Qu(this.getAdaptiveVertices(),A)}toCommands(){const A=[],e=this.getPoints();for(let t=0,i=e.length;t<i;t++){const s=e[t];t===0?A.push({type:"M",x:s.x,y:s.y}):A.push({type:"L",x:s.x,y:s.y})}return A}toData(){return iu(this.toCommands())}drawTo(A){return this.toCommands().forEach(e=>{switch(e.type){case"M":A.moveTo(e.x,e.y);break;case"L":A.lineTo(e.x,e.y);break}}),this}copy(A){return this.arcLengthDivision=A.arcLengthDivision,this}clone(){return new this.constructor().copy(this)}}const mu=new Ke,za=new Ke,Wa=new Ke,vr=new G;class on extends WA{constructor(A=new G,e=new G,t=new G,i=0,s=0,n=Math.PI*2,o=!1){super(),this._center=A,this._radius=e,this._diff=t,this.rotate=i,this.startAngle=s,this.endAngle=n,this.clockwise=o}get cx(){return this._center.x}set cx(A){this._center.x=A}get cy(){return this._center.y}set cy(A){this._center.y=A}get rx(){return this._radius.x}set rx(A){this._radius.x=A}get ry(){return this._radius.y}set ry(A){this._radius.y=A}get dx(){return this._diff.x}set dx(A){this._diff.x=A}get dy(){return this._diff.y}set dy(A){this._diff.y=A}isClockwise(){return this.clockwise}_getDeltaAngle(){const A=Math.PI*2;let e=this.endAngle-this.startAngle;const t=Math.abs(e)<Number.EPSILON;return e=(e%A+A)%A,t?e=0:this.clockwise||(e=e===0?-A:e-A),e}getPoint(A,e=new G){const t=this._getDeltaAngle(),i=this.startAngle+A*t;let s=this.cx+this.rx*Math.cos(i),n=this.cy+this.ry*Math.sin(i);if(this.rotate!==0){const o=Math.cos(this.rotate),a=Math.sin(this.rotate),l=s-this.cx,c=n-this.cy;s=l*o-c*a+this.cx,n=l*a+c*o+this.cy}return e.set(s,n)}toCommands(){const{cx:A,cy:e,rx:t,ry:i,startAngle:s,endAngle:n,clockwise:o,rotate:a}=this,l=A+t*Math.cos(s)*Math.cos(a)-i*Math.sin(s)*Math.sin(a),c=e+t*Math.cos(s)*Math.sin(a)+i*Math.sin(s)*Math.cos(a),h=Math.abs(s-n),f=h>Math.PI?1:0,I=o?1:0,d=a*180/Math.PI;if(h>=2*Math.PI){const C=s+Math.PI,p=A+t*Math.cos(C)*Math.cos(a)-i*Math.sin(C)*Math.sin(a),x=e+t*Math.cos(C)*Math.sin(a)+i*Math.sin(C)*Math.cos(a);return[{type:"M",x:l,y:c},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:0,sweepFlag:I,x:p,y:x},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:0,sweepFlag:I,x:l,y:c}]}else{const C=A+t*Math.cos(n)*Math.cos(a)-i*Math.sin(n)*Math.sin(a),p=e+t*Math.cos(n)*Math.sin(a)+i*Math.sin(n)*Math.cos(a);return[{type:"M",x:l,y:c},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:f,sweepFlag:I,x:C,y:p}]}}drawTo(A){const{cx:e,cy:t,rx:i,ry:s,rotate:n,startAngle:o,endAngle:a,clockwise:l}=this;return A.ellipse(e,t,i,s,n,o,a,!l),this}applyTransform(A){return vr.set(this.cx,this.cy),vr.applyMatrix3(A),this.cx=vr.x,this.cy=vr.y,_u(A)?wu(this,A):vu(this,A),this}getControlPointRefs(){return[this._center]}_getAdaptiveVerticesByArc(A=[]){const{cx:e,cy:t,rx:i,ry:s,dx:n,dy:o,startAngle:a,endAngle:l,clockwise:c}=this,h=!c,f=e,I=t,d=a,C=l;let p=Math.abs(d-C);(!h&&d>C||h&&C>d)&&(p=2*Math.PI-p);let x=Math.max(6,Math.floor(6*i**(1/3)*(p/Math.PI)));x=Math.max(x,3),x*=3;let P=p/x,w=d;P*=h?-1:1;for(let R=0;R<x+1;R++){const v=Math.cos(w),m=Math.sin(w),b=f+n+v*i,D=I+o+m*s;A.push(b,D),w+=P}return A}_getAdaptiveVerticesByCircle(A=[]){const{cx:e,cy:t,rx:i,ry:s,dx:n,dy:o}=this;if(!(i>=0&&s>=0&&n>=0&&o>=0))return A;const a=Math.ceil(2.3*Math.sqrt(i+s)),l=e,c=t,h=a*8+(n?4:0)+(o?4:0);if(h===0)return A;const f=A.length;if(a===0)return A[f]=A[f+6]=l+n,A[f+1]=A[f+3]=c+o,A[f+2]=A[f+4]=l-n,A[f+5]=A[f+7]=c-o,A;let I=f,d=f+a*4+(n?2:0)+2,C=d,p=h,x=n+i,P=o,w=l+x,R=l-x,v=c+P;if(A[I++]=w,A[I++]=v,A[--d]=v,A[--d]=R,o){const b=c-P;A[C++]=R,A[C++]=b,A[--p]=b,A[--p]=w}for(let b=1;b<a;b++){const D=Math.PI/2*(b/a),z=n+Math.cos(D)*i,Ae=o+Math.sin(D)*s,W=l+z,K=l-z,te=c+Ae,Y=c-Ae;A[I++]=W,A[I++]=te,A[--d]=te,A[--d]=K,A[C++]=K,A[C++]=Y,A[--p]=Y,A[--p]=W}x=n,P=o+s,w=l+x,R=l-x,v=c+P;const m=c-P;return A[I++]=w,A[I++]=v,A[--p]=m,A[--p]=w,n&&(A[I++]=R,A[I++]=v,A[--p]=m,A[--p]=R),A}getAdaptiveVertices(A=[]){return this.startAngle===0&&this.endAngle===Math.PI*2?this._getAdaptiveVerticesByCircle(A):this._getAdaptiveVerticesByArc(A)}getMinMax(A=G.MAX,e=G.MIN){const{cx:t,cy:i,rx:s,ry:n,rotate:o}=this,a=Math.cos(o),l=Math.sin(o),c=Math.sqrt(s*s*a*a+n*n*l*l),h=Math.sqrt(s*s*l*l+n*n*a*a);return A.x=Math.min(A.x,t-c),A.y=Math.min(A.y,i-h),e.x=Math.max(e.x,t+c),e.y=Math.max(e.y,i+h),{min:A.finite(),max:e.finite()}}copy(A){return super.copy(A),this.cx=A.cx,this.cy=A.cy,this.rx=A.rx,this.ry=A.ry,this.dx=A.dx,this.dy=A.dy,this.startAngle=A.startAngle,this.endAngle=A.endAngle,this.clockwise=A.clockwise,this.rotate=A.rotate,this}}function wu(r,A){const e=r.rx,t=r.ry,i=Math.cos(r.rotate),s=Math.sin(r.rotate),n=new G(e*i,e*s),o=new G(-t*s,t*i),a=n.applyMatrix3(A),l=o.applyMatrix3(A),c=mu.set(a.x,l.x,0,a.y,l.y,0,0,0,1),h=za.copy(c).invert(),d=Wa.copy(h).transpose().multiply(h).elements,C=bu(d[0],d[1],d[4]),p=Math.sqrt(C.rt1),x=Math.sqrt(C.rt2);if(r.rx=1/p,r.ry=1/x,r.rotate=Math.atan2(C.sn,C.cs),!((r.endAngle-r.startAngle)%(2*Math.PI)<Number.EPSILON)){const w=za.set(p,0,0,0,x,0,0,0,1),R=Wa.set(C.cs,C.sn,0,-C.sn,C.cs,0,0,0,1),v=w.multiply(R).multiply(c),m=b=>{const{x:D,y:z}=new G(Math.cos(b),Math.sin(b)).applyMatrix3(v);return Math.atan2(z,D)};r.startAngle=m(r.startAngle),r.endAngle=m(r.endAngle),qa(A)&&(r.clockwise=!r.clockwise)}}function vu(r,A){const e=Xa(A),t=ja(A);r.rx*=e,r.ry*=t;const i=e>Number.EPSILON?Math.atan2(A.elements[1],A.elements[0]):Math.atan2(-A.elements[3],A.elements[4]);r.rotate+=i,qa(A)&&(r.startAngle*=-1,r.endAngle*=-1,r.clockwise=!r.clockwise)}function qa(r){const A=r.elements;return A[0]*A[4]-A[1]*A[3]<0}function _u(r){const A=r.elements,e=A[0]*A[3]+A[1]*A[4];if(e===0)return!1;const t=Xa(r),i=ja(r);return Math.abs(e/(t*i))>Number.EPSILON}function Xa(r){const A=r.elements;return Math.sqrt(A[0]*A[0]+A[1]*A[1])}function ja(r){const A=r.elements;return Math.sqrt(A[3]*A[3]+A[4]*A[4])}function bu(r,A,e){let t,i,s,n,o;const a=r+e,l=r-e,c=Math.sqrt(l*l+4*A*A);return a>0?(t=.5*(a+c),o=1/t,i=r*o*e-A*o*A):a<0?i=.5*(a-c):(t=.5*c,i=-.5*c),l>0?s=l+c:s=l-c,Math.abs(s)>2*Math.abs(A)?(o=-2*A/s,n=1/Math.sqrt(1+o*o),s=o*n):Math.abs(A)===0?(s=1,n=0):(o=-.5*s/A,s=1/Math.sqrt(1+o*o),n=o*s),l>0&&(o=s,s=-n,n=o),{rt1:t,rt2:i,cs:s,sn:n}}class Du extends on{constructor(A=0,e=0,t=1,i=0,s=Math.PI*2,n=!1){super(new G(A,e),new G(t,t),new G,0,i,s,n)}drawTo(A){const{cx:e,cy:t,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;return A.arc(e,t,i,s,n,!o),this}getAdaptiveVertices(A=[]){const{cx:e,cy:t,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;let a=Math.abs(s-n);(!o&&s>n||o&&n>s)&&(a=2*Math.PI-a);let l=Math.max(6,Math.floor(6*i**(1/3)*(a/Math.PI)));l=Math.max(l,3);let c=a/l,h=s;c*=o?1:-1;for(let f=0;f<l+1;f++){const I=Math.cos(h),d=Math.sin(h),C=e+I*i,p=t+d*i;A.push(C,p),h+=c}return A}}class Xt extends WA{constructor(A=new G,e=new G){super(),this.p1=A,this.p2=e}static from(A,e,t,i){return new Xt(new G(A,e),new G(t,i))}getPoint(A,e=new G){return A===1?e.copy(this.p2):e.copy(this.p2).sub(this.p1).scale(A).add(this.p1),e}getPointAt(A,e=new G){return this.getPoint(A,e)}getTangent(A,e=new G){return e.subVectors(this.p2,this.p1).normalize()}getTangentAt(A,e=new G){return this.getTangent(A,e)}getControlPointRefs(){return[this.p1,this.p2]}getAdaptiveVertices(A=[]){return A.push(this.p1.x,this.p1.y,this.p2.x,this.p2.y),A}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,p2:i}=this;return A.x=Math.min(A.x,t.x,i.x),A.y=Math.min(A.y,t.y,i.y),e.x=Math.max(e.x,t.x,i.x),e.y=Math.max(e.y,t.y,i.y),{min:A.finite(),max:e.finite()}}toCommands(){const{p1:A,p2:e}=this;return[{type:"M",x:A.x,y:A.y},{type:"L",x:e.x,y:e.y}]}getFillVertices(A={}){var c,h;const e=Math.min(this.p1.x,this.p2.x),t=Math.max(this.p1.x,this.p2.x),i=Math.min(this.p1.y,this.p2.y),s=Math.max(this.p1.y,this.p2.y),n=e,o=i,a=t-e||((c=A.style)==null?void 0:c.strokeWidth)||0,l=s-i||((h=A.style)==null?void 0:h.strokeWidth)||0;return[n,o,n+a,o,n+a,o+l,n,o+l]}drawTo(A){const{p1:e,p2:t}=this;return A.lineTo(e.x,e.y),A.lineTo(t.x,t.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.p2.copy(A.p2),this}}class Pi extends WA{constructor(A=[]){super(),this.curves=A}getFlatCurves(){return this.curves.flatMap(A=>A instanceof Pi?A.getFlatCurves():A)}addCurve(A){return this.curves.push(A),this}getPoint(A,e=new G){const t=A*this.getLength(),i=this.getLengths();let s=0;for(;s<i.length;){if(i[s]>=t){const n=i[s]-t,o=this.curves[s],a=o.getLength();return o.getPointAt(a===0?0:1-n/a,e)}s++}return e}updateLengths(){const A=[];for(let e=0,t=0,i=this.curves.length;e<i;e++)t+=this.curves[e].getLength(),A.push(t);this._arcLengths=A}getControlPointRefs(){return this.curves.flatMap(A=>A.getControlPointRefs())}_removeNextPointIfEqualPrevPoint(A,e){const t=[A[e-1],A[e]],i=[A[e+1],A[e+2]];return t[0]===i[0]&&t[1]===i[1]&&A.splice(e+1,2),A}getSpacedVertices(A=5,e=[]){let t;return this.curves.forEach(i=>{i.getSpacedVertices(A,e),t&&this._removeNextPointIfEqualPrevPoint(e,t),t=e.length-1}),e}getAdaptiveVertices(A=[]){let e;return this.curves.forEach(t=>{t.getAdaptiveVertices(A),e&&this._removeNextPointIfEqualPrevPoint(A,e),e=A.length-1}),A}strokeTriangulate(A){return this.curves.length===1?this.curves[0].strokeTriangulate(A):super.strokeTriangulate(A)}getFillVertices(A){if(this.curves.length===1)return this.curves[0].getFillVertices(A);{const e=[];let t;return this.curves.forEach(i=>{let s;i instanceof Xt?s=i.getAdaptiveVertices():s=i.getFillVertices(A),e.push(...s),t&&this._removeNextPointIfEqualPrevPoint(e,t),t=e.length-1}),e}}applyTransform(A){return this.curves.forEach(e=>e.applyTransform(A)),this}getMinMax(A=G.MAX,e=G.MIN){return this.curves.forEach(t=>t.getMinMax(A,e)),{min:A.finite(),max:e.finite()}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new he(A.x,A.y,e.x-A.x,e.y-A.y)}toCommands(){return this.curves.flatMap(A=>A.toCommands())}drawTo(A){var t;const e=(t=this.curves[0])==null?void 0:t.getPoint(0);return e&&A.moveTo(e.x,e.y),this.curves.forEach(i=>i.drawTo(A)),this}copy(A){return super.copy(A),this.curves=A.curves.map(e=>e.clone()),this}}class an extends WA{constructor(A=new G,e=new G,t=new G,i=new G){super(),this.p1=A,this.cp1=e,this.cp2=t,this.p2=i}static from(A,e,t,i,s,n,o,a){return new an(new G(A,e),new G(t,i),new G(s,n),new G(o,a))}getPoint(A,e=new G){const{p1:t,cp1:i,cp2:s,p2:n}=this;return e.set(Ha(A,t.x,i.x,s.x,n.x),Ha(A,t.y,i.y,s.y,n.y))}getAdaptiveVertices(A=[]){return hu(this.p1.x,this.p1.y,this.cp1.x,this.cp1.y,this.cp2.x,this.cp2.y,this.p2.x,this.p2.y,.5,A)}getControlPointRefs(){return[this.p1,this.cp1,this.cp2,this.p2]}_solveQuadratic(A,e,t){const i=e*e-4*A*t;if(i<0)return[];const s=Math.sqrt(i),n=(-e+s)/(2*A),o=(-e-s)/(2*A);return[n,o].filter(a=>a>=0&&a<=1)}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,cp1:i,cp2:s,p2:n}=this,o=this._solveQuadratic(3*(i.x-t.x),6*(s.x-i.x),3*(n.x-s.x)),a=this._solveQuadratic(3*(i.y-t.y),6*(s.y-i.y),3*(n.y-s.y)),l=[0,1,...o,...a];return((h,f)=>{for(const I of h)for(let d=0;d<=f;d++){const C=d/f-.5,p=Math.min(1,Math.max(0,I+C)),x=this.getPoint(p);A.x=Math.min(A.x,x.x),A.y=Math.min(A.y,x.y),e.x=Math.max(e.x,x.x),e.y=Math.max(e.y,x.y)}})(l,10),{min:A.finite(),max:e.finite()}}toCommands(){const{p1:A,cp1:e,cp2:t,p2:i}=this;return[{type:"M",x:A.x,y:A.y},{type:"C",x1:e.x,y1:e.y,x2:t.x,y2:t.y,x:i.x,y:i.y}]}drawTo(A){const{p1:e,cp1:t,cp2:i,p2:s}=this;return A.lineTo(e.x,e.y),A.bezierCurveTo(t.x,t.y,i.x,i.y,s.x,s.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp1.copy(A.cp1),this.cp2.copy(A.cp2),this.p2.copy(A.p2),this}}class xu extends on{constructor(A=0,e=0,t=1,i=1,s=0,n=0,o=Math.PI*2,a=!1){super(new G(A,e),new G(t,i),new G,s,n,o,a)}drawTo(A){return A.ellipse(this.cx,this.cy,this.rx,this.ry,this.rotate,this.startAngle,this.endAngle,!this.clockwise),this}}class Su extends Pi{}class ln extends WA{constructor(A=new G,e=new G,t=new G){super(),this.p1=A,this.cp=e,this.p2=t}static from(A,e,t,i,s,n){return new ln(new G(A,e),new G(t,i),new G(s,n))}getPoint(A,e=new G){const{p1:t,cp:i,p2:s}=this;return e.set(Ka(A,t.x,i.x,s.x),Ka(A,t.y,i.y,s.y)),e}getControlPointRefs(){return[this.p1,this.cp,this.p2]}getAdaptiveVertices(A=[]){return du(this.p1.x,this.p1.y,this.cp.x,this.cp.y,this.p2.x,this.p2.y,.5,A)}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,cp:i,p2:s}=this,n=.5*(t.x+i.x),o=.5*(t.y+i.y),a=.5*(t.x+s.x),l=.5*(t.y+s.y);return A.x=Math.min(A.x,t.x,s.x,n,a),A.y=Math.min(A.y,t.y,s.y,o,l),e.x=Math.max(e.x,t.x,s.x,n,a),e.y=Math.max(e.y,t.y,s.y,o,l),{min:A.finite(),max:e.finite()}}toCommands(){const{p1:A,cp:e,p2:t}=this;return[{type:"M",x:A.x,y:A.y},{type:"Q",x1:e.x,y1:e.y,x:t.x,y:t.y}]}drawTo(A){const{p1:e,cp:t,p2:i}=this;return A.lineTo(e.x,e.y),A.quadraticCurveTo(t.x,t.y,i.x,i.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp.copy(A.cp),this.p2.copy(A.p2),this}}class Mu extends Su{constructor(A=0,e=0,t=0,i=0){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.update()}update(){const{x:A,y:e,width:t,height:i}=this,s=[new G(A,e),new G(A+t,e),new G(A+t,e+i),new G(A,e+i)];return this.curves=[new Xt(s[0],s[1]),new Xt(s[1],s[2]),new Xt(s[2],s[3]),new Xt(s[3],s[0])],this}drawTo(A){return A.rect(this.x,this.y,this.width,this.height),this}getFillVertices(A={}){const{x:e,y:t,width:i,height:s}=this;return[e,t,e+i,t,e+i,t+s,e,t+s]}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.update(),this}}class Ru extends on{constructor(A=0,e=0,t=1,i=1,s=1){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.radius=s,this.update()}update(){const{x:A,y:e,width:t,height:i,radius:s}=this,n=t/2,o=i/2,a=A+n,l=e+o,c=Math.max(0,Math.min(s,Math.min(n,o))),h=c;return this._center=new G(a,l),this._radius=new G(c,h),this._diff=new G(n-c,o-h),this}drawTo(A){const{x:e,y:t,width:i,height:s,radius:n}=this;return A.roundRect(e,t,i,s,n),this}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.radius=A.radius,this.update(),this}}class Pu extends WA{constructor(A=[]){super(),this.points=A}getPoint(A,e=new G){const{points:t}=this,i=(t.length-1)*A,s=Math.floor(i),n=i-s,o=t[s===0?s:s-1],a=t[s],l=t[s>t.length-2?t.length-1:s+1],c=t[s>t.length-3?t.length-1:s+2];return e.set(Oa(n,o.x,a.x,l.x,c.x),Oa(n,o.y,a.y,l.y,c.y)),e}getControlPointRefs(){return this.points}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++)this.points.push(A.points[e].clone());return this}}class _r extends Pi{constructor(e){super();u(this,"startPoint");u(this,"currentPoint");u(this,"autoClose",!1);e&&this.addPoints(e)}addPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++){const{x:s,y:n}=e[t];this.lineTo(s,n)}return this}addCommands(e){return Ga(e,this),this}addData(e){return this.addCommands(La(e)),this}_closeVertices(e){return this.autoClose&&e.length>=4&&e[0]!==e[e.length-2]&&e[1]!==e[e.length-1]&&e.push(e[0],e[1]),e}getUnevenVertices(e=40,t=[]){return this._closeVertices(super.getUnevenVertices(e,t))}getSpacedVertices(e=40,t=[]){return this._closeVertices(super.getSpacedVertices(e,t))}getAdaptiveVertices(e=[]){return this._closeVertices(super.getAdaptiveVertices(e))}getFillVertices(e){return this._closeVertices(super.getFillVertices(e))}_setCurrentPoint(e){return this.currentPoint=new G(e.x,e.y),this.startPoint||(this.startPoint=this.currentPoint.clone()),this}_connetLineTo(e){if(this.curves.length>0){const t=e.getPoint(0);(!this.currentPoint||!t.equals(this.currentPoint))&&this.lineTo(t.x,t.y)}return this}closePath(){const e=this.startPoint;if(e){const t=this.currentPoint;t&&!e.equals(t)&&(this.curves.push(new Xt(t.clone(),e.clone())),t.copy(e)),this.startPoint=void 0}return this}moveTo(e,t){return this.currentPoint=new G(e,t),this.startPoint=this.currentPoint.clone(),this}lineTo(e,t){const i=this.currentPoint;return i!=null&&i.equals({x:e,y:t})||this.curves.push(Xt.from((i==null?void 0:i.x)??0,(i==null?void 0:i.y)??0,e,t)),this._setCurrentPoint({x:e,y:t}),this}bezierCurveTo(e,t,i,s,n,o){const a=this.currentPoint;return a!=null&&a.equals({x:n,y:o})||this.curves.push(an.from((a==null?void 0:a.x)??0,(a==null?void 0:a.y)??0,e,t,i,s,n,o)),this._setCurrentPoint({x:n,y:o}),this}quadraticCurveTo(e,t,i,s){const n=this.currentPoint;return n!=null&&n.equals({x:i,y:s})||this.curves.push(ln.from((n==null?void 0:n.x)??0,(n==null?void 0:n.y)??0,e,t,i,s)),this._setCurrentPoint({x:i,y:s}),this}arc(e,t,i,s,n,o){const a=new Du(e,t,i,s,n,!o);return this._connetLineTo(a),this.curves.push(a),this._setCurrentPoint(a.getPoint(1)),this}relativeArc(e,t,i,s,n,o){var a,l;return e+=((a=this.currentPoint)==null?void 0:a.x)??0,t+=((l=this.currentPoint)==null?void 0:l.y)??0,this.arc(e,t,i,s,n,o),this}arcTo(e,t,i,s,n){return console.warn("Method arcTo not supported yet"),this}ellipse(e,t,i,s,n,o,a,l=!0){const c=new xu(e,t,i,s,n,o,a,!l);return this._connetLineTo(c),this.curves.push(c),this._setCurrentPoint(c.getPoint(1)),this}relativeEllipse(e,t,i,s,n,o,a,l){var c,h;return e+=((c=this.currentPoint)==null?void 0:c.x)??0,t+=((h=this.currentPoint)==null?void 0:h.y)??0,this.ellipse(e,t,i,s,n,o,a,l),this}rect(e,t,i,s){const n=new Mu(e,t,i,s);return this._connetLineTo(n),this.curves.push(n),this._setCurrentPoint({x:e,y:t}),this}roundRect(e,t,i,s,n){const o=new Ru(e,t,i,s,n);return this._connetLineTo(o),this.curves.push(o),this._setCurrentPoint({x:e,y:t}),this}splineThru(e){const t=this.currentPoint??new G;return this.curves.push(new Pu([t].concat(e))),this._setCurrentPoint(e[e.length-1]),this}drawTo(e){var i;const t=(i=this.curves[0])==null?void 0:i.getPoint(0);return t&&e.moveTo(t.x,t.y),this.curves.forEach(s=>s.drawTo(e)),this.autoClose&&e.closePath(),this}copy(e){var t;return super.copy(e),this.autoClose=e.autoClose,this.currentPoint=(t=e.currentPoint)==null?void 0:t.clone(),this}}function ku(r){return r.replace(/[^a-z0-9]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase()}function Uu(r,A,e,t){const i=A.clone().sub(r),s=t.clone().sub(e),n=e.clone().sub(r),o=i.cross(s);if(o===0)return new G((r.x+e.x)/2,(r.y+e.y)/2);const a=n.cross(s)/o;return Math.abs(a)>1?new G((r.x+e.x)/2,(r.y+e.y)/2):new G(r.x+a*i.x,r.y+a*i.y)}class Ne extends Pi{constructor(e,t={}){super();u(this,"currentCurve",new _r);u(this,"style");this.curves.push(this.currentCurve),this.style=t,e&&(e instanceof Ne?this.addPath(e):Array.isArray(e)?this.addCommands(e):this.addData(e))}get startPoint(){return this.currentCurve.startPoint}get currentPoint(){return this.currentCurve.currentPoint}get strokeWidth(){return this.style.strokeWidth??((this.style.stroke??"none")==="none"?0:1)}addPath(e){const t=this.curves.findIndex(i=>i===this.currentCurve);return t>-1&&this.curves.splice(t,1),e instanceof Ne?this.curves.push(...e.curves.filter(i=>i.curves.length).map(i=>i.clone())):e.curves.length&&this.curves.push(e),this.curves.push(this.currentCurve),this}closePath(){const e=this.startPoint;return e&&(this.currentCurve.closePath(),this.currentCurve.curves.length&&(this.currentCurve=new _r().moveTo(e.x,e.y),this.curves.push(this.currentCurve))),this}moveTo(e,t){var i;return(i=this.currentCurve.currentPoint)!=null&&i.equals({x:e,y:t})||(this.currentCurve.curves.length&&(this.currentCurve=new _r,this.curves.push(this.currentCurve)),this.currentCurve.moveTo(e,t)),this}lineTo(e,t){return this.currentCurve.lineTo(e,t),this}bezierCurveTo(e,t,i,s,n,o){return this.currentCurve.bezierCurveTo(e,t,i,s,n,o),this}quadraticCurveTo(e,t,i,s){return this.currentCurve.quadraticCurveTo(e,t,i,s),this}arc(e,t,i,s,n,o){return this.currentCurve.arc(e,t,i,s,n,o),this}arcTo(e,t,i,s,n){return this.currentCurve.arcTo(e,t,i,s,n),this}ellipse(e,t,i,s,n,o,a,l){return this.currentCurve.ellipse(e,t,i,s,n,o,a,l),this}rect(e,t,i,s){return this.currentCurve.rect(e,t,i,s),this}roundRect(e,t,i,s,n){return this.currentCurve.roundRect(e,t,i,s,n),this}reset(){return this.currentCurve=new _r,this.curves=[this.currentCurve],this.style={},this}addCommands(e){return Ga(e,this),this}addData(e){return this.addCommands(La(e)),this}splineThru(e){return this.currentCurve.splineThru(e),this}scale(e,t=e,i={x:0,y:0}){return this.getControlPointRefs().forEach(s=>{s.scale(e,t,i)}),this}skew(e,t=0,i={x:0,y:0}){return this.getControlPointRefs().forEach(s=>{s.skew(e,t,i)}),this}rotate(e,t={x:0,y:0}){return this.getControlPointRefs().forEach(i=>{i.rotate(e,t)}),this}bold(e){if(e===0)return this;const t=this.getFlatCurves(),i=[],s=[],n=[];t.forEach((a,l)=>{const c=a.getControlPointRefs(),h=a.isClockwise();n[l]=c,s[l]=h;const f=c[0],I=c[c.length-1]??f;i.push({start:h?I:f,end:h?f:I,index:l})});const o=[];return i.forEach((a,l)=>{o[l]=[],i.forEach((c,h)=>{var f;c.start&&a.end&&h!==l&&((f=c.start)!=null&&f.equals(a.end))&&o[l].push(c.index)})}),t.forEach((a,l)=>{const c=s[l];n[l].forEach(h=>{h.add(a.getNormal(a.getTForPoint(h)).scale(c?e:-e))})}),o.forEach((a,l)=>{const c=n[l];a.forEach(h=>{const f=n[h],I=Uu(c[c.length-1],c[c.length-2]??c[c.length-1],f[0],f[1]??f[0]);I&&(c[c.length-1].copy(I),f[0].copy(I))})}),this}getMinMax(e=G.MAX,t=G.MIN,i=!0){const s=this.strokeWidth;return this.curves.forEach(n=>{if(n.getMinMax(e,t),i&&s>1){const o=s/2,a=n.isClockwise(),l=[];for(let c=0;c<=1;c+=1/n.arcLengthDivision){const h=n.getPoint(c),f=n.getNormal(c),I=f.clone().scale(a?o:-o),d=f.clone().scale(a?-o:o);l.push(h.clone().add(I),h.clone().add(d),h.clone().add({x:o,y:0}),h.clone().add({x:-o,y:0}),h.clone().add({x:0,y:o}),h.clone().add({x:0,y:-o}),h.clone().add({x:o,y:o}),h.clone().add({x:-o,y:-o}))}e.min(...l),t.max(...l)}}),{min:e.finite(),max:t.finite()}}strokeTriangulate(e){const t=(e==null?void 0:e.indices)??[],i=(e==null?void 0:e.vertices)??[];return this.curves.forEach(s=>{s.strokeTriangulate({...e,indices:t,vertices:i,style:{...this.style}})}),{indices:t,vertices:i}}fillTriangulate(e){const t={...e,style:{...this.style,...e==null?void 0:e.style}},i=t.indices??[],s=t.vertices??[];if((t.style.fillRule??"nonzero")==="nonzero"){const o=this.curves.map(c=>c.getFillVertices(t)),a=new Map,l=new Set;for(let c=0;c<o.length;c++){const h=[];for(let f=0;f<o.length;f++)c!==f&&Iu([o[c][0],o[c][1]],o[f])&&h.push(f);h.length&&(h.forEach(f=>{let I=a.get(f);I||(I=new Set,a.set(f,I)),I.add(c)}),l.add(c))}o.forEach((c,h)=>{var d;if(l.has(h)||!c.length)return;const f=c.slice(),I=[];(d=a.get(h))==null||d.forEach(C=>{I.push(f.length/2),f.push(...o[C])}),Ja(f,{...e,indices:i,vertices:s,holes:I,style:{...this.style}})})}else this.curves.forEach(o=>{o.fillTriangulate({...e,indices:i,vertices:s,style:{...this.style}})});return{indices:i,vertices:s}}getBoundingBox(e=!0){const{min:t,max:i}=this.getMinMax(void 0,void 0,e);return new he(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:s="none"}=t;return e.beginPath(),e.save(),An(e,t),this.curves.forEach(n=>{n.drawTo(e)}),i!=="none"&&e.fill(),s!=="none"&&e.stroke(),e.restore(),this}drawControlPointsTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:s="none"}=t;return e.beginPath(),e.save(),An(e,t),this.getControlPointRefs().forEach(n=>{eu(e,n.x,n.y,{radius:4})}),i!=="none"&&e.fill(),s!=="none"&&e.stroke(),e.restore(),this}toCommands(){return this.curves.flatMap(e=>e.toCommands())}toData(){return this.curves.filter(e=>e.curves.length).map(e=>e.toData()).join(" ")}toSVGPathString(){const e={...this.style,fill:this.style.fill??"#000",stroke:this.style.stroke??"none"},t={};for(const s in e)e[s]!==void 0&&(t[ku(s)]=e[s]);Object.assign(t,{"stroke-width":`${this.strokeWidth}px`});let i="";for(const s in t)t[s]!==void 0&&(i+=`${s}:${t[s]};`);return`<path d="${this.toData()}" style="${i}"></path>`}copy(e){return super.copy(e),this.currentCurve=e.currentCurve.clone(),this.style={...e.style},this}}class nA{constructor(A=[],e){this.paths=A,this.viewBox=e}getBoundingBox(A=!0){if(!this.paths.length)return;const e=G.MAX,t=G.MIN;return this.paths.forEach(i=>i.getMinMax(e,t,A)),new he(e.x,e.y,t.x-e.x,t.y-e.y)}toTriangulatedSVGString(A=this.paths.map(t=>t.fillTriangulate()),e=0){let t="";const i={x:-e,y:-e},s={x:e,y:e};(Array.isArray(A)?A:[A]).forEach(({vertices:a,indices:l})=>{const c=h=>{const f=a[h*2],I=a[h*2+1];return i.x=Math.min(i.x,f+e),s.x=Math.max(s.x,f+e),i.y=Math.min(i.y,I+e),s.y=Math.max(s.y,I+e),[f,I]};for(let h=0,f=l.length;h<f;h+=3){const I=c(l[h]),d=c(l[h+1]),C=c(l[h+2]);t+=`<polygon points="${I.join(",")} ${d.join(",")} ${C.join(",")}" fill="black" />`}});const o=[i.x,i.y,s.x-i.x,s.y-i.y];return`<svg width="${o[2]}" height="${o[3]}" viewBox="${o.join(" ")}" xmlns="http://www.w3.org/2000/svg">${t}</svg>`}toTriangulatedSVG(A,e){return new DOMParser().parseFromString(this.toTriangulatedSVGString(A,e),"image/svg+xml").documentElement}toSVGString(){const{x:A,y:e,width:t,height:i}=this.getBoundingBox(),s=this.paths.map(n=>n.toSVGPathString()).join("");return`<svg viewBox="${A} ${e} ${t} ${i}" width="${t}px" height="${i}px" xmlns="http://www.w3.org/2000/svg">${s}</svg>`}toSVGUrl(){return`data:image/svg+xml;base64,${btoa(this.toSVGString())}`}toSVG(){return new DOMParser().parseFromString(this.toSVGString(),"image/svg+xml").documentElement}toCanvas(A={}){const{pixelRatio:e=2,...t}=A,{left:i,top:s,width:n,height:o}=this.getBoundingBox(),a=document.createElement("canvas");a.width=n*e,a.height=o*e,a.style.width=`${n}px`,a.style.height=`${o}px`;const l=a.getContext("2d");return l&&(l.scale(e,e),l.translate(-i,-s),this.paths.forEach(c=>{c.drawTo(l,t)})),a}}const Za="data:image/svg+xml;",$a=`${Za}base64,`,el=`${Za}charset=utf8,`;function cn(r){if(typeof r=="string"){let A;r.startsWith($a)?(r=r.substring($a.length,r.length),A=atob(r)):r.startsWith(el)?(r=r.substring(el.length,r.length),A=decodeURIComponent(r)):A=r;const e=new DOMParser().parseFromString(A,"text/xml"),t=e.querySelector("parsererror");if(t)throw new Error(`${t.textContent??"parser error"}
|
|
277
|
-
${A}`);return e.documentElement}else return r}const Nu="px",Fu=90,tl=["mm","cm","in","pt","pc","px"],Al={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function Be(r){let A="px";if(typeof r=="string")for(let t=0,i=tl.length;t<i;t++){const s=tl[t];if(r.endsWith(s)){A=s,r=r.substring(0,r.length-s.length);break}}let e;return e=Al[A][Nu],e<0&&(e=Al[A].in*Fu),e*Number.parseFloat(r)}const Tu=new Ke,br=new Ke,il=new Ke,rl=new Ke;function Gu(r,A,e){if(!(r.hasAttribute("transform")||r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))))return null;const t=Lu(r);return e.length>0&&t.premultiply(e[e.length-1]),A.copy(t),e.push(t),t}function Lu(r){const A=new Ke,e=Tu;if(r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))&&A.translate(Be(r.getAttribute("x")),Be(r.getAttribute("y"))),r.hasAttribute("transform")){const t=r.getAttribute("transform").split(")");for(let i=t.length-1;i>=0;i--){const s=t[i].trim();if(s==="")continue;const n=s.indexOf("("),o=s.length;if(n>0&&n<o){const a=s.slice(0,n),l=Rt(s.slice(n+1));switch(e.identity(),a){case"translate":if(l.length>=1){const c=l[0];let h=0;l.length>=2&&(h=l[1]),e.translate(c,h)}break;case"rotate":if(l.length>=1){let c=0,h=0,f=0;c=l[0]*Math.PI/180,l.length>=3&&(h=l[1],f=l[2]),br.makeTranslation(-h,-f),il.makeRotation(c),rl.multiplyMatrices(il,br),br.makeTranslation(h,f),e.multiplyMatrices(br,rl)}break;case"scale":l.length>=1&&e.scale(l[0],l[1]??l[0]);break;case"skewX":l.length===1&&e.set(1,Math.tan(l[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":l.length===1&&e.set(1,0,0,Math.tan(l[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":l.length===6&&e.set(l[0],l[2],l[4],l[1],l[3],l[5],0,0,1);break}}A.premultiply(e)}}return A}function Ou(r){return new Ne().arc(Be(r.getAttribute("cx")||0),Be(r.getAttribute("cy")||0),Be(r.getAttribute("r")||0),0,Math.PI*2)}function Hu(r,A){if(!(!r.sheet||!r.sheet.cssRules||!r.sheet.cssRules.length))for(let e=0;e<r.sheet.cssRules.length;e++){const t=r.sheet.cssRules[e];if(t.type!==1)continue;const i=t.selectorText.split(/,/g).filter(Boolean).map(n=>n.trim()),s={};for(let n=t.style.length,o=0;o<n;o++){const a=t.style.item(o);s[a]=t.style.getPropertyValue(a)}for(let n=0;n<i.length;n++)A[i[n]]=Object.assign(A[i[n]]||{},{...s})}}function Ju(r){return new Ne().ellipse(Be(r.getAttribute("cx")||0),Be(r.getAttribute("cy")||0),Be(r.getAttribute("rx")||0),Be(r.getAttribute("ry")||0),0,0,Math.PI*2)}function Ku(r){return new Ne().moveTo(Be(r.getAttribute("x1")||0),Be(r.getAttribute("y1")||0)).lineTo(Be(r.getAttribute("x2")||0),Be(r.getAttribute("y2")||0))}function Yu(r){const A=new Ne,e=r.getAttribute("d");return!e||e==="none"?null:(A.addData(e),A)}const Vu=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function zu(r){var t;const A=new Ne;let e=0;return(t=r.getAttribute("points"))==null||t.replace(Vu,(i,s,n)=>{const o=Be(s),a=Be(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!0,A}const Wu=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function qu(r){var t;const A=new Ne;let e=0;return(t=r.getAttribute("points"))==null||t.replace(Wu,(i,s,n)=>{const o=Be(s),a=Be(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!1,A}function Xu(r){const A=Be(r.getAttribute("x")||0),e=Be(r.getAttribute("y")||0),t=Be(r.getAttribute("rx")||r.getAttribute("ry")||0),i=Be(r.getAttribute("ry")||r.getAttribute("rx")||0),s=Be(r.getAttribute("width")),n=Be(r.getAttribute("height")),o=1-.551915024494,a=new Ne;return a.moveTo(A+t,e),a.lineTo(A+s-t,e),(t!==0||i!==0)&&a.bezierCurveTo(A+s-t*o,e,A+s,e+i*o,A+s,e+i),a.lineTo(A+s,e+n-i),(t!==0||i!==0)&&a.bezierCurveTo(A+s,e+n-i*o,A+s-t*o,e+n,A+s-t,e+n),a.lineTo(A+t,e+n),(t!==0||i!==0)&&a.bezierCurveTo(A+t*o,e+n,A,e+n-i*o,A,e+n-i),a.lineTo(A,e+i),(t!==0||i!==0)&&a.bezierCurveTo(A,e+i*o,A+t*o,e,A+t,e),a}function Pt(r,A,e){A=Object.assign({},A);let t={};if(r.hasAttribute("class")){const l=r.getAttribute("class").split(/\s/).filter(Boolean).map(c=>c.trim());for(let c=0;c<l.length;c++)t=Object.assign(t,e[`.${l[c]}`])}r.hasAttribute("id")&&(t=Object.assign(t,e[`#${r.getAttribute("id")}`]));for(let l=r.style.length,c=0;c<l;c++){const h=r.style.item(c),f=r.style.getPropertyValue(h);A[h]=f,t[h]=f}function i(l,c,h=s){r.hasAttribute(l)&&(A[c]=h(r.getAttribute(l))),t[l]&&(A[c]=h(t[l]))}function s(l){return l.startsWith("url")&&console.warn("url access in attributes is not implemented."),l}function n(l){return Math.max(0,Math.min(1,Be(l)))}function o(l){return Math.max(0,Be(l))}function a(l){return l.split(" ").filter(c=>c!=="").map(c=>Be(c))}return i("fill","fill"),i("fill-opacity","fillOpacity",n),i("fill-rule","fillRule"),i("opacity","opacity",n),i("stroke","stroke"),i("stroke-opacity","strokeOpacity",n),i("stroke-width","strokeWidth",o),i("stroke-linecap","strokeLinecap"),i("stroke-linejoin","strokeLinejoin"),i("stroke-miterlimit","strokeMiterlimit",o),i("stroke-dasharray","strokeDasharray",a),i("stroke-dashoffset","strokeDashoffset",Be),i("visibility","visibility"),A}function hn(r,A,e=[],t={}){var h;if(r.nodeType!==1)return e;let i=!1,s=null,n={...A};switch(r.nodeName){case"svg":n=Pt(r,n,t);break;case"style":Hu(r,t);break;case"g":n=Pt(r,n,t);break;case"path":n=Pt(r,n,t),r.hasAttribute("d")&&(s=Yu(r));break;case"rect":n=Pt(r,n,t),s=Xu(r);break;case"polygon":n=Pt(r,n,t),s=zu(r);break;case"polyline":n=Pt(r,n,t),s=qu(r);break;case"circle":n=Pt(r,n,t),s=Ou(r);break;case"ellipse":n=Pt(r,n,t),s=Ju(r);break;case"line":n=Pt(r,n,t),s=Ku(r);break;case"defs":i=!0;break;case"use":{n=Pt(r,n,t);const I=(r.getAttributeNS("http://www.w3.org/1999/xlink","href")||r.getAttribute("href")||"").substring(1),d=(h=r.viewportElement)==null?void 0:h.getElementById(I);d?hn(d,n,e,t):console.warn(`'use node' references non-existent node id: ${I}`);break}default:console.warn(r);break}if(n.display==="none")return e;const o=new Ke,a=[],l=Gu(r,o,a);s&&(s.applyTransform(o),e.push(s),s.style={...n});const c=r.childNodes;for(let f=0,I=c.length;f<I;f++){const d=c[f];i&&d.nodeName!=="style"&&d.nodeName!=="defs"||hn(d,n,e,t)}return l&&(a.pop(),a.length>0?o.copy(a[a.length-1]):o.identity()),e}function gn(r){var e;const A=cn(r);return new nA(hn(A,{}),(e=A.getAttribute("viewBox"))==null?void 0:e.trim().split(" ").map(t=>Number(t)))}class sl extends Ne{constructor(){super(...arguments);u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineCap");u(this,"lineJoin");u(this,"lineWidth");u(this,"miterLimit");u(this,"uvTransform");u(this,"vertTransform");u(this,"_defaultStyle",_e.EMPTY);u(this,"_draws",[])}_toTexture(e){return e instanceof _e?e:new ya(e)}stroke(e){const t=new Ne(this);let i=this._defaultStyle;this.strokeStyle&&(i=this._toTexture(this.strokeStyle)),this.curves.length&&(this._draws.push({...e,type:"stroke",path:t,texture:i,uvTransform:this.uvTransform,vertTransform:this.vertTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),super.reset())}fillRect(e,t,i,s){this.rect(e,t,i,s).fill()}strokeRect(e,t,i,s){this.rect(e,t,i,s).stroke()}fill(e){const t=new Ne(this);let i=this._defaultStyle;this.fillStyle&&(i=this._toTexture(this.fillStyle)),this._draws.push({...e,type:"fill",path:t,texture:i,uvTransform:this.uvTransform,vertTransform:this.vertTransform}),super.reset()}copy(e){return super.copy(e),this.strokeStyle=e.strokeStyle,this.fillStyle=e.fillStyle,this.uvTransform=e.uvTransform,this.vertTransform=e.vertTransform,this.lineCap=e.lineCap,this.lineJoin=e.lineJoin,this.lineWidth=e.lineWidth,this.miterLimit=e.miterLimit,this._draws=e._draws.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.uvTransform=void 0,this.vertTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._draws.length=0,this}buildUvs(e,t,i,s,n){if(s){const o=n&&(typeof n=="function"?n:(c,h)=>n.applyToPoint(c,h)),a=s.width,l=s.height;for(let c=t.length,h=e;h<c;h+=2){const f=t[h],I=t[h+1];let d,C;o?[d,C]=o(f,I):[d,C]=[f/a,I/l],i.push(d,C)}}else for(let o=t.length,a=e;a<o;a+=2)i.push(0,0)}toBatchables(){const e=[];for(let t=this._draws.length,i=0;i<t;i++){const s=this._draws[i],n=[],o=[],a=[];s.type==="fill"?s.path.fillTriangulate({vertices:n,indices:o}):s.path.strokeTriangulate({vertices:n,indices:o,lineStyle:s.style,flipAlignment:!1,closed:!0}),this.buildUvs(0,n,a,s.texture,s.uvTransform),e.push({vertices:n,indices:o,uvs:a,texture:s.texture,type:s.type,disableWrapMode:s.disableWrapMode,vertTransform:s.vertTransform})}return e}}var ju=Object.defineProperty,Zu=Object.getOwnPropertyDescriptor,ki=(r,A,e,t)=>{for(var i=t>1?void 0:t?Zu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ju(A,e,i),i};g.CanvasItem=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"_parentGlobalVisible");u(this,"_globalVisible");u(this,"_parentGlobalOpacity");u(this,"_globalOpacity");u(this,"_modulate",new Vt(4294967295));u(this,"context",new sl);u(this,"_resetContext",!0);u(this,"_redrawing",!1);u(this,"_relayouting",!1);u(this,"_repainting",!1);u(this,"_originalBatchables",[]);u(this,"_layoutedBatchables",[]);u(this,"_batchables",[]);this.setProperties(e).append(t)}get globalVisible(){return this._globalVisible??!0}get globalOpacity(){return this._globalOpacity??1}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"modulate":this._modulate.value=t,this.requestRepaint();break;case"blendMode":this.requestRepaint();break;case"opacity":this._updateGlobalOpacity();break;case"visible":case"insideTimeRange":this._updateGlobalVisible();break}}show(){this.visible=!0}hide(){this.visible=!1}isVisibleInTree(){return this.globalOpacity>0&&this.globalVisible}canRender(){return super.canRender()&&this.isVisibleInTree()}requestRedraw(){this._redrawing=!0,this.requestUpdate()}requestRelayout(){this._relayouting=!0,this.requestUpdate()}requestRepaint(){this._repainting=!0,this.requestUpdate()}_updateGlobalVisible(){var e;this._parentGlobalVisible=(e=this.getParent())==null?void 0:e.globalVisible,this._globalVisible=(this._parentGlobalVisible??!0)&&this.visible&&this.insideTimeRange}_updateGlobalOpacity(){var t;this._parentGlobalOpacity=(t=this.getParent())==null?void 0:t.opacity;const e=zt(0,this.opacity,1)*(this._parentGlobalOpacity??1);this._globalOpacity!==e&&(this._globalOpacity=e,this.requestRepaint())}_draw(){this.emit("draw")}_redraw(){var e;return(e=this._tree)==null||e.log(this.name,"redrawing"),this._draw(),this.context.toBatchables()}_relayout(e){var t;return(t=this._tree)==null||t.log(this.name,"relayouting"),e}_repaint(e){var t;return(t=this._tree)==null||t.log(this.name,"repainting"),e.map(i=>({...i,modulate:this._modulate.toArgb(this.globalOpacity,!0),blendMode:this.blendMode}))}_process(e){super._process(e);const t=this.getParent();this._parentGlobalVisible!==(t==null?void 0:t.globalVisible)&&this.requestUpdate(),this._parentGlobalOpacity!==(t==null?void 0:t.globalOpacity)&&this.requestUpdate()}_update(e){super._update(e);const t=this.getParent();this._parentGlobalVisible!==(t==null?void 0:t.globalVisible)&&this._updateGlobalVisible(),this._parentGlobalOpacity!==(t==null?void 0:t.globalOpacity)&&this._updateGlobalOpacity();const i=this._redrawing;let s=this._relayouting,n=this._repainting,o;i&&(this._originalBatchables=this._redraw(),s=!0),s&&(this._layoutedBatchables=this._relayout(this._originalBatchables),n=!0),n&&(o=this._repaint(this._layoutedBatchables)),i&&this._resetContext&&this.context.reset(),o&&(this._batchables=o,this._redrawing=!1,this._relayouting=!1,this._repainting=!1)}_render(e){this._batchables.forEach(t=>{var i,s;(i=t.texture)==null||i.upload(e),e.batch2D.render({...t,texture:(s=t.texture)==null?void 0:s._glTexture(e)})}),super._render(e)}},ki([M()],g.CanvasItem.prototype,"modulate",2),ki([M()],g.CanvasItem.prototype,"blendMode",2),ki([Ie({default:!0})],g.CanvasItem.prototype,"visible",2),ki([Ie({default:1})],g.CanvasItem.prototype,"opacity",2),g.CanvasItem=ki([ne("CanvasItem")],g.CanvasItem);class $u{constructor(){u(this,"currentCall");u(this,"calls",[])}createCall(A){return{renderable:A,parentCall:this.currentCall,fn:A.render.bind(A),calls:[]}}push(A){var t;const e=this.createCall(A);return(((t=this.currentCall)==null?void 0:t.calls)??this.calls).push(e),e}render(A){this.calls.forEach(function e(t){t.fn(A,()=>{t.calls.forEach(e)})}),this.calls=[]}}var ef=Object.defineProperty,tf=Object.getOwnPropertyDescriptor,Ui=(r,A,e,t)=>{for(var i=t>1?void 0:t?tf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ef(A,e,i),i};g.Timeline=class extends g.Node{static from(A,e=!1){const[t,i]=A?Array.isArray(A)?A:[0,A]:[];return new g.Timeline({startTime:t,endTime:i,loop:e})}constructor(A){super(),this.setProperties(A)}_updateProperty(A,e,t){switch(super._updateProperty(A,e,t),A){case"startTime":this.startTime=Math.min(e,this.endTime);break;case"endTime":this.endTime=e||Number.MAX_SAFE_INTEGER;break}}addTime(A){const e=this.startTime,t=this.endTime;let i=this.currentTime;return i=i+A,this.loop&&i>t&&(i=e+i%t),i=zt(e,i,t),this.currentTime=i,this.emit("updateCurrentTime",i,A),this}_process(A){super._process(A),this.addTime(A)}},Ui([M({default:0})],g.Timeline.prototype,"startTime",2),Ui([M({default:0})],g.Timeline.prototype,"currentTime",2),Ui([M({default:Number.MAX_SAFE_INTEGER})],g.Timeline.prototype,"endTime",2),Ui([M({default:!1})],g.Timeline.prototype,"loop",2),g.Timeline=Ui([ne("Timeline")],g.Timeline);var Af=Object.defineProperty,un=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Af(A,e,i),i};class Ni extends pr{constructor(e=new g.Timeline){super();u(this,"input",new qo);u(this,"renderStack",new $u);u(this,"root",new g.Viewport(!0).setTree(this));u(this,"timeline");u(this,"_backgroundColor",new Vt);u(this,"_currentViewport");this.timeline=e.setTree(this)}getCurrentViewport(){return this._currentViewport}setCurrentViewport(e){this._currentViewport=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"backgroundColor":this._backgroundColor.value=t;break}}log(...e){this.debug&&console.log("[modern-canvas]",...e)}_process(e=0){this.timeline.emit("process",e),this.emit("processing"),this.root.emit("process",e),this.emit("processed")}_render(e){this.emit("rendering"),e.program.uniforms.projectionMatrix=this.root.toProjectionArray(!0),this.renderStack.render(e),this._renderScreen(e),this.emit("rendered")}_renderScreen(e){e.state.reset(),e.framebuffer.bind(null),e.viewport.bind({x:0,y:0,width:this.root.width*e.pixelRatio,height:this.root.height*e.pixelRatio}),this.backgroundColor&&e.gl.clearColor(...this._backgroundColor.toArray()),e.clear(),this.backgroundColor&&e.gl.clearColor(0,0,0,0);const t=this.root.texture;t.activate(e,0),fe.draw(e),e.texture.unbind(t)}free(){super.free(),this.root.children.internal.forEach(e=>this.root.removeChild(e)),this.input.removeEventListeners()}}un([M({default:!1})],Ni.prototype,"processPaused"),un([M()],Ni.prototype,"backgroundColor"),un([Ie({default:!1})],Ni.prototype,"debug");var rf=Object.getOwnPropertyDescriptor,sf=(r,A,e,t)=>{for(var i=t>1?void 0:t?rf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Transition=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.Transition=sf([ne("Transition",{effectMode:"transition",processMode:"pausable",duration:2e3})],g.Transition);var nl=Object.defineProperty,nf=Object.getOwnPropertyDescriptor,of=(r,A,e)=>A in r?nl(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,fn=(r,A,e,t)=>{for(var i=t>1?void 0:t?nf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&nl(A,e,i),i},ol=(r,A,e)=>of(r,typeof A!="symbol"?A+"":A,e);const al=`varying vec2 vUv[9];
|
|
276
|
+
}`})),Fs([b({default:[]})],h.ColorReplaceEffect.prototype,"colors",2),Fs([b({default:.05})],h.ColorReplaceEffect.prototype,"epsilon",2),h.ColorReplaceEffect=Fs([st("ColorReplaceEffect")],h.ColorReplaceEffect);function vg(r,t,e=2){const A=t&&t.length,i=A?t[0]*e:r.length;let s=Ba(r,0,i,e,!0);const n=[];if(!s||s.next===s.prev)return n;let o,a,l;if(A&&(s=Sg(r,t,s,e)),r.length>80*e){o=1/0,a=1/0;let c=-1/0,g=-1/0;for(let u=e;u<i;u+=e){const d=r[u],f=r[u+1];d<o&&(o=d),f<a&&(a=f),d>c&&(c=d),f>g&&(g=f)}l=Math.max(c-o,g-a),l=l!==0?32767/l:0}return yi(s,n,e,o,a,l,0),n}function Ba(r,t,e,A,i){let s;if(i===Og(r,t,e,A)>0)for(let n=t;n<e;n+=A)s=ma(n/A|0,r[n],r[n+1],s);else for(let n=e-A;n>=t;n-=A)s=ma(n/A|0,r[n],r[n+1],s);return s&&LA(s,s.next)&&(vi(s),s=s.next),s}function mA(r,t){if(!r)return r;t||(t=r);let e=r,A;do if(A=!1,!e.steiner&&(LA(e,e.next)||yt(e.prev,e,e.next)===0)){if(vi(e),e=t=e.prev,e===e.next)break;A=!0}else e=e.next;while(A||e!==t);return t}function yi(r,t,e,A,i,s,n){if(!r)return;!n&&s&&Ug(r,A,i,s);let o=r;for(;r.prev!==r.next;){const a=r.prev,l=r.next;if(s?bg(r,A,i,s):_g(r)){t.push(a.i,r.i,l.i),vi(r),r=l.next,o=l.next;continue}if(r=l,r===o){n?n===1?(r=Dg(mA(r),t),yi(r,t,e,A,i,s,2)):n===2&&xg(r,t,e,A,i,s):yi(mA(r),t,e,A,i,s,1);break}}}function _g(r){const t=r.prev,e=r,A=r.next;if(yt(t,e,A)>=0)return!1;const i=t.x,s=e.x,n=A.x,o=t.y,a=e.y,l=A.y,c=Math.min(i,s,n),g=Math.min(o,a,l),u=Math.max(i,s,n),d=Math.max(o,a,l);let f=A.next;for(;f!==t;){if(f.x>=c&&f.x<=u&&f.y>=g&&f.y<=d&&mi(i,o,s,a,n,l,f.x,f.y)&&yt(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function bg(r,t,e,A){const i=r.prev,s=r,n=r.next;if(yt(i,s,n)>=0)return!1;const o=i.x,a=s.x,l=n.x,c=i.y,g=s.y,u=n.y,d=Math.min(o,a,l),f=Math.min(c,g,u),B=Math.max(o,a,l),p=Math.max(c,g,u),S=Ts(d,f,t,e,A),R=Ts(B,p,t,e,A);let w=r.prevZ,D=r.nextZ;for(;w&&w.z>=S&&D&&D.z<=R;){if(w.x>=d&&w.x<=B&&w.y>=f&&w.y<=p&&w!==i&&w!==n&&mi(o,c,a,g,l,u,w.x,w.y)&&yt(w.prev,w,w.next)>=0||(w=w.prevZ,D.x>=d&&D.x<=B&&D.y>=f&&D.y<=p&&D!==i&&D!==n&&mi(o,c,a,g,l,u,D.x,D.y)&&yt(D.prev,D,D.next)>=0))return!1;D=D.nextZ}for(;w&&w.z>=S;){if(w.x>=d&&w.x<=B&&w.y>=f&&w.y<=p&&w!==i&&w!==n&&mi(o,c,a,g,l,u,w.x,w.y)&&yt(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;D&&D.z<=R;){if(D.x>=d&&D.x<=B&&D.y>=f&&D.y<=p&&D!==i&&D!==n&&mi(o,c,a,g,l,u,D.x,D.y)&&yt(D.prev,D,D.next)>=0)return!1;D=D.nextZ}return!0}function Dg(r,t){let e=r;do{const A=e.prev,i=e.next.next;!LA(A,i)&&Qa(A,e,e.next,i)&&wi(A,i)&&wi(i,A)&&(t.push(A.i,e.i,i.i),vi(e),vi(e.next),e=r=i),e=e.next}while(e!==r);return mA(e)}function xg(r,t,e,A,i,s){let n=r;do{let o=n.next.next;for(;o!==n.prev;){if(n.i!==o.i&&Tg(n,o)){let a=ya(n,o);n=mA(n,n.next),a=mA(a,a.next),yi(n,t,e,A,i,s,0),yi(a,t,e,A,i,s,0);return}o=o.next}n=n.next}while(n!==r)}function Sg(r,t,e,A){const i=[];for(let s=0,n=t.length;s<n;s++){const o=t[s]*A,a=s<n-1?t[s+1]*A:r.length,l=Ba(r,o,a,A,!1);l===l.next&&(l.steiner=!0),i.push(Fg(l))}i.sort(Mg);for(let s=0;s<i.length;s++)e=Rg(i[s],e);return e}function Mg(r,t){let e=r.x-t.x;if(e===0&&(e=r.y-t.y,e===0)){const A=(r.next.y-r.y)/(r.next.x-r.x),i=(t.next.y-t.y)/(t.next.x-t.x);e=A-i}return e}function Rg(r,t){const e=Pg(r,t);if(!e)return t;const A=ya(e,r);return mA(A,A.next),mA(e,e.next)}function Pg(r,t){let e=t;const A=r.x,i=r.y;let s=-1/0,n;if(LA(r,e))return e;do{if(LA(r,e.next))return e.next;if(i<=e.y&&i>=e.next.y&&e.next.y!==e.y){const g=e.x+(i-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(g<=A&&g>s&&(s=g,n=e.x<e.next.x?e:e.next,g===A))return n}e=e.next}while(e!==t);if(!n)return null;const o=n,a=n.x,l=n.y;let c=1/0;e=n;do{if(A>=e.x&&e.x>=a&&A!==e.x&&Ca(i<l?A:s,i,a,l,i<l?s:A,i,e.x,e.y)){const g=Math.abs(i-e.y)/(A-e.x);wi(e,r)&&(g<c||g===c&&(e.x>n.x||e.x===n.x&&kg(n,e)))&&(n=e,c=g)}e=e.next}while(e!==o);return n}function kg(r,t){return yt(r.prev,r,t.prev)<0&&yt(t.next,r,r.next)<0}function Ug(r,t,e,A){let i=r;do i.z===0&&(i.z=Ts(i.x,i.y,t,e,A)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,Ng(i)}function Ng(r){let t,e=1;do{let A=r,i;r=null;let s=null;for(t=0;A;){t++;let n=A,o=0;for(let l=0;l<e&&(o++,n=n.nextZ,!!n);l++);let a=e;for(;o>0||a>0&&n;)o!==0&&(a===0||!n||A.z<=n.z)?(i=A,A=A.nextZ,o--):(i=n,n=n.nextZ,a--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;A=n}s.nextZ=null,e*=2}while(t>1);return r}function Ts(r,t,e,A,i){return r=(r-e)*i|0,t=(t-A)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,r|t<<1}function Fg(r){let t=r,e=r;do(t.x<e.x||t.x===e.x&&t.y<e.y)&&(e=t),t=t.next;while(t!==r);return e}function Ca(r,t,e,A,i,s,n,o){return(i-n)*(t-o)>=(r-n)*(s-o)&&(r-n)*(A-o)>=(e-n)*(t-o)&&(e-n)*(s-o)>=(i-n)*(A-o)}function mi(r,t,e,A,i,s,n,o){return!(r===n&&t===o)&&Ca(r,t,e,A,i,s,n,o)}function Tg(r,t){return r.next.i!==t.i&&r.prev.i!==t.i&&!Lg(r,t)&&(wi(r,t)&&wi(t,r)&&Gg(r,t)&&(yt(r.prev,r,t.prev)||yt(r,t.prev,t))||LA(r,t)&&yt(r.prev,r,r.next)>0&&yt(t.prev,t,t.next)>0)}function yt(r,t,e){return(t.y-r.y)*(e.x-t.x)-(t.x-r.x)*(e.y-t.y)}function LA(r,t){return r.x===t.x&&r.y===t.y}function Qa(r,t,e,A){const i=fr(yt(r,t,e)),s=fr(yt(r,t,A)),n=fr(yt(e,A,r)),o=fr(yt(e,A,t));return!!(i!==s&&n!==o||i===0&&ur(r,e,t)||s===0&&ur(r,A,t)||n===0&&ur(e,r,A)||o===0&&ur(e,t,A))}function ur(r,t,e){return t.x<=Math.max(r.x,e.x)&&t.x>=Math.min(r.x,e.x)&&t.y<=Math.max(r.y,e.y)&&t.y>=Math.min(r.y,e.y)}function fr(r){return r>0?1:r<0?-1:0}function Lg(r,t){let e=r;do{if(e.i!==r.i&&e.next.i!==r.i&&e.i!==t.i&&e.next.i!==t.i&&Qa(e,e.next,r,t))return!0;e=e.next}while(e!==r);return!1}function wi(r,t){return yt(r.prev,r,r.next)<0?yt(r,t,r.next)>=0&&yt(r,r.prev,t)>=0:yt(r,t,r.prev)<0||yt(r,r.next,t)<0}function Gg(r,t){let e=r,A=!1;const i=(r.x+t.x)/2,s=(r.y+t.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&i<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(A=!A),e=e.next;while(e!==r);return A}function ya(r,t){const e=Ls(r.i,r.x,r.y),A=Ls(t.i,t.x,t.y),i=r.next,s=t.prev;return r.next=t,t.prev=r,e.next=i,i.prev=e,A.next=e,e.prev=A,s.next=A,A.prev=s,A}function ma(r,t,e,A){const i=Ls(r,t,e);return A?(i.next=A.next,i.prev=A,A.next.prev=i,A.next=i):(i.prev=i,i.next=i),i}function vi(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Ls(r,t,e){return{i:r,x:t,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Og(r,t,e,A){let i=0;for(let s=t,n=e-A;s<e;s+=A)i+=(r[n]-r[s])*(r[s+1]+r[n+1]),n=s;return i}function Hg(r,t,e,A={}){const{radius:i=1}=A;r.moveTo(t,e),r.arc(t,e,i,0,Math.PI*2)}const Jg={arcs:"bevel",bevel:"bevel",miter:"miter","miter-clip":"miter",round:"round"};function Gs(r,t){const{fill:e="#000",stroke:A="none",strokeWidth:i=A==="none"?0:1,strokeLinecap:s="round",strokeLinejoin:n="miter",strokeMiterlimit:o=0,strokeDasharray:a=[],strokeDashoffset:l=0,shadowOffsetX:c=0,shadowOffsetY:g=0,shadowBlur:u=0,shadowColor:d="rgba(0, 0, 0, 0)"}=t;r.fillStyle=e,r.strokeStyle=A,r.lineWidth=i,r.lineCap=s,r.lineJoin=Jg[n],r.miterLimit=o,r.setLineDash(a),r.lineDashOffset=l,r.shadowOffsetX=c,r.shadowOffsetY=g,r.shadowBlur=u,r.shadowColor=d}class O{constructor(t=0,e=0){this.x=t,this.y=e}static get MAX(){return new O(1/0,1/0)}static get MIN(){return new O(-1/0,-1/0)}get array(){return[this.x,this.y]}finite(){return this.x=Number.isFinite(this.x)?this.x:0,this.y=Number.isFinite(this.y)?this.y:0,this}set(t,e){return this.x=t,this.y=e,this}add(t){return this.x+=t.x,this.y+=t.y,this}sub(t){return this.x-=t.x,this.y-=t.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}divide(t){return this.x/=t.x,this.y/=t.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}rotate(t,e={x:0,y:0}){const A=-t/180*Math.PI,i=this.x-e.x,s=-(this.y-e.y),n=Math.sin(A),o=Math.cos(A);return this.set(e.x+(i*o-s*n),e.y-(i*n+s*o)),this}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,A=this.y-t.y;return e*e+A*A}lengthSquared(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.lengthSquared())}scale(t,e=t,A={x:0,y:0}){const i=t<0?A.x-this.x+A.x:this.x,s=e<0?A.y-this.y+A.y:this.y;return this.x=i*Math.abs(t),this.y=s*Math.abs(e),this}skew(t,e=0,A={x:0,y:0}){const i=this.x-A.x,s=this.y-A.y;return this.x=A.x+(i+Math.tan(t)*s),this.y=A.y+(s+Math.tan(e)*i),this}min(...t){return this.x=Math.min(this.x,...t.map(e=>e.x)),this.y=Math.min(this.y,...t.map(e=>e.y)),this}max(...t){return this.x=Math.max(this.x,...t.map(e=>e.x)),this.y=Math.max(this.y,...t.map(e=>e.y)),this}normalize(){return this.scale(1/(this.length()||1))}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this}divideVectors(t,e){return this.x=t.x/e.x,this.y=t.y/e.y,this}lerpVectors(t,e,A){return this.x=t.x+(e.x-t.x)*A,this.y=t.y+(e.y-t.y)*A,this}equals(t){return this.x===t.x&&this.y===t.y}applyMatrix3(t){const e=this.x,A=this.y,i=t.elements;return this.x=i[0]*e+i[3]*A+i[6],this.y=i[1]*e+i[4]*A+i[7],this}copy(t){return this.x=t.x,this.y=t.y,this}clone(){return new O(this.x,this.y)}}class ct{constructor(t=0,e=0,A=0,i=0){this.left=t,this.top=e,this.width=A,this.height=i}get x(){return this.left}set x(t){this.left=t}get y(){return this.top}set y(t){this.top=t}get right(){return this.left+this.width}get bottom(){return this.top+this.height}get center(){return new O((this.left+this.right)/2,(this.top+this.bottom)/2)}get array(){return[this.left,this.top,this.width,this.height]}static from(...t){if(t.length===0)return new ct;if(t.length===1)return t[0].clone();const e=t[0],A=t.slice(1).reduce((i,s)=>(i.left=Math.min(i.left,s.left),i.top=Math.min(i.top,s.top),i.right=Math.max(i.right,s.right),i.bottom=Math.max(i.bottom,s.bottom),i),{left:e?.left??0,top:e?.top??0,right:e?.right??0,bottom:e?.bottom??0});return new ct(A.left,A.top,A.right-A.left,A.bottom-A.top)}translate(t,e){return this.left+=t,this.top+=e,this}copy(t){return this.left=t.left,this.top=t.top,this.width=t.width,this.height=t.height,this}clone(){return new ct(this.left,this.top,this.width,this.height)}}class Jt{elements=[];constructor(t=1,e=0,A=0,i=0,s=1,n=0,o=0,a=0,l=1){this.set(t,e,A,i,s,n,o,a,l)}set(t,e,A,i,s,n,o,a,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=o,c[3]=e,c[4]=s,c[5]=a,c[6]=A,c[7]=n,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,A=t.elements;return e[0]=A[0],e[1]=A[1],e[2]=A[2],e[3]=A[3],e[4]=A[4],e[5]=A[5],e[6]=A[6],e[7]=A[7],e[8]=A[8],this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const A=t.elements,i=e.elements,s=this.elements,n=A[0],o=A[3],a=A[6],l=A[1],c=A[4],g=A[7],u=A[2],d=A[5],f=A[8],B=i[0],p=i[3],S=i[6],R=i[1],w=i[4],D=i[7],Q=i[2],m=i[5],x=i[8];return s[0]=n*B+o*R+a*Q,s[3]=n*p+o*w+a*m,s[6]=n*S+o*D+a*x,s[1]=l*B+c*R+g*Q,s[4]=l*p+c*w+g*m,s[7]=l*S+c*D+g*x,s[2]=u*B+d*R+f*Q,s[5]=u*p+d*w+f*m,s[8]=u*S+d*D+f*x,this}invert(){const t=this.elements,e=t[0],A=t[1],i=t[2],s=t[3],n=t[4],o=t[5],a=t[6],l=t[7],c=t[8],g=c*n-o*l,u=o*a-c*s,d=l*s-n*a,f=e*g+A*u+i*d;if(f===0)return this.set(0,0,0,0,0,0,0,0,0);const B=1/f;return t[0]=g*B,t[1]=(i*l-c*A)*B,t[2]=(o*A-i*n)*B,t[3]=u*B,t[4]=(c*e-i*a)*B,t[5]=(i*s-o*e)*B,t[6]=d*B,t[7]=(A*a-l*e)*B,t[8]=(n*e-A*s)*B,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}scale(t,e){return this.premultiply(Os.makeScale(t,e)),this}rotate(t){return this.premultiply(Os.makeRotation(-t)),this}translate(t,e){return this.premultiply(Os.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),A=Math.sin(t);return this.set(e,-A,0,A,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}fromArray(t,e=0){for(let A=0;A<9;A++)this.elements[A]=t[A+e];return this}clone(){return new this.constructor().fromArray(this.elements)}}const Os=new Jt;function wa(r,t,e,A){const i=r*e+t*A,s=Math.sqrt(r*r+t*t)*Math.sqrt(e*e+A*A);let n=Math.acos(Math.max(-1,Math.min(1,i/s)));return r*A-t*e<0&&(n=-n),n}function Kg(r,t,e,A,i,s,n,o){if(t===0||e===0){r.lineTo(o.x,o.y);return}A=A*Math.PI/180,t=Math.abs(t),e=Math.abs(e);const a=(n.x-o.x)/2,l=(n.y-o.y)/2,c=Math.cos(A)*a+Math.sin(A)*l,g=-Math.sin(A)*a+Math.cos(A)*l;let u=t*t,d=e*e;const f=c*c,B=g*g,p=f/u+B/d;if(p>1){const et=Math.sqrt(p);t=et*t,e=et*e,u=t*t,d=e*e}const S=u*B+d*f,R=(u*d-S)/S;let w=Math.sqrt(Math.max(0,R));i===s&&(w=-w);const D=w*t*g/e,Q=-w*e*c/t,m=Math.cos(A)*D-Math.sin(A)*Q+(n.x+o.x)/2,x=Math.sin(A)*D+Math.cos(A)*Q+(n.y+o.y)/2,M=wa(1,0,(c-D)/t,(g-Q)/e),V=wa((c-D)/t,(g-Q)/e,(-c-D)/t,(-g-Q)/e)%(Math.PI*2);r.ellipse(m,x,t,e,A,M,M+V,s===0)}const _t={WHITESPACE:/[ \t\r\n]/,DIGIT:/\d/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/};function Se(r,t,e=0){let o=0,a=!0,l="",c="";const g=[];function u(p,S,R){const w=new SyntaxError(`Unexpected character "${p}" at index ${S}.`);throw w.partial=R,w}function d(){l!==""&&(c===""?g.push(Number(l)):g.push(Number(l)*10**Number(c))),l="",c=""}let f;const B=r.length;for(let p=0;p<B;p++){if(f=r[p],Array.isArray(t)&&t.includes(g.length%e)&&_t.FLAGS.test(f)){o=1,l=f,d();continue}if(o===0){if(_t.WHITESPACE.test(f))continue;if(_t.DIGIT.test(f)||_t.SIGN.test(f)){o=1,l=f;continue}if(_t.POINT.test(f)){o=2,l=f;continue}_t.COMMA.test(f)&&(a&&u(f,p,g),a=!0)}if(o===1){if(_t.DIGIT.test(f)){l+=f;continue}if(_t.POINT.test(f)){l+=f,o=2;continue}if(_t.EXP.test(f)){o=3;continue}_t.SIGN.test(f)&&l.length===1&&_t.SIGN.test(l[0])&&u(f,p,g)}if(o===2){if(_t.DIGIT.test(f)){l+=f;continue}if(_t.EXP.test(f)){o=3;continue}_t.POINT.test(f)&&l[l.length-1]==="."&&u(f,p,g)}if(o===3){if(_t.DIGIT.test(f)){c+=f;continue}if(_t.SIGN.test(f)){if(c===""){c+=f;continue}c.length===1&&_t.SIGN.test(c)&&u(f,p,g)}}_t.WHITESPACE.test(f)?(d(),o=0,a=!1):_t.COMMA.test(f)?(d(),o=0,a=!0):_t.SIGN.test(f)?(d(),o=1,l=f):_t.POINT.test(f)?(d(),o=2,l=f):u(f,p,g)}return d(),g}function GA(r,t){return r-(t-r)}function va(r,t){const e=new O,A=new O;for(let i=0,s=r.length;i<s;i++){const n=r[i];if(n.type==="m"||n.type==="M")n.type==="m"?e.add(n):e.copy(n),t.moveTo(e.x,e.y),A.copy(e);else if(n.type==="h"||n.type==="H")n.type==="h"?e.x+=n.x:e.x=n.x,t.lineTo(e.x,e.y),A.copy(e);else if(n.type==="v"||n.type==="V")n.type==="v"?e.y+=n.y:e.y=n.y,t.lineTo(e.x,e.y),A.copy(e);else if(n.type==="l"||n.type==="L")n.type==="l"?e.add(n):e.copy(n),t.lineTo(e.x,e.y),A.copy(e);else if(n.type==="c"||n.type==="C")n.type==="c"?(t.bezierCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),A.x=e.x+n.x2,A.y=e.y+n.y2,e.add(n)):(t.bezierCurveTo(n.x1,n.y1,n.x2,n.y2,n.x,n.y),A.x=n.x2,A.y=n.y2,e.copy(n));else if(n.type==="s"||n.type==="S")n.type==="s"?(t.bezierCurveTo(GA(e.x,A.x),GA(e.y,A.y),e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),A.x=e.x+n.x2,A.y=e.y+n.y2,e.add(n)):(t.bezierCurveTo(GA(e.x,A.x),GA(e.y,A.y),n.x2,n.y2,n.x,n.y),A.x=n.x2,A.y=n.y2,e.copy(n));else if(n.type==="q"||n.type==="Q")n.type==="q"?(t.quadraticCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x,e.y+n.y),A.x=e.x+n.x1,A.y=e.y+n.y1,e.add(n)):(t.quadraticCurveTo(n.x1,n.y1,n.x,n.y),A.x=n.x1,A.y=n.y1,e.copy(n));else if(n.type==="t"||n.type==="T"){const o=GA(e.x,A.x),a=GA(e.y,A.y);A.x=o,A.y=a,n.type==="t"?(t.quadraticCurveTo(o,a,e.x+n.x,e.y+n.y),e.add(n)):(t.quadraticCurveTo(o,a,n.x,n.y),e.copy(n))}else if(n.type==="a"||n.type==="A"){const o=e.clone();if(n.type==="a"){if(n.x===0&&n.y===0)continue;e.add(n)}else{if(e.equals(n))continue;e.copy(n)}A.copy(e),Kg(t,n.rx,n.ry,n.angle,n.largeArcFlag,n.sweepFlag,o,e)}else n.type==="z"||n.type==="Z"?(t.startPoint&&e.copy(t.startPoint),t.closePath()):console.warn("Unsupported commands",n)}}function Yg(r){let t,e;const A=[];for(let i=0,s=r.length;i<s;i++){const n=r[i];switch(n.type){case"m":case"M":if(n.x.toFixed(4)===e?.x.toFixed(4)&&n.y.toFixed(4)===e?.y.toFixed(4))continue;A.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y},t={x:n.x,y:n.y};break;case"h":case"H":A.push(`${n.type} ${n.x}`),e={x:n.x,y:e?.y??0};break;case"v":case"V":A.push(`${n.type} ${n.y}`),e={x:e?.x??0,y:n.y};break;case"l":case"L":A.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"c":case"C":A.push(`${n.type} ${n.x1} ${n.y1} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"s":case"S":A.push(`${n.type} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"q":case"Q":A.push(`${n.type} ${n.x1} ${n.y1} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"t":case"T":A.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"a":case"A":A.push(`${n.type} ${n.rx} ${n.ry} ${n.angle} ${n.largeArcFlag} ${n.sweepFlag} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"z":case"Z":A.push(n.type),t&&(e={x:t.x,y:t.y});break}}return A.join(" ")}const Vg=/[a-df-z][^a-df-z]*/gi;function _a(r){const t=[],e=r.match(Vg);if(!e)return t;for(let A=0,i=e.length;A<i;A++){const s=e[A],n=s.charAt(0),o=s.slice(1).trim();let a;switch(n){case"m":case"M":a=Se(o);for(let l=0,c=a.length;l<c;l+=2)l===0?t.push({type:n,x:a[l],y:a[l+1]}):t.push({type:n==="m"?"l":"L",x:a[l],y:a[l+1]});break;case"h":case"H":a=Se(o);for(let l=0,c=a.length;l<c;l++)t.push({type:n,x:a[l]});break;case"v":case"V":a=Se(o);for(let l=0,c=a.length;l<c;l++)t.push({type:n,y:a[l]});break;case"l":case"L":a=Se(o);for(let l=0,c=a.length;l<c;l+=2)t.push({type:n,x:a[l],y:a[l+1]});break;case"c":case"C":a=Se(o);for(let l=0,c=a.length;l<c;l+=6)t.push({type:n,x1:a[l],y1:a[l+1],x2:a[l+2],y2:a[l+3],x:a[l+4],y:a[l+5]});break;case"s":case"S":a=Se(o);for(let l=0,c=a.length;l<c;l+=4)t.push({type:n,x2:a[l],y2:a[l+1],x:a[l+2],y:a[l+3]});break;case"q":case"Q":a=Se(o);for(let l=0,c=a.length;l<c;l+=4)t.push({type:n,x1:a[l],y1:a[l+1],x:a[l+2],y:a[l+3]});break;case"t":case"T":a=Se(o);for(let l=0,c=a.length;l<c;l+=2)t.push({type:n,x:a[l],y:a[l+1]});break;case"a":case"A":a=Se(o,[3,4],7);for(let l=0,c=a.length;l<c;l+=7)t.push({type:n,rx:a[l],ry:a[l+1],angle:a[l+2],largeArcFlag:a[l+3],sweepFlag:a[l+4],x:a[l+5],y:a[l+6]});break;case"z":case"Z":t.push({type:n});break;default:console.warn(s)}}return t}const ba="data:image/svg+xml;",Da=`${ba}base64,`,xa=`${ba}charset=utf8,`;function Hs(r){if(typeof r=="string"){let t;r.startsWith(Da)?(r=r.substring(Da.length,r.length),t=atob(r)):r.startsWith(xa)?(r=r.substring(xa.length,r.length),t=decodeURIComponent(r)):t=r;const e=new DOMParser().parseFromString(t,"text/xml"),A=e.querySelector("parsererror");if(A)throw new Error(`${A.textContent??"parser error"}
|
|
277
|
+
${t}`);return e.documentElement}else return r}const zg="px",Wg=90,Sa=["mm","cm","in","pt","pc","px"],Ma={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function Et(r){let t="px";if(typeof r=="string")for(let A=0,i=Sa.length;A<i;A++){const s=Sa[A];if(r.endsWith(s)){t=s,r=r.substring(0,r.length-s.length);break}}let e;return e=Ma[t][zg],e<0&&(e=Ma[t].in*Wg),e*Number.parseFloat(r)}const qg=new Jt,dr=new Jt,Ra=new Jt,Pa=new Jt;function Xg(r,t,e){if(!(r.hasAttribute("transform")||r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))))return null;const A=jg(r);return e.length>0&&A.premultiply(e[e.length-1]),t.copy(A),e.push(A),A}function jg(r){const t=new Jt,e=qg;if(r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))&&t.translate(Et(r.getAttribute("x")),Et(r.getAttribute("y"))),r.hasAttribute("transform")){const A=r.getAttribute("transform").split(")");for(let i=A.length-1;i>=0;i--){const s=A[i].trim();if(s==="")continue;const n=s.indexOf("("),o=s.length;if(n>0&&n<o){const a=s.slice(0,n),l=Se(s.slice(n+1));switch(e.identity(),a){case"translate":if(l.length>=1){const c=l[0];let g=0;l.length>=2&&(g=l[1]),e.translate(c,g)}break;case"rotate":if(l.length>=1){let c=0,g=0,u=0;c=l[0]*Math.PI/180,l.length>=3&&(g=l[1],u=l[2]),dr.makeTranslation(-g,-u),Ra.makeRotation(c),Pa.multiplyMatrices(Ra,dr),dr.makeTranslation(g,u),e.multiplyMatrices(dr,Pa)}break;case"scale":l.length>=1&&e.scale(l[0],l[1]??l[0]);break;case"skewX":l.length===1&&e.set(1,Math.tan(l[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":l.length===1&&e.set(1,0,0,Math.tan(l[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":l.length===6&&e.set(l[0],l[2],l[4],l[1],l[3],l[5],0,0,1);break}}t.premultiply(e)}}return t}function Zg(r){return new Ut().arc(Et(r.getAttribute("cx")||0),Et(r.getAttribute("cy")||0),Et(r.getAttribute("r")||0),0,Math.PI*2)}function $g(r,t){if(!(!r.sheet||!r.sheet.cssRules||!r.sheet.cssRules.length))for(let e=0;e<r.sheet.cssRules.length;e++){const A=r.sheet.cssRules[e];if(A.type!==1)continue;const i=A.selectorText.split(/,/g).filter(Boolean).map(n=>n.trim()),s={};for(let n=A.style.length,o=0;o<n;o++){const a=A.style.item(o);s[a]=A.style.getPropertyValue(a)}for(let n=0;n<i.length;n++)t[i[n]]=Object.assign(t[i[n]]||{},{...s})}}function tu(r){return new Ut().ellipse(Et(r.getAttribute("cx")||0),Et(r.getAttribute("cy")||0),Et(r.getAttribute("rx")||0),Et(r.getAttribute("ry")||0),0,0,Math.PI*2)}function eu(r){return new Ut().moveTo(Et(r.getAttribute("x1")||0),Et(r.getAttribute("y1")||0)).lineTo(Et(r.getAttribute("x2")||0),Et(r.getAttribute("y2")||0))}function Au(r){const t=new Ut,e=r.getAttribute("d");return!e||e==="none"?null:(t.addData(e),t)}const iu=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function ru(r){const t=new Ut;let e=0;return r.getAttribute("points")?.replace(iu,(A,i,s)=>{const n=Et(i),o=Et(s);return e===0?t.moveTo(n,o):t.lineTo(n,o),e++,A}),t.currentCurve.autoClose=!0,t}const su=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function nu(r){const t=new Ut;let e=0;return r.getAttribute("points")?.replace(su,(A,i,s)=>{const n=Et(i),o=Et(s);return e===0?t.moveTo(n,o):t.lineTo(n,o),e++,A}),t.currentCurve.autoClose=!1,t}function ou(r){const t=Et(r.getAttribute("x")||0),e=Et(r.getAttribute("y")||0),A=Et(r.getAttribute("rx")||r.getAttribute("ry")||0),i=Et(r.getAttribute("ry")||r.getAttribute("rx")||0),s=Et(r.getAttribute("width")),n=Et(r.getAttribute("height")),o=1-.551915024494,a=new Ut;return a.moveTo(t+A,e),a.lineTo(t+s-A,e),(A!==0||i!==0)&&a.bezierCurveTo(t+s-A*o,e,t+s,e+i*o,t+s,e+i),a.lineTo(t+s,e+n-i),(A!==0||i!==0)&&a.bezierCurveTo(t+s,e+n-i*o,t+s-A*o,e+n,t+s-A,e+n),a.lineTo(t+A,e+n),(A!==0||i!==0)&&a.bezierCurveTo(t+A*o,e+n,t,e+n-i*o,t,e+n-i),a.lineTo(t,e+i),(A!==0||i!==0)&&a.bezierCurveTo(t,e+i*o,t+A*o,e,t+A,e),a}function Me(r,t,e){t=Object.assign({},t);let A={};if(r.hasAttribute("class")){const l=r.getAttribute("class").split(/\s/).filter(Boolean).map(c=>c.trim());for(let c=0;c<l.length;c++)A=Object.assign(A,e[`.${l[c]}`])}r.hasAttribute("id")&&(A=Object.assign(A,e[`#${r.getAttribute("id")}`]));for(let l=r.style.length,c=0;c<l;c++){const g=r.style.item(c),u=r.style.getPropertyValue(g);t[g]=u,A[g]=u}function i(l,c,g=s){r.hasAttribute(l)&&(t[c]=g(r.getAttribute(l))),A[l]&&(t[c]=g(A[l]))}function s(l){return l.startsWith("url")&&console.warn("url access in attributes is not implemented."),l}function n(l){return Math.max(0,Math.min(1,Et(l)))}function o(l){return Math.max(0,Et(l))}function a(l){return l.split(" ").filter(c=>c!=="").map(c=>Et(c))}return i("fill","fill"),i("fill-opacity","fillOpacity",n),i("fill-rule","fillRule"),i("opacity","opacity",n),i("stroke","stroke"),i("stroke-opacity","strokeOpacity",n),i("stroke-width","strokeWidth",o),i("stroke-linecap","strokeLinecap"),i("stroke-linejoin","strokeLinejoin"),i("stroke-miterlimit","strokeMiterlimit",o),i("stroke-dasharray","strokeDasharray",a),i("stroke-dashoffset","strokeDashoffset",Et),i("visibility","visibility"),t}function Js(r,t,e=[],A={}){if(r.nodeType!==1)return e;let i=!1,s=null,n={...t};switch(r.nodeName){case"svg":n=Me(r,n,A);break;case"style":$g(r,A);break;case"g":n=Me(r,n,A);break;case"path":n=Me(r,n,A),r.hasAttribute("d")&&(s=Au(r));break;case"rect":n=Me(r,n,A),s=ou(r);break;case"polygon":n=Me(r,n,A),s=ru(r);break;case"polyline":n=Me(r,n,A),s=nu(r);break;case"circle":n=Me(r,n,A),s=Zg(r);break;case"ellipse":n=Me(r,n,A),s=tu(r);break;case"line":n=Me(r,n,A),s=eu(r);break;case"defs":i=!0;break;case"use":{n=Me(r,n,A);const u=(r.getAttributeNS("http://www.w3.org/1999/xlink","href")||r.getAttribute("href")||"").substring(1),d=r.viewportElement?.getElementById(u);d?Js(d,n,e,A):console.warn(`'use node' references non-existent node id: ${u}`);break}default:console.warn(r);break}if(n.display==="none")return e;const o=new Jt,a=[],l=Xg(r,o,a);s&&(s.applyTransform(o),e.push(s),s.style={...n});const c=r.childNodes;for(let g=0,u=c.length;g<u;g++){const d=c[g];i&&d.nodeName!=="style"&&d.nodeName!=="defs"||Js(d,n,e,A)}return l&&(a.pop(),a.length>0?o.copy(a[a.length-1]):o.identity()),e}function Ks(r){const t=Hs(r);return new sA(Js(t,{}),t.getAttribute("viewBox")?.trim().split(" ").map(e=>Number(e)))}function ka(r,t,e,A,i){const s=(A-t)*.5,n=(i-e)*.5,o=r*r,a=r*o;return(2*e-2*A+s+n)*a+(-3*e+3*A-2*s-n)*o+s*r+e}function au(r,t){const e=1-r;return e*e*e*t}function lu(r,t){const e=1-r;return 3*e*e*r*t}function cu(r,t){return 3*(1-r)*r*r*t}function hu(r,t){return r*r*r*t}function Ua(r,t,e,A,i){return au(r,t)+lu(r,e)+cu(r,A)+hu(r,i)}function Na(r,t={}){let{vertices:e=[],indices:A=[],holes:i=[],verticesStride:s=2,verticesOffset:n=e.length/s,indicesOffset:o=A.length}=t;const a=vg(r,i,2);if(a.length){for(let c=0;c<a.length;c+=3)A[o++]=a[c]+n,A[o++]=a[c+1]+n,A[o++]=a[c+2]+n;let l=n*s;for(let c=0;c<r.length;c+=2)e[l]=r[c],e[l+1]=r[c+1],l+=s}return{vertices:e,indices:A}}const gu=8,Ir=11920929e-14,uu=1;function fu(r,t,e,A,i,s,n,o,a=.5,l=[]){const g=Math.min(.99,Math.max(0,a));let u=(uu-g)/1;return u*=u,Ys(r,t,e,A,i,s,n,o,l,u,0),l.push(n,o),l}function Ys(r,t,e,A,i,s,n,o,a,l,c){if(c>gu)return;const g=(r+e)/2,u=(t+A)/2,d=(e+i)/2,f=(A+s)/2,B=(i+n)/2,p=(s+o)/2,S=(g+d)/2,R=(u+f)/2,w=(d+B)/2,D=(f+p)/2,Q=(S+w)/2,m=(R+D)/2;if(c>0){let x=n-r,M=o-t;const V=Math.abs((e-n)*M-(A-o)*x),et=Math.abs((i-n)*M-(s-o)*x);if(V>Ir&&et>Ir){if((V+et)*(V+et)<=l*(x*x+M*M)){a.push(Q,m);return}}else if(V>Ir){if(V*V<=l*(x*x+M*M)){a.push(Q,m);return}}else if(et>Ir){if(et*et<=l*(x*x+M*M)){a.push(Q,m);return}}else if(x=Q-(r+n)/2,M=m-(t+o)/2,x*x+M*M<=l){a.push(Q,m);return}}Ys(r,t,g,u,S,R,Q,m,a,l,c+1),Ys(Q,m,w,D,B,p,n,o,a,l,c+1)}const du=8,Iu=11920929e-14,pu=1;function Eu(r,t,e,A,i,s,n=.5,o=[]){const l=Math.min(.99,Math.max(0,n));let c=(pu-l)/1;return c*=c,Vs(o,r,t,e,A,i,s,c,0),o.push(i,s),o}function Vs(r,t,e,A,i,s,n,o,a){if(a>du)return;const l=(t+A)/2,c=(e+i)/2,g=(A+s)/2,u=(i+n)/2,d=(l+g)/2,f=(c+u)/2;let B=s-t,p=n-e;const S=Math.abs((A-s)*p-(i-n)*B);if(S>Iu){if(S*S<=o*(B*B+p*p)){r.push(d,f);return}}else if(B=d-(t+s)/2,p=f-(e+n)/2,B*B+p*p<=o){r.push(d,f);return}Vs(r,t,e,l,c,d,f,o,a+1),Vs(r,d,f,g,u,s,n,o,a+1)}function Bu(r,t){let e=!1;const[A,i]=r,s=t.length/2;for(let n=0,o=s-1;n<s;o=n++){const a=t[n*2],l=t[n*2+1],c=t[o*2],g=t[o*2+1];l>i!=g>i&&A<(c-a)*(i-l)/(g-l)+a&&(e=!e)}return e}function Cu(r,t){const e=1-r;return e*e*t}function Qu(r,t){return 2*(1-r)*r*t}function yu(r,t){return r*r*t}function Fa(r,t,e,A){return Cu(r,t)+Qu(r,e)+yu(r,A)}const mu=1e-4,Ta=1e-4;function wu(r,t={}){const{vertices:e=[],indices:A=[],lineStyle:i={alignment:.5,cap:"butt",join:"miter",width:1,miterLimit:10},flipAlignment:s=!1,closed:n=!0}=t,o=mu;if(r.length===0)return{vertices:e,indices:A};const a=i;let l=a.alignment;if(i.alignment!==.5){let T=vu(r);s&&(T*=-1),l=(l-.5)*T+.5}const c={x:r[0],y:r[1]},g={x:r[r.length-2],y:r[r.length-1]},u=n,d=Math.abs(c.x-g.x)<o&&Math.abs(c.y-g.y)<o;if(u){r=r.slice(),d&&(r.pop(),r.pop(),g.x=r[r.length-2],g.y=r[r.length-1]);const T=(c.x+g.x)*.5,tt=(g.y+c.y)*.5;r.unshift(T,tt),r.push(T,tt)}const f=e,B=r.length/2;let p=r.length;const S=f.length/2,R=a.width/2,w=R*R,D=a.miterLimit*a.miterLimit;let Q=r[0],m=r[1],x=r[2],M=r[3],V=0,et=0,z=-(m-M),J=Q-x,$=0,K=0,L=Math.sqrt(z*z+J*J);z/=L,J/=L,z*=R,J*=R;const it=l,G=(1-it)*2,W=it*2;u||(a.cap==="round"?p+=wA(Q-z*(G-W)*.5,m-J*(G-W)*.5,Q-z*G,m-J*G,Q+z*W,m+J*W,f,!0)+2:a.cap==="square"&&(p+=La(Q,m,z,J,G,W,!0,f))),f.push(Q-z*G,m-J*G),f.push(Q+z*W,m+J*W);for(let T=1;T<B-1;++T){Q=r[(T-1)*2],m=r[(T-1)*2+1],x=r[T*2],M=r[T*2+1],V=r[(T+1)*2],et=r[(T+1)*2+1],z=-(m-M),J=Q-x,L=Math.sqrt(z*z+J*J),z/=L,J/=L,z*=R,J*=R,$=-(M-et),K=x-V,L=Math.sqrt($*$+K*K),$/=L,K/=L,$*=R,K*=R;const tt=x-Q,U=m-M,k=x-V,q=et-M,Z=tt*k+U*q,nt=U*k-q*tt,X=nt<0;if(Math.abs(nt)<.001*Math.abs(Z)){f.push(x-z*G,M-J*G),f.push(x+z*W,M+J*W),Z>=0&&(a.join==="round"?p+=wA(x,M,x-z*G,M-J*G,x-$*G,M-K*G,f,!1)+4:p+=2,f.push(x-$*W,M-K*W),f.push(x+$*G,M+K*G));continue}const pt=(-z+Q)*(-J+M)-(-z+x)*(-J+m),oe=(-$+V)*(-K+M)-(-$+x)*(-K+et),ae=(tt*oe-k*pt)/nt,Ot=(q*pt-U*oe)/nt,ht=(ae-x)*(ae-x)+(Ot-M)*(Ot-M),mt=x+(ae-x)*G,Ht=M+(Ot-M)*G,zt=x-(ae-x)*W,Dt=M-(Ot-M)*W,ee=Math.min(tt*tt+U*U,k*k+q*q),Ge=X?G:W,qr=ee+Ge*Ge*w;ht<=qr?a.join==="bevel"||ht/w>D?(X?(f.push(mt,Ht),f.push(x+z*W,M+J*W),f.push(mt,Ht),f.push(x+$*W,M+K*W)):(f.push(x-z*G,M-J*G),f.push(zt,Dt),f.push(x-$*G,M-K*G),f.push(zt,Dt)),p+=2):a.join==="round"?X?(f.push(mt,Ht),f.push(x+z*W,M+J*W),p+=wA(x,M,x+z*W,M+J*W,x+$*W,M+K*W,f,!0)+4,f.push(mt,Ht),f.push(x+$*W,M+K*W)):(f.push(x-z*G,M-J*G),f.push(zt,Dt),p+=wA(x,M,x-z*G,M-J*G,x-$*G,M-K*G,f,!1)+4,f.push(x-$*G,M-K*G),f.push(zt,Dt)):(f.push(mt,Ht),f.push(zt,Dt)):(f.push(x-z*G,M-J*G),f.push(x+z*W,M+J*W),a.join==="round"?X?p+=wA(x,M,x+z*W,M+J*W,x+$*W,M+K*W,f,!0)+2:p+=wA(x,M,x-z*G,M-J*G,x-$*G,M-K*G,f,!1)+2:a.join==="miter"&&ht/w<=D&&(X?(f.push(zt,Dt),f.push(zt,Dt)):(f.push(mt,Ht),f.push(mt,Ht)),p+=2),f.push(x-$*G,M-K*G),f.push(x+$*W,M+K*W),p+=2)}Q=r[(B-2)*2],m=r[(B-2)*2+1],x=r[(B-1)*2],M=r[(B-1)*2+1],z=-(m-M),J=Q-x,L=Math.sqrt(z*z+J*J),z/=L,J/=L,z*=R,J*=R,f.push(x-z*G,M-J*G),f.push(x+z*W,M+J*W),u||(a.cap==="round"?p+=wA(x-z*(G-W)*.5,M-J*(G-W)*.5,x-z*G,M-J*G,x+z*W,M+J*W,f,!1)+2:a.cap==="square"&&(p+=La(x,M,z,J,G,W,!1,f)));const At=Ta*Ta;for(let T=S;T<p+S-2;++T)Q=f[T*2],m=f[T*2+1],x=f[(T+1)*2],M=f[(T+1)*2+1],V=f[(T+2)*2],et=f[(T+2)*2+1],!(Math.abs(Q*(M-et)+x*(et-m)+V*(m-M))<At)&&A.push(T,T+1,T+2);return{vertices:e,indices:A}}function vu(r){const t=r.length;if(t<6)return 1;let e=0;for(let A=0,i=r[t-2],s=r[t-1];A<t;A+=2){const n=r[A],o=r[A+1];e+=(n-i)*(o+s),i=n,s=o}return e<0?-1:1}function La(r,t,e,A,i,s,n,o){const a=r-e*i,l=t-A*i,c=r+e*s,g=t+A*s;let u,d;n?(u=A,d=-e):(u=-A,d=e);const f=a+u,B=l+d,p=c+u,S=g+d;return o.push(f,B),o.push(p,S),2}function wA(r,t,e,A,i,s,n,o){const a=e-r,l=A-t;let c=Math.atan2(a,l),g=Math.atan2(i-r,s-t);o&&c<g?c+=Math.PI*2:!o&&c>g&&(g+=Math.PI*2);let u=c;const d=g-c,f=Math.abs(d),B=Math.sqrt(a*a+l*l),p=(15*f*Math.sqrt(B)/Math.PI>>0)+1,S=d/p;if(u+=S,o){n.push(r,t),n.push(e,A);for(let R=1,w=u;R<p;R++,w+=S)n.push(r,t),n.push(r+Math.sin(w)*B,t+Math.cos(w)*B);n.push(r,t),n.push(i,s)}else{n.push(e,A),n.push(r,t);for(let R=1,w=u;R<p;R++,w+=S)n.push(r+Math.sin(w)*B,t+Math.cos(w)*B),n.push(r,t);n.push(i,s),n.push(r,t)}return p*2}class OA{arcLengthDivision=200;_arcLengths;getPointAt(t,e=new O){return this.getPoint(this.getUToTMapping(t),e)}isClockwise(){const t=this.getPoint(1),e=this.getPoint(.5),A=this.getPoint(1);return(e.x-t.x)*(A.y-e.y)-(e.y-t.y)*(A.x-e.x)<0}getControlPointRefs(){return[]}applyTransform(t){const e=typeof t=="function";return this.getControlPointRefs().forEach(A=>{e?t(A):A.applyMatrix3(t)}),this}getUnevenVertices(t=5,e=[]){const A=new O;for(let i=0,s=Math.max(1,t)-1;i<=s;i++)this.getPoint(i/s,A),e.push(A.x,A.y);return e}getSpacedVertices(t=5,e=[]){const A=new O;for(let i=0,s=Math.max(1,t)-1;i<=s;i++)this.getPointAt(i/s,A),e.push(A.x,A.y);return e}getAdaptiveVertices(t=[]){return this.getUnevenVertices(5,t)}_verticesToPoints(t,e=[]){for(let A=0,i=t.length;A<i;A+=2){const s=t[A],n=t[A+1];e.push(new O(s,n))}return e}getSpacedPoints(t,e=[]){const A=this.getSpacedVertices(t);return this._verticesToPoints(A,e),e}getUnevenPoints(t,e=[]){const A=this.getUnevenVertices(t);return this._verticesToPoints(A,e),e}getAdaptivePoints(t=[]){const e=this.getAdaptiveVertices();return this._verticesToPoints(e,t),t}getPoints(t,e=[]){let A;return t?A=this.getUnevenVertices(t):A=this.getAdaptiveVertices(),this._verticesToPoints(A,e),e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(){return(!this._arcLengths||this._arcLengths.length!==this.arcLengthDivision+1)&&this.updateLengths(),this._arcLengths}updateLengths(){const t=this.arcLengthDivision,e=[0];for(let A=0,i=this.getPoint(0),s=1;s<=t;s++){const n=this.getPoint(s/t);A+=n.distanceTo(i),e.push(A),i=n}this._arcLengths=e}getUToTMapping(t,e){const A=this.getLengths(),i=A.length,s=e??t*A[i-1];if(i<2)return s/A[0];let n=0,o=0,a=i-1,l;for(;o<=a;)if(n=Math.floor(o+(a-o)/2),l=A[n]-s,l<0)o=n+1;else if(l>0)a=n-1;else{a=n;break}if(n=a,A[n]===s)return n/(i-1);const c=A[n],u=A[n+1]-c,d=(s-c)/u;return(n+d)/(i-1)}getTangent(t,e=new O){const i=Math.max(0,t-1e-4),s=Math.min(1,t+1e-4);return e.copy(this.getPoint(s).sub(this.getPoint(i)).normalize())}getTangentAt(t,e){return this.getTangent(this.getUToTMapping(t),e)}getNormal(t,e=new O){return this.getTangent(t,e),e.set(-e.y,e.x).normalize()}getNormalAt(t,e){return this.getNormal(this.getUToTMapping(t),e)}getTForPoint(t,e=.001){let A=0,i=1,s=(A+i)/2;for(;i-A>e;){s=(A+i)/2;const n=this.getPoint(s);if(n.distanceTo(t)<e)return s;n.x<t.x?A=s:i=s}return s}getMinMax(t=O.MAX,e=O.MIN){const A=this.getPoints();for(let i=0,s=A.length;i<s;i++){const n=A[i];t.min(n),e.max(n)}return{min:t.finite(),max:e.finite()}}getBoundingBox(){const{min:t,max:e}=this.getMinMax();return new ct(t.x,t.y,e.x-t.x,e.y-t.y)}getFillVertices(t){return this.getAdaptiveVertices()}fillTriangulate(t){return Na(this.getFillVertices(t),t)}strokeTriangulate(t){return wu(this.getAdaptiveVertices(),t)}toCommands(){const t=[],e=this.getPoints();for(let A=0,i=e.length;A<i;A++){const s=e[A];A===0?t.push({type:"M",x:s.x,y:s.y}):t.push({type:"L",x:s.x,y:s.y})}return t}toData(){return Yg(this.toCommands())}drawTo(t){return this.toCommands().forEach(e=>{switch(e.type){case"M":t.moveTo(e.x,e.y);break;case"L":t.lineTo(e.x,e.y);break}}),this}copy(t){return this.arcLengthDivision=t.arcLengthDivision,this}clone(){return new this.constructor().copy(this)}}const _u=new Jt,Ga=new Jt,Oa=new Jt,pr=new O;class zs extends OA{constructor(t=new O,e=new O,A=new O,i=0,s=0,n=Math.PI*2,o=!1){super(),this._center=t,this._radius=e,this._diff=A,this.rotate=i,this.startAngle=s,this.endAngle=n,this.clockwise=o}get cx(){return this._center.x}set cx(t){this._center.x=t}get cy(){return this._center.y}set cy(t){this._center.y=t}get rx(){return this._radius.x}set rx(t){this._radius.x=t}get ry(){return this._radius.y}set ry(t){this._radius.y=t}get dx(){return this._diff.x}set dx(t){this._diff.x=t}get dy(){return this._diff.y}set dy(t){this._diff.y=t}isClockwise(){return this.clockwise}_getDeltaAngle(){const t=Math.PI*2;let e=this.endAngle-this.startAngle;const A=Math.abs(e)<Number.EPSILON;return e=(e%t+t)%t,A?e=0:this.clockwise||(e=e===0?-t:e-t),e}getPoint(t,e=new O){const A=this._getDeltaAngle(),i=this.startAngle+t*A;let s=this.cx+this.rx*Math.cos(i),n=this.cy+this.ry*Math.sin(i);if(this.rotate!==0){const o=Math.cos(this.rotate),a=Math.sin(this.rotate),l=s-this.cx,c=n-this.cy;s=l*o-c*a+this.cx,n=l*a+c*o+this.cy}return e.set(s,n)}toCommands(){const{cx:t,cy:e,rx:A,ry:i,startAngle:s,endAngle:n,clockwise:o,rotate:a}=this,l=t+A*Math.cos(s)*Math.cos(a)-i*Math.sin(s)*Math.sin(a),c=e+A*Math.cos(s)*Math.sin(a)+i*Math.sin(s)*Math.cos(a),g=Math.abs(s-n),u=g>Math.PI?1:0,d=o?1:0,f=a*180/Math.PI;if(g>=2*Math.PI){const B=s+Math.PI,p=t+A*Math.cos(B)*Math.cos(a)-i*Math.sin(B)*Math.sin(a),S=e+A*Math.cos(B)*Math.sin(a)+i*Math.sin(B)*Math.cos(a);return[{type:"M",x:l,y:c},{type:"A",rx:A,ry:i,angle:f,largeArcFlag:0,sweepFlag:d,x:p,y:S},{type:"A",rx:A,ry:i,angle:f,largeArcFlag:0,sweepFlag:d,x:l,y:c}]}else{const B=t+A*Math.cos(n)*Math.cos(a)-i*Math.sin(n)*Math.sin(a),p=e+A*Math.cos(n)*Math.sin(a)+i*Math.sin(n)*Math.cos(a);return[{type:"M",x:l,y:c},{type:"A",rx:A,ry:i,angle:f,largeArcFlag:u,sweepFlag:d,x:B,y:p}]}}drawTo(t){const{cx:e,cy:A,rx:i,ry:s,rotate:n,startAngle:o,endAngle:a,clockwise:l}=this;return t.ellipse(e,A,i,s,n,o,a,!l),this}applyTransform(t){return pr.set(this.cx,this.cy),pr.applyMatrix3(t),this.cx=pr.x,this.cy=pr.y,xu(t)?bu(this,t):Du(this,t),this}getControlPointRefs(){return[this._center]}_getAdaptiveVerticesByArc(t=[]){const{cx:e,cy:A,rx:i,ry:s,dx:n,dy:o,startAngle:a,endAngle:l,clockwise:c,rotate:g}=this,u=!c;let d=Math.abs(a-l);(!u&&a>l||u&&l>a)&&(d=2*Math.PI-d);const f=Math.max(12,Math.floor(12*i**(1/3)*(d/Math.PI)));let B=d/f,p=a;B*=u?-1:1;const S=Math.cos(u?g:-g),R=Math.sin(u?g:-g);for(let w=0;w<f+1;w++){const D=n+Math.cos(p)*i,Q=o+Math.sin(p)*s,m=D*S-Q*R,x=D*R+Q*S;t.push(e+m,A+x),p+=B}return t}_getAdaptiveVerticesByCircle(t=[]){const{cx:e,cy:A,rx:i,ry:s,dx:n,dy:o,rotate:a,clockwise:l}=this;if(!(i>=0&&s>=0&&n>=0&&o>=0))return t;const c=Math.ceil(2.3*Math.sqrt(i+s)),g=c*8+(n?4:0)+(o?4:0),u=[];if(g===0)return t;{const B=u.length;if(c===0)u[B]=u[B+6]=e+n,u[B+1]=u[B+3]=A+o,u[B+2]=u[B+4]=e-n,u[B+5]=u[B+7]=A-o;else{let p=B,S=B+c*4+(n?2:0)+2,R=S,w=g,D=n+i,Q=o,m=e+D,x=e-D,M=A+Q;if(u[p++]=m,u[p++]=M,u[--S]=M,u[--S]=x,o){const et=A-Q;u[R++]=x,u[R++]=et,u[--w]=et,u[--w]=m}for(let et=1;et<c;et++){const z=Math.PI/2*(et/c),J=n+Math.cos(z)*i,$=o+Math.sin(z)*s,K=e+J,L=e-J,it=A+$,G=A-$;u[p++]=K,u[p++]=it,u[--S]=it,u[--S]=L,u[R++]=L,u[R++]=G,u[--w]=G,u[--w]=K}D=n,Q=o+s,m=e+D,x=e-D,M=A+Q;const V=A-Q;u[p++]=m,u[p++]=M,u[--w]=V,u[--w]=m,n&&(u[p++]=x,u[p++]=M,u[--w]=V,u[--w]=x)}}const d=Math.cos(l?-a:a),f=Math.sin(l?-a:a);for(let B=0;B<u.length;B+=2){const p=u[B],S=u[B+1],R=p-e,w=S-A,D=R*d-w*f,Q=R*f+w*d;t.push(e+D,A+Q)}return t}getAdaptiveVertices(t=[]){return this.startAngle===0&&this.endAngle===Math.PI*2?this._getAdaptiveVerticesByCircle(t):this._getAdaptiveVerticesByArc(t)}copy(t){return super.copy(t),this.cx=t.cx,this.cy=t.cy,this.rx=t.rx,this.ry=t.ry,this.dx=t.dx,this.dy=t.dy,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotate=t.rotate,this}}function bu(r,t){const e=r.rx,A=r.ry,i=Math.cos(r.rotate),s=Math.sin(r.rotate),n=new O(e*i,e*s),o=new O(-A*s,A*i),a=n.applyMatrix3(t),l=o.applyMatrix3(t),c=_u.set(a.x,l.x,0,a.y,l.y,0,0,0,1),g=Ga.copy(c).invert(),f=Oa.copy(g).transpose().multiply(g).elements,B=Su(f[0],f[1],f[4]),p=Math.sqrt(B.rt1),S=Math.sqrt(B.rt2);if(r.rx=1/p,r.ry=1/S,r.rotate=Math.atan2(B.sn,B.cs),!((r.endAngle-r.startAngle)%(2*Math.PI)<Number.EPSILON)){const w=Ga.set(p,0,0,0,S,0,0,0,1),D=Oa.set(B.cs,B.sn,0,-B.sn,B.cs,0,0,0,1),Q=w.multiply(D).multiply(c),m=x=>{const{x:M,y:V}=new O(Math.cos(x),Math.sin(x)).applyMatrix3(Q);return Math.atan2(V,M)};r.startAngle=m(r.startAngle),r.endAngle=m(r.endAngle),Ha(t)&&(r.clockwise=!r.clockwise)}}function Du(r,t){const e=Ja(t),A=Ka(t);r.rx*=e,r.ry*=A;const i=e>Number.EPSILON?Math.atan2(t.elements[1],t.elements[0]):Math.atan2(-t.elements[3],t.elements[4]);r.rotate+=i,Ha(t)&&(r.startAngle*=-1,r.endAngle*=-1,r.clockwise=!r.clockwise)}function Ha(r){const t=r.elements;return t[0]*t[4]-t[1]*t[3]<0}function xu(r){const t=r.elements,e=t[0]*t[3]+t[1]*t[4];if(e===0)return!1;const A=Ja(r),i=Ka(r);return Math.abs(e/(A*i))>Number.EPSILON}function Ja(r){const t=r.elements;return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Ka(r){const t=r.elements;return Math.sqrt(t[3]*t[3]+t[4]*t[4])}function Su(r,t,e){let A,i,s,n,o;const a=r+e,l=r-e,c=Math.sqrt(l*l+4*t*t);return a>0?(A=.5*(a+c),o=1/A,i=r*o*e-t*o*t):a<0?i=.5*(a-c):(A=.5*c,i=-.5*c),l>0?s=l+c:s=l-c,Math.abs(s)>2*Math.abs(t)?(o=-2*t/s,n=1/Math.sqrt(1+o*o),s=o*n):Math.abs(t)===0?(s=1,n=0):(o=-.5*s/t,s=1/Math.sqrt(1+o*o),n=o*s),l>0&&(o=s,s=-n,n=o),{rt1:A,rt2:i,cs:s,sn:n}}class Mu extends zs{constructor(t=0,e=0,A=1,i=0,s=Math.PI*2,n=!1){super(new O(t,e),new O(A,A),new O,0,i,s,n)}drawTo(t){const{cx:e,cy:A,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;return t.arc(e,A,i,s,n,!o),this}getAdaptiveVertices(t=[]){const{cx:e,cy:A,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;let a=Math.abs(s-n);(!o&&s>n||o&&n>s)&&(a=2*Math.PI-a);let l=Math.max(6,Math.floor(6*i**(1/3)*(a/Math.PI)));l=Math.max(l,3);let c=a/l,g=s;c*=o?1:-1;for(let u=0;u<l+1;u++){const d=Math.cos(g),f=Math.sin(g),B=e+d*i,p=A+f*i;t.push(B,p),g+=c}return t}}class qe extends OA{constructor(t=new O,e=new O){super(),this.p1=t,this.p2=e}static from(t,e,A,i){return new qe(new O(t,e),new O(A,i))}getPoint(t,e=new O){return t===1?e.copy(this.p2):e.copy(this.p2).sub(this.p1).scale(t).add(this.p1),e}getPointAt(t,e=new O){return this.getPoint(t,e)}getTangent(t,e=new O){return e.subVectors(this.p2,this.p1).normalize()}getTangentAt(t,e=new O){return this.getTangent(t,e)}getControlPointRefs(){return[this.p1,this.p2]}getAdaptiveVertices(t=[]){return t.push(this.p1.x,this.p1.y,this.p2.x,this.p2.y),t}getMinMax(t=O.MAX,e=O.MIN){const{p1:A,p2:i}=this;return t.x=Math.min(t.x,A.x,i.x),t.y=Math.min(t.y,A.y,i.y),e.x=Math.max(e.x,A.x,i.x),e.y=Math.max(e.y,A.y,i.y),{min:t.finite(),max:e.finite()}}toCommands(){const{p1:t,p2:e}=this;return[{type:"M",x:t.x,y:t.y},{type:"L",x:e.x,y:e.y}]}getFillVertices(t={}){const e=Math.min(this.p1.x,this.p2.x),A=Math.max(this.p1.x,this.p2.x),i=Math.min(this.p1.y,this.p2.y),s=Math.max(this.p1.y,this.p2.y),n=e,o=i,a=A-e||t.style?.strokeWidth||0,l=s-i||t.style?.strokeWidth||0;return[n,o,n+a,o,n+a,o+l,n,o+l]}drawTo(t){const{p1:e,p2:A}=this;return t.lineTo(e.x,e.y),t.lineTo(A.x,A.y),this}copy(t){return super.copy(t),this.p1.copy(t.p1),this.p2.copy(t.p2),this}}class _i extends OA{constructor(t=[]){super(),this.curves=t}getFlatCurves(){return this.curves.flatMap(t=>t instanceof _i?t.getFlatCurves():t)}addCurve(t){return this.curves.push(t),this}getPoint(t,e=new O){const A=t*this.getLength(),i=this.getLengths();let s=0;for(;s<i.length;){if(i[s]>=A){const n=i[s]-A,o=this.curves[s],a=o.getLength();return o.getPointAt(a===0?0:1-n/a,e)}s++}return e}updateLengths(){const t=[];for(let e=0,A=0,i=this.curves.length;e<i;e++)A+=this.curves[e].getLength(),t.push(A);this._arcLengths=t}getControlPointRefs(){return this.curves.flatMap(t=>t.getControlPointRefs())}_removeNextPointIfEqualPrevPoint(t,e){const A=[t[e-1],t[e]],i=[t[e+1],t[e+2]];return A[0]===i[0]&&A[1]===i[1]&&t.splice(e+1,2),t}getSpacedVertices(t=5,e=[]){let A;return this.curves.forEach(i=>{i.getSpacedVertices(t,e),A&&this._removeNextPointIfEqualPrevPoint(e,A),A=e.length-1}),e}getAdaptiveVertices(t=[]){let e;return this.curves.forEach(A=>{A.getAdaptiveVertices(t),e&&this._removeNextPointIfEqualPrevPoint(t,e),e=t.length-1}),t}strokeTriangulate(t){return this.curves.length===1?this.curves[0].strokeTriangulate(t):super.strokeTriangulate(t)}getFillVertices(t){if(this.curves.length===1)return this.curves[0].getFillVertices(t);{const e=[];let A;return this.curves.forEach(i=>{let s;i instanceof qe?s=i.getAdaptiveVertices():s=i.getFillVertices(t),e.push(...s),A&&this._removeNextPointIfEqualPrevPoint(e,A),A=e.length-1}),e}}applyTransform(t){return this.curves.forEach(e=>e.applyTransform(t)),this}getMinMax(t=O.MAX,e=O.MIN){return this.curves.forEach(A=>A.getMinMax(t,e)),{min:t.finite(),max:e.finite()}}getBoundingBox(){const{min:t,max:e}=this.getMinMax();return new ct(t.x,t.y,e.x-t.x,e.y-t.y)}toCommands(){return this.curves.flatMap(t=>t.toCommands())}drawTo(t){const e=this.curves[0]?.getPoint(0);return e&&t.moveTo(e.x,e.y),this.curves.forEach(A=>A.drawTo(t)),this}copy(t){return super.copy(t),this.curves=t.curves.map(e=>e.clone()),this}}class Ws extends OA{constructor(t=new O,e=new O,A=new O,i=new O){super(),this.p1=t,this.cp1=e,this.cp2=A,this.p2=i}static from(t,e,A,i,s,n,o,a){return new Ws(new O(t,e),new O(A,i),new O(s,n),new O(o,a))}getPoint(t,e=new O){const{p1:A,cp1:i,cp2:s,p2:n}=this;return e.set(Ua(t,A.x,i.x,s.x,n.x),Ua(t,A.y,i.y,s.y,n.y))}getAdaptiveVertices(t=[]){return fu(this.p1.x,this.p1.y,this.cp1.x,this.cp1.y,this.cp2.x,this.cp2.y,this.p2.x,this.p2.y,.5,t)}getControlPointRefs(){return[this.p1,this.cp1,this.cp2,this.p2]}_solveQuadratic(t,e,A){const i=e*e-4*t*A;if(i<0)return[];const s=Math.sqrt(i),n=(-e+s)/(2*t),o=(-e-s)/(2*t);return[n,o].filter(a=>a>=0&&a<=1)}getMinMax(t=O.MAX,e=O.MIN){const{p1:A,cp1:i,cp2:s,p2:n}=this,o=this._solveQuadratic(3*(i.x-A.x),6*(s.x-i.x),3*(n.x-s.x)),a=this._solveQuadratic(3*(i.y-A.y),6*(s.y-i.y),3*(n.y-s.y)),l=[0,1,...o,...a];return((g,u)=>{for(const d of g)for(let f=0;f<=u;f++){const B=f/u-.5,p=Math.min(1,Math.max(0,d+B)),S=this.getPoint(p);t.x=Math.min(t.x,S.x),t.y=Math.min(t.y,S.y),e.x=Math.max(e.x,S.x),e.y=Math.max(e.y,S.y)}})(l,10),{min:t.finite(),max:e.finite()}}toCommands(){const{p1:t,cp1:e,cp2:A,p2:i}=this;return[{type:"M",x:t.x,y:t.y},{type:"C",x1:e.x,y1:e.y,x2:A.x,y2:A.y,x:i.x,y:i.y}]}drawTo(t){const{p1:e,cp1:A,cp2:i,p2:s}=this;return t.lineTo(e.x,e.y),t.bezierCurveTo(A.x,A.y,i.x,i.y,s.x,s.y),this}copy(t){return super.copy(t),this.p1.copy(t.p1),this.cp1.copy(t.cp1),this.cp2.copy(t.cp2),this.p2.copy(t.p2),this}}class Ru extends zs{constructor(t=0,e=0,A=1,i=1,s=0,n=0,o=Math.PI*2,a=!1){super(new O(t,e),new O(A,i),new O,s,n,o,a)}drawTo(t){return t.ellipse(this.cx,this.cy,this.rx,this.ry,this.rotate,this.startAngle,this.endAngle,!this.clockwise),this}}class Pu extends _i{}class qs extends OA{constructor(t=new O,e=new O,A=new O){super(),this.p1=t,this.cp=e,this.p2=A}static from(t,e,A,i,s,n){return new qs(new O(t,e),new O(A,i),new O(s,n))}getPoint(t,e=new O){const{p1:A,cp:i,p2:s}=this;return e.set(Fa(t,A.x,i.x,s.x),Fa(t,A.y,i.y,s.y)),e}getControlPointRefs(){return[this.p1,this.cp,this.p2]}getAdaptiveVertices(t=[]){return Eu(this.p1.x,this.p1.y,this.cp.x,this.cp.y,this.p2.x,this.p2.y,.5,t)}getMinMax(t=O.MAX,e=O.MIN){const{p1:A,cp:i,p2:s}=this,n=.5*(A.x+i.x),o=.5*(A.y+i.y),a=.5*(A.x+s.x),l=.5*(A.y+s.y);return t.x=Math.min(t.x,A.x,s.x,n,a),t.y=Math.min(t.y,A.y,s.y,o,l),e.x=Math.max(e.x,A.x,s.x,n,a),e.y=Math.max(e.y,A.y,s.y,o,l),{min:t.finite(),max:e.finite()}}toCommands(){const{p1:t,cp:e,p2:A}=this;return[{type:"M",x:t.x,y:t.y},{type:"Q",x1:e.x,y1:e.y,x:A.x,y:A.y}]}drawTo(t){const{p1:e,cp:A,p2:i}=this;return t.lineTo(e.x,e.y),t.quadraticCurveTo(A.x,A.y,i.x,i.y),this}copy(t){return super.copy(t),this.p1.copy(t.p1),this.cp.copy(t.cp),this.p2.copy(t.p2),this}}class ku extends Pu{constructor(t=0,e=0,A=0,i=0){super(),this.x=t,this.y=e,this.width=A,this.height=i,this.update()}update(){const{x:t,y:e,width:A,height:i}=this,s=[new O(t,e),new O(t+A,e),new O(t+A,e+i),new O(t,e+i)];return this.curves=[new qe(s[0],s[1]),new qe(s[1],s[2]),new qe(s[2],s[3]),new qe(s[3],s[0])],this}drawTo(t){return t.rect(this.x,this.y,this.width,this.height),this}getFillVertices(t={}){const{x:e,y:A,width:i,height:s}=this;return[e,A,e+i,A,e+i,A+s,e,A+s]}copy(t){return super.copy(t),this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this.update(),this}}class Uu extends zs{constructor(t=0,e=0,A=1,i=1,s=1){super(),this.x=t,this.y=e,this.width=A,this.height=i,this.radius=s,this.update()}update(){const{x:t,y:e,width:A,height:i,radius:s}=this,n=A/2,o=i/2,a=t+n,l=e+o,c=Math.max(0,Math.min(s,Math.min(n,o))),g=c;return this._center=new O(a,l),this._radius=new O(c,g),this._diff=new O(n-c,o-g),this}drawTo(t){const{x:e,y:A,width:i,height:s,radius:n}=this;return t.roundRect(e,A,i,s,n),this}copy(t){return super.copy(t),this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this.radius=t.radius,this.update(),this}}class Nu extends OA{constructor(t=[]){super(),this.points=t}getPoint(t,e=new O){const{points:A}=this,i=(A.length-1)*t,s=Math.floor(i),n=i-s,o=A[s===0?s:s-1],a=A[s],l=A[s>A.length-2?A.length-1:s+1],c=A[s>A.length-3?A.length-1:s+2];return e.set(ka(n,o.x,a.x,l.x,c.x),ka(n,o.y,a.y,l.y,c.y)),e}getControlPointRefs(){return this.points}copy(t){super.copy(t),this.points=[];for(let e=0,A=t.points.length;e<A;e++)this.points.push(t.points[e].clone());return this}}class Er extends _i{startPoint;currentPoint;autoClose=!1;constructor(t){super(),t&&this.addPoints(t)}addPoints(t){this.moveTo(t[0].x,t[0].y);for(let e=1,A=t.length;e<A;e++){const{x:i,y:s}=t[e];this.lineTo(i,s)}return this}addCommands(t){return va(t,this),this}addData(t){return this.addCommands(_a(t)),this}_closeVertices(t){return this.autoClose&&t.length>=4&&t[0]!==t[t.length-2]&&t[1]!==t[t.length-1]&&t.push(t[0],t[1]),t}getUnevenVertices(t=40,e=[]){return this._closeVertices(super.getUnevenVertices(t,e))}getSpacedVertices(t=40,e=[]){return this._closeVertices(super.getSpacedVertices(t,e))}getAdaptiveVertices(t=[]){return this._closeVertices(super.getAdaptiveVertices(t))}getFillVertices(t){return this._closeVertices(super.getFillVertices(t))}_setCurrentPoint(t){return this.currentPoint=new O(t.x,t.y),this.startPoint||(this.startPoint=this.currentPoint.clone()),this}_connetLineTo(t){if(this.curves.length>0){const e=t.getPoint(0);(!this.currentPoint||!e.equals(this.currentPoint))&&this.lineTo(e.x,e.y)}return this}closePath(){const t=this.startPoint;if(t){const e=this.currentPoint;e&&!t.equals(e)&&(this.curves.push(new qe(e.clone(),t.clone())),e.copy(t)),this.startPoint=void 0}return this}moveTo(t,e){return this.currentPoint=new O(t,e),this.startPoint=this.currentPoint.clone(),this}lineTo(t,e){const A=this.currentPoint;return A?.equals({x:t,y:e})||this.curves.push(qe.from(A?.x??0,A?.y??0,t,e)),this._setCurrentPoint({x:t,y:e}),this}bezierCurveTo(t,e,A,i,s,n){const o=this.currentPoint;return o?.equals({x:s,y:n})||this.curves.push(Ws.from(o?.x??0,o?.y??0,t,e,A,i,s,n)),this._setCurrentPoint({x:s,y:n}),this}quadraticCurveTo(t,e,A,i){const s=this.currentPoint;return s?.equals({x:A,y:i})||this.curves.push(qs.from(s?.x??0,s?.y??0,t,e,A,i)),this._setCurrentPoint({x:A,y:i}),this}arc(t,e,A,i,s,n){const o=new Mu(t,e,A,i,s,!n);return this._connetLineTo(o),this.curves.push(o),this._setCurrentPoint(o.getPoint(1)),this}relativeArc(t,e,A,i,s,n){return t+=this.currentPoint?.x??0,e+=this.currentPoint?.y??0,this.arc(t,e,A,i,s,n),this}arcTo(t,e,A,i,s){return console.warn("Method arcTo not supported yet"),this}ellipse(t,e,A,i,s,n,o,a=!0){const l=new Ru(t,e,A,i,s,n,o,!a);return this._connetLineTo(l),this.curves.push(l),this._setCurrentPoint(l.getPoint(1)),this}relativeEllipse(t,e,A,i,s,n,o,a){return t+=this.currentPoint?.x??0,e+=this.currentPoint?.y??0,this.ellipse(t,e,A,i,s,n,o,a),this}rect(t,e,A,i){const s=new ku(t,e,A,i);return this._connetLineTo(s),this.curves.push(s),this._setCurrentPoint({x:t,y:e}),this}roundRect(t,e,A,i,s){const n=new Uu(t,e,A,i,s);return this._connetLineTo(n),this.curves.push(n),this._setCurrentPoint({x:t,y:e}),this}splineThru(t){const e=this.currentPoint??new O;return this.curves.push(new Nu([e].concat(t))),this._setCurrentPoint(t[t.length-1]),this}drawTo(t){const e=this.curves[0]?.getPoint(0);return e&&t.moveTo(e.x,e.y),this.curves.forEach(A=>A.drawTo(t)),this.autoClose&&t.closePath(),this}copy(t){return super.copy(t),this.autoClose=t.autoClose,this.currentPoint=t.currentPoint?.clone(),this}}function Fu(r){return r.replace(/[^a-z0-9]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase()}function Tu(r,t,e,A){const i=t.clone().sub(r),s=A.clone().sub(e),n=e.clone().sub(r),o=i.cross(s);if(o===0)return new O((r.x+e.x)/2,(r.y+e.y)/2);const a=n.cross(s)/o;return Math.abs(a)>1?new O((r.x+e.x)/2,(r.y+e.y)/2):new O(r.x+a*i.x,r.y+a*i.y)}class Ut extends _i{currentCurve=new Er;style;get startPoint(){return this.currentCurve.startPoint}get currentPoint(){return this.currentCurve.currentPoint}get strokeWidth(){return this.style.strokeWidth??((this.style.stroke??"none")==="none"?0:1)}constructor(t,e={}){super(),this.curves.push(this.currentCurve),this.style=e,t&&(t instanceof Ut?this.addPath(t):Array.isArray(t)?this.addCommands(t):this.addData(t))}addPath(t){const e=this.curves.findIndex(A=>A===this.currentCurve);return e>-1&&this.curves.splice(e,1),t instanceof Ut?this.curves.push(...t.curves.filter(A=>A.curves.length).map(A=>A.clone())):t.curves.length&&this.curves.push(t),this.curves.push(this.currentCurve),this}closePath(){const t=this.startPoint;return t&&(this.currentCurve.closePath(),this.currentCurve.curves.length&&(this.currentCurve=new Er().moveTo(t.x,t.y),this.curves.push(this.currentCurve))),this}moveTo(t,e){return this.currentCurve.currentPoint?.equals({x:t,y:e})||(this.currentCurve.curves.length&&(this.currentCurve=new Er,this.curves.push(this.currentCurve)),this.currentCurve.moveTo(t,e)),this}lineTo(t,e){return this.currentCurve.lineTo(t,e),this}bezierCurveTo(t,e,A,i,s,n){return this.currentCurve.bezierCurveTo(t,e,A,i,s,n),this}quadraticCurveTo(t,e,A,i){return this.currentCurve.quadraticCurveTo(t,e,A,i),this}arc(t,e,A,i,s,n){return this.currentCurve.arc(t,e,A,i,s,n),this}arcTo(t,e,A,i,s){return this.currentCurve.arcTo(t,e,A,i,s),this}ellipse(t,e,A,i,s,n,o,a){return this.currentCurve.ellipse(t,e,A,i,s,n,o,a),this}rect(t,e,A,i){return this.currentCurve.rect(t,e,A,i),this}roundRect(t,e,A,i,s){return this.currentCurve.roundRect(t,e,A,i,s),this}reset(){return this.currentCurve=new Er,this.curves=[this.currentCurve],this.style={},this}addCommands(t){return va(t,this),this}addData(t){return this.addCommands(_a(t)),this}splineThru(t){return this.currentCurve.splineThru(t),this}scale(t,e=t,A={x:0,y:0}){return this.getControlPointRefs().forEach(i=>{i.scale(t,e,A)}),this}skew(t,e=0,A={x:0,y:0}){return this.getControlPointRefs().forEach(i=>{i.skew(t,e,A)}),this}rotate(t,e={x:0,y:0}){return this.getControlPointRefs().forEach(A=>{A.rotate(t,e)}),this}bold(t){if(t===0)return this;const e=this.getFlatCurves(),A=[],i=[],s=[];e.forEach((o,a)=>{const l=o.getControlPointRefs(),c=o.isClockwise();s[a]=l,i[a]=c;const g=l[0],u=l[l.length-1]??g;A.push({start:c?u:g,end:c?g:u,index:a})});const n=[];return A.forEach((o,a)=>{n[a]=[],A.forEach((l,c)=>{l.start&&o.end&&c!==a&&l.start?.equals(o.end)&&n[a].push(l.index)})}),e.forEach((o,a)=>{const l=i[a];s[a].forEach(c=>{c.add(o.getNormal(o.getTForPoint(c)).scale(l?t:-t))})}),n.forEach((o,a)=>{const l=s[a];o.forEach(c=>{const g=s[c],u=Tu(l[l.length-1],l[l.length-2]??l[l.length-1],g[0],g[1]??g[0]);u&&(l[l.length-1].copy(u),g[0].copy(u))})}),this}getMinMax(t=O.MAX,e=O.MIN,A=!0){const i=this.strokeWidth;return this.curves.forEach(s=>{if(s.getMinMax(t,e),A&&i>1){const n=i/2,o=s.isClockwise(),a=[];for(let l=0;l<=1;l+=1/s.arcLengthDivision){const c=s.getPoint(l),g=s.getNormal(l),u=g.clone().scale(o?n:-n),d=g.clone().scale(o?-n:n);a.push(c.clone().add(u),c.clone().add(d),c.clone().add({x:n,y:0}),c.clone().add({x:-n,y:0}),c.clone().add({x:0,y:n}),c.clone().add({x:0,y:-n}),c.clone().add({x:n,y:n}),c.clone().add({x:-n,y:-n}))}t.min(...a),e.max(...a)}}),{min:t.finite(),max:e.finite()}}strokeTriangulate(t){const e=t?.indices??[],A=t?.vertices??[];return this.curves.forEach(i=>{i.strokeTriangulate({...t,indices:e,vertices:A,style:{...this.style}})}),{indices:e,vertices:A}}fillTriangulate(t){const e={...t,style:{...this.style,...t?.style}},A=e.indices??[],i=e.vertices??[];if((e.style.fillRule??"nonzero")==="nonzero"){const n=this.curves.map(l=>l.getFillVertices(e)),o=new Map,a=new Set;for(let l=0;l<n.length;l++){const c=[];for(let g=0;g<n.length;g++)l!==g&&Bu([n[l][0],n[l][1]],n[g])&&c.push(g);c.length&&(c.forEach(g=>{let u=o.get(g);u||(u=new Set,o.set(g,u)),u.add(l)}),a.add(l))}n.forEach((l,c)=>{if(a.has(c)||!l.length)return;const g=l.slice(),u=[];o.get(c)?.forEach(d=>{u.push(g.length/2),g.push(...n[d])}),Na(g,{...t,indices:A,vertices:i,holes:u,style:{...this.style}})})}else this.curves.forEach(n=>{n.fillTriangulate({...t,indices:A,vertices:i,style:{...this.style}})});return{indices:A,vertices:i}}getBoundingBox(t=!0){const{min:e,max:A}=this.getMinMax(void 0,void 0,t);return new ct(e.x,e.y,A.x-e.x,A.y-e.y)}drawTo(t,e={}){e={...this.style,...e};const{fill:A="#000",stroke:i="none"}=e;return t.beginPath(),t.save(),Gs(t,e),this.curves.forEach(s=>{s.drawTo(t)}),A!=="none"&&t.fill(),i!=="none"&&t.stroke(),t.restore(),this}drawControlPointsTo(t,e={}){e={...this.style,...e};const{fill:A="#000",stroke:i="none"}=e;return t.beginPath(),t.save(),Gs(t,e),this.getControlPointRefs().forEach(s=>{Hg(t,s.x,s.y,{radius:4})}),A!=="none"&&t.fill(),i!=="none"&&t.stroke(),t.restore(),this}toCommands(){return this.curves.flatMap(t=>t.toCommands())}toData(){return this.curves.filter(t=>t.curves.length).map(t=>t.toData()).join(" ")}toSvgPathString(){const t={...this.style,fill:this.style.fill??"#000",stroke:this.style.stroke??"none"},e={};for(const i in t)t[i]!==void 0&&(e[Fu(i)]=t[i]);Object.assign(e,{"stroke-width":`${this.strokeWidth}px`});let A="";for(const i in e)e[i]!==void 0&&(A+=`${i}:${e[i]};`);return`<path d="${this.toData()}" style="${A}"></path>`}copy(t){return super.copy(t),this.currentCurve=t.currentCurve.clone(),this.style={...t.style},this}}class sA{constructor(t=[],e){this.paths=t,this.viewBox=e}getBoundingBox(t=!0){if(!this.paths.length)return;const e=O.MAX,A=O.MIN;return this.paths.forEach(i=>i.getMinMax(e,A,t)),new ct(e.x,e.y,A.x-e.x,A.y-e.y)}toTriangulatedSvgString(t=this.paths.map(A=>A.fillTriangulate()),e=0){let A="";const i={x:-e,y:-e},s={x:e,y:e};(Array.isArray(t)?t:[t]).forEach(({vertices:a,indices:l})=>{const c=g=>{const u=a[g*2],d=a[g*2+1];return i.x=Math.min(i.x,u+e),s.x=Math.max(s.x,u+e),i.y=Math.min(i.y,d+e),s.y=Math.max(s.y,d+e),[u,d]};for(let g=0,u=l.length;g<u;g+=3){const d=c(l[g]),f=c(l[g+1]),B=c(l[g+2]);A+=`<polygon points="${d.join(",")} ${f.join(",")} ${B.join(",")}" fill="black" />`}});const o=[i.x,i.y,s.x-i.x,s.y-i.y];return`<svg width="${o[2]}" height="${o[3]}" viewBox="${o.join(" ")}" xmlns="http://www.w3.org/2000/svg">${A}</svg>`}toTriangulatedSvg(t,e){return new DOMParser().parseFromString(this.toTriangulatedSvgString(t,e),"image/svg+xml").documentElement}toSvgString(){const{x:t,y:e,width:A,height:i}=this.getBoundingBox(),s=this.paths.map(n=>n.toSvgPathString()).join("");return`<svg viewBox="${t} ${e} ${A} ${i}" width="${A}px" height="${i}px" xmlns="http://www.w3.org/2000/svg">${s}</svg>`}toSvgUrl(){return`data:image/svg+xml;base64,${btoa(this.toSvgString())}`}toSvg(){return new DOMParser().parseFromString(this.toSvgString(),"image/svg+xml").documentElement}toCanvas(t={}){const{pixelRatio:e=2,...A}=t,{left:i,top:s,width:n,height:o}=this.getBoundingBox(),a=document.createElement("canvas");a.width=n*e,a.height=o*e,a.style.width=`${n}px`,a.style.height=`${o}px`;const l=a.getContext("2d");return l&&(l.scale(e,e),l.translate(-i,-s),this.paths.forEach(c=>{c.drawTo(l,A)})),a}}class Ya extends Ut{fillStyle;strokeStyle;lineCap;lineJoin;lineWidth;miterLimit;uvTransform;vertTransform;_defaultStyle=vt.EMPTY;_draws=[];_toTexture(t){return t instanceof vt?t:new aa(t)}stroke(t){const e=new Ut(this);let A=this._defaultStyle;this.strokeStyle&&(A=this._toTexture(this.strokeStyle)),this.curves.length&&(this._draws.push({...t,type:"stroke",path:e,texture:A,uvTransform:this.uvTransform,vertTransform:this.vertTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),super.reset())}fillRect(t,e,A,i){this.rect(t,e,A,i).fill()}strokeRect(t,e,A,i){this.rect(t,e,A,i).stroke()}fill(t){const e=new Ut(this);let A=this._defaultStyle;this.fillStyle&&(A=this._toTexture(this.fillStyle)),this._draws.push({...t,type:"fill",path:e,texture:A,uvTransform:this.uvTransform,vertTransform:this.vertTransform}),super.reset()}copy(t){return super.copy(t),this.strokeStyle=t.strokeStyle,this.fillStyle=t.fillStyle,this.uvTransform=t.uvTransform,this.vertTransform=t.vertTransform,this.lineCap=t.lineCap,this.lineJoin=t.lineJoin,this.lineWidth=t.lineWidth,this.miterLimit=t.miterLimit,this._draws=t._draws.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.uvTransform=void 0,this.vertTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._draws.length=0,this}buildUvs(t,e,A,i,s){if(i){const n=s&&(typeof s=="function"?s:(l,c)=>s.applyToPoint(l,c)),o=i.width,a=i.height;for(let l=e.length,c=t;c<l;c+=2){const g=e[c],u=e[c+1];let d,f;n?[d,f]=n(g,u):[d,f]=[g/o,u/a],A.push(d,f)}}else for(let n=e.length,o=t;o<n;o+=2)A.push(0,0)}toBatchables(){const t=[];for(let e=this._draws.length,A=0;A<e;A++){const i=this._draws[A],s=[],n=[],o=[];i.type==="fill"?i.path.fillTriangulate({vertices:s,indices:n}):i.path.strokeTriangulate({vertices:s,indices:n,lineStyle:i.style,flipAlignment:!1,closed:!0}),this.buildUvs(0,s,o,i.texture,i.uvTransform),t.push({vertices:s,indices:n,uvs:o,texture:i.texture,type:i.type,disableWrapMode:i.disableWrapMode,vertTransform:i.vertTransform})}return t}}var Lu=Object.defineProperty,Gu=Object.getOwnPropertyDescriptor,bi=(r,t,e,A)=>{for(var i=A>1?void 0:A?Gu(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Lu(t,e,i),i};h.CanvasItem=class extends h.TimelineNode{_parentGlobalVisible;_globalVisible;get globalVisible(){return this._globalVisible??!0}_parentGlobalOpacity;_globalOpacity;get globalOpacity(){return this._globalOpacity??1}_modulate=new Ye(4294967295);context=new Ya;_resetContext=!0;_redrawing=!1;_relayouting=!1;_repainting=!1;_originalBatchables=[];_layoutedBatchables=[];_batchables=[];constructor(t,e=[]){super(),this.setProperties(t).append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"modulate":this._modulate.value=e,this.requestRepaint();break;case"blendMode":this.requestRepaint();break;case"opacity":this._updateGlobalOpacity();break;case"visible":case"insideTimeRange":this._updateGlobalVisible();break}}show(){this.visible=!0}hide(){this.visible=!1}isVisibleInTree(){return this.globalOpacity>0&&this.globalVisible}canRender(){return super.canRender()&&this.isVisibleInTree()}requestRedraw(){this._redrawing=!0,this.requestUpdate()}requestRelayout(){this._relayouting=!0,this.requestUpdate()}requestRepaint(){this._repainting=!0,this.requestUpdate()}_updateGlobalVisible(){this._parentGlobalVisible=this.getParent()?.globalVisible,this._globalVisible=(this._parentGlobalVisible??!0)&&this.visible&&this.insideTimeRange}_updateGlobalOpacity(){this._parentGlobalOpacity=this.getParent()?.opacity;const t=Ve(0,this.opacity,1)*(this._parentGlobalOpacity??1);this._globalOpacity!==t&&(this._globalOpacity=t,this.requestRepaint())}_draw(){this.emit("draw")}_redraw(){return this._tree?.log(this.name,"redrawing"),this._draw(),this.context.toBatchables()}_relayout(t){return this._tree?.log(this.name,"relayouting"),t}_repaint(t){return this._tree?.log(this.name,"repainting"),t.map(e=>({...e,modulate:this._modulate.toArgb(this.globalOpacity,!0),blendMode:this.blendMode}))}_process(t){super._process(t);const e=this.getParent();this._parentGlobalVisible!==e?.globalVisible&&this.requestUpdate(),this._parentGlobalOpacity!==e?.globalOpacity&&this.requestUpdate()}_update(t){super._update(t);const e=this.getParent();this._parentGlobalVisible!==e?.globalVisible&&this._updateGlobalVisible(),this._parentGlobalOpacity!==e?.globalOpacity&&this._updateGlobalOpacity();const A=this._redrawing;let i=this._relayouting,s=this._repainting,n;A&&(this._originalBatchables=this._redraw(),i=!0),i&&(this._layoutedBatchables=this._relayout(this._originalBatchables),s=!0),s&&(n=this._repaint(this._layoutedBatchables)),A&&this._resetContext&&this.context.reset(),n&&(this._batchables=n,this._redrawing=!1,this._relayouting=!1,this._repainting=!1)}_render(t){this._batchables.forEach(e=>{e.texture?.upload(t),t.batch2D.render({...e,texture:e.texture?._glTexture(t)})}),super._render(t)}},bi([b()],h.CanvasItem.prototype,"modulate",2),bi([b()],h.CanvasItem.prototype,"blendMode",2),bi([dt({default:!0})],h.CanvasItem.prototype,"visible",2),bi([dt({default:1})],h.CanvasItem.prototype,"opacity",2),h.CanvasItem=bi([st("CanvasItem")],h.CanvasItem);class Ou{currentCall;calls=[];createCall(t){return{renderable:t,parentCall:this.currentCall,fn:t.render.bind(t),calls:[]}}push(t){const e=this.createCall(t);return(this.currentCall?.calls??this.calls).push(e),e}render(t){this.calls.forEach(function e(A){A.fn(t,()=>{A.calls.forEach(e)})}),this.calls=[]}}var Hu=Object.defineProperty,Ju=Object.getOwnPropertyDescriptor,Di=(r,t,e,A)=>{for(var i=A>1?void 0:A?Ju(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Hu(t,e,i),i};h.Timeline=class extends h.Node{static from(t,e=!1){const[A,i]=t?Array.isArray(t)?t:[0,t]:[];return new h.Timeline({startTime:A,endTime:i,loop:e})}constructor(t){super(),this.setProperties(t)}_updateProperty(t,e,A){switch(super._updateProperty(t,e,A),t){case"startTime":this.startTime=Math.min(e,this.endTime);break;case"endTime":this.endTime=e||Number.MAX_SAFE_INTEGER;break}}addTime(t){const e=this.startTime,A=this.endTime;let i=this.currentTime;return i=i+t,this.loop&&i>A&&(i=e+i%A),i=Ve(e,i,A),this.currentTime=i,this.emit("updateCurrentTime",i,t),this}_process(t){super._process(t),this.addTime(t)}},Di([b({default:0})],h.Timeline.prototype,"startTime",2),Di([b({default:0})],h.Timeline.prototype,"currentTime",2),Di([b({default:Number.MAX_SAFE_INTEGER})],h.Timeline.prototype,"endTime",2),Di([b({default:!1})],h.Timeline.prototype,"loop",2),h.Timeline=Di([st("Timeline")],h.Timeline);var Ku=Object.defineProperty,Xs=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Ku(t,e,i),i};class xi extends lr{input=new Uo;renderStack=new Ou;root=new h.Viewport(!0).setTree(this);timeline;_backgroundColor=new Ye;_currentViewport;getCurrentViewport(){return this._currentViewport}setCurrentViewport(t){this._currentViewport=t}constructor(t=new h.Timeline){super(),this.timeline=t.setTree(this)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"backgroundColor":this._backgroundColor.value=e;break}}log(...t){this.debug&&console.log("[modern-canvas]",...t)}_process(t=0){this.timeline.emit("process",t),this.emit("processing"),this.root.emit("process",t),this.emit("processed")}_render(t){this.emit("rendering"),t.program.uniforms.projectionMatrix=this.root.toProjectionArray(!0),this.renderStack.render(t),this._renderScreen(t),this.emit("rendered")}_renderScreen(t){t.state.reset(),t.framebuffer.bind(null),t.viewport.bind({x:0,y:0,width:this.root.width*t.pixelRatio,height:this.root.height*t.pixelRatio}),this.backgroundColor&&t.gl.clearColor(...this._backgroundColor.toArray()),t.clear(),this.backgroundColor&&t.gl.clearColor(0,0,0,0);const e=this.root.texture;e.activate(t,0),ut.draw(t),t.texture.unbind(e)}free(){super.free(),this.root.children.internal.forEach(t=>this.root.removeChild(t)),this.input.removeEventListeners()}}Xs([b({default:!1})],xi.prototype,"processPaused"),Xs([b()],xi.prototype,"backgroundColor"),Xs([dt({default:!1})],xi.prototype,"debug");var Yu=Object.getOwnPropertyDescriptor,Vu=(r,t,e,A)=>{for(var i=A>1?void 0:A?Yu(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.Transition=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}},h.Transition=Vu([st("Transition",{effectMode:"transition",processMode:"pausable",duration:2e3})],h.Transition);var Va=Object.defineProperty,zu=Object.getOwnPropertyDescriptor,Wu=(r,t,e)=>t in r?Va(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,js=(r,t,e,A)=>{for(var i=A>1?void 0:A?zu(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Va(t,e,i),i},za=(r,t,e)=>Wu(r,typeof t!="symbol"?t+"":t,e);const Wa=`varying vec2 vUv[9];
|
|
278
278
|
uniform sampler2D sampler;
|
|
279
279
|
|
|
280
280
|
void main(void) {
|
|
@@ -308,7 +308,7 @@ void main(void) {
|
|
|
308
308
|
gl_FragColor += texture2D(sampler, vUv[7]) * 0.067234;
|
|
309
309
|
gl_FragColor += texture2D(sampler, vUv[8]) * 0.028532;
|
|
310
310
|
}
|
|
311
|
-
}`;
|
|
311
|
+
}`;h.GaussianBlurEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){const A=1/e.width,i=1/e.height,s=Math.max(this.quality,1);for(let n=0;n<s;n++)e.redraw(t,()=>{ut.draw(t,h.GaussianBlurEffect.materialX,{sampler:0,uStrength:A*(this.strength/s)})});for(let n=0;n<s;n++)e.redraw(t,()=>{ut.draw(t,h.GaussianBlurEffect.materialY,{sampler:0,uStrength:i*(this.strength/s)})})}},za(h.GaussianBlurEffect,"materialX",new Qt({vert:`attribute vec2 position;
|
|
312
312
|
attribute vec2 uv;
|
|
313
313
|
uniform float uStrength;
|
|
314
314
|
varying vec2 vUv[9];
|
|
@@ -324,7 +324,7 @@ void main(void) {
|
|
|
324
324
|
vUv[6] = uv + vec2(2.0 * uStrength, 0.0);
|
|
325
325
|
vUv[7] = uv + vec2(3.0 * uStrength, 0.0);
|
|
326
326
|
vUv[8] = uv + vec2(4.0 * uStrength, 0.0);
|
|
327
|
-
}`,frag:
|
|
327
|
+
}`,frag:Wa})),za(h.GaussianBlurEffect,"materialY",new Qt({vert:`attribute vec2 position;
|
|
328
328
|
attribute vec2 uv;
|
|
329
329
|
uniform float uStrength;
|
|
330
330
|
varying vec2 vUv[9];
|
|
@@ -340,7 +340,7 @@ void main(void) {
|
|
|
340
340
|
vUv[6] = uv + vec2(0.0, 2.0 * uStrength);
|
|
341
341
|
vUv[7] = uv + vec2(0.0, 3.0 * uStrength);
|
|
342
342
|
vUv[8] = uv + vec2(0.0, 4.0 * uStrength);
|
|
343
|
-
}`,frag:
|
|
343
|
+
}`,frag:Wa})),js([b({default:4})],h.GaussianBlurEffect.prototype,"strength",2),js([b({default:3})],h.GaussianBlurEffect.prototype,"quality",2),h.GaussianBlurEffect=js([st("GaussianBlurEffect")],h.GaussianBlurEffect);var qa=Object.defineProperty,qu=Object.getOwnPropertyDescriptor,Xu=(r,t,e)=>t in r?qa(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,HA=(r,t,e,A)=>{for(var i=A>1?void 0:A?qu(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&qa(t,e,i),i},ju=(r,t,e)=>Xu(r,t+"",e);h.DropShadowEffect=class extends h.Effect{blurEffect=new h.GaussianBlurEffect;viewport3=new h.Viewport;_color=new Ye;constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){this.viewport3.activateWithCopy(t,e),this.viewport3.redraw(t,()=>{this._color.value=this.color,ut.draw(t,h.DropShadowEffect.material,{sampler:0,uAlpha:this._color.a,uColor:this._color.toArray().slice(0,3),uOffset:[-this.offsetX,this.offsetY],uInputSize:[e.width,e.height,1/e.width,1/e.height]})}),this.blurEffect.strength=this.blur,this.blurEffect.apply(t,this.viewport3),e.redraw(t,()=>{this.viewport3.texture.activate(t,1),ut.draw(t,Ii.instance,{sampler:1}),this.shadowOnly||ut.draw(t,Ii.instance,{sampler:0}),t.texture.unbind(1)})}},ju(h.DropShadowEffect,"material",new Qt({vert:`precision mediump float;
|
|
344
344
|
attribute vec2 position;
|
|
345
345
|
attribute vec2 uv;
|
|
346
346
|
varying vec2 vUv;
|
|
@@ -360,7 +360,7 @@ void main(void) {
|
|
|
360
360
|
sample.rgb = uColor.rgb * sample.a;
|
|
361
361
|
sample *= uAlpha;
|
|
362
362
|
gl_FragColor = sample;
|
|
363
|
-
}`})),
|
|
363
|
+
}`})),HA([b({default:0})],h.DropShadowEffect.prototype,"color",2),HA([b({default:4})],h.DropShadowEffect.prototype,"blur",2),HA([b({default:4})],h.DropShadowEffect.prototype,"offsetX",2),HA([b({default:4})],h.DropShadowEffect.prototype,"offsetY",2),HA([b({default:!1})],h.DropShadowEffect.prototype,"shadowOnly",2),h.DropShadowEffect=HA([st("DropShadowEffect")],h.DropShadowEffect);var Xa=Object.defineProperty,Zu=Object.getOwnPropertyDescriptor,$u=(r,t,e)=>t in r?Xa(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ja=(r,t,e,A)=>{for(var i=A>1?void 0:A?Zu(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Xa(t,e,i),i},tf=(r,t,e)=>$u(r,t+"",e);h.EmbossEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){e.redraw(t,()=>{ut.draw(t,h.EmbossEffect.material,{sampler:0,strength:this.strength,inputSize:[e.width,e.height,1/e.width,1/e.height]})})}},tf(h.EmbossEffect,"material",new Qt({vert:`precision mediump float;
|
|
364
364
|
attribute vec2 position;
|
|
365
365
|
attribute vec2 uv;
|
|
366
366
|
varying vec2 vUv;
|
|
@@ -382,7 +382,7 @@ void main(void) {
|
|
|
382
382
|
color.rgb = vec3((color.r + color.g + color.b) / 3.0);
|
|
383
383
|
float alpha = texture2D(sampler, vUv).a;
|
|
384
384
|
gl_FragColor = vec4(color.rgb * alpha, alpha);
|
|
385
|
-
}`})),
|
|
385
|
+
}`})),ja([b({default:5})],h.EmbossEffect.prototype,"strength",2),h.EmbossEffect=ja([st("EmbossEffect")],h.EmbossEffect);var Za=Object.defineProperty,ef=Object.getOwnPropertyDescriptor,Af=(r,t,e)=>t in r?Za(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Re=(r,t,e,A)=>{for(var i=A>1?void 0:A?ef(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Za(t,e,i),i},rf=(r,t,e)=>Af(r,t+"",e);h.GlitchEffect=class extends h.Effect{_canvas;_texture;_sizes;_offsets;_needsRedraw=!1;constructor(t,e=[]){super(),this.setProperties(t).append(e),this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this._texture=new vt(this._canvas),this._sizes=new Float32Array(this.slices),this._offsets=new Float32Array(this.slices)}redraw(){const t=this.sampleSize,e=this._texture,A=this._canvas.getContext("2d");A.clearRect(0,0,8,t);let i,s=0;for(let n=0;n<this.slices;n++){i=Math.floor(this._offsets[n]*256);const o=this._sizes[n]*t,a=i>0?i:0,l=i<0?-i:0;A.fillStyle=`rgba(${a}, ${l}, 0, 1)`,A.fillRect(0,s>>0,t,o+1>>0),s+=o}e.requestUpload()}apply(t,e){this._needsRedraw||(this._needsRedraw=!0,this.redraw());const A=e.width,i=e.height,s=this.direction*(Math.PI/180),n=Math.sin(s),o=Math.cos(s);e.redraw(t,()=>{this._texture.activate(t,1),ut.draw(t,h.GlitchEffect.material,{sampler:0,filterClamp:[0,0,1,1],filterArea:[A,i,0,0],dimensions:[A,i],aspect:i/A,displacementMap:1,offset:this.offset,sinDir:n,cosDir:o,fillMode:this.fillMode,seed:this.seed,red:this.red,green:this.green,blue:this.blue})})}},rf(h.GlitchEffect,"material",new Qt({vert:`precision mediump float;
|
|
386
386
|
attribute vec2 position;
|
|
387
387
|
attribute vec2 uv;
|
|
388
388
|
varying vec2 vUv;
|
|
@@ -483,7 +483,7 @@ void main(void) {
|
|
|
483
483
|
gl_FragColor.g = texture2D(sampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;
|
|
484
484
|
gl_FragColor.b = texture2D(sampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;
|
|
485
485
|
gl_FragColor.a = texture2D(sampler, coord).a;
|
|
486
|
-
}`})),
|
|
486
|
+
}`})),Re([b({default:10})],h.GlitchEffect.prototype,"slices",2),Re([b({default:512})],h.GlitchEffect.prototype,"sampleSize",2),Re([b({default:100})],h.GlitchEffect.prototype,"offset",2),Re([b({default:0})],h.GlitchEffect.prototype,"direction",2),Re([b({default:2})],h.GlitchEffect.prototype,"fillMode",2),Re([b({default:0})],h.GlitchEffect.prototype,"seed",2),Re([b({default:[2,2]})],h.GlitchEffect.prototype,"red",2),Re([b({default:[-10,4]})],h.GlitchEffect.prototype,"green",2),Re([b({default:[10,-4]})],h.GlitchEffect.prototype,"blue",2),h.GlitchEffect=Re([st("GlitchEffect")],h.GlitchEffect);var $a=Object.defineProperty,sf=Object.getOwnPropertyDescriptor,nf=(r,t,e)=>t in r?$a(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,nA=(r,t,e,A)=>{for(var i=A>1?void 0:A?sf(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&$a(t,e,i),i},of=(r,t,e)=>nf(r,t+"",e);const af=`vec3 mod289(vec3 x)
|
|
487
487
|
{
|
|
488
488
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
489
489
|
}
|
|
@@ -577,7 +577,7 @@ float turb(vec3 P, vec3 rep, float lacunarity, float gain)
|
|
|
577
577
|
totalgain *= gain;
|
|
578
578
|
}
|
|
579
579
|
return abs(sum);
|
|
580
|
-
}`;
|
|
580
|
+
}`;h.GodrayEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){const A=this.angle*(Math.PI/180),i=this.parallel?[Math.cos(A),Math.sin(A)]:this.center;e.redraw(t,()=>{ut.draw(t,h.GodrayEffect.material,{sampler:0,uDimensions:[e.width,e.height],uParallel:this.parallel?1:0,uLight:i,uAspect:e.height/e.width,uTime:this.time,uRay:[this.gain,this.lacunarity,this.alpha],uInputSize:[e.width,e.height,0,0]})})}},of(h.GodrayEffect,"material",new Qt({vert:`precision mediump float;
|
|
581
581
|
attribute vec2 position;
|
|
582
582
|
attribute vec2 uv;
|
|
583
583
|
varying vec2 vUv;
|
|
@@ -595,7 +595,7 @@ uniform float uTime;
|
|
|
595
595
|
uniform vec3 uRay;
|
|
596
596
|
uniform vec4 uInputSize;
|
|
597
597
|
|
|
598
|
-
${
|
|
598
|
+
${af}
|
|
599
599
|
|
|
600
600
|
void main(void) {
|
|
601
601
|
bool uParallel = uParallel > 0.5;
|
|
@@ -626,7 +626,7 @@ void main(void) {
|
|
|
626
626
|
|
|
627
627
|
vec4 color = texture2D(sampler, vUv);
|
|
628
628
|
gl_FragColor = vec4(color.rgb + mist.rgb, color.a);
|
|
629
|
-
}`})),
|
|
629
|
+
}`})),nA([b({default:0})],h.GodrayEffect.prototype,"time",2),nA([b({default:30})],h.GodrayEffect.prototype,"angle",2),nA([b({default:.5})],h.GodrayEffect.prototype,"gain",2),nA([b({default:2.5})],h.GodrayEffect.prototype,"lacunarity",2),nA([b({default:!0})],h.GodrayEffect.prototype,"parallel",2),nA([b({default:()=>[0,0]})],h.GodrayEffect.prototype,"center",2),nA([b({default:1})],h.GodrayEffect.prototype,"alpha",2),h.GodrayEffect=nA([st("GodrayEffect")],h.GodrayEffect);var lf=Object.defineProperty,cf=Object.getOwnPropertyDescriptor,Br=(r,t,e,A)=>{for(var i=A>1?void 0:A?cf(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&lf(t,e,i),i};const tl=`varying vec2 vUv;
|
|
630
630
|
uniform sampler2D sampler;
|
|
631
631
|
uniform vec2 uOffset;
|
|
632
632
|
|
|
@@ -638,7 +638,7 @@ void main(void) {
|
|
|
638
638
|
color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y - uOffset.y));
|
|
639
639
|
color *= 0.25;
|
|
640
640
|
gl_FragColor = color;
|
|
641
|
-
}`,
|
|
641
|
+
}`,el=`precision highp float;
|
|
642
642
|
varying vec2 vUv;
|
|
643
643
|
uniform sampler2D sampler;
|
|
644
644
|
uniform vec2 uOffset;
|
|
@@ -651,14 +651,14 @@ void main(void) {
|
|
|
651
651
|
color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));
|
|
652
652
|
color *= 0.25;
|
|
653
653
|
gl_FragColor = color;
|
|
654
|
-
}`;
|
|
654
|
+
}`;h.KawaseBlurEffect=class extends h.Effect{material;_kernels=[0];constructor(t,e=[]){super(),this.material=new Qt({vert:`precision mediump float;
|
|
655
655
|
attribute vec2 position;
|
|
656
656
|
attribute vec2 uv;
|
|
657
657
|
varying vec2 vUv;
|
|
658
658
|
void main() {
|
|
659
659
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
660
660
|
vUv = uv;
|
|
661
|
-
}`,frag:
|
|
661
|
+
}`,frag:t?.clamp?el:tl}),this.setProperties(t).append(e),this._generateKernels()}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"quality":case"strength":this._generateKernels();break}}_generateKernels(){const t=Math.max(1,Math.round(this.strength)),e=Math.max(1,Math.round(this.quality)),A=[t];if(t>0){let i=t;const s=t/e;for(let n=1;n<e;n++)i-=s,A.push(i)}this._kernels=A}apply(t,e){const A=this.pixelSize[0]/e.width,i=this.pixelSize[1]/e.height;this._kernels.forEach(s=>{const n=s+.5;e.redraw(t,()=>{ut.draw(t,this.material,{sampler:0,uOffset:[n*A,n*i],uInputClamp:[0,0,1,1]})})})}},Br([b({default:4})],h.KawaseBlurEffect.prototype,"strength",2),Br([b({default:3})],h.KawaseBlurEffect.prototype,"quality",2),Br([b({default:[1,1]})],h.KawaseBlurEffect.prototype,"pixelSize",2),h.KawaseBlurEffect=Br([st("KawaseBlurEffect")],h.KawaseBlurEffect);var Al=Object.defineProperty,hf=Object.getOwnPropertyDescriptor,gf=(r,t,e)=>t in r?Al(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Zs=(r,t,e,A)=>{for(var i=A>1?void 0:A?hf(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Al(t,e,i),i},uf=(r,t,e)=>gf(r,t+"",e);h.MaskEffect=class extends h.Effect{texture;constructor(t,e=[]){super(),this.setProperties(t).append(e)}async load(){this.texture=void 0,this.src&&(this.texture=await Te.texture.load(this.src))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"src":this.load();break;case"texture":A?.free?.();break}}apply(t,e,A){this.texture&&A.targetArea&&e.redraw(t,()=>{this.texture.activate(t,1),ut.draw(t,h.MaskEffect.material,{sampler:0,mask:1,area:A.targetArea,rotation:A.target?.globalRotation??0}),t.texture.unbind(1)})}},uf(h.MaskEffect,"material",new Qt({vert:`precision mediump float;
|
|
662
662
|
attribute vec2 position;
|
|
663
663
|
attribute vec2 uv;
|
|
664
664
|
varying vec2 vUv;
|
|
@@ -701,7 +701,7 @@ void main(void) {
|
|
|
701
701
|
} else {
|
|
702
702
|
gl_FragColor = vec4(0.);
|
|
703
703
|
}
|
|
704
|
-
}`})),
|
|
704
|
+
}`})),Zs([dt()],h.MaskEffect.prototype,"texture",2),Zs([b({default:""})],h.MaskEffect.prototype,"src",2),h.MaskEffect=Zs([st("MaskEffect")],h.MaskEffect);var il=Object.defineProperty,ff=Object.getOwnPropertyDescriptor,df=(r,t,e)=>t in r?il(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,oA=(r,t,e,A)=>{for(var i=A>1?void 0:A?ff(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&il(t,e,i),i},rl=(r,t,e)=>df(r,typeof t!="symbol"?t+"":t,e);const If=`precision highp float;
|
|
705
705
|
varying vec2 vUv;
|
|
706
706
|
uniform sampler2D sampler;
|
|
707
707
|
uniform vec2 uThickness;
|
|
@@ -735,14 +735,14 @@ void main(void) {
|
|
|
735
735
|
float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vUv.xy) * (1.-sourceColor.a);
|
|
736
736
|
vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);
|
|
737
737
|
gl_FragColor = contentColor + outlineColor;
|
|
738
|
-
}`;
|
|
738
|
+
}`;h.OutlineEffect=class extends h.Effect{material;static getAngleStep(t){return Number.parseFloat((Math.PI*2/Math.max(t*h.OutlineEffect.MAX_SAMPLES,h.OutlineEffect.MIN_SAMPLES)).toFixed(7))}_color=new Ye;constructor(t,e=[]){super(),this.setProperties(t).append(e),this.material=new Qt({vert:`precision mediump float;
|
|
739
739
|
attribute vec2 position;
|
|
740
740
|
attribute vec2 uv;
|
|
741
741
|
varying vec2 vUv;
|
|
742
742
|
void main() {
|
|
743
743
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
744
744
|
vUv = uv;
|
|
745
|
-
}`,frag:
|
|
745
|
+
}`,frag:If.replace(/\{ANGLE_STEP\}/,h.OutlineEffect.getAngleStep(this.quality).toFixed(7))})}apply(t,e){e.redraw(t,()=>{this._color.value=this.color,ut.draw(t,this.material,{sampler:0,uThickness:[this.width/e.width,this.width/e.height],uColor:this._color.toArray().slice(0,3),uAlpha:this.opacity!==1?this.opacity:this._color.a,uAngleStep:h.OutlineEffect.getAngleStep(this.quality),uKnockout:this.knockout?1:0,uInputClamp:[0,0,1,1]})})}},rl(h.OutlineEffect,"MIN_SAMPLES",1),rl(h.OutlineEffect,"MAX_SAMPLES",100),oA([b({default:0})],h.OutlineEffect.prototype,"color",2),oA([b({default:1})],h.OutlineEffect.prototype,"width",2),oA([b({default:"solid"})],h.OutlineEffect.prototype,"style",2),oA([b()],h.OutlineEffect.prototype,"image",2),oA([b({default:1})],h.OutlineEffect.prototype,"opacity",2),oA([b({default:.1})],h.OutlineEffect.prototype,"quality",2),oA([b({default:!1})],h.OutlineEffect.prototype,"knockout",2),h.OutlineEffect=oA([st("OutlineEffect")],h.OutlineEffect);var sl=Object.defineProperty,pf=Object.getOwnPropertyDescriptor,Ef=(r,t,e)=>t in r?sl(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,nl=(r,t,e,A)=>{for(var i=A>1?void 0:A?pf(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&sl(t,e,i),i},Bf=(r,t,e)=>Ef(r,t+"",e);h.PixelateEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e){e.redraw(t,()=>{ut.draw(t,h.PixelateEffect.material,{sampler:0,uSize:[this.strength,this.strength],uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},Bf(h.PixelateEffect,"material",new Qt({vert:`precision mediump float;
|
|
746
746
|
attribute vec2 position;
|
|
747
747
|
attribute vec2 uv;
|
|
748
748
|
varying vec2 vUv;
|
|
@@ -775,7 +775,7 @@ void main(void) {
|
|
|
775
775
|
coord = pixelate(coord, uSize);
|
|
776
776
|
coord = unmapCoord(coord);
|
|
777
777
|
gl_FragColor = texture2D(sampler, coord);
|
|
778
|
-
}`})),
|
|
778
|
+
}`})),nl([b({default:10})],h.PixelateEffect.prototype,"strength",2),h.PixelateEffect=nl([st("PixelateEffect")],h.PixelateEffect);var ol=Object.defineProperty,Cf=Object.getOwnPropertyDescriptor,Qf=(r,t,e)=>t in r?ol(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Si=(r,t,e,A)=>{for(var i=A>1?void 0:A?Cf(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&ol(t,e,i),i},yf=(r,t,e)=>Qf(r,t+"",e);h.ZoomBlurEffect=class extends h.Effect{constructor(t,e=[]){super(),this.setProperties(t).append(e)}apply(t,e,A){let i=this.center;A.targetArea&&(i=[(A.targetArea[0]+A.targetArea[2]/2)*e.width,(A.targetArea[1]+A.targetArea[3]/2)*e.height]),e.redraw(t,()=>{ut.draw(t,h.ZoomBlurEffect.material,{sampler:0,uCenter:i??[e.width/2,e.height/2],uInnerRadius:this.innerRadius,uRadius:this.radius,uStrength:this.strength,uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},yf(h.ZoomBlurEffect,"material",new Qt({vert:`attribute vec2 position;
|
|
779
779
|
attribute vec2 uv;
|
|
780
780
|
varying vec2 vUv;
|
|
781
781
|
void main() {
|
|
@@ -855,13 +855,13 @@ void main() {
|
|
|
855
855
|
color /= total;
|
|
856
856
|
|
|
857
857
|
gl_FragColor = color;
|
|
858
|
-
}`})),Fi([M()],g.ZoomBlurEffect.prototype,"center",2),Fi([M({default:20})],g.ZoomBlurEffect.prototype,"innerRadius",2),Fi([M({default:-1})],g.ZoomBlurEffect.prototype,"radius",2),Fi([M({default:.1})],g.ZoomBlurEffect.prototype,"strength",2),g.ZoomBlurEffect=Fi([ne("ZoomBlurEffect")],g.ZoomBlurEffect);var Uf=Object.defineProperty,vt=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Uf(A,e,i),i};class qe extends iA{constructor(e){super();u(this,"_texture");this.parent=e}_setProperties(e){return super.setProperties(e)}setProperties(e){return this._setProperties(ce(e)?void 0:yA(e))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"color":case"cropRect":case"stretchRect":case"dpi":case"rotateWithShape":case"tile":case"opacity":case"enabled":this.parent.requestRedraw();break;case"image":case"linearGradient":case"radialGradient":this._updateTexture();break}}async loadTexture(){return this.linearGradient||this.radialGradient?new Qr(this.linearGradient??this.radialGradient,this.parent.size.width,this.parent.size.height):ce(this.image)?void 0:await Gt.texture.load(this.image)}async _updateTexture(){this._texture=await this.loadTexture(),this.parent.requestRedraw()}canDraw(){return!!(this.enabled&&(this._texture||this.color))}_getDrawOptions(){let e=!1;const{width:t,height:i}=this.parent.size,s=new ht().scale(1/t,1/i);if(this.cropRect){const{left:n=0,top:o=0,right:a=0,bottom:l=0}=this.cropRect;s.scale(Math.abs(1-(n+a)),Math.abs(1-(o+l))).translate(n,o),e=!0}if(this.tile){const{translateX:n=0,translateY:o=0,scaleX:a=1,scaleY:l=1}=this.tile;s.translate(-n/t,-o/i).scale(1/a,1/l),e=!0}else if(this.stretchRect){const{left:n=0,top:o=0,right:a=0,bottom:l=0}=this.stretchRect;s.scale(Math.abs(1-(-n+-a)),Math.abs(1-(-o+-l))).translate(-n,-o),e=!0}return{disableWrapMode:e,uvTransform:s}}draw(){const e=this.parent.context,{uvTransform:t,disableWrapMode:i}=this._getDrawOptions();e.uvTransform=t,e.fillStyle=this._texture??this.color,e.fill({disableWrapMode:i})}}vt([M({default:!0})],qe.prototype,"enabled"),vt([M()],qe.prototype,"color"),vt([M()],qe.prototype,"image"),vt([M()],qe.prototype,"linearGradient"),vt([M()],qe.prototype,"radialGradient"),vt([M()],qe.prototype,"cropRect"),vt([M()],qe.prototype,"stretchRect"),vt([M()],qe.prototype,"dpi"),vt([M()],qe.prototype,"rotateWithShape"),vt([M()],qe.prototype,"tile"),vt([M()],qe.prototype,"opacity");var Nf=Object.defineProperty,Ff=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Nf(A,e,i),i};class In extends qe{setProperties(A){return super._setProperties(ce(A)?void 0:dh(A))}}Ff([M()],In.prototype,"fillWithShape");var Tf=Object.defineProperty,Gf=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Tf(A,e,i),i};class pn extends qe{setProperties(A){return super._setProperties(ce(A)?void 0:Ih(A))}}Gf([M()],pn.prototype,"fillWithShape");var Lf=Object.defineProperty,xr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Lf(A,e,i),i};class XA extends qe{setProperties(A){return super._setProperties(ce(A)?void 0:ph(A))}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"width":case"style":case"enabled":this.parent.requestRedraw();break}}canDraw(){return!!(this.enabled&&(this.width||this.color||super.canDraw()))}draw(){const A=this.parent.context,{uvTransform:e,disableWrapMode:t}=this._getDrawOptions();A.lineWidth=this.width||1,A.uvTransform=e,A.strokeStyle=this._texture??this.color,A.stroke({disableWrapMode:t})}}xr([M({default:!0})],XA.prototype,"enabled"),xr([M({default:0})],XA.prototype,"color"),xr([M({default:0})],XA.prototype,"width"),xr([M({default:"solid"})],XA.prototype,"style");var Of=Object.defineProperty,Ti=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Of(A,e,i),i};class bA extends iA{constructor(A){super(),this.parent=A}setProperties(A){return super.setProperties(ce(A)?void 0:Eh(A))}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"color":case"blur":case"offsetX":case"offsetY":this.updateEffect();break}}updateEffect(){const A="__$shadow";let e=this.parent.getNode(A);this.blur||this.offsetX||this.offsetY?(e||(e=new g.DropShadowEffect({name:A}),this.parent.appendChild(e,"back")),e.setProperties(this.getProperties())):e&&this.parent.removeChild(e)}}Ti([M({default:!0})],bA.prototype,"enabled"),Ti([M({default:"#000000"})],bA.prototype,"color"),Ti([M({default:0})],bA.prototype,"blur"),Ti([M({default:0})],bA.prototype,"offsetY"),Ti([M({default:0})],bA.prototype,"offsetX");var Hf=Object.defineProperty,Gi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Hf(A,e,i),i};class DA extends iA{constructor(e){super();u(this,"_path2DSet",new nA);this.parent=e,this._updatePath2DSet()}setProperties(e){return super.setProperties(ce(e)?void 0:Ch(e))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"svg":case"paths":case"viewBox":case"enabled":this._updatePath2DSet(),this.parent.requestRedraw();break}}_updatePath2DSet(){var o;let e;if(this.svg){const a=cn(this.svg);this._path2DSet=gn(a),e=this._path2DSet.viewBox}else(o=this.paths)==null||o.forEach((a,l)=>{const{data:c,...h}=a,f=new Ne;f.style=h,f.addData(c),this._path2DSet.paths[l]=f});if(!e){const a=this._path2DSet.getBoundingBox();e=a?[a.x,a.y,a.width,a.height]:[0,0,1,1]}const[t,i,s,n]=e;this._path2DSet.paths.forEach(a=>{a.applyTransform(new Ke().translate(-t,-i).scale(1/s,1/n))})}draw(){if(this.enabled&&this._path2DSet.paths.length){const e=this.parent.context,{width:t,height:i}=this.parent.size;this._path2DSet.paths.forEach(s=>{e.addPath(s.clone().applyTransform(new Ke().scale(t,i)))})}else this.drawRect()}drawRect(){const e=this.parent.context,{width:t,height:i}=this.parent.size,{borderRadius:s}=this.parent.style;t&&i&&(s?e.roundRect(0,0,t,i,s):e.rect(0,0,t,i))}}Gi([M({default:!0})],DA.prototype,"enabled"),Gi([M()],DA.prototype,"preset"),Gi([M()],DA.prototype,"svg"),Gi([M()],DA.prototype,"viewBox"),Gi([M({default:()=>[]})],DA.prototype,"paths");class Li extends Yt{constructor(A){super(),this.setProperties(A)}}const jA=So();delete jA.top,delete jA.left,delete jA.width,delete jA.height;for(const r in jA)hr(Li,r,{default:jA[r]});var Xe=Uint8Array,dt=Uint16Array,En=Int32Array,Sr=new Xe([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mr=new Xe([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Bn=new Xe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),yl=function(r,A){for(var e=new dt(31),t=0;t<31;++t)e[t]=A+=1<<r[t-1];for(var i=new En(e[30]),t=1;t<30;++t)for(var s=e[t];s<e[t+1];++s)i[s]=s-e[t]<<5|t;return{b:e,r:i}},ml=yl(Sr,2),wl=ml.b,Cn=ml.r;wl[28]=258,Cn[258]=28;for(var vl=yl(Mr,0),Jf=vl.b,_l=vl.r,Qn=new dt(32768),Qe=0;Qe<32768;++Qe){var lA=(Qe&43690)>>1|(Qe&21845)<<1;lA=(lA&52428)>>2|(lA&13107)<<2,lA=(lA&61680)>>4|(lA&3855)<<4,Qn[Qe]=((lA&65280)>>8|(lA&255)<<8)>>1}for(var Ut=function(r,A,e){for(var t=r.length,i=0,s=new dt(A);i<t;++i)r[i]&&++s[r[i]-1];var n=new dt(A);for(i=1;i<A;++i)n[i]=n[i-1]+s[i-1]<<1;var o;if(e){o=new dt(1<<A);var a=15-A;for(i=0;i<t;++i)if(r[i])for(var l=i<<4|r[i],c=A-r[i],h=n[r[i]-1]++<<c,f=h|(1<<c)-1;h<=f;++h)o[Qn[h]>>a]=l}else for(o=new dt(t),i=0;i<t;++i)r[i]&&(o[i]=Qn[n[r[i]-1]++]>>15-r[i]);return o},cA=new Xe(288),Qe=0;Qe<144;++Qe)cA[Qe]=8;for(var Qe=144;Qe<256;++Qe)cA[Qe]=9;for(var Qe=256;Qe<280;++Qe)cA[Qe]=7;for(var Qe=280;Qe<288;++Qe)cA[Qe]=8;for(var Oi=new Xe(32),Qe=0;Qe<32;++Qe)Oi[Qe]=5;var Kf=Ut(cA,9,0),Yf=Ut(cA,9,1),Vf=Ut(Oi,5,0),zf=Ut(Oi,5,1),yn=function(r){for(var A=r[0],e=1;e<r.length;++e)r[e]>A&&(A=r[e]);return A},_t=function(r,A,e){var t=A/8|0;return(r[t]|r[t+1]<<8)>>(A&7)&e},mn=function(r,A){var e=A/8|0;return(r[e]|r[e+1]<<8|r[e+2]<<16)>>(A&7)},wn=function(r){return(r+7)/8|0},bl=function(r,A,e){return(e==null||e>r.length)&&(e=r.length),new Xe(r.subarray(A,e))},Wf=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],bt=function(r,A,e){var t=new Error(A||Wf[r]);if(t.code=r,Error.captureStackTrace&&Error.captureStackTrace(t,bt),!e)throw t;return t},qf=function(r,A,e,t){var i=r.length,s=0;if(!i||A.f&&!A.l)return e||new Xe(0);var n=!e,o=n||A.i!=2,a=A.i;n&&(e=new Xe(i*3));var l=function(He){var ge=e.length;if(He>ge){var we=new Xe(Math.max(ge*2,He));we.set(e),e=we}},c=A.f||0,h=A.p||0,f=A.b||0,I=A.l,d=A.d,C=A.m,p=A.n,x=i*8;do{if(!I){c=_t(r,h,1);var P=_t(r,h+1,3);if(h+=3,P)if(P==1)I=Yf,d=zf,C=9,p=5;else if(P==2){var m=_t(r,h,31)+257,b=_t(r,h+10,15)+4,D=m+_t(r,h+5,31)+1;h+=14;for(var z=new Xe(D),Ae=new Xe(19),W=0;W<b;++W)Ae[Bn[W]]=_t(r,h+W*3,7);h+=b*3;for(var K=yn(Ae),te=(1<<K)-1,Y=Ut(Ae,K,1),W=0;W<D;){var L=Y[_t(r,h,te)];h+=L&15;var w=L>>4;if(w<16)z[W++]=w;else{var se=0,H=0;for(w==16?(H=3+_t(r,h,3),h+=2,se=z[W-1]):w==17?(H=3+_t(r,h,7),h+=3):w==18&&(H=11+_t(r,h,127),h+=7);H--;)z[W++]=se}}var q=z.subarray(0,m),ie=z.subarray(m);C=yn(q),p=yn(ie),I=Ut(q,C,1),d=Ut(ie,p,1)}else bt(1);else{var w=wn(h)+4,R=r[w-4]|r[w-3]<<8,v=w+R;if(v>i){a&&bt(0);break}o&&l(f+R),e.set(r.subarray(w,v),f),A.b=f+=R,A.p=h=v*8,A.f=c;continue}if(h>x){a&&bt(0);break}}o&&l(f+131072);for(var J=(1<<C)-1,$=(1<<p)-1,N=h;;N=h){var se=I[mn(r,h)&J],U=se>>4;if(h+=se&15,h>x){a&&bt(0);break}if(se||bt(2),U<256)e[f++]=U;else if(U==256){N=h,I=null;break}else{var X=U-254;if(U>264){var W=U-257,ee=Sr[W];X=_t(r,h,(1<<ee)-1)+wl[W],h+=ee}var oe=d[mn(r,h)&$],j=oe>>4;oe||bt(3),h+=oe&15;var ie=Jf[j];if(j>3){var ee=Mr[j];ie+=mn(r,h)&(1<<ee)-1,h+=ee}if(h>x){a&&bt(0);break}o&&l(f+131072);var Ee=f+X;if(f<ie){var at=s-ie,lt=Math.min(ie,Ee);for(at+f<0&&bt(3);f<lt;++f)e[f]=t[at+f]}for(;f<Ee;++f)e[f]=e[f-ie]}}A.l=I,A.p=N,A.b=f,A.f=c,I&&(c=1,A.m=C,A.d=d,A.n=p)}while(!c);return f!=e.length&&n?bl(e,0,f):e.subarray(0,f)},jt=function(r,A,e){e<<=A&7;var t=A/8|0;r[t]|=e,r[t+1]|=e>>8},Hi=function(r,A,e){e<<=A&7;var t=A/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},vn=function(r,A){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var i=e.length,s=e.slice();if(!i)return{t:Ml,l:0};if(i==1){var n=new Xe(e[0].s+1);return n[e[0].s]=1,{t:n,l:1}}e.sort(function(v,m){return v.f-m.f}),e.push({s:-1,f:25001});var o=e[0],a=e[1],l=0,c=1,h=2;for(e[0]={s:-1,f:o.f+a.f,l:o,r:a};c!=i-1;)o=e[e[l].f<e[h].f?l++:h++],a=e[l!=c&&e[l].f<e[h].f?l++:h++],e[c++]={s:-1,f:o.f+a.f,l:o,r:a};for(var f=s[0].s,t=1;t<i;++t)s[t].s>f&&(f=s[t].s);var I=new dt(f+1),d=_n(e[c-1],I,0);if(d>A){var t=0,C=0,p=d-A,x=1<<p;for(s.sort(function(m,b){return I[b.s]-I[m.s]||m.f-b.f});t<i;++t){var P=s[t].s;if(I[P]>A)C+=x-(1<<d-I[P]),I[P]=A;else break}for(C>>=p;C>0;){var w=s[t].s;I[w]<A?C-=1<<A-I[w]++-1:++t}for(;t>=0&&C;--t){var R=s[t].s;I[R]==A&&(--I[R],++C)}d=A}return{t:new Xe(I),l:d}},_n=function(r,A,e){return r.s==-1?Math.max(_n(r.l,A,e+1),_n(r.r,A,e+1)):A[r.s]=e},Dl=function(r){for(var A=r.length;A&&!r[--A];);for(var e=new dt(++A),t=0,i=r[0],s=1,n=function(a){e[t++]=a},o=1;o<=A;++o)if(r[o]==i&&o!=A)++s;else{if(!i&&s>2){for(;s>138;s-=138)n(32754);s>2&&(n(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(n(i),--s;s>6;s-=6)n(8304);s>2&&(n(s-3<<5|8208),s=0)}for(;s--;)n(i);s=1,i=r[o]}return{c:e.subarray(0,t),n:A}},Ji=function(r,A){for(var e=0,t=0;t<A.length;++t)e+=r[t]*A[t];return e},xl=function(r,A,e){var t=e.length,i=wn(A+2);r[i]=t&255,r[i+1]=t>>8,r[i+2]=r[i]^255,r[i+3]=r[i+1]^255;for(var s=0;s<t;++s)r[i+s+4]=e[s];return(i+4+t)*8},Sl=function(r,A,e,t,i,s,n,o,a,l,c){jt(A,c++,e),++i[256];for(var h=vn(i,15),f=h.t,I=h.l,d=vn(s,15),C=d.t,p=d.l,x=Dl(f),P=x.c,w=x.n,R=Dl(C),v=R.c,m=R.n,b=new dt(19),D=0;D<P.length;++D)++b[P[D]&31];for(var D=0;D<v.length;++D)++b[v[D]&31];for(var z=vn(b,7),Ae=z.t,W=z.l,K=19;K>4&&!Ae[Bn[K-1]];--K);var te=l+5<<3,Y=Ji(i,cA)+Ji(s,Oi)+n,L=Ji(i,f)+Ji(s,C)+n+14+3*K+Ji(b,Ae)+2*b[16]+3*b[17]+7*b[18];if(a>=0&&te<=Y&&te<=L)return xl(A,c,r.subarray(a,a+l));var se,H,q,ie;if(jt(A,c,1+(L<Y)),c+=2,L<Y){se=Ut(f,I,0),H=f,q=Ut(C,p,0),ie=C;var J=Ut(Ae,W,0);jt(A,c,w-257),jt(A,c+5,m-1),jt(A,c+10,K-4),c+=14;for(var D=0;D<K;++D)jt(A,c+3*D,Ae[Bn[D]]);c+=3*K;for(var $=[P,v],N=0;N<2;++N)for(var U=$[N],D=0;D<U.length;++D){var X=U[D]&31;jt(A,c,J[X]),c+=Ae[X],X>15&&(jt(A,c,U[D]>>5&127),c+=U[D]>>12)}}else se=Kf,H=cA,q=Vf,ie=Oi;for(var D=0;D<o;++D){var ee=t[D];if(ee>255){var X=ee>>18&31;Hi(A,c,se[X+257]),c+=H[X+257],X>7&&(jt(A,c,ee>>23&31),c+=Sr[X]);var oe=ee&31;Hi(A,c,q[oe]),c+=ie[oe],oe>3&&(Hi(A,c,ee>>5&8191),c+=Mr[oe])}else Hi(A,c,se[ee]),c+=H[ee]}return Hi(A,c,se[256]),c+H[256]},Xf=new En([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ml=new Xe(0),jf=function(r,A,e,t,i,s){var n=s.z||r.length,o=new Xe(t+n+5*(1+Math.ceil(n/7e3))+i),a=o.subarray(t,o.length-i),l=s.l,c=(s.r||0)&7;if(A){c&&(a[0]=s.r>>3);for(var h=Xf[A-1],f=h>>13,I=h&8191,d=(1<<e)-1,C=s.p||new dt(32768),p=s.h||new dt(d+1),x=Math.ceil(e/3),P=2*x,w=function(Je){return(r[Je]^r[Je+1]<<x^r[Je+2]<<P)&d},R=new En(25e3),v=new dt(288),m=new dt(32),b=0,D=0,z=s.i||0,Ae=0,W=s.w||0,K=0;z+2<n;++z){var te=w(z),Y=z&32767,L=p[te];if(C[Y]=L,p[te]=Y,W<=z){var se=n-z;if((b>7e3||Ae>24576)&&(se>423||!l)){c=Sl(r,a,0,R,v,m,D,Ae,K,z-K,c),Ae=b=D=0,K=z;for(var H=0;H<286;++H)v[H]=0;for(var H=0;H<30;++H)m[H]=0}var q=2,ie=0,J=I,$=Y-L&32767;if(se>2&&te==w(z-$))for(var N=Math.min(f,se)-1,U=Math.min(32767,z),X=Math.min(258,se);$<=U&&--J&&Y!=L;){if(r[z+q]==r[z+q-$]){for(var ee=0;ee<X&&r[z+ee]==r[z+ee-$];++ee);if(ee>q){if(q=ee,ie=$,ee>N)break;for(var oe=Math.min($,ee-2),j=0,H=0;H<oe;++H){var Ee=z-$+H&32767,at=C[Ee],lt=Ee-at&32767;lt>j&&(j=lt,L=Ee)}}}Y=L,L=C[Y],$+=Y-L&32767}if(ie){R[Ae++]=268435456|Cn[q]<<18|_l[ie];var He=Cn[q]&31,ge=_l[ie]&31;D+=Sr[He]+Mr[ge],++v[257+He],++m[ge],W=z+q,++b}else R[Ae++]=r[z],++v[r[z]]}}for(z=Math.max(z,W);z<n;++z)R[Ae++]=r[z],++v[r[z]];c=Sl(r,a,l,R,v,m,D,Ae,K,z-K,c),l||(s.r=c&7|a[c/8|0]<<3,c-=7,s.h=p,s.p=C,s.i=z,s.w=W)}else{for(var z=s.w||0;z<n+l;z+=65535){var we=z+65535;we>=n&&(a[c/8|0]=l,we=n),c=xl(a,c+1,r.subarray(z,we))}s.i=n}return bl(o,0,t+wn(c)+i)},Rl=function(){var r=1,A=0;return{p:function(e){for(var t=r,i=A,s=e.length|0,n=0;n!=s;){for(var o=Math.min(n+2655,s);n<o;++n)i+=t+=e[n];t=(t&65535)+15*(t>>16),i=(i&65535)+15*(i>>16)}r=t,A=i},d:function(){return r%=65521,A%=65521,(r&255)<<24|(r&65280)<<8|(A&255)<<8|A>>8}}},Zf=function(r,A,e,t,i){if(!i&&(i={l:1},A.dictionary)){var s=A.dictionary.subarray(-32768),n=new Xe(s.length+r.length);n.set(s),n.set(r,s.length),r=n,i.w=s.length}return jf(r,A.level==null?6:A.level,A.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+A.mem,e,t,i)},Pl=function(r,A,e){for(;e;++A)r[A]=e,e>>>=8},$f=function(r,A){var e=A.level,t=e==0?0:e<6?1:e==9?3:2;if(r[0]=120,r[1]=t<<6|(A.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,A.dictionary){var i=Rl();i.p(A.dictionary),Pl(r,2,i.d())}},ed=function(r,A){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&bt(6,"invalid zlib data"),(r[1]>>5&1)==1&&bt(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function td(r,A){A||(A={});var e=Rl();e.p(r);var t=Zf(r,A,A.dictionary?6:2,4);return $f(t,A),Pl(t,t.length-4,e.d()),t}function Ad(r,A){return qf(r.subarray(ed(r),-4),{i:2},A,A)}var id=typeof TextDecoder<"u"&&new TextDecoder,rd=0;try{id.decode(Ml,{stream:!0}),rd=1}catch{}const sd="modern-font";function Ki(r,A){if(!r)throw new Error(`[${sd}] ${A}`)}function nd(r){if("buffer"in r){const A=r.buffer;return r.byteOffset>0||r.byteLength<r.buffer.byteLength?A.slice(r.byteOffset,r.byteOffset+r.byteLength):A}else return r}function ZA(r){return"buffer"in r?new DataView(r.buffer,r.byteOffset,r.byteLength):new DataView(r)}function od(r){let A="";for(let e=0,t=r.length,i;e<t;e++)i=r.charCodeAt(e),i!==0&&(A+=String.fromCharCode(i));return A}function Rr(r){r=od(r);const A=[];for(let e=0,t=r.length,i;e<t;e++)i=r.charCodeAt(e),A.push(i>>8),A.push(i&255);return A}function ad(r){let A="";for(let e=0,t=r.length;e<t;e++)r[e]<127?A+=String.fromCharCode(r[e]):A+=`%${(256+r[e]).toString(16).slice(1)}`;return unescape(A)}function ld(r){let A="";for(let e=0,t=r.length;e<t;e+=2)A+=String.fromCharCode((r[e]<<8)+r[e+1]);return A}var cd=Object.defineProperty,je=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&cd(A,e,i),i};const Yi={int8:1,int16:2,int32:4,uint8:1,uint16:2,uint32:4,float32:4,float64:8,fixed:4,longDateTime:8,char:1};function Ze(){return function(r,A){Object.defineProperty(r.constructor.prototype,A,{get(){if(typeof A=="string"){if(A.startsWith("read"))return(...e)=>this.read(A.substring(4).toLowerCase(),...e);if(A.startsWith("write"))return(...e)=>this.write(A.substring(5).toLowerCase(),...e)}},configurable:!0,enumerable:!0})}}class Fe extends DataView{constructor(e,t,i,s){super(nd(e),t,i);u(this,"cursor",0);this.littleEndian=s}readColumn(e){if(e.size){const t=Array.from({length:e.size},(i,s)=>this.read(e.type,e.offset+s));switch(e.type){case"char":return t.join("");default:return t}}else return this.read(e.type,e.offset)}writeColumn(e,t){e.size?Array.from({length:e.size},(i,s)=>{this.write(e.type,t[s],e.offset+s)}):this.write(e.type,t,e.offset)}read(e,t=this.cursor,i=this.littleEndian){var l;switch(e){case"char":return this.readChar(t);case"fixed":return this.readFixed(t,i);case"longDateTime":return this.readLongDateTime(t,i)}const s=`get${e.replace(/^\S/,c=>c.toUpperCase())}`,n=this,o=(l=n[s])==null?void 0:l.bind(n),a=o==null?void 0:o(t,i);return this.cursor+=Yi[e],a}readUint24(e=this.cursor){const[t,i,s]=this.readBytes(e,3);return(t<<16)+(i<<8)+s}readBytes(e,t){t==null&&(t=e,e=this.cursor);const i=[];for(let s=0;s<t;++s)i.push(this.getUint8(e+s));return this.cursor=e+t,i}readString(e,t){const i=this.readBytes(e,t);let s="";for(let n=0,o=i.length;n<o;n++)s+=String.fromCharCode(i[n]);return s}readFixed(e,t){const i=this.readInt32(e,t)/65536;return Math.ceil(i*1e5)/1e5}readLongDateTime(e=this.cursor,t){const i=this.readUint32(e+4,t),s=new Date;return s.setTime(i*1e3+-20775456e5),s}readChar(e){return this.readString(e,1)}write(e,t,i=this.cursor,s=this.littleEndian){var c;switch(e){case"char":return this.writeChar(t,i);case"fixed":return this.writeFixed(t,i);case"longDateTime":return this.writeLongDateTime(t,i)}const n=`set${e.replace(/^\S/,h=>h.toUpperCase())}`,o=this,a=(c=o[n])==null?void 0:c.bind(o),l=a==null?void 0:a(i,t,s);return this.cursor+=Yi[e.toLowerCase()],l}writeString(e="",t=this.cursor){const i=e.replace(/[^\x00-\xFF]/g,"11").length;this.seek(t);for(let s=0,n=e.length,o;s<n;++s)o=e.charCodeAt(s)||0,o>127?this.writeUint16(o):this.writeUint8(o);return this.cursor+=i,this}writeChar(e,t){return this.writeString(e,t)}writeFixed(e,t){return this.writeInt32(Math.round(e*65536),t),this}writeLongDateTime(e,t=this.cursor){typeof e>"u"?e=-20775456e5:typeof e.getTime=="function"?e=e.getTime():/^\d+$/.test(e)?e=+e:e=Date.parse(e);const s=Math.round((e- -20775456e5)/1e3);return this.writeUint32(0,t),this.writeUint32(s,t+4),this}writeBytes(e,t=this.cursor){let i;if(Array.isArray(e)){i=e.length;for(let s=0;s<i;++s)this.setUint8(t+s,e[s])}else{const s=ZA(e);i=s.byteLength;for(let n=0;n<i;++n)this.setUint8(t+n,s.getUint8(n))}return this.cursor=t+i,this}seek(e){return this.cursor=e,this}}je([Ze()],Fe.prototype,"readInt8"),je([Ze()],Fe.prototype,"readInt16"),je([Ze()],Fe.prototype,"readInt32"),je([Ze()],Fe.prototype,"readUint8"),je([Ze()],Fe.prototype,"readUint16"),je([Ze()],Fe.prototype,"readUint32"),je([Ze()],Fe.prototype,"readFloat32"),je([Ze()],Fe.prototype,"readFloat64"),je([Ze()],Fe.prototype,"writeInt8"),je([Ze()],Fe.prototype,"writeInt16"),je([Ze()],Fe.prototype,"writeInt32"),je([Ze()],Fe.prototype,"writeUint8"),je([Ze()],Fe.prototype,"writeUint16"),je([Ze()],Fe.prototype,"writeUint32"),je([Ze()],Fe.prototype,"writeFloat32"),je([Ze()],Fe.prototype,"writeFloat64");const kl=new WeakMap;function y(r){const A=typeof r=="object"?r:{type:r},{size:e=1,type:t}=A;return(i,s)=>{if(typeof s!="string")return;let n=kl.get(i);n||(n={columns:[],byteLength:0},kl.set(i,n));const o={...A,name:s,byteLength:e*Yi[t],offset:A.offset??n.columns.reduce((a,l)=>a+l.byteLength,0)};n.columns.push(o),n.byteLength=n.columns.reduce((a,l)=>a+Yi[l.type]*(l.size??1),0),Object.defineProperty(i.constructor.prototype,s,{get(){return this.view.readColumn(o)},set(a){this.view.writeColumn(o,a)},configurable:!0,enumerable:!0})}}class It{constructor(A,e,t,i){u(this,"view");this.view=new Fe(A,e,t,i)}}class Pr extends It{get buffer(){return this.view.buffer}toBuffer(){return this.view.buffer.slice(this.view.byteOffset,this.view.byteOffset+this.view.byteLength)}toBlob(){return new Blob([new Uint8Array(this.view.buffer,this.view.byteOffset,this.view.byteLength)],{type:this.mimeType})}toFontFace(A){return new FontFace(A,this.view.buffer)}}var hd=Object.defineProperty,rt=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&hd(A,e,i),i};const st=class Tc extends Pr{constructor(){super(...arguments);u(this,"format","EmbeddedOpenType");u(this,"mimeType","application/vnd.ms-fontobject")}static from(e){const t=e.sfnt,s=t.name.names,n=Rr(s.fontFamily||""),o=n.length,a=Rr(s.fontStyle||""),l=a.length,c=Rr(s.version||""),h=c.length,f=Rr(s.fullName||""),I=f.length,d=86+o+4+l+4+h+4+I+2+e.view.byteLength,C=new Tc(new ArrayBuffer(d),0,d,!0);C.EOTSize=C.view.byteLength,C.FontDataSize=e.view.byteLength,C.Version=131073,C.Flags=0,C.Charset=1,C.MagicNumber=20556,C.Padding1=0,C.CheckSumAdjustment=t.head.checkSumAdjustment;const p=t.os2;return p&&(C.FontPANOSE=p.fontPANOSE,C.Italic=p.fsSelection,C.Weight=p.usWeightClass,C.fsType=p.fsType,C.UnicodeRange=p.ulUnicodeRange,C.CodePageRange=p.ulCodePageRange),C.view.writeUint16(o),C.view.writeBytes(n),C.view.writeUint16(0),C.view.writeUint16(l),C.view.writeBytes(a),C.view.writeUint16(0),C.view.writeUint16(h),C.view.writeBytes(c),C.view.writeUint16(0),C.view.writeUint16(I),C.view.writeBytes(f),C.view.writeUint16(0),C.view.writeUint16(0),C.view.writeBytes(e.view),C}};rt([y("uint32")],st.prototype,"EOTSize"),rt([y("uint32")],st.prototype,"FontDataSize"),rt([y("uint32")],st.prototype,"Version"),rt([y("uint32")],st.prototype,"Flags"),rt([y({type:"uint8",size:10})],st.prototype,"FontPANOSE"),rt([y("uint8")],st.prototype,"Charset"),rt([y("uint8")],st.prototype,"Italic"),rt([y("uint32")],st.prototype,"Weight"),rt([y("uint16")],st.prototype,"fsType"),rt([y("uint16")],st.prototype,"MagicNumber"),rt([y({type:"uint8",size:16})],st.prototype,"UnicodeRange"),rt([y({type:"uint8",size:8})],st.prototype,"CodePageRange"),rt([y("uint32")],st.prototype,"CheckSumAdjustment"),rt([y({type:"uint8",size:16})],st.prototype,"Reserved"),rt([y("uint16")],st.prototype,"Padding1");var gd=Object.defineProperty,kr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&gd(A,e,i),i};class $A extends It{constructor(A,e){super(A,e,16)}}kr([y({type:"char",size:4})],$A.prototype,"tag"),kr([y("uint32")],$A.prototype,"checkSum"),kr([y("uint32")],$A.prototype,"offset"),kr([y("uint32")],$A.prototype,"length");const bn=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],ud=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];class Dn{constructor(A){u(this,"index");u(this,"name");u(this,"isComposite",!1);u(this,"components",[]);u(this,"pathCommands",[]);const e={...A};if(this.index=e.index??0,e.name===".notdef"?e.unicode=void 0:e.name===".null"&&(e.unicode=0),e.unicode===0&&e.name!==".null")throw new Error('The unicode value "0" is reserved for the glyph name ".null" and cannot be used by any other glyph.');this.name=e.name??null,e.unicode&&(this.unicode=e.unicode),e.unicodes?this.unicodes=e.unicodes:e.unicode&&(this.unicodes=[e.unicode])}getPathCommands(A=0,e=0,t=72,i={},s){const n=1/((s==null?void 0:s.unitsPerEm)??1e3)*t,{xScale:o=n,yScale:a=n}=i,l=this.pathCommands,c=[];for(let h=0,f=l.length;h<f;h+=1){const I=l[h];I.type==="M"?c.push({type:"M",x:A+I.x*o,y:e+-I.y*a}):I.type==="L"?c.push({type:"L",x:A+I.x*o,y:e+-I.y*a}):I.type==="Q"?c.push({type:"Q",x1:A+I.x1*o,y1:e+-I.y1*a,x:A+I.x*o,y:e+-I.y*a}):I.type==="C"?c.push({type:"C",x1:A+I.x1*o,y1:e+-I.y1*a,x2:A+I.x2*o,y2:e+-I.y2*a,x:A+I.x*o,y:e+-I.y*a}):I.type==="Z"&&c.push({type:"Z"})}return c}}class fd extends Dn{parse(A,e,t){const i=this,{nominalWidthX:s,defaultWidthX:n,gsubrsBias:o,subrsBias:a}=A,l=A.topDict.paintType,c=this.index;let h,f,I,d;const C=[],p=[];let x=0,P=!1,w=!1,R=n,v=0,m=0;function b(Y,L){C.push({type:"L",x:Y,y:L})}function D(Y,L,se,H,q,ie){C.push({type:"C",x1:Y,y1:L,x2:se,y2:H,x:q,y:ie})}function z(Y,L){w&&l!==2&&Ae(),w=!0,C.push({type:"M",x:Y,y:L})}function Ae(){C.push({type:"Z"})}function W(Y){C.push(...Y)}function K(){p.length%2!==0&&!P&&(R=p.shift()+s),x+=p.length>>1,p.length=0,P=!0}function te(Y){let L,se,H,q,ie,J,$,N,U,X,ee,oe,j=0;for(;j<Y.length;){let Ee=Y[j++];switch(Ee){case 1:K();break;case 3:K();break;case 4:p.length>1&&!P&&(R=p.shift()+s,P=!0),m+=p.pop(),z(v,m);break;case 5:for(;p.length>0;)v+=p.shift(),m+=p.shift(),b(v,m);break;case 6:for(;p.length>0&&(v+=p.shift(),b(v,m),p.length!==0);)m+=p.shift(),b(v,m);break;case 7:for(;p.length>0&&(m+=p.shift(),b(v,m),p.length!==0);)v+=p.shift(),b(v,m);break;case 8:for(;p.length>0;)h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d+p.shift(),D(h,f,I,d,v,m);break;case 10:ie=p.pop()+a,J=A.subrs[ie],J&&te(J);break;case 11:return;case 12:switch(Ee=Y[j],j+=1,Ee){case 35:h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),$=I+p.shift(),N=d+p.shift(),U=$+p.shift(),X=N+p.shift(),ee=U+p.shift(),oe=X+p.shift(),v=ee+p.shift(),m=oe+p.shift(),p.shift(),D(h,f,I,d,$,N),D(U,X,ee,oe,v,m);break;case 34:h=v+p.shift(),f=m,I=h+p.shift(),d=f+p.shift(),$=I+p.shift(),N=d,U=$+p.shift(),X=d,ee=U+p.shift(),oe=m,v=ee+p.shift(),D(h,f,I,d,$,N),D(U,X,ee,oe,v,m);break;case 36:h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),$=I+p.shift(),N=d,U=$+p.shift(),X=d,ee=U+p.shift(),oe=X+p.shift(),v=ee+p.shift(),D(h,f,I,d,$,N),D(U,X,ee,oe,v,m);break;case 37:h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),$=I+p.shift(),N=d+p.shift(),U=$+p.shift(),X=N+p.shift(),ee=U+p.shift(),oe=X+p.shift(),Math.abs(ee-v)>Math.abs(oe-m)?v=ee+p.shift():m=oe+p.shift(),D(h,f,I,d,$,N),D(U,X,ee,oe,v,m);break;default:console.warn(`Glyph ${c}: unknown operator ${1200+Ee}`),p.length=0}break;case 14:if(p.length>=4){const at=bn[p.pop()],lt=bn[p.pop()],He=p.pop(),ge=p.pop();if(at&<){i.isComposite=!0,i.components=[];const we=A.charset.indexOf(at),Je=A.charset.indexOf(lt);i.components.push({glyphIndex:Je,dx:0,dy:0}),i.components.push({glyphIndex:we,dx:ge,dy:He}),W(t.get(Je).pathCommands);const We=JSON.parse(JSON.stringify(t.get(we).pathCommands));for(let xe=0;xe<We.length;xe+=1){const tt=We[xe];tt.type!=="Z"&&(tt.x+=ge,tt.y+=He),(tt.type==="Q"||tt.type==="C")&&(tt.x1+=ge,tt.y1+=He),tt.type==="C"&&(tt.x2+=ge,tt.y2+=He)}W(We)}}else p.length>0&&!P&&(R=p.shift()+s,P=!0);w&&l!==2&&(Ae(),w=!1);break;case 18:K();break;case 19:case 20:K(),j+=x+7>>3;break;case 21:p.length>2&&!P&&(R=p.shift()+s,P=!0),m+=p.pop(),v+=p.pop(),z(v,m);break;case 22:p.length>1&&!P&&(R=p.shift()+s,P=!0),v+=p.pop(),z(v,m);break;case 23:K();break;case 24:for(;p.length>2;)h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d+p.shift(),D(h,f,I,d,v,m);v+=p.shift(),m+=p.shift(),b(v,m);break;case 25:for(;p.length>6;)v+=p.shift(),m+=p.shift(),b(v,m);h=v+p.shift(),f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d+p.shift(),D(h,f,I,d,v,m);break;case 26:for(p.length%2&&(v+=p.shift());p.length>0;)h=v,f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I,m=d+p.shift(),D(h,f,I,d,v,m);break;case 27:for(p.length%2&&(m+=p.shift());p.length>0;)h=v+p.shift(),f=m,I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d,D(h,f,I,d,v,m);break;case 28:L=Y[j],se=Y[j+1],p.push((L<<24|se<<16)>>16),j+=2;break;case 29:ie=p.pop()+o,J=A.gsubrs[ie],J&&te(J);break;case 30:for(;p.length>0&&(h=v,f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d+(p.length===1?p.shift():0),D(h,f,I,d,v,m),p.length!==0);)h=v+p.shift(),f=m,I=h+p.shift(),d=f+p.shift(),m=d+p.shift(),v=I+(p.length===1?p.shift():0),D(h,f,I,d,v,m);break;case 31:for(;p.length>0&&(h=v+p.shift(),f=m,I=h+p.shift(),d=f+p.shift(),m=d+p.shift(),v=I+(p.length===1?p.shift():0),D(h,f,I,d,v,m),p.length!==0);)h=v,f=m+p.shift(),I=h+p.shift(),d=f+p.shift(),v=I+p.shift(),m=d+(p.length===1?p.shift():0),D(h,f,I,d,v,m);break;default:Ee<32?console.warn(`Glyph ${c}: unknown operator ${Ee}`):Ee<247?p.push(Ee-139):Ee<251?(L=Y[j],j+=1,p.push((Ee-247)*256+L+108)):Ee<255?(L=Y[j],j+=1,p.push(-(Ee-251)*256-L-108)):(L=Y[j],se=Y[j+1],H=Y[j+2],q=Y[j+3],j+=4,p.push((L<<24|se<<16|H<<8|q)/65536))}}}te(e),this.pathCommands=C,P&&(this.advanceWidth=R)}}class xn{constructor(A){u(this,"_items",[]);this._sfnt=A}get(A){const e=this._items[A];let t;if(e)t=e;else{t=this._get(A);const i=this._sfnt.hmtx.metrics[A];i&&(t.advanceWidth=t.advanceWidth||i.advanceWidth,t.leftSideBearing=t.leftSideBearing||i.leftSideBearing);const s=this._sfnt.cmap.glyphIndexToUnicodesMap.get(A);s&&(t.unicode??(t.unicode=s[0]),t.unicodes??(t.unicodes=s)),this._items[A]=t}return t}}class dd extends xn{get length(){return this._sfnt.cff.charStringsIndex.offsets.length-1}_get(A){const e=this._sfnt.cff,t=new fd({index:A});return t.parse(e,e.charStringsIndex.get(A),this),t.name=e.charset[A],t}}var Id=Object.defineProperty,Ul=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Id(A,e,i),i};class Ur extends It{constructor(e,t,i,s){super(e,t,i,s);u(this,"_offsets");u(this,"_objects");this._init()}get offsets(){return this._offsets??(this._offsets=this.readOffsets())}get objects(){return this._objects??(this._objects=this.readObjects())}_init(){const e=this.view,t=this.count,i=this.offsetSize;this.objectOffset=(t+1)*i+2,this.endOffset=e.byteOffset+this.objectOffset+this.offsets[t]}readOffsets(){const e=this.view,t=this.count,i=this.offsetSize;e.seek(3);const s=[];for(let n=0,o=t+1;n<o;n++){const a=this.view;let l=0;for(let c=0;c<i;c++)l<<=8,l+=a.readUint8();s.push(l)}return s}readObjects(){const e=[];for(let t=0,i=this.count;t<i;t++)e.push(this.get(t));return e}get(e){const t=this.offsets,i=this.objectOffset,s=i+t[e],o=i+t[e+1]-s;return this._isString?this.view.readString(s,o):this.view.readBytes(s,o)}}Ul([y("uint16")],Ur.prototype,"count"),Ul([y("uint8")],Ur.prototype,"offsetSize");class Nr extends Ur{constructor(){super(...arguments);u(this,"_isString",!1)}}class Nl extends Ur{constructor(){super(...arguments);u(this,"_isString",!0)}}const pd=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],Ed=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],Bd=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],Cd=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"];function Fr(r,A){return A<=390?pd[A]:r[A-391]}function ye(r,A="number",e){return(t,i)=>{if(typeof i!="string")return;const s={type:A,operator:r,default:e??A==="number"?0:void 0};Object.defineProperty(t.constructor.prototype,i,{get(){return this._getProp(s)},set(n){this._setProp(s,n)},configurable:!0,enumerable:!0})}}class Fl extends It{constructor(){super(...arguments);u(this,"_dict");u(this,"_stringIndex")}get dict(){return this._dict??(this._dict=this._readDict())}setStringIndex(e){return this._stringIndex=e,this}_readFloatOperand(){const e=this.view;let t="";const i=15,s=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];for(;;){const n=e.readUint8(),o=n>>4,a=n&15;if(o===i||(t+=s[o],a===i))break;t+=s[a]}return Number.parseFloat(t)}_readOperand(e){const t=this.view;let i,s,n,o;if(e===28)return i=t.readUint8(),s=t.readUint8(),i<<8|s;if(e===29)return i=t.readUint8(),s=t.readUint8(),n=t.readUint8(),o=t.readUint8(),i<<24|s<<16|n<<8|o;if(e===30)return this._readFloatOperand();if(e>=32&&e<=246)return e-139;if(e>=247&&e<=250)return i=t.readUint8(),(e-247)*256+i+108;if(e>=251&&e<=254)return i=t.readUint8(),-(e-251)*256-i-108;throw new Error(`invalid b0 ${e}, at: ${t.cursor}`)}_readDict(){const e=this.view;e.seek(0);let t=[];const i=e.cursor+e.byteLength,s={};for(;e.cursor<i;){let n=e.readUint8();n<=21?(n===12&&(n=1200+e.readUint8()),s[n]=t,t=[]):t.push(this._readOperand(n))}return s}_getProp(e){var i;const t=this.dict[e.operator]??e.default;switch(e.type){case"number":return t[0];case"string":return Fr(((i=this._stringIndex)==null?void 0:i.objects)??[],t[0]);case"number[]":return t}return t}_setProp(e,t){}}var Qd=Object.defineProperty,Sn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Qd(A,e,i),i};class Tr extends Fl{}Sn([ye(19)],Tr.prototype,"subrs"),Sn([ye(20)],Tr.prototype,"defaultWidthX"),Sn([ye(21)],Tr.prototype,"nominalWidthX");var yd=Object.defineProperty,De=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&yd(A,e,i),i};class ve extends Fl{}De([ye(0,"string")],ve.prototype,"version"),De([ye(1,"string")],ve.prototype,"notice"),De([ye(1200,"string")],ve.prototype,"copyright"),De([ye(2,"string")],ve.prototype,"fullName"),De([ye(3,"string")],ve.prototype,"familyName"),De([ye(4,"string")],ve.prototype,"weight"),De([ye(1201)],ve.prototype,"isFixedPitch"),De([ye(1202)],ve.prototype,"italicAngle"),De([ye(1203,"number",-100)],ve.prototype,"underlinePosition"),De([ye(1204,"number",50)],ve.prototype,"underlineThickness"),De([ye(1205)],ve.prototype,"paintType"),De([ye(1206,"number",2)],ve.prototype,"charstringType"),De([ye(1207,"number[]",[.001,0,0,.001,0,0])],ve.prototype,"fontMatrix"),De([ye(13)],ve.prototype,"uniqueId"),De([ye(5,"number[]",[0,0,0,0])],ve.prototype,"fontBBox"),De([ye(1208)],ve.prototype,"strokeWidth"),De([ye(14)],ve.prototype,"xuid"),De([ye(15)],ve.prototype,"charset"),De([ye(16)],ve.prototype,"encoding"),De([ye(17)],ve.prototype,"charStrings"),De([ye(18,"number[]",[0,0])],ve.prototype,"private");function Ye(r,A=r){return e=>{xA.tableDefinitions.set(r,{tag:r,prop:A,class:e}),Object.defineProperty(xA.prototype,A,{get(){return this.get(r)},set(t){return this.set(r,t)},configurable:!0,enumerable:!0})}}const FA=class FA{constructor(A){u(this,"tables",new Map);u(this,"tableViews",new Map);(A instanceof Map?A:new Map(Object.entries(A))).forEach((t,i)=>{this.tableViews.set(i,new DataView(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)))})}get hasGlyf(){return this.tableViews.has("glyf")}get names(){return this.name.names}get unitsPerEm(){return this.head.unitsPerEm}get ascender(){return this.hhea.ascent}get descender(){return this.hhea.descent}get createdTimestamp(){return this.head.created}get modifiedTimestamp(){return this.head.modified}get numGlyphs(){return this.maxp.numGlyphs}get unicodes(){return this.cmap.glyphIndexToUnicodesMap}get glyphs(){return this.hasGlyf?this.glyf.glyphs:this.cff.glyphs}charToGlyphIndex(A){let e=this.cmap.unicodeToGlyphIndexMap.get(A.codePointAt(0));if(e===void 0&&!this.hasGlyf){const{encoding:t,charset:i}=this.cff;e=i.indexOf(t[A.codePointAt(0)])}return e??0}charToGlyph(A){return this.glyphs.get(this.charToGlyphIndex(A))}textToGlyphIndexes(A){const e=[];for(const t of A)e.push(this.charToGlyphIndex(t));return e}textToGlyphs(A){const e=this.glyphs,t=this.textToGlyphIndexes(A),i=t.length,s=Array.from({length:i}),n=e.get(0);for(let o=0;o<i;o+=1)s[o]=e.get(t[o])||n;return s}getPathCommands(A,e,t,i,s){const n=[];return this.forEachGlyph(A,e,t,i,s,(o,a,l,c,h)=>{n.push(...o.getPathCommands(a,l,c,h,this))}),n}getAdvanceWidth(A,e,t){return this.forEachGlyph(A,0,0,e,t,()=>{})}forEachGlyph(A,e=0,t=0,i=72,s={},n){const o=1/this.unitsPerEm*i,a=this.textToGlyphs(A);for(let l=0;l<a.length;l+=1){const c=a[l];n.call(this,c,e,t,i,s),c.advanceWidth&&(e+=c.advanceWidth*o),s.letterSpacing?e+=s.letterSpacing*i:s.tracking&&(e+=s.tracking/1e3*i)}return e}clone(){return new FA(this.tableViews)}delete(A){const e=FA.tableDefinitions.get(A);return e?(this.tableViews.delete(A),this.tables.delete(e.prop),this):this}set(A,e){const t=FA.tableDefinitions.get(A);return t&&this.tables.set(t.prop,e),this.tableViews.set(A,e.view),this}get(A){const e=FA.tableDefinitions.get(A);if(!e)return;let t=this.tables.get(e.prop);if(!t){const i=e.class;if(i){const s=this.tableViews.get(A);if(!s)return;t=new i(s.buffer,s.byteOffset,s.byteLength).setSFNT(this),this.tables.set(e.prop,t)}}return t}};u(FA,"tableDefinitions",new Map);let xA=FA;class $e extends It{setSFNT(A){return this._sfnt=A,this}getSFNT(){return this._sfnt}}var md=Object.defineProperty,wd=Object.getOwnPropertyDescriptor,Vi=(r,A,e,t)=>{for(var i=t>1?void 0:t?wd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&md(A,e,i),i};let SA=class extends $e{constructor(A,e,t,i){super(A,e,t,i);u(this,"_glyphs");u(this,"privateDict");u(this,"subrsIndex");this._init()}get glyphs(){return this._glyphs??(this._glyphs=new dd(this._sfnt))}get gsubrs(){return this.globalSubrIndex.objects}get gsubrsBias(){return this._calcSubroutineBias(this.globalSubrIndex.objects)}get defaultWidthX(){var A;return((A=this.privateDict)==null?void 0:A.defaultWidthX)??0}get nominalWidthX(){var A;return((A=this.privateDict)==null?void 0:A.nominalWidthX)??0}get subrs(){var A;return((A=this.subrsIndex)==null?void 0:A.objects)??[]}get subrsBias(){return this._calcSubroutineBias(this.subrs)}_init(){const A=this.view,{buffer:e,byteOffset:t}=A,i=t+4;this.nameIndex=new Nl(e,i),this.topDictIndex=new Nr(e,this.nameIndex.endOffset),this.stringIndex=new Nl(e,this.topDictIndex.endOffset),this.globalSubrIndex=new Nr(e,this.stringIndex.endOffset),this.topDict=new ve(new Uint8Array(this.topDictIndex.objects[0]).buffer).setStringIndex(this.stringIndex);const s=this.topDict.private[0],n=this.topDict.private[1];s&&(this.privateDict=new Tr(e,t+n,s).setStringIndex(this.stringIndex),this.privateDict.subrs&&(this.subrsIndex=new Nr(e,t+n+this.privateDict.subrs))),this.charStringsIndex=new Nr(e,t+this.topDict.charStrings);const o=this.charStringsIndex.offsets.length-1;this.topDict.charset===0?this.charset=Ed:this.topDict.charset===1?this.charset=Bd:this.topDict.charset===2?this.charset=Cd:this.charset=this._readCharset(t+this.topDict.charset,o,this.stringIndex.objects),this.topDict.encoding===0?this.encoding=bn:this.topDict.encoding===1?this.encoding=ud:this.encoding=this._readEncoding(t+this.topDict.encoding)}_readCharset(A,e,t){const i=this.view;i.seek(A);let s,n,o;e-=1;const a=[".notdef"],l=i.readUint8();if(l===0)for(s=0;s<e;s+=1)n=i.readUint16(),a.push(Fr(t,n));else if(l===1)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint8(),s=0;s<=o;s+=1)a.push(Fr(t,n)),n+=1;else if(l===2)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint16(),s=0;s<=o;s+=1)a.push(Fr(t,n)),n+=1;else throw new Error(`Unknown charset format ${l}`);return a}_readEncoding(A){const e=this.view;e.seek(A);let t,i;const s={},n=e.readUint8();if(n===0){const o=e.readUint8();for(t=0;t<o;t+=1)i=e.readUint8(),s[i]=t}else if(n===1){const o=e.readUint8();for(i=1,t=0;t<o;t+=1){const a=e.readUint8(),l=e.readUint8();for(let c=a;c<=a+l;c+=1)s[c]=i,i+=1}}else console.warn(`unknown encoding format:${n}`);return s}_calcSubroutineBias(A){let e;return A.length<1240?e=107:A.length<33900?e=1131:e=32768,e}};Vi([y("uint8")],SA.prototype,"majorVersion",2),Vi([y("uint8")],SA.prototype,"minorVersion",2),Vi([y("uint8")],SA.prototype,"headerSize",2),Vi([y("uint8")],SA.prototype,"offsetSize",2),SA=Vi([Ye("CFF ","cff")],SA);var vd=Object.defineProperty,Gr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&vd(A,e,i),i};const zi=class Gc extends It{constructor(A=new ArrayBuffer(262),e){super(A,e,262)}static from(A){const e=new Gc;return e.format=0,e.length=e.view.byteLength,e.language=0,A.forEach((t,i)=>{i<256&&t<256&&e.view.writeUint8(t,6+i)}),e}getUnicodeToGlyphIndexMap(){const A=new Map;return this.glyphIndexArray.forEach((e,t)=>{A.set(t,e)}),A}};Gr([y("uint16")],zi.prototype,"format"),Gr([y("uint16")],zi.prototype,"length"),Gr([y("uint16")],zi.prototype,"language"),Gr([y({type:"uint8",size:256})],zi.prototype,"glyphIndexArray");let Mn=zi;var _d=Object.defineProperty,Rn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&_d(A,e,i),i};class Wi extends It{get subHeaderKeys(){return this.view.seek(6),Array.from({length:256},()=>this.view.readUint16()/8)}get maxSubHeaderKey(){return this.subHeaderKeys.reduce((A,e)=>Math.max(A,e),0)}get subHeaders(){const A=this.maxSubHeaderKey;return this.view.seek(6+256*2),Array.from({length:A},(e,t)=>({firstCode:this.view.readUint16(),entryCount:this.view.readUint16(),idDelta:this.view.readUint16(),idRangeOffset:(this.view.readUint16()-(A-t)*8-2)/2}))}get glyphIndexArray(){const A=this.maxSubHeaderKey,e=6+256*2+A*8;this.view.seek(e);const t=(this.view.byteLength-e)/2;return Array.from({length:t},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(A){const e=new Map,t=this.subHeaderKeys,i=this.maxSubHeaderKey,s=this.subHeaders,n=this.glyphIndexArray,o=t.findIndex(l=>l===i);let a=0;for(let l=0;l<256;l++)if(t[l]===0)l>=o||l<s[0].firstCode||l>=s[0].firstCode+s[0].entryCount||s[0].idRangeOffset+(l-s[0].firstCode)>=n.length?a=0:(a=n[s[0].idRangeOffset+(l-s[0].firstCode)],a!==0&&(a=a+s[0].idDelta)),a!==0&&a<A&&e.set(l,a);else{const c=t[l];for(let h=0,f=s[c].entryCount;h<f;h++)if(s[c].idRangeOffset+h>=n.length?a=0:(a=n[s[c].idRangeOffset+h],a!==0&&(a=a+s[c].idDelta)),a!==0&&a<A){const I=(l<<8|h+s[c].firstCode)%65535;e.set(I,a)}}return e}}Rn([y("uint16")],Wi.prototype,"format"),Rn([y("uint16")],Wi.prototype,"length"),Rn([y("uint16")],Wi.prototype,"language");function Tl(r){return r>32767?r-65536:r<-32767?r+65536:r}function Pn(r,A){let e;const t=[];let i={};return r.forEach((s,n)=>{A&&n>A||((!e||n!==e.unicode+1||s!==e.glyphIndex+1)&&(e?(i.end=e.unicode,t.push(i),i={start:n,startId:s,delta:Tl(s-n)}):(i.start=Number(n),i.startId=s,i.delta=Tl(s-n))),e={unicode:n,glyphIndex:s})}),e&&(i.end=e.unicode,t.push(i)),t}var bd=Object.defineProperty,MA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&bd(A,e,i),i};const hA=class Lc extends It{get endCode(){const A=this.segCountX2;return this.view.seek(14),Array.from({length:A/2},()=>this.view.readUint16())}set endCode(A){this.view.seek(14),A.forEach(e=>this.view.writeUint16(e))}get reservedPad(){return this.view.readUint16(14+this.segCountX2)}set reservedPad(A){this.view.writeUint16(A,14+this.segCountX2)}get startCode(){const A=this.segCountX2;return this.view.seek(14+A+2),Array.from({length:A/2},()=>this.view.readUint16())}set startCode(A){this.view.seek(14+this.segCountX2+2),A.forEach(e=>this.view.writeUint16(e))}get idDelta(){const A=this.segCountX2;return this.view.seek(14+A+2+A),Array.from({length:A/2},()=>this.view.readUint16())}set idDelta(A){const e=this.segCountX2;this.view.seek(14+e+2+e),A.forEach(t=>this.view.writeUint16(t))}get idRangeOffsetCursor(){const A=this.segCountX2;return 14+A+2+A*2}get idRangeOffset(){const A=this.segCountX2;return this.view.seek(this.idRangeOffsetCursor),Array.from({length:A/2},()=>this.view.readUint16())}set idRangeOffset(A){this.view.seek(this.idRangeOffsetCursor),A.forEach(e=>this.view.writeUint16(e))}get glyphIndexArrayCursor(){const A=this.segCountX2;return 14+A+2+A*3}get glyphIndexArray(){const A=this.glyphIndexArrayCursor;this.view.seek(A);const e=(this.view.byteLength-A)/2;return Array.from({length:e},()=>this.view.readUint16())}static from(A){const e=Pn(A,65535),t=e.length+1,i=Math.floor(Math.log(t)/Math.LN2),s=2*2**i,n=new Lc(new ArrayBuffer(24+e.length*8));return n.format=4,n.length=n.view.byteLength,n.language=0,n.segCountX2=t*2,n.searchRange=s,n.entrySelector=i,n.rangeShift=2*t-s,n.endCode=[...e.map(o=>o.end),65535],n.reservedPad=0,n.startCode=[...e.map(o=>o.start),65535],n.idDelta=[...e.map(o=>o.delta),1],n.idRangeOffset=Array.from({length:t},()=>0),n}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.segCountX2/2,t=(this.glyphIndexArrayCursor-this.idRangeOffsetCursor)/2,i=this.startCode,s=this.endCode,n=this.idRangeOffset,o=this.idDelta,a=this.glyphIndexArray;for(let l=0;l<e;++l)for(let c=i[l],h=s[l];c<=h;++c)if(n[l]===0)A.set(c,(c+o[l])%65536);else{const f=l+n[l]/2+(c-i[l])-t,I=a[f];I!==0?A.set(c,(I+o[l])%65536):A.set(c,0)}return A.delete(65535),A}};MA([y("uint16")],hA.prototype,"format"),MA([y("uint16")],hA.prototype,"length"),MA([y("uint16")],hA.prototype,"language"),MA([y("uint16")],hA.prototype,"segCountX2"),MA([y("uint16")],hA.prototype,"searchRange"),MA([y("uint16")],hA.prototype,"entrySelector"),MA([y("uint16")],hA.prototype,"rangeShift");let kn=hA;var Dd=Object.defineProperty,qi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Dd(A,e,i),i};class RA extends It{get glyphIndexArray(){return this.view.seek(12),Array.from({length:this.entryCount},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(){const A=this.glyphIndexArray,e=new Map;return A.forEach((t,i)=>{e.set(i,t)}),e}}qi([y("uint16")],RA.prototype,"format"),qi([y("uint16")],RA.prototype,"length"),qi([y("uint16")],RA.prototype,"language"),qi([y("uint16")],RA.prototype,"firstCode"),qi([y("uint16")],RA.prototype,"entryCount");var xd=Object.defineProperty,Xi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&xd(A,e,i),i};const ei=class Oc extends It{get groups(){const A=this.nGroups;return this.view.seek(16),Array.from({length:A},()=>({startCharCode:this.view.readUint32(),endCharCode:this.view.readUint32(),startGlyphCode:this.view.readUint32()}))}static from(A){const e=Pn(A),t=new Oc(new ArrayBuffer(16+e.length*12));return t.format=12,t.reserved=0,t.length=t.view.byteLength,t.language=0,t.nGroups=e.length,e.forEach(i=>{t.view.writeUint32(i.start),t.view.writeUint32(i.end),t.view.writeUint32(i.startId)}),t}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.groups;for(let t=0,i=e.length;t<i;t++){const s=e[t];let n=s.startGlyphCode,o=s.startCharCode;const a=s.endCharCode;for(;o<=a;)A.set(o++,n++)}return A}};Xi([y("uint16")],ei.prototype,"format"),Xi([y("uint16")],ei.prototype,"reserved"),Xi([y("uint32")],ei.prototype,"length"),Xi([y("uint32")],ei.prototype,"language"),Xi([y("uint32")],ei.prototype,"nGroups");let Un=ei;var Sd=Object.defineProperty,Nn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Sd(A,e,i),i};class ji extends It{getVarSelectorRecords(){const A=this.numVarSelectorRecords;return this.view.seek(10),Array.from({length:A},()=>{const e={varSelector:this.view.readUint24(),defaultUVSOffset:this.view.readUint32(),unicodeValueRanges:[],nonDefaultUVSOffset:this.view.readUint32(),uVSMappings:[]};if(e.defaultUVSOffset){this.view.seek(e.defaultUVSOffset);const t=this.view.readUint32();e.unicodeValueRanges=Array.from({length:t},()=>({startUnicodeValue:this.view.readUint24(),additionalCount:this.view.readUint8()}))}if(e.nonDefaultUVSOffset){this.view.seek(e.nonDefaultUVSOffset);const t=this.view.readUint32();e.uVSMappings=Array.from({length:t},()=>({unicodeValue:this.view.readUint24(),glyphID:this.view.readUint16()}))}return e})}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.getVarSelectorRecords();for(let t=0,i=e.length;t<i;t++){const{uVSMappings:s}=e[t];s.forEach(n=>{A.set(n.unicodeValue,n.glyphID)})}return A}}Nn([y("uint16")],ji.prototype,"format"),Nn([y("uint32")],ji.prototype,"length"),Nn([y("uint32")],ji.prototype,"numVarSelectorRecords");var Md=Object.defineProperty,Rd=Object.getOwnPropertyDescriptor,Fn=(r,A,e,t)=>{for(var i=t>1?void 0:t?Rd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Md(A,e,i),i};let ti=class extends $e{constructor(){super(...arguments);u(this,"_unicodeToGlyphIndexMap");u(this,"_glyphIndexToUnicodesMap")}static from(A){const e=Array.from(A.keys()).some(h=>h>65535),t=kn.from(A),i=Mn.from(A),s=e?Un.from(A):void 0,n=4+(s?32:24),o=n+t.view.byteLength,a=o+i.view.byteLength,l=[{platformID:0,platformSpecificID:3,offset:n},{platformID:1,platformSpecificID:0,offset:o},{platformID:3,platformSpecificID:1,offset:n},s&&{platformID:3,platformSpecificID:10,offset:a}].filter(Boolean),c=new ti(new ArrayBuffer(4+8*l.length+t.view.byteLength+i.view.byteLength+((s==null?void 0:s.view.byteLength)??0)));return c.numberSubtables=l.length,c.view.seek(4),l.forEach(h=>{c.view.writeUint16(h.platformID),c.view.writeUint16(h.platformSpecificID),c.view.writeUint32(h.offset)}),c.view.writeBytes(t.view,n),c.view.writeBytes(i.view,o),s&&c.view.writeBytes(s.view,a),c}get unicodeToGlyphIndexMap(){return this._unicodeToGlyphIndexMap??(this._unicodeToGlyphIndexMap=this.readunicodeToGlyphIndexMap())}get glyphIndexToUnicodesMap(){if(!this._glyphIndexToUnicodesMap){const A=new Map,e=this.unicodeToGlyphIndexMap,t=Array.from(e.keys());for(let i=0,s=t.length;i<s;i++){const n=t[i],o=e.get(n);A.has(o)?A.get(o).push(n):A.set(o,[n])}this._glyphIndexToUnicodesMap=A}return this._glyphIndexToUnicodesMap}readSubtables(){const A=this.numberSubtables;return this.view.seek(4),Array.from({length:A},()=>({platformID:this.view.readUint16(),platformSpecificID:this.view.readUint16(),offset:this.view.readUint32()})).map(e=>{this.view.seek(e.offset);const t=this.view.readUint16();let i;switch(t){case 0:i=new Mn(this.view.buffer,e.offset);break;case 2:i=new Wi(this.view.buffer,e.offset,this.view.readUint16());break;case 4:i=new kn(this.view.buffer,e.offset,this.view.readUint16());break;case 6:i=new RA(this.view.buffer,e.offset,this.view.readUint16());break;case 12:i=new Un(this.view.buffer,e.offset,this.view.readUint32(e.offset+4));break;case 14:default:i=new ji(this.view.buffer,e.offset,this.view.readUint32());break}return{...e,format:t,view:i}})}readunicodeToGlyphIndexMap(){var o,a,l,c,h;const A=this.readSubtables(),e=(o=A.find(f=>f.format===0))==null?void 0:o.view,t=(a=A.find(f=>f.platformID===3&&f.platformSpecificID===3&&f.format===2))==null?void 0:a.view,i=(l=A.find(f=>f.platformID===3&&f.platformSpecificID===1&&f.format===4))==null?void 0:l.view,s=(c=A.find(f=>f.platformID===3&&f.platformSpecificID===10&&f.format===12))==null?void 0:c.view,n=(h=A.find(f=>f.platformID===0&&f.platformSpecificID===5&&f.format===14))==null?void 0:h.view;return new Map([...(e==null?void 0:e.getUnicodeToGlyphIndexMap())??[],...(t==null?void 0:t.getUnicodeToGlyphIndexMap(this._sfnt.maxp.numGlyphs))??[],...(i==null?void 0:i.getUnicodeToGlyphIndexMap())??[],...(s==null?void 0:s.getUnicodeToGlyphIndexMap())??[],...(n==null?void 0:n.getUnicodeToGlyphIndexMap())??[]])}};Fn([y("uint16")],ti.prototype,"version",2),Fn([y("uint16")],ti.prototype,"numberSubtables",2),ti=Fn([Ye("cmap")],ti);class Pd extends Dn{_parseContours(A){const e=[];let t=[];for(let i=0;i<A.length;i+=1){const s=A[i];t.push(s),s.lastPointOfContour&&(e.push(t),t=[])}return Ki(t.length===0,"There are still points left in the current contour."),e}_transformPoints(A,e){const t=[];for(let i=0;i<A.length;i+=1){const s=A[i],n={x:e.xScale*s.x+e.scale10*s.y+e.dx,y:e.scale01*s.x+e.yScale*s.y+e.dy,onCurve:s.onCurve,lastPointOfContour:s.lastPointOfContour};t.push(n)}return t}_parseGlyphCoordinate(A,e,t,i,s){let n;return(e&i)>0?(n=A.view.readUint8(),(e&s)===0&&(n=-n),n=t+n):(e&s)>0?n=t:n=t+A.view.readInt16(),n}parse(A,e,t){A.view.seek(e);const i=this.numberOfContours=A.view.readInt16();if(this.xMin=A.view.readInt16(),this.yMin=A.view.readInt16(),this.xMax=A.view.readInt16(),this.yMax=A.view.readInt16(),i>0){const o=this.endPointIndices=[];for(let C=0;C<i;C++)o.push(A.view.readUint16());const a=this.instructionLength=A.view.readUint16();Ki(a<5e3,`Bad instructionLength:${a}`);const l=this.instructions=[];for(let C=0;C<a;++C)l.push(A.view.readUint8());const c=A.view.byteOffset,h=o[o.length-1]+1;Ki(h<2e4,`Bad numberOfCoordinates:${c}`);const f=[];let I,d=0;for(;d<h;)if(I=A.view.readUint8(),f.push(I),d++,I&8&&d<h){const C=A.view.readUint8();for(let p=0;p<C;p++)f.push(I),d++}if(Ki(f.length===h,`Bad flags length: ${f.length}, numberOfCoordinates: ${h}`),o.length>0){const C=[];let p;if(h>0){for(let w=0;w<h;w+=1)I=f[w],p={},p.onCurve=!!(I&1),p.lastPointOfContour=o.includes(w),C.push(p);let x=0;for(let w=0;w<h;w+=1)I=f[w],p=C[w],p.x=this._parseGlyphCoordinate(A,I,x,2,16),x=p.x;let P=0;for(let w=0;w<h;w+=1)I=f[w],p=C[w],p.y=this._parseGlyphCoordinate(A,I,P,4,32),P=p.y}this.points=C}else this.points=[]}else if(i===0)this.points=[];else{this.isComposite=!0,this.points=[],this.components=[];let o,a=!0;for(;a;){o=A.view.readUint16();const l={glyphIndex:A.view.readUint16(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(l.dx=A.view.readInt16(),l.dy=A.view.readInt16()):l.matchedPoints=[A.view.readUint16(),A.view.readUint16()]:(o&2)>0?(l.dx=A.view.readInt8(),l.dy=A.view.readInt8()):l.matchedPoints=[A.view.readUint8(),A.view.readUint8()],(o&8)>0?l.xScale=l.yScale=A.view.readInt16()/16384:(o&64)>0?(l.xScale=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384):(o&128)>0&&(l.xScale=A.view.readInt16()/16384,l.scale01=A.view.readInt16()/16384,l.scale10=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384),this.components.push(l),a=!!(o&32)}if(o&256){this.instructionLength=A.view.readUint16(),this.instructions=[];for(let l=0;l<this.instructionLength;l+=1)this.instructions.push(A.view.readUint8())}}if(this.isComposite)for(let o=0;o<this.components.length;o+=1){const a=this.components[o],l=t.get(a.glyphIndex);if(l.getPathCommands(),l.points){let c;if(a.matchedPoints===void 0)c=this._transformPoints(l.points,a);else{Ki(a.matchedPoints[0]>this.points.length-1||a.matchedPoints[1]>l.points.length-1,`Matched points out of range in ${this.name}`);const h=this.points[a.matchedPoints[0]];let f=l.points[a.matchedPoints[1]];const I={xScale:a.xScale,scale01:a.scale01,scale10:a.scale10,yScale:a.yScale,dx:0,dy:0};f=this._transformPoints([f],I)[0],I.dx=h.x-f.x,I.dy=h.y-f.y,c=this._transformPoints(l.points,I)}this.points=this.points.concat(c)}}const s=[],n=this._parseContours(this.points);for(let o=0,a=n.length;o<a;++o){const l=n[o];let c=l[l.length-1],h=l[0];c.onCurve?s.push({type:"M",x:c.x,y:c.y}):h.onCurve?s.push({type:"M",x:h.x,y:h.y}):s.push({type:"M",x:(c.x+h.x)*.5,y:(c.y+h.y)*.5});for(let f=0,I=l.length;f<I;++f)if(c=h,h=l[(f+1)%I],c.onCurve)s.push({type:"L",x:c.x,y:c.y});else{let d=h;h.onCurve||(d={x:(c.x+h.x)*.5,y:(c.y+h.y)*.5}),s.push({type:"Q",x1:c.x,y1:c.y,x:d.x,y:d.y})}s.push({type:"Z"})}this.pathCommands=s}}class kd extends xn{get length(){return this._sfnt.loca.locations.length}_get(A){const e=this._sfnt.loca.locations,t=e[A],i=new Pd({index:A});return t!==e[A+1]&&i.parse(this._sfnt.glyf,t,this),i}}var Ud=Object.getOwnPropertyDescriptor,Nd=(r,A,e,t)=>{for(var i=t>1?void 0:t?Ud(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Lr=class extends $e{constructor(){super(...arguments);u(this,"_glyphs")}static from(A){const e=A.reduce((i,s)=>i+s.byteLength,0),t=new Lr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeBytes(i)}),t}get glyphs(){return this._glyphs??(this._glyphs=new kd(this._sfnt))}};Lr=Nd([Ye("glyf")],Lr);var Fd=Object.getOwnPropertyDescriptor,Td=(r,A,e,t)=>{for(var i=t>1?void 0:t?Fd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Tn=class extends $e{};Tn=Td([Ye("GPOS","gpos")],Tn);var Gd=Object.defineProperty,Ld=Object.getOwnPropertyDescriptor,PA=(r,A,e,t)=>{for(var i=t>1?void 0:t?Ld(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Gd(A,e,i),i};let Zt=class extends $e{};PA([y("uint16")],Zt.prototype,"majorVersion",2),PA([y("uint16")],Zt.prototype,"minorVersion",2),PA([y("uint16")],Zt.prototype,"scriptListOffset",2),PA([y("uint16")],Zt.prototype,"featureListOffset",2),PA([y("uint16")],Zt.prototype,"lookupListOffset",2),PA([y("uint16")],Zt.prototype,"featureVariationsOffset",2),Zt=PA([Ye("GSUB","gsub")],Zt);var Od=Object.defineProperty,Hd=Object.getOwnPropertyDescriptor,Te=(r,A,e,t)=>{for(var i=t>1?void 0:t?Hd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Od(A,e,i),i};let Re=class extends $e{constructor(r=new ArrayBuffer(54),A){super(r,A,Math.min(54,r.byteLength-(A??0)))}};Te([y("fixed")],Re.prototype,"version",2),Te([y("fixed")],Re.prototype,"fontRevision",2),Te([y("uint32")],Re.prototype,"checkSumAdjustment",2),Te([y("uint32")],Re.prototype,"magickNumber",2),Te([y("uint16")],Re.prototype,"flags",2),Te([y("uint16")],Re.prototype,"unitsPerEm",2),Te([y({type:"longDateTime"})],Re.prototype,"created",2),Te([y({type:"longDateTime"})],Re.prototype,"modified",2),Te([y("int16")],Re.prototype,"xMin",2),Te([y("int16")],Re.prototype,"yMin",2),Te([y("int16")],Re.prototype,"xMax",2),Te([y("int16")],Re.prototype,"yMax",2),Te([y("uint16")],Re.prototype,"macStyle",2),Te([y("uint16")],Re.prototype,"lowestRecPPEM",2),Te([y("int16")],Re.prototype,"fontDirectionHint",2),Te([y("int16")],Re.prototype,"indexToLocFormat",2),Te([y("int16")],Re.prototype,"glyphDataFormat",2),Re=Te([Ye("head")],Re);var Jd=Object.defineProperty,Kd=Object.getOwnPropertyDescriptor,nt=(r,A,e,t)=>{for(var i=t>1?void 0:t?Kd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Jd(A,e,i),i};let Ve=class extends $e{constructor(r=new ArrayBuffer(36),A){super(r,A,Math.min(36,r.byteLength-(A??0)))}};nt([y("fixed")],Ve.prototype,"version",2),nt([y("int16")],Ve.prototype,"ascent",2),nt([y("int16")],Ve.prototype,"descent",2),nt([y("int16")],Ve.prototype,"lineGap",2),nt([y("uint16")],Ve.prototype,"advanceWidthMax",2),nt([y("int16")],Ve.prototype,"minLeftSideBearing",2),nt([y("int16")],Ve.prototype,"minRightSideBearing",2),nt([y("int16")],Ve.prototype,"xMaxExtent",2),nt([y("int16")],Ve.prototype,"caretSlopeRise",2),nt([y("int16")],Ve.prototype,"caretSlopeRun",2),nt([y("int16")],Ve.prototype,"caretOffset",2),nt([y({type:"int16",size:4})],Ve.prototype,"reserved",2),nt([y("int16")],Ve.prototype,"metricDataFormat",2),nt([y("uint16")],Ve.prototype,"numOfLongHorMetrics",2),Ve=nt([Ye("hhea")],Ve);var Yd=Object.getOwnPropertyDescriptor,Vd=(r,A,e,t)=>{for(var i=t>1?void 0:t?Yd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Or=class extends $e{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new Or(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceWidth),t.view.writeUint16(i.leftSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.hhea.numOfLongHorMetrics;let t=0;const i=this.view;return i.seek(0),Array.from({length:A}).map((s,n)=>(n<e&&(t=i.readUint16()),{advanceWidth:t,leftSideBearing:i.readUint16()}))}};Or=Vd([Ye("hmtx")],Or);var zd=Object.getOwnPropertyDescriptor,Wd=(r,A,e,t)=>{for(var i=t>1?void 0:t?zd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Gn=class extends $e{};Gn=Wd([Ye("kern","kern")],Gn);var qd=Object.getOwnPropertyDescriptor,Xd=(r,A,e,t)=>{for(var i=t>1?void 0:t?qd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Hr=class extends $e{constructor(){super(...arguments);u(this,"_locations")}static from(A,e=1){const t=A.length*(e?4:2),i=new Hr(new ArrayBuffer(t));return A.forEach(s=>{e?i.view.writeUint32(s):i.view.writeUint16(s/2)}),i}get locations(){return this._locations??(this._locations=this.readLocations())}readLocations(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.head.indexToLocFormat,t=this.view;return t.seek(0),Array.from({length:A}).map(()=>e?t.readUint32():t.readUint16()*2)}};Hr=Xd([Ye("loca")],Hr);var jd=Object.defineProperty,Zd=Object.getOwnPropertyDescriptor,et=(r,A,e,t)=>{for(var i=t>1?void 0:t?Zd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&jd(A,e,i),i};let Ge=class extends $e{constructor(r=new ArrayBuffer(32),A){super(r,A,Math.min(32,r.byteLength-(A??0)))}};et([y("fixed")],Ge.prototype,"version",2),et([y("uint16")],Ge.prototype,"numGlyphs",2),et([y("uint16")],Ge.prototype,"maxPoints",2),et([y("uint16")],Ge.prototype,"maxContours",2),et([y("uint16")],Ge.prototype,"maxComponentPoints",2),et([y("uint16")],Ge.prototype,"maxComponentContours",2),et([y("uint16")],Ge.prototype,"maxZones",2),et([y("uint16")],Ge.prototype,"maxTwilightPoints",2),et([y("uint16")],Ge.prototype,"maxStorage",2),et([y("uint16")],Ge.prototype,"maxFunctionDefs",2),et([y("uint16")],Ge.prototype,"maxInstructionDefs",2),et([y("uint16")],Ge.prototype,"maxStackElements",2),et([y("uint16")],Ge.prototype,"maxSizeOfInstructions",2),et([y("uint16")],Ge.prototype,"maxComponentElements",2),et([y("uint16")],Ge.prototype,"maxComponentDepth",2),Ge=et([Ye("maxp")],Ge);var $d=Object.defineProperty,eI=Object.getOwnPropertyDescriptor,Jr=(r,A,e,t)=>{for(var i=t>1?void 0:t?eI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&$d(A,e,i),i};const Gl={0:"copyright",1:"fontFamily",2:"fontSubFamily",3:"uniqueSubFamily",4:"fullName",5:"version",6:"postScriptName",7:"tradeMark",8:"manufacturer",9:"designer",10:"description",11:"urlOfFontVendor",12:"urlOfFontDesigner",13:"licence",14:"urlOfLicence",16:"preferredFamily",17:"preferredSubFamily",18:"compatibleFull",19:"sampleText"},Ln={Macintosh:1,Microsoft:3},tI={Default:0},Ll={UCS2:1};let Ai=class extends $e{constructor(){super(...arguments);u(this,"_names")}get names(){return this._names??(this._names=this.readNames())}readNames(){const A=this.count;this.view.seek(6);const e=[];for(let a=0;a<A;++a)e.push({platform:this.view.readUint16(),encoding:this.view.readUint16(),language:this.view.readUint16(),nameId:this.view.readUint16(),length:this.view.readUint16(),offset:this.view.readUint16()});const t=this.stringOffset;for(let a=0;a<A;++a){const l=e[a];l.name=this.view.readBytes(t+l.offset,l.length)}let i=Ln.Macintosh,s=tI.Default,n=0;e.some(a=>a.platform===Ln.Microsoft&&a.encoding===Ll.UCS2&&a.language===1033)&&(i=Ln.Microsoft,s=Ll.UCS2,n=1033);const o={};for(let a=0;a<A;++a){const l=e[a];l.platform===i&&l.encoding===s&&l.language===n&&Gl[l.nameId]&&(o[Gl[l.nameId]]=n===0?ad(l.name):ld(l.name))}return o}};Jr([y("uint16")],Ai.prototype,"format",2),Jr([y("uint16")],Ai.prototype,"count",2),Jr([y("uint16")],Ai.prototype,"stringOffset",2),Ai=Jr([Ye("name")],Ai);var AI=Object.defineProperty,iI=Object.getOwnPropertyDescriptor,le=(r,A,e,t)=>{for(var i=t>1?void 0:t?iI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&AI(A,e,i),i};let ae=class extends $e{get fontPANOSE(){return[this.bFamilyType,this.bSerifStyle,this.bWeight,this.bProportion,this.bContrast,this.bStrokeVariation,this.bArmStyle,this.bLetterform,this.bMidline,this.bXHeight]}};le([y("uint16")],ae.prototype,"version",2),le([y("int16")],ae.prototype,"xAvgCharWidth",2),le([y("uint16")],ae.prototype,"usWeightClass",2),le([y("uint16")],ae.prototype,"usWidthClass",2),le([y("uint16")],ae.prototype,"fsType",2),le([y("uint16")],ae.prototype,"ySubscriptXSize",2),le([y("uint16")],ae.prototype,"ySubscriptYSize",2),le([y("uint16")],ae.prototype,"ySubscriptXOffset",2),le([y("uint16")],ae.prototype,"ySubscriptYOffset",2),le([y("uint16")],ae.prototype,"ySuperscriptXSize",2),le([y("uint16")],ae.prototype,"ySuperscriptYSize",2),le([y("uint16")],ae.prototype,"ySuperscriptXOffset",2),le([y("uint16")],ae.prototype,"ySuperscriptYOffset",2),le([y("uint16")],ae.prototype,"yStrikeoutSize",2),le([y("uint16")],ae.prototype,"yStrikeoutPosition",2),le([y("uint16")],ae.prototype,"sFamilyClass",2),le([y({type:"uint8"})],ae.prototype,"bFamilyType",2),le([y({type:"uint8"})],ae.prototype,"bSerifStyle",2),le([y({type:"uint8"})],ae.prototype,"bWeight",2),le([y({type:"uint8"})],ae.prototype,"bProportion",2),le([y({type:"uint8"})],ae.prototype,"bContrast",2),le([y({type:"uint8"})],ae.prototype,"bStrokeVariation",2),le([y({type:"uint8"})],ae.prototype,"bArmStyle",2),le([y({type:"uint8"})],ae.prototype,"bLetterform",2),le([y({type:"uint8"})],ae.prototype,"bMidline",2),le([y({type:"uint8"})],ae.prototype,"bXHeight",2),le([y({type:"uint8",size:16})],ae.prototype,"ulUnicodeRange",2),le([y({type:"char",size:4})],ae.prototype,"achVendID",2),le([y("uint16")],ae.prototype,"fsSelection",2),le([y("uint16")],ae.prototype,"usFirstCharIndex",2),le([y("uint16")],ae.prototype,"usLastCharIndex",2),le([y("int16")],ae.prototype,"sTypoAscender",2),le([y("int16")],ae.prototype,"sTypoDescender",2),le([y("int16")],ae.prototype,"sTypoLineGap",2),le([y("uint16")],ae.prototype,"usWinAscent",2),le([y("uint16")],ae.prototype,"usWinDescent",2),le([y({offset:72,type:"uint8",size:8})],ae.prototype,"ulCodePageRange",2),le([y({offset:72,type:"int16"})],ae.prototype,"sxHeight",2),le([y("int16")],ae.prototype,"sCapHeight",2),le([y("uint16")],ae.prototype,"usDefaultChar",2),le([y("uint16")],ae.prototype,"usBreakChar",2),le([y("uint16")],ae.prototype,"usMaxContext",2),ae=le([Ye("OS/2","os2")],ae);var rI=Object.defineProperty,sI=Object.getOwnPropertyDescriptor,Nt=(r,A,e,t)=>{for(var i=t>1?void 0:t?sI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&rI(A,e,i),i};let Qt=class extends $e{constructor(r=new ArrayBuffer(32),A,e){super(r,A,e)}};Nt([y("fixed")],Qt.prototype,"format",2),Nt([y("fixed")],Qt.prototype,"italicAngle",2),Nt([y("int16")],Qt.prototype,"underlinePosition",2),Nt([y("int16")],Qt.prototype,"underlineThickness",2),Nt([y("uint32")],Qt.prototype,"isFixedPitch",2),Nt([y("uint32")],Qt.prototype,"minMemType42",2),Nt([y("uint32")],Qt.prototype,"maxMemType42",2),Nt([y("uint32")],Qt.prototype,"minMemType1",2),Nt([y("uint32")],Qt.prototype,"maxMemType1",2),Qt=Nt([Ye("post")],Qt);var nI=Object.defineProperty,oI=Object.getOwnPropertyDescriptor,ot=(r,A,e,t)=>{for(var i=t>1?void 0:t?oI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&nI(A,e,i),i};let ze=class extends $e{constructor(r=new ArrayBuffer(36),A){super(r,A,Math.min(36,r.byteLength-(A??0)))}};ot([y("fixed")],ze.prototype,"version",2),ot([y("int16")],ze.prototype,"vertTypoAscender",2),ot([y("int16")],ze.prototype,"vertTypoDescender",2),ot([y("int16")],ze.prototype,"vertTypoLineGap",2),ot([y("int16")],ze.prototype,"advanceHeightMax",2),ot([y("int16")],ze.prototype,"minTopSideBearing",2),ot([y("int16")],ze.prototype,"minBottomSideBearing",2),ot([y("int16")],ze.prototype,"yMaxExtent",2),ot([y("int16")],ze.prototype,"caretSlopeRise",2),ot([y("int16")],ze.prototype,"caretSlopeRun",2),ot([y("int16")],ze.prototype,"caretOffset",2),ot([y({type:"int16",size:4})],ze.prototype,"reserved",2),ot([y("int16")],ze.prototype,"metricDataFormat",2),ot([y("int16")],ze.prototype,"numOfLongVerMetrics",2),ze=ot([Ye("vhea")],ze);var aI=Object.getOwnPropertyDescriptor,lI=(r,A,e,t)=>{for(var i=t>1?void 0:t?aI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Kr=class extends $e{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new Kr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceHeight),t.view.writeInt16(i.topSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){var s;const A=this._sfnt.maxp.numGlyphs,e=((s=this._sfnt.vhea)==null?void 0:s.numOfLongVerMetrics)??0,t=this.view;t.seek(0);let i=0;return Array.from({length:A}).map((n,o)=>(o<e&&(i=t.readUint16()),{advanceHeight:i,topSideBearing:t.readUint8()}))}};Kr=lI([Ye("vmtx")],Kr);var cI=Object.defineProperty,Zi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&cI(A,e,i),i};class yt extends Pr{constructor(){super(...arguments);u(this,"format","TrueType");u(this,"mimeType","font/ttf");u(this,"_sfnt")}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(ZA(e).getUint32(0))}static checksum(e){const t=ZA(e);let i=t.byteLength;for(;i%4;)i++;let s=0;for(let n=0,o=i/4;n<o;n+=4)n*4<i-4&&(s+=t.getUint32(n*4,!1));return s&4294967295}static from(e){const t=f=>f+3&-4,i=e.tableViews.size,s=Array.from(e.tableViews.values()).reduce((f,I)=>f+t(I.byteLength),0),n=new this(new ArrayBuffer(12+i*16+s));n.scalerType=65536,n.numTables=i;const o=Math.log(2);n.searchRange=Math.floor(Math.log(i)/o)*16,n.entrySelector=Math.floor(n.searchRange/o),n.rangeShift=i*16-n.searchRange;let a=12+i*16,l=0;const c=n.getDirectories();e.tableViews.forEach((f,I)=>{const d=c[l++];d.tag=I,d.checkSum=this.checksum(f),d.offset=a,d.length=f.byteLength,n.view.writeBytes(f,a),a+=t(d.length)});const h=n.createSFNT().head;return h.checkSumAdjustment=0,h.checkSumAdjustment=2981146554-this.checksum(n.view),n}getDirectories(){let e=this.view.byteOffset+12;return Array.from({length:this.numTables},()=>{const t=new $A(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new xA(this.getDirectories().reduce((e,t)=>(e[t.tag]=new DataView(this.view.buffer,this.view.byteOffset+t.offset,t.length),e),{}))}}u(yt,"signature",new Set([65536,1953658213,1954115633])),Zi([y("uint32")],yt.prototype,"scalerType"),Zi([y("uint16")],yt.prototype,"numTables"),Zi([y("uint16")],yt.prototype,"searchRange"),Zi([y("uint16")],yt.prototype,"entrySelector"),Zi([y("uint16")],yt.prototype,"rangeShift");class Yr extends yt{constructor(){super(...arguments);u(this,"format","OpenType");u(this,"mimeType","font/otf")}static from(e){return super.from(e)}}u(Yr,"signature",new Set([1330926671]));var hI=Object.defineProperty,$i=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&hI(A,e,i),i};class kA extends It{constructor(A,e){super(A,e,20)}}$i([y({type:"char",size:4})],kA.prototype,"tag"),$i([y("uint32")],kA.prototype,"offset"),$i([y("uint32")],kA.prototype,"compLength"),$i([y("uint32")],kA.prototype,"origLength"),$i([y("uint32")],kA.prototype,"origChecksum");var gI=Object.defineProperty,pt=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&gI(A,e,i),i};const gt=(BA=class extends Pr{constructor(){super(...arguments);u(this,"format","WOFF");u(this,"mimeType","font/woff");u(this,"_sfnt")}get subfontFormat(){return yt.is(this.flavor)?"TrueType":Yr.is(this.flavor)?"OpenType":"Open"}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(ZA(e).getUint32(0))}static checkSum(e){const t=ZA(e),i=t.byteLength,s=Math.floor(i/4);let n=0,o=0;for(;o<s;)n+=t.getUint32(4*o++,!1);let a=i-s*4;if(a){let l=s*4;for(;a>0;)n+=t.getUint8(l)<<a*8,l++,a--}return n%4294967296}static from(e,t=new ArrayBuffer(0)){const i=f=>f+3&-4,s=[];e.tableViews.forEach((f,I)=>{const d=ZA(td(new Uint8Array(f.buffer,f.byteOffset,f.byteLength)));s.push({tag:I,view:d.byteLength<f.byteLength?d:f,rawView:f})});const n=s.length,o=s.reduce((f,I)=>f+i(I.view.byteLength),0),a=new BA(new ArrayBuffer(44+20*n+o+t.byteLength));a.signature=2001684038,a.flavor=65536,a.length=a.view.byteLength,a.numTables=n,a.totalSFNTSize=12+16*n+s.reduce((f,I)=>f+i(I.rawView.byteLength),0);let l=44+n*20,c=0;const h=a.getDirectories();return s.forEach(f=>{const I=h[c++];I.tag=f.tag,I.offset=l,I.compLength=f.view.byteLength,I.origChecksum=BA.checkSum(f.rawView),I.origLength=f.rawView.byteLength,a.view.writeBytes(f.view,l),l+=i(I.compLength)}),a.view.writeBytes(t),a}getDirectories(){let e=44;return Array.from({length:this.numTables},()=>{const t=new kA(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new xA(this.getDirectories().reduce((e,t)=>{const i=t.tag,s=this.view.byteOffset+t.offset,n=t.compLength,o=t.origLength,a=s+n;return e[i]=n>=o?new DataView(this.view.buffer,s,n):new DataView(Ad(new Uint8Array(this.view.buffer.slice(s,a))).buffer),e},{}))}},u(BA,"signature",new Set([2001684038])),BA);pt([y("uint32")],gt.prototype,"signature"),pt([y("uint32")],gt.prototype,"flavor"),pt([y("uint32")],gt.prototype,"length"),pt([y("uint16")],gt.prototype,"numTables"),pt([y("uint16")],gt.prototype,"reserved"),pt([y("uint32")],gt.prototype,"totalSFNTSize"),pt([y("uint16")],gt.prototype,"majorVersion"),pt([y("uint16")],gt.prototype,"minorVersion"),pt([y("uint32")],gt.prototype,"metaOffset"),pt([y("uint32")],gt.prototype,"metaLength"),pt([y("uint32")],gt.prototype,"metaOrigLength"),pt([y("uint32")],gt.prototype,"privOffset"),pt([y("uint32")],gt.prototype,"privLength");let Vr=gt;function Ol(r,A=!0){if(yt.is(r))return new yt(r);if(Yr.is(r))return new Yr(r);if(Vr.is(r))return new Vr(r);if(A)throw new Error("Failed to parseFont")}function Hl(r,A=!0){const e=Ol(r,!1);if(e)return e;if(A)throw new Error("Failed to parseFont")}const os=class os{constructor(){u(this,"fallbackFont");u(this,"loading",new Map);u(this,"loaded",new Map);u(this,"familyToUrl",new Map)}setFallbackFont(A){this.fallbackFont=A}async loadFallbackFont(A,e={}){this.fallbackFont=await this.load(A,e)}_createRequest(A,e){const t=new AbortController;return{url:A,when:fetch(A,{...os.defaultRequestInit,...e,signal:t.signal}).then(i=>i.arrayBuffer()),cancel:()=>t.abort()}}injectFontFace(A,e){return document.fonts.add(new FontFace(A,e)),this}injectStyleTag(A,e){const t=document.createElement("style");return t.appendChild(document.createTextNode(`@font-face {
|
|
859
|
-
font-family: "${
|
|
858
|
+
}`})),Si([b()],h.ZoomBlurEffect.prototype,"center",2),Si([b({default:20})],h.ZoomBlurEffect.prototype,"innerRadius",2),Si([b({default:-1})],h.ZoomBlurEffect.prototype,"radius",2),Si([b({default:.1})],h.ZoomBlurEffect.prototype,"strength",2),h.ZoomBlurEffect=Si([st("ZoomBlurEffect")],h.ZoomBlurEffect);var mf=Object.defineProperty,ye=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&mf(t,e,i),i};class qt extends AA{constructor(t){super(),this.parent=t}_texture;_setProperties(t){return super.setProperties(t)}setProperties(t){return this._setProperties(lt(t)?void 0:CA(t))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"color":case"cropRect":case"stretchRect":case"dpi":case"rotateWithShape":case"tile":case"opacity":case"enabled":this.parent.requestRedraw();break;case"image":case"linearGradient":case"radialGradient":this._updateTexture();break}}async loadTexture(){return this.linearGradient||this.radialGradient?new gr(this.linearGradient??this.radialGradient,this.parent.size.width,this.parent.size.height):lt(this.image)?void 0:await Te.texture.load(this.image)}async _updateTexture(){this._texture=await this.loadTexture(),this.parent.requestRedraw()}canDraw(){return!!(this.enabled&&(this._texture||this.color))}_getDrawOptions(){let t=!1;const{width:e,height:A}=this.parent.size,i=new kt().scale(1/e,1/A);if(this.cropRect){const{left:s=0,top:n=0,right:o=0,bottom:a=0}=this.cropRect;i.scale(Math.abs(1-(s+o)),Math.abs(1-(n+a))).translate(s,n),t=!0}if(this.tile){const{translateX:s=0,translateY:n=0,scaleX:o=1,scaleY:a=1}=this.tile;i.translate(-s/e,-n/A).scale(1/o,1/a),t=!0}else if(this.stretchRect){const{left:s=0,top:n=0,right:o=0,bottom:a=0}=this.stretchRect;i.scale(Math.abs(1-(-s+-o)),Math.abs(1-(-n+-a))).translate(-s,-n),t=!0}return{disableWrapMode:t,uvTransform:i}}draw(){const t=this.parent.context,{uvTransform:e,disableWrapMode:A}=this._getDrawOptions();t.uvTransform=e,t.fillStyle=this._texture??this.color,t.fill({disableWrapMode:A})}}ye([b({default:!0})],qt.prototype,"enabled"),ye([b()],qt.prototype,"color"),ye([b()],qt.prototype,"image"),ye([b()],qt.prototype,"linearGradient"),ye([b()],qt.prototype,"radialGradient"),ye([b()],qt.prototype,"cropRect"),ye([b()],qt.prototype,"stretchRect"),ye([b()],qt.prototype,"dpi"),ye([b()],qt.prototype,"rotateWithShape"),ye([b()],qt.prototype,"tile"),ye([b()],qt.prototype,"opacity");var wf=Object.defineProperty,vf=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&wf(t,e,i),i};class $s extends qt{setProperties(t){return super._setProperties(lt(t)?void 0:ih(t))}}vf([b()],$s.prototype,"fillWithShape");var _f=Object.defineProperty,bf=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&_f(t,e,i),i};class tn extends qt{setProperties(t){return super._setProperties(lt(t)?void 0:rh(t))}}bf([b()],tn.prototype,"fillWithShape");var Df=Object.defineProperty,Cr=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Df(t,e,i),i};class JA extends qt{setProperties(t){return super._setProperties(lt(t)?void 0:sh(t))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"width":case"style":case"enabled":this.parent.requestRedraw();break}}canDraw(){return!!(this.enabled&&(this.width||this.color||super.canDraw()))}draw(){const t=this.parent.context,{uvTransform:e,disableWrapMode:A}=this._getDrawOptions();t.lineWidth=this.width||1,t.uvTransform=e,t.strokeStyle=this._texture??this.color,t.stroke({disableWrapMode:A})}}Cr([b({default:!0})],JA.prototype,"enabled"),Cr([b({default:0})],JA.prototype,"color"),Cr([b({default:0})],JA.prototype,"width"),Cr([b({default:"solid"})],JA.prototype,"style");var xf=Object.defineProperty,Mi=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&xf(t,e,i),i};class vA extends AA{constructor(t){super(),this.parent=t}setProperties(t){return super.setProperties(lt(t)?void 0:nh(t))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"color":case"blur":case"offsetX":case"offsetY":this.updateEffect();break}}updateEffect(){const t="__$shadow";let e=this.parent.getNode(t);this.blur||this.offsetX||this.offsetY?(e||(e=new h.DropShadowEffect({name:t}),this.parent.appendChild(e,"back")),e.setProperties(this.getProperties())):e&&this.parent.removeChild(e)}}Mi([b({default:!0})],vA.prototype,"enabled"),Mi([b({default:"#000000"})],vA.prototype,"color"),Mi([b({default:0})],vA.prototype,"blur"),Mi([b({default:0})],vA.prototype,"offsetY"),Mi([b({default:0})],vA.prototype,"offsetX");var Sf=Object.defineProperty,Ri=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Sf(t,e,i),i};class _A extends AA{constructor(t){super(),this.parent=t,this._updatePath2DSet()}_path2DSet=new sA;setProperties(t){return super.setProperties(lt(t)?void 0:ah(t))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"svg":case"paths":case"viewBox":case"enabled":this._updatePath2DSet(),this.parent.requestRedraw();break}}_updatePath2DSet(){let t;if(this.svg){const n=Hs(this.svg);this._path2DSet=Ks(n),t=this._path2DSet.viewBox}else this.paths?.forEach((n,o)=>{const{data:a,...l}=n,c=new Ut;c.style=l,c.addData(a),this._path2DSet.paths[o]=c});if(!t){const n=this._path2DSet.getBoundingBox();t=n?[n.x,n.y,n.width,n.height]:[0,0,1,1]}const[e,A,i,s]=t;this._path2DSet.paths.forEach(n=>{n.applyTransform(new Jt().translate(-e,-A).scale(1/i,1/s))})}draw(){if(this.enabled&&this._path2DSet.paths.length){const t=this.parent.context,{width:e,height:A}=this.parent.size;this._path2DSet.paths.forEach(i=>{t.addPath(i.clone().applyTransform(new Jt().scale(e,A)))})}else this.drawRect()}drawRect(){const t=this.parent.context,{width:e,height:A}=this.parent.size,{borderRadius:i}=this.parent.style;e&&A&&(i?t.roundRect(0,0,e,A,i):t.rect(0,0,e,A))}}Ri([b({default:!0})],_A.prototype,"enabled"),Ri([b()],_A.prototype,"preset"),Ri([b()],_A.prototype,"svg"),Ri([b()],_A.prototype,"viewBox"),Ri([b({default:()=>[]})],_A.prototype,"paths");class Pi extends Ke{constructor(t){super(),this.setProperties(t)}}const KA=fo();delete KA.top,delete KA.left,delete KA.width,delete KA.height;for(const r in KA)ir(Pi,r,{default:KA[r]});var Xt=Uint8Array,ue=Uint16Array,en=Int32Array,Qr=new Xt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),yr=new Xt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),An=new Xt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),al=function(r,t){for(var e=new ue(31),A=0;A<31;++A)e[A]=t+=1<<r[A-1];for(var i=new en(e[30]),A=1;A<30;++A)for(var s=e[A];s<e[A+1];++s)i[s]=s-e[A]<<5|A;return{b:e,r:i}},ll=al(Qr,2),cl=ll.b,rn=ll.r;cl[28]=258,rn[258]=28;for(var hl=al(yr,0),Mf=hl.b,gl=hl.r,sn=new ue(32768),Bt=0;Bt<32768;++Bt){var aA=(Bt&43690)>>1|(Bt&21845)<<1;aA=(aA&52428)>>2|(aA&13107)<<2,aA=(aA&61680)>>4|(aA&3855)<<4,sn[Bt]=((aA&65280)>>8|(aA&255)<<8)>>1}for(var Pe=function(r,t,e){for(var A=r.length,i=0,s=new ue(t);i<A;++i)r[i]&&++s[r[i]-1];var n=new ue(t);for(i=1;i<t;++i)n[i]=n[i-1]+s[i-1]<<1;var o;if(e){o=new ue(1<<t);var a=15-t;for(i=0;i<A;++i)if(r[i])for(var l=i<<4|r[i],c=t-r[i],g=n[r[i]-1]++<<c,u=g|(1<<c)-1;g<=u;++g)o[sn[g]>>a]=l}else for(o=new ue(A),i=0;i<A;++i)r[i]&&(o[i]=sn[n[r[i]-1]++]>>15-r[i]);return o},lA=new Xt(288),Bt=0;Bt<144;++Bt)lA[Bt]=8;for(var Bt=144;Bt<256;++Bt)lA[Bt]=9;for(var Bt=256;Bt<280;++Bt)lA[Bt]=7;for(var Bt=280;Bt<288;++Bt)lA[Bt]=8;for(var ki=new Xt(32),Bt=0;Bt<32;++Bt)ki[Bt]=5;var Rf=Pe(lA,9,0),Pf=Pe(lA,9,1),kf=Pe(ki,5,0),Uf=Pe(ki,5,1),nn=function(r){for(var t=r[0],e=1;e<r.length;++e)r[e]>t&&(t=r[e]);return t},me=function(r,t,e){var A=t/8|0;return(r[A]|r[A+1]<<8)>>(t&7)&e},on=function(r,t){var e=t/8|0;return(r[e]|r[e+1]<<8|r[e+2]<<16)>>(t&7)},an=function(r){return(r+7)/8|0},ul=function(r,t,e){return(e==null||e>r.length)&&(e=r.length),new Xt(r.subarray(t,e))},Nf=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],we=function(r,t,e){var A=new Error(t||Nf[r]);if(A.code=r,Error.captureStackTrace&&Error.captureStackTrace(A,we),!e)throw A;return A},Ff=function(r,t,e,A){var i=r.length,s=0;if(!i||t.f&&!t.l)return e||new Xt(0);var n=!e,o=n||t.i!=2,a=t.i;n&&(e=new Xt(i*3));var l=function(Ot){var ht=e.length;if(Ot>ht){var mt=new Xt(Math.max(ht*2,Ot));mt.set(e),e=mt}},c=t.f||0,g=t.p||0,u=t.b||0,d=t.l,f=t.d,B=t.m,p=t.n,S=i*8;do{if(!d){c=me(r,g,1);var R=me(r,g+1,3);if(g+=3,R)if(R==1)d=Pf,f=Uf,B=9,p=5;else if(R==2){var m=me(r,g,31)+257,x=me(r,g+10,15)+4,M=m+me(r,g+5,31)+1;g+=14;for(var V=new Xt(M),et=new Xt(19),z=0;z<x;++z)et[An[z]]=me(r,g+z*3,7);g+=x*3;for(var J=nn(et),$=(1<<J)-1,K=Pe(et,J,1),z=0;z<M;){var L=K[me(r,g,$)];g+=L&15;var w=L>>4;if(w<16)V[z++]=w;else{var it=0,G=0;for(w==16?(G=3+me(r,g,3),g+=2,it=V[z-1]):w==17?(G=3+me(r,g,7),g+=3):w==18&&(G=11+me(r,g,127),g+=7);G--;)V[z++]=it}}var W=V.subarray(0,m),At=V.subarray(m);B=nn(W),p=nn(At),d=Pe(W,B,1),f=Pe(At,p,1)}else we(1);else{var w=an(g)+4,D=r[w-4]|r[w-3]<<8,Q=w+D;if(Q>i){a&&we(0);break}o&&l(u+D),e.set(r.subarray(w,Q),u),t.b=u+=D,t.p=g=Q*8,t.f=c;continue}if(g>S){a&&we(0);break}}o&&l(u+131072);for(var T=(1<<B)-1,tt=(1<<p)-1,U=g;;U=g){var it=d[on(r,g)&T],k=it>>4;if(g+=it&15,g>S){a&&we(0);break}if(it||we(2),k<256)e[u++]=k;else if(k==256){U=g,d=null;break}else{var q=k-254;if(k>264){var z=k-257,Z=Qr[z];q=me(r,g,(1<<Z)-1)+cl[z],g+=Z}var nt=f[on(r,g)&tt],X=nt>>4;nt||we(3),g+=nt&15;var At=Mf[X];if(X>3){var Z=yr[X];At+=on(r,g)&(1<<Z)-1,g+=Z}if(g>S){a&&we(0);break}o&&l(u+131072);var pt=u+q;if(u<At){var oe=s-At,ae=Math.min(At,pt);for(oe+u<0&&we(3);u<ae;++u)e[u]=A[oe+u]}for(;u<pt;++u)e[u]=e[u-At]}}t.l=d,t.p=U,t.b=u,t.f=c,d&&(c=1,t.m=B,t.d=f,t.n=p)}while(!c);return u!=e.length&&n?ul(e,0,u):e.subarray(0,u)},Xe=function(r,t,e){e<<=t&7;var A=t/8|0;r[A]|=e,r[A+1]|=e>>8},Ui=function(r,t,e){e<<=t&7;var A=t/8|0;r[A]|=e,r[A+1]|=e>>8,r[A+2]|=e>>16},ln=function(r,t){for(var e=[],A=0;A<r.length;++A)r[A]&&e.push({s:A,f:r[A]});var i=e.length,s=e.slice();if(!i)return{t:pl,l:0};if(i==1){var n=new Xt(e[0].s+1);return n[e[0].s]=1,{t:n,l:1}}e.sort(function(Q,m){return Q.f-m.f}),e.push({s:-1,f:25001});var o=e[0],a=e[1],l=0,c=1,g=2;for(e[0]={s:-1,f:o.f+a.f,l:o,r:a};c!=i-1;)o=e[e[l].f<e[g].f?l++:g++],a=e[l!=c&&e[l].f<e[g].f?l++:g++],e[c++]={s:-1,f:o.f+a.f,l:o,r:a};for(var u=s[0].s,A=1;A<i;++A)s[A].s>u&&(u=s[A].s);var d=new ue(u+1),f=cn(e[c-1],d,0);if(f>t){var A=0,B=0,p=f-t,S=1<<p;for(s.sort(function(m,x){return d[x.s]-d[m.s]||m.f-x.f});A<i;++A){var R=s[A].s;if(d[R]>t)B+=S-(1<<f-d[R]),d[R]=t;else break}for(B>>=p;B>0;){var w=s[A].s;d[w]<t?B-=1<<t-d[w]++-1:++A}for(;A>=0&&B;--A){var D=s[A].s;d[D]==t&&(--d[D],++B)}f=t}return{t:new Xt(d),l:f}},cn=function(r,t,e){return r.s==-1?Math.max(cn(r.l,t,e+1),cn(r.r,t,e+1)):t[r.s]=e},fl=function(r){for(var t=r.length;t&&!r[--t];);for(var e=new ue(++t),A=0,i=r[0],s=1,n=function(a){e[A++]=a},o=1;o<=t;++o)if(r[o]==i&&o!=t)++s;else{if(!i&&s>2){for(;s>138;s-=138)n(32754);s>2&&(n(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(n(i),--s;s>6;s-=6)n(8304);s>2&&(n(s-3<<5|8208),s=0)}for(;s--;)n(i);s=1,i=r[o]}return{c:e.subarray(0,A),n:t}},Ni=function(r,t){for(var e=0,A=0;A<t.length;++A)e+=r[A]*t[A];return e},dl=function(r,t,e){var A=e.length,i=an(t+2);r[i]=A&255,r[i+1]=A>>8,r[i+2]=r[i]^255,r[i+3]=r[i+1]^255;for(var s=0;s<A;++s)r[i+s+4]=e[s];return(i+4+A)*8},Il=function(r,t,e,A,i,s,n,o,a,l,c){Xe(t,c++,e),++i[256];for(var g=ln(i,15),u=g.t,d=g.l,f=ln(s,15),B=f.t,p=f.l,S=fl(u),R=S.c,w=S.n,D=fl(B),Q=D.c,m=D.n,x=new ue(19),M=0;M<R.length;++M)++x[R[M]&31];for(var M=0;M<Q.length;++M)++x[Q[M]&31];for(var V=ln(x,7),et=V.t,z=V.l,J=19;J>4&&!et[An[J-1]];--J);var $=l+5<<3,K=Ni(i,lA)+Ni(s,ki)+n,L=Ni(i,u)+Ni(s,B)+n+14+3*J+Ni(x,et)+2*x[16]+3*x[17]+7*x[18];if(a>=0&&$<=K&&$<=L)return dl(t,c,r.subarray(a,a+l));var it,G,W,At;if(Xe(t,c,1+(L<K)),c+=2,L<K){it=Pe(u,d,0),G=u,W=Pe(B,p,0),At=B;var T=Pe(et,z,0);Xe(t,c,w-257),Xe(t,c+5,m-1),Xe(t,c+10,J-4),c+=14;for(var M=0;M<J;++M)Xe(t,c+3*M,et[An[M]]);c+=3*J;for(var tt=[R,Q],U=0;U<2;++U)for(var k=tt[U],M=0;M<k.length;++M){var q=k[M]&31;Xe(t,c,T[q]),c+=et[q],q>15&&(Xe(t,c,k[M]>>5&127),c+=k[M]>>12)}}else it=Rf,G=lA,W=kf,At=ki;for(var M=0;M<o;++M){var Z=A[M];if(Z>255){var q=Z>>18&31;Ui(t,c,it[q+257]),c+=G[q+257],q>7&&(Xe(t,c,Z>>23&31),c+=Qr[q]);var nt=Z&31;Ui(t,c,W[nt]),c+=At[nt],nt>3&&(Ui(t,c,Z>>5&8191),c+=yr[nt])}else Ui(t,c,it[Z]),c+=G[Z]}return Ui(t,c,it[256]),c+G[256]},Tf=new en([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),pl=new Xt(0),Lf=function(r,t,e,A,i,s){var n=s.z||r.length,o=new Xt(A+n+5*(1+Math.ceil(n/7e3))+i),a=o.subarray(A,o.length-i),l=s.l,c=(s.r||0)&7;if(t){c&&(a[0]=s.r>>3);for(var g=Tf[t-1],u=g>>13,d=g&8191,f=(1<<e)-1,B=s.p||new ue(32768),p=s.h||new ue(f+1),S=Math.ceil(e/3),R=2*S,w=function(Ht){return(r[Ht]^r[Ht+1]<<S^r[Ht+2]<<R)&f},D=new en(25e3),Q=new ue(288),m=new ue(32),x=0,M=0,V=s.i||0,et=0,z=s.w||0,J=0;V+2<n;++V){var $=w(V),K=V&32767,L=p[$];if(B[K]=L,p[$]=K,z<=V){var it=n-V;if((x>7e3||et>24576)&&(it>423||!l)){c=Il(r,a,0,D,Q,m,M,et,J,V-J,c),et=x=M=0,J=V;for(var G=0;G<286;++G)Q[G]=0;for(var G=0;G<30;++G)m[G]=0}var W=2,At=0,T=d,tt=K-L&32767;if(it>2&&$==w(V-tt))for(var U=Math.min(u,it)-1,k=Math.min(32767,V),q=Math.min(258,it);tt<=k&&--T&&K!=L;){if(r[V+W]==r[V+W-tt]){for(var Z=0;Z<q&&r[V+Z]==r[V+Z-tt];++Z);if(Z>W){if(W=Z,At=tt,Z>U)break;for(var nt=Math.min(tt,Z-2),X=0,G=0;G<nt;++G){var pt=V-tt+G&32767,oe=B[pt],ae=pt-oe&32767;ae>X&&(X=ae,L=pt)}}}K=L,L=B[K],tt+=K-L&32767}if(At){D[et++]=268435456|rn[W]<<18|gl[At];var Ot=rn[W]&31,ht=gl[At]&31;M+=Qr[Ot]+yr[ht],++Q[257+Ot],++m[ht],z=V+W,++x}else D[et++]=r[V],++Q[r[V]]}}for(V=Math.max(V,z);V<n;++V)D[et++]=r[V],++Q[r[V]];c=Il(r,a,l,D,Q,m,M,et,J,V-J,c),l||(s.r=c&7|a[c/8|0]<<3,c-=7,s.h=p,s.p=B,s.i=V,s.w=z)}else{for(var V=s.w||0;V<n+l;V+=65535){var mt=V+65535;mt>=n&&(a[c/8|0]=l,mt=n),c=dl(a,c+1,r.subarray(V,mt))}s.i=n}return ul(o,0,A+an(c)+i)},El=function(){var r=1,t=0;return{p:function(e){for(var A=r,i=t,s=e.length|0,n=0;n!=s;){for(var o=Math.min(n+2655,s);n<o;++n)i+=A+=e[n];A=(A&65535)+15*(A>>16),i=(i&65535)+15*(i>>16)}r=A,t=i},d:function(){return r%=65521,t%=65521,(r&255)<<24|(r&65280)<<8|(t&255)<<8|t>>8}}},Gf=function(r,t,e,A,i){if(!i&&(i={l:1},t.dictionary)){var s=t.dictionary.subarray(-32768),n=new Xt(s.length+r.length);n.set(s),n.set(r,s.length),r=n,i.w=s.length}return Lf(r,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+t.mem,e,A,i)},Bl=function(r,t,e){for(;e;++t)r[t]=e,e>>>=8},Of=function(r,t){var e=t.level,A=e==0?0:e<6?1:e==9?3:2;if(r[0]=120,r[1]=A<<6|(t.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,t.dictionary){var i=El();i.p(t.dictionary),Bl(r,2,i.d())}},Hf=function(r,t){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&we(6,"invalid zlib data"),(r[1]>>5&1)==1&&we(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function Jf(r,t){t||(t={});var e=El();e.p(r);var A=Gf(r,t,t.dictionary?6:2,4);return Of(A,t),Bl(A,A.length-4,e.d()),A}function Kf(r,t){return Ff(r.subarray(Hf(r),-4),{i:2},t,t)}var Yf=typeof TextDecoder<"u"&&new TextDecoder,Vf=0;try{Yf.decode(pl,{stream:!0}),Vf=1}catch{}const zf="modern-font";function Fi(r,t){if(!r)throw new Error(`[${zf}] ${t}`)}function Wf(r){if("buffer"in r){const t=r.buffer;return r.byteOffset>0||r.byteLength<r.buffer.byteLength?t.slice(r.byteOffset,r.byteOffset+r.byteLength):t}else return r}function YA(r){return"buffer"in r?new DataView(r.buffer,r.byteOffset,r.byteLength):new DataView(r)}function qf(r){let t="";for(let e=0,A=r.length,i;e<A;e++)i=r.charCodeAt(e),i!==0&&(t+=String.fromCharCode(i));return t}function mr(r){r=qf(r);const t=[];for(let e=0,A=r.length,i;e<A;e++)i=r.charCodeAt(e),t.push(i>>8),t.push(i&255);return t}function Xf(r){let t="";for(let e=0,A=r.length;e<A;e++)r[e]<127?t+=String.fromCharCode(r[e]):t+=`%${(256+r[e]).toString(16).slice(1)}`;return unescape(t)}function jf(r){let t="";for(let e=0,A=r.length;e<A;e+=2)t+=String.fromCharCode((r[e]<<8)+r[e+1]);return t}var Zf=Object.defineProperty,jt=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Zf(t,e,i),i};const Ti={int8:1,int16:2,int32:4,uint8:1,uint16:2,uint32:4,float32:4,float64:8,fixed:4,longDateTime:8,char:1};function Zt(){return function(r,t){Object.defineProperty(r.constructor.prototype,t,{get(){if(typeof t=="string"){if(t.startsWith("read"))return(...e)=>this.read(t.substring(4).toLowerCase(),...e);if(t.startsWith("write"))return(...e)=>this.write(t.substring(5).toLowerCase(),...e)}},configurable:!0,enumerable:!0})}}class Nt extends DataView{constructor(t,e,A,i){super(Wf(t),e,A),this.littleEndian=i}cursor=0;readColumn(t){if(t.size){const e=Array.from({length:t.size},(A,i)=>this.read(t.type,t.offset+i));switch(t.type){case"char":return e.join("");default:return e}}else return this.read(t.type,t.offset)}writeColumn(t,e){t.size?Array.from({length:t.size},(A,i)=>{this.write(t.type,e[i],t.offset+i)}):this.write(t.type,e,t.offset)}read(t,e=this.cursor,A=this.littleEndian){switch(t){case"char":return this.readChar(e);case"fixed":return this.readFixed(e,A);case"longDateTime":return this.readLongDateTime(e,A)}const i=`get${t.replace(/^\S/,a=>a.toUpperCase())}`,s=this,o=s[i]?.bind(s)?.(e,A);return this.cursor+=Ti[t],o}readUint24(t=this.cursor){const[e,A,i]=this.readBytes(t,3);return(e<<16)+(A<<8)+i}readBytes(t,e){e==null&&(e=t,t=this.cursor);const A=[];for(let i=0;i<e;++i)A.push(this.getUint8(t+i));return this.cursor=t+e,A}readString(t,e){const A=this.readBytes(t,e);let i="";for(let s=0,n=A.length;s<n;s++)i+=String.fromCharCode(A[s]);return i}readFixed(t,e){const A=this.readInt32(t,e)/65536;return Math.ceil(A*1e5)/1e5}readLongDateTime(t=this.cursor,e){const A=this.readUint32(t+4,e),i=new Date;return i.setTime(A*1e3+-20775456e5),i}readChar(t){return this.readString(t,1)}write(t,e,A=this.cursor,i=this.littleEndian){switch(t){case"char":return this.writeChar(e,A);case"fixed":return this.writeFixed(e,A);case"longDateTime":return this.writeLongDateTime(e,A)}const s=`set${t.replace(/^\S/,l=>l.toUpperCase())}`,n=this,a=n[s]?.bind(n)?.(A,e,i);return this.cursor+=Ti[t.toLowerCase()],a}writeString(t="",e=this.cursor){const A=t.replace(/[^\x00-\xFF]/g,"11").length;this.seek(e);for(let i=0,s=t.length,n;i<s;++i)n=t.charCodeAt(i)||0,n>127?this.writeUint16(n):this.writeUint8(n);return this.cursor+=A,this}writeChar(t,e){return this.writeString(t,e)}writeFixed(t,e){return this.writeInt32(Math.round(t*65536),e),this}writeLongDateTime(t,e=this.cursor){typeof t>"u"?t=-20775456e5:typeof t.getTime=="function"?t=t.getTime():/^\d+$/.test(t)?t=+t:t=Date.parse(t);const i=Math.round((t- -20775456e5)/1e3);return this.writeUint32(0,e),this.writeUint32(i,e+4),this}writeBytes(t,e=this.cursor){let A;if(Array.isArray(t)){A=t.length;for(let i=0;i<A;++i)this.setUint8(e+i,t[i])}else{const i=YA(t);A=i.byteLength;for(let s=0;s<A;++s)this.setUint8(e+s,i.getUint8(s))}return this.cursor=e+A,this}seek(t){return this.cursor=t,this}}jt([Zt()],Nt.prototype,"readInt8"),jt([Zt()],Nt.prototype,"readInt16"),jt([Zt()],Nt.prototype,"readInt32"),jt([Zt()],Nt.prototype,"readUint8"),jt([Zt()],Nt.prototype,"readUint16"),jt([Zt()],Nt.prototype,"readUint32"),jt([Zt()],Nt.prototype,"readFloat32"),jt([Zt()],Nt.prototype,"readFloat64"),jt([Zt()],Nt.prototype,"writeInt8"),jt([Zt()],Nt.prototype,"writeInt16"),jt([Zt()],Nt.prototype,"writeInt32"),jt([Zt()],Nt.prototype,"writeUint8"),jt([Zt()],Nt.prototype,"writeUint16"),jt([Zt()],Nt.prototype,"writeUint32"),jt([Zt()],Nt.prototype,"writeFloat32"),jt([Zt()],Nt.prototype,"writeFloat64");const Cl=new WeakMap;function y(r){const t=typeof r=="object"?r:{type:r},{size:e=1,type:A}=t;return(i,s)=>{if(typeof s!="string")return;let n=Cl.get(i);n||(n={columns:[],byteLength:0},Cl.set(i,n));const o={...t,name:s,byteLength:e*Ti[A],offset:t.offset??n.columns.reduce((a,l)=>a+l.byteLength,0)};n.columns.push(o),n.byteLength=n.columns.reduce((a,l)=>a+Ti[l.type]*(l.size??1),0),Object.defineProperty(i.constructor.prototype,s,{get(){return this.view.readColumn(o)},set(a){this.view.writeColumn(o,a)},configurable:!0,enumerable:!0})}}class fe{view;constructor(t,e,A,i){this.view=new Nt(t,e,A,i)}}class wr extends fe{get buffer(){return this.view.buffer}toBuffer(){return this.view.buffer.slice(this.view.byteOffset,this.view.byteOffset+this.view.byteLength)}toBlob(){return new Blob([new Uint8Array(this.view.buffer,this.view.byteOffset,this.view.byteLength)],{type:this.mimeType})}toFontFace(t){return new FontFace(t,this.view.buffer)}}var $f=Object.defineProperty,ie=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&$f(t,e,i),i};const re=class vc extends wr{format="EmbeddedOpenType";mimeType="application/vnd.ms-fontobject";static from(t){const e=t.sfnt,i=e.name.names,s=mr(i.fontFamily||""),n=s.length,o=mr(i.fontStyle||""),a=o.length,l=mr(i.version||""),c=l.length,g=mr(i.fullName||""),u=g.length,d=86+n+4+a+4+c+4+u+2+t.view.byteLength,f=new vc(new ArrayBuffer(d),0,d,!0);f.EOTSize=f.view.byteLength,f.FontDataSize=t.view.byteLength,f.Version=131073,f.Flags=0,f.Charset=1,f.MagicNumber=20556,f.Padding1=0,f.CheckSumAdjustment=e.head.checkSumAdjustment;const B=e.os2;return B&&(f.FontPANOSE=B.fontPANOSE,f.Italic=B.fsSelection,f.Weight=B.usWeightClass,f.fsType=B.fsType,f.UnicodeRange=B.ulUnicodeRange,f.CodePageRange=B.ulCodePageRange),f.view.writeUint16(n),f.view.writeBytes(s),f.view.writeUint16(0),f.view.writeUint16(a),f.view.writeBytes(o),f.view.writeUint16(0),f.view.writeUint16(c),f.view.writeBytes(l),f.view.writeUint16(0),f.view.writeUint16(u),f.view.writeBytes(g),f.view.writeUint16(0),f.view.writeUint16(0),f.view.writeBytes(t.view),f}};ie([y("uint32")],re.prototype,"EOTSize"),ie([y("uint32")],re.prototype,"FontDataSize"),ie([y("uint32")],re.prototype,"Version"),ie([y("uint32")],re.prototype,"Flags"),ie([y({type:"uint8",size:10})],re.prototype,"FontPANOSE"),ie([y("uint8")],re.prototype,"Charset"),ie([y("uint8")],re.prototype,"Italic"),ie([y("uint32")],re.prototype,"Weight"),ie([y("uint16")],re.prototype,"fsType"),ie([y("uint16")],re.prototype,"MagicNumber"),ie([y({type:"uint8",size:16})],re.prototype,"UnicodeRange"),ie([y({type:"uint8",size:8})],re.prototype,"CodePageRange"),ie([y("uint32")],re.prototype,"CheckSumAdjustment"),ie([y({type:"uint8",size:16})],re.prototype,"Reserved"),ie([y("uint16")],re.prototype,"Padding1");var td=Object.defineProperty,vr=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&td(t,e,i),i};class VA extends fe{constructor(t,e){super(t,e,16)}}vr([y({type:"char",size:4})],VA.prototype,"tag"),vr([y("uint32")],VA.prototype,"checkSum"),vr([y("uint32")],VA.prototype,"offset"),vr([y("uint32")],VA.prototype,"length");const hn=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],ed=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];class gn{index;name;isComposite=!1;components=[];pathCommands=[];constructor(t){const e={...t};if(this.index=e.index??0,e.name===".notdef"?e.unicode=void 0:e.name===".null"&&(e.unicode=0),e.unicode===0&&e.name!==".null")throw new Error('The unicode value "0" is reserved for the glyph name ".null" and cannot be used by any other glyph.');this.name=e.name??null,e.unicode&&(this.unicode=e.unicode),e.unicodes?this.unicodes=e.unicodes:e.unicode&&(this.unicodes=[e.unicode])}getPathCommands(t=0,e=0,A=72,i={},s){const n=1/(s?.unitsPerEm??1e3)*A,{xScale:o=n,yScale:a=n}=i,l=this.pathCommands,c=[];for(let g=0,u=l.length;g<u;g+=1){const d=l[g];d.type==="M"?c.push({type:"M",x:t+d.x*o,y:e+-d.y*a}):d.type==="L"?c.push({type:"L",x:t+d.x*o,y:e+-d.y*a}):d.type==="Q"?c.push({type:"Q",x1:t+d.x1*o,y1:e+-d.y1*a,x:t+d.x*o,y:e+-d.y*a}):d.type==="C"?c.push({type:"C",x1:t+d.x1*o,y1:e+-d.y1*a,x2:t+d.x2*o,y2:e+-d.y2*a,x:t+d.x*o,y:e+-d.y*a}):d.type==="Z"&&c.push({type:"Z"})}return c}}class Ad extends gn{parse(t,e,A){const i=this,{nominalWidthX:s,defaultWidthX:n,gsubrsBias:o,subrsBias:a}=t,l=t.topDict.paintType,c=this.index;let g,u,d,f;const B=[],p=[];let S=0,R=!1,w=!1,D=n,Q=0,m=0;function x(K,L){B.push({type:"L",x:K,y:L})}function M(K,L,it,G,W,At){B.push({type:"C",x1:K,y1:L,x2:it,y2:G,x:W,y:At})}function V(K,L){w&&l!==2&&et(),w=!0,B.push({type:"M",x:K,y:L})}function et(){B.push({type:"Z"})}function z(K){B.push(...K)}function J(){p.length%2!==0&&!R&&(D=p.shift()+s),S+=p.length>>1,p.length=0,R=!0}function $(K){let L,it,G,W,At,T,tt,U,k,q,Z,nt,X=0;for(;X<K.length;){let pt=K[X++];switch(pt){case 1:J();break;case 3:J();break;case 4:p.length>1&&!R&&(D=p.shift()+s,R=!0),m+=p.pop(),V(Q,m);break;case 5:for(;p.length>0;)Q+=p.shift(),m+=p.shift(),x(Q,m);break;case 6:for(;p.length>0&&(Q+=p.shift(),x(Q,m),p.length!==0);)m+=p.shift(),x(Q,m);break;case 7:for(;p.length>0&&(m+=p.shift(),x(Q,m),p.length!==0);)Q+=p.shift(),x(Q,m);break;case 8:for(;p.length>0;)g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f+p.shift(),M(g,u,d,f,Q,m);break;case 10:At=p.pop()+a,T=t.subrs[At],T&&$(T);break;case 11:return;case 12:switch(pt=K[X],X+=1,pt){case 35:g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),tt=d+p.shift(),U=f+p.shift(),k=tt+p.shift(),q=U+p.shift(),Z=k+p.shift(),nt=q+p.shift(),Q=Z+p.shift(),m=nt+p.shift(),p.shift(),M(g,u,d,f,tt,U),M(k,q,Z,nt,Q,m);break;case 34:g=Q+p.shift(),u=m,d=g+p.shift(),f=u+p.shift(),tt=d+p.shift(),U=f,k=tt+p.shift(),q=f,Z=k+p.shift(),nt=m,Q=Z+p.shift(),M(g,u,d,f,tt,U),M(k,q,Z,nt,Q,m);break;case 36:g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),tt=d+p.shift(),U=f,k=tt+p.shift(),q=f,Z=k+p.shift(),nt=q+p.shift(),Q=Z+p.shift(),M(g,u,d,f,tt,U),M(k,q,Z,nt,Q,m);break;case 37:g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),tt=d+p.shift(),U=f+p.shift(),k=tt+p.shift(),q=U+p.shift(),Z=k+p.shift(),nt=q+p.shift(),Math.abs(Z-Q)>Math.abs(nt-m)?Q=Z+p.shift():m=nt+p.shift(),M(g,u,d,f,tt,U),M(k,q,Z,nt,Q,m);break;default:console.warn(`Glyph ${c}: unknown operator ${1200+pt}`),p.length=0}break;case 14:if(p.length>=4){const oe=hn[p.pop()],ae=hn[p.pop()],Ot=p.pop(),ht=p.pop();if(oe&&ae){i.isComposite=!0,i.components=[];const mt=t.charset.indexOf(oe),Ht=t.charset.indexOf(ae);i.components.push({glyphIndex:Ht,dx:0,dy:0}),i.components.push({glyphIndex:mt,dx:ht,dy:Ot}),z(A.get(Ht).pathCommands);const zt=JSON.parse(JSON.stringify(A.get(mt).pathCommands));for(let Dt=0;Dt<zt.length;Dt+=1){const ee=zt[Dt];ee.type!=="Z"&&(ee.x+=ht,ee.y+=Ot),(ee.type==="Q"||ee.type==="C")&&(ee.x1+=ht,ee.y1+=Ot),ee.type==="C"&&(ee.x2+=ht,ee.y2+=Ot)}z(zt)}}else p.length>0&&!R&&(D=p.shift()+s,R=!0);w&&l!==2&&(et(),w=!1);break;case 18:J();break;case 19:case 20:J(),X+=S+7>>3;break;case 21:p.length>2&&!R&&(D=p.shift()+s,R=!0),m+=p.pop(),Q+=p.pop(),V(Q,m);break;case 22:p.length>1&&!R&&(D=p.shift()+s,R=!0),Q+=p.pop(),V(Q,m);break;case 23:J();break;case 24:for(;p.length>2;)g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f+p.shift(),M(g,u,d,f,Q,m);Q+=p.shift(),m+=p.shift(),x(Q,m);break;case 25:for(;p.length>6;)Q+=p.shift(),m+=p.shift(),x(Q,m);g=Q+p.shift(),u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f+p.shift(),M(g,u,d,f,Q,m);break;case 26:for(p.length%2&&(Q+=p.shift());p.length>0;)g=Q,u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d,m=f+p.shift(),M(g,u,d,f,Q,m);break;case 27:for(p.length%2&&(m+=p.shift());p.length>0;)g=Q+p.shift(),u=m,d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f,M(g,u,d,f,Q,m);break;case 28:L=K[X],it=K[X+1],p.push((L<<24|it<<16)>>16),X+=2;break;case 29:At=p.pop()+o,T=t.gsubrs[At],T&&$(T);break;case 30:for(;p.length>0&&(g=Q,u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f+(p.length===1?p.shift():0),M(g,u,d,f,Q,m),p.length!==0);)g=Q+p.shift(),u=m,d=g+p.shift(),f=u+p.shift(),m=f+p.shift(),Q=d+(p.length===1?p.shift():0),M(g,u,d,f,Q,m);break;case 31:for(;p.length>0&&(g=Q+p.shift(),u=m,d=g+p.shift(),f=u+p.shift(),m=f+p.shift(),Q=d+(p.length===1?p.shift():0),M(g,u,d,f,Q,m),p.length!==0);)g=Q,u=m+p.shift(),d=g+p.shift(),f=u+p.shift(),Q=d+p.shift(),m=f+(p.length===1?p.shift():0),M(g,u,d,f,Q,m);break;default:pt<32?console.warn(`Glyph ${c}: unknown operator ${pt}`):pt<247?p.push(pt-139):pt<251?(L=K[X],X+=1,p.push((pt-247)*256+L+108)):pt<255?(L=K[X],X+=1,p.push(-(pt-251)*256-L-108)):(L=K[X],it=K[X+1],G=K[X+2],W=K[X+3],X+=4,p.push((L<<24|it<<16|G<<8|W)/65536))}}}$(e),this.pathCommands=B,R&&(this.advanceWidth=D)}}class un{constructor(t){this._sfnt=t}_items=[];get(t){const e=this._items[t];let A;if(e)A=e;else{A=this._get(t);const i=this._sfnt.hmtx.metrics[t];i&&(A.advanceWidth=A.advanceWidth||i.advanceWidth,A.leftSideBearing=A.leftSideBearing||i.leftSideBearing);const s=this._sfnt.cmap.glyphIndexToUnicodesMap.get(t);s&&(A.unicode??=s[0],A.unicodes??=s),this._items[t]=A}return A}}class id extends un{get length(){return this._sfnt.cff.charStringsIndex.offsets.length-1}_get(t){const e=this._sfnt.cff,A=new Ad({index:t});return A.parse(e,e.charStringsIndex.get(t),this),A.name=e.charset[t],A}}var rd=Object.defineProperty,Ql=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&rd(t,e,i),i};class _r extends fe{_offsets;get offsets(){return this._offsets??=this.readOffsets()}_objects;get objects(){return this._objects??=this.readObjects()}constructor(t,e,A,i){super(t,e,A,i),this._init()}_init(){const t=this.view,e=this.count,A=this.offsetSize;this.objectOffset=(e+1)*A+2,this.endOffset=t.byteOffset+this.objectOffset+this.offsets[e]}readOffsets(){const t=this.view,e=this.count,A=this.offsetSize;t.seek(3);const i=[];for(let s=0,n=e+1;s<n;s++){const o=this.view;let a=0;for(let l=0;l<A;l++)a<<=8,a+=o.readUint8();i.push(a)}return i}readObjects(){const t=[];for(let e=0,A=this.count;e<A;e++)t.push(this.get(e));return t}get(t){const e=this.offsets,A=this.objectOffset,i=A+e[t],n=A+e[t+1]-i;return this._isString?this.view.readString(i,n):this.view.readBytes(i,n)}}Ql([y("uint16")],_r.prototype,"count"),Ql([y("uint8")],_r.prototype,"offsetSize");class br extends _r{_isString=!1}class yl extends _r{_isString=!0}const sd=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],nd=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],od=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],ad=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"];function Dr(r,t){return t<=390?sd[t]:r[t-391]}function Ct(r,t="number",e){return(A,i)=>{if(typeof i!="string")return;const s={type:t,operator:r,default:e??t==="number"?0:void 0};Object.defineProperty(A.constructor.prototype,i,{get(){return this._getProp(s)},set(n){this._setProp(s,n)},configurable:!0,enumerable:!0})}}class ml extends fe{_dict;get dict(){return this._dict??=this._readDict()}_stringIndex;setStringIndex(t){return this._stringIndex=t,this}_readFloatOperand(){const t=this.view;let e="";const A=15,i=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];for(;;){const s=t.readUint8(),n=s>>4,o=s&15;if(n===A||(e+=i[n],o===A))break;e+=i[o]}return Number.parseFloat(e)}_readOperand(t){const e=this.view;let A,i,s,n;if(t===28)return A=e.readUint8(),i=e.readUint8(),A<<8|i;if(t===29)return A=e.readUint8(),i=e.readUint8(),s=e.readUint8(),n=e.readUint8(),A<<24|i<<16|s<<8|n;if(t===30)return this._readFloatOperand();if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return A=e.readUint8(),(t-247)*256+A+108;if(t>=251&&t<=254)return A=e.readUint8(),-(t-251)*256-A-108;throw new Error(`invalid b0 ${t}, at: ${e.cursor}`)}_readDict(){const t=this.view;t.seek(0);let e=[];const A=t.cursor+t.byteLength,i={};for(;t.cursor<A;){let s=t.readUint8();s<=21?(s===12&&(s=1200+t.readUint8()),i[s]=e,e=[]):e.push(this._readOperand(s))}return i}_getProp(t){const e=this.dict[t.operator]??t.default;switch(t.type){case"number":return e[0];case"string":return Dr(this._stringIndex?.objects??[],e[0]);case"number[]":return e}return e}_setProp(t,e){}}var ld=Object.defineProperty,fn=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&ld(t,e,i),i};class xr extends ml{}fn([Ct(19)],xr.prototype,"subrs"),fn([Ct(20)],xr.prototype,"defaultWidthX"),fn([Ct(21)],xr.prototype,"nominalWidthX");var cd=Object.defineProperty,bt=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&cd(t,e,i),i};class wt extends ml{}bt([Ct(0,"string")],wt.prototype,"version"),bt([Ct(1,"string")],wt.prototype,"notice"),bt([Ct(1200,"string")],wt.prototype,"copyright"),bt([Ct(2,"string")],wt.prototype,"fullName"),bt([Ct(3,"string")],wt.prototype,"familyName"),bt([Ct(4,"string")],wt.prototype,"weight"),bt([Ct(1201)],wt.prototype,"isFixedPitch"),bt([Ct(1202)],wt.prototype,"italicAngle"),bt([Ct(1203,"number",-100)],wt.prototype,"underlinePosition"),bt([Ct(1204,"number",50)],wt.prototype,"underlineThickness"),bt([Ct(1205)],wt.prototype,"paintType"),bt([Ct(1206,"number",2)],wt.prototype,"charstringType"),bt([Ct(1207,"number[]",[.001,0,0,.001,0,0])],wt.prototype,"fontMatrix"),bt([Ct(13)],wt.prototype,"uniqueId"),bt([Ct(5,"number[]",[0,0,0,0])],wt.prototype,"fontBBox"),bt([Ct(1208)],wt.prototype,"strokeWidth"),bt([Ct(14)],wt.prototype,"xuid"),bt([Ct(15)],wt.prototype,"charset"),bt([Ct(16)],wt.prototype,"encoding"),bt([Ct(17)],wt.prototype,"charStrings"),bt([Ct(18,"number[]",[0,0])],wt.prototype,"private");function Kt(r,t=r){return e=>{ke.tableDefinitions.set(r,{tag:r,prop:t,class:e}),Object.defineProperty(ke.prototype,t,{get(){return this.get(r)},set(A){return this.set(r,A)},configurable:!0,enumerable:!0})}}class ke{static tableDefinitions=new Map;tables=new Map;tableViews=new Map;get hasGlyf(){return this.tableViews.has("glyf")}get names(){return this.name.names}get unitsPerEm(){return this.head.unitsPerEm}get ascender(){return this.hhea.ascent}get descender(){return this.hhea.descent}get createdTimestamp(){return this.head.created}get modifiedTimestamp(){return this.head.modified}get numGlyphs(){return this.maxp.numGlyphs}get unicodes(){return this.cmap.glyphIndexToUnicodesMap}get glyphs(){return this.hasGlyf?this.glyf.glyphs:this.cff.glyphs}charToGlyphIndex(t){let e=this.cmap.unicodeToGlyphIndexMap.get(t.codePointAt(0));if(e===void 0&&!this.hasGlyf){const{encoding:A,charset:i}=this.cff;e=i.indexOf(A[t.codePointAt(0)])}return e??0}charToGlyph(t){return this.glyphs.get(this.charToGlyphIndex(t))}textToGlyphIndexes(t){const e=[];for(const A of t)e.push(this.charToGlyphIndex(A));return e}textToGlyphs(t){const e=this.glyphs,A=this.textToGlyphIndexes(t),i=A.length,s=Array.from({length:i}),n=e.get(0);for(let o=0;o<i;o+=1)s[o]=e.get(A[o])||n;return s}getPathCommands(t,e,A,i,s){const n=[];return this.forEachGlyph(t,e,A,i,s,(o,a,l,c,g)=>{n.push(...o.getPathCommands(a,l,c,g,this))}),n}getAdvanceWidth(t,e,A){return this.forEachGlyph(t,0,0,e,A,()=>{})}forEachGlyph(t,e=0,A=0,i=72,s={},n){const o=1/this.unitsPerEm*i,a=this.textToGlyphs(t);for(let l=0;l<a.length;l+=1){const c=a[l];n.call(this,c,e,A,i,s),c.advanceWidth&&(e+=c.advanceWidth*o),s.letterSpacing?e+=s.letterSpacing*i:s.tracking&&(e+=s.tracking/1e3*i)}return e}constructor(t){(t instanceof Map?t:new Map(Object.entries(t))).forEach((A,i)=>{this.tableViews.set(i,new DataView(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength)))})}clone(){return new ke(this.tableViews)}delete(t){const e=ke.tableDefinitions.get(t);return e?(this.tableViews.delete(t),this.tables.delete(e.prop),this):this}set(t,e){const A=ke.tableDefinitions.get(t);return A&&this.tables.set(A.prop,e),this.tableViews.set(t,e.view),this}get(t){const e=ke.tableDefinitions.get(t);if(!e)return;let A=this.tables.get(e.prop);if(!A){const i=e.class;if(i){const s=this.tableViews.get(t);if(!s)return;A=new i(s.buffer,s.byteOffset,s.byteLength).setSFNT(this),this.tables.set(e.prop,A)}}return A}}class $t extends fe{setSFNT(t){return this._sfnt=t,this}getSFNT(){return this._sfnt}}var hd=Object.defineProperty,gd=Object.getOwnPropertyDescriptor,Li=(r,t,e,A)=>{for(var i=A>1?void 0:A?gd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&hd(t,e,i),i};let bA=class extends $t{_glyphs;get glyphs(){return this._glyphs??=new id(this._sfnt)}get gsubrs(){return this.globalSubrIndex.objects}get gsubrsBias(){return this._calcSubroutineBias(this.globalSubrIndex.objects)}privateDict;subrsIndex;get defaultWidthX(){return this.privateDict?.defaultWidthX??0}get nominalWidthX(){return this.privateDict?.nominalWidthX??0}get subrs(){return this.subrsIndex?.objects??[]}get subrsBias(){return this._calcSubroutineBias(this.subrs)}constructor(r,t,e,A){super(r,t,e,A),this._init()}_init(){const r=this.view,{buffer:t,byteOffset:e}=r,A=e+4;this.nameIndex=new yl(t,A),this.topDictIndex=new br(t,this.nameIndex.endOffset),this.stringIndex=new yl(t,this.topDictIndex.endOffset),this.globalSubrIndex=new br(t,this.stringIndex.endOffset),this.topDict=new wt(new Uint8Array(this.topDictIndex.objects[0]).buffer).setStringIndex(this.stringIndex);const i=this.topDict.private[0],s=this.topDict.private[1];i&&(this.privateDict=new xr(t,e+s,i).setStringIndex(this.stringIndex),this.privateDict.subrs&&(this.subrsIndex=new br(t,e+s+this.privateDict.subrs))),this.charStringsIndex=new br(t,e+this.topDict.charStrings);const n=this.charStringsIndex.offsets.length-1;this.topDict.charset===0?this.charset=nd:this.topDict.charset===1?this.charset=od:this.topDict.charset===2?this.charset=ad:this.charset=this._readCharset(e+this.topDict.charset,n,this.stringIndex.objects),this.topDict.encoding===0?this.encoding=hn:this.topDict.encoding===1?this.encoding=ed:this.encoding=this._readEncoding(e+this.topDict.encoding)}_readCharset(r,t,e){const A=this.view;A.seek(r);let i,s,n;t-=1;const o=[".notdef"],a=A.readUint8();if(a===0)for(i=0;i<t;i+=1)s=A.readUint16(),o.push(Dr(e,s));else if(a===1)for(;o.length<=t;)for(s=A.readUint16(),n=A.readUint8(),i=0;i<=n;i+=1)o.push(Dr(e,s)),s+=1;else if(a===2)for(;o.length<=t;)for(s=A.readUint16(),n=A.readUint16(),i=0;i<=n;i+=1)o.push(Dr(e,s)),s+=1;else throw new Error(`Unknown charset format ${a}`);return o}_readEncoding(r){const t=this.view;t.seek(r);let e,A;const i={},s=t.readUint8();if(s===0){const n=t.readUint8();for(e=0;e<n;e+=1)A=t.readUint8(),i[A]=e}else if(s===1){const n=t.readUint8();for(A=1,e=0;e<n;e+=1){const o=t.readUint8(),a=t.readUint8();for(let l=o;l<=o+a;l+=1)i[l]=A,A+=1}}else console.warn(`unknown encoding format:${s}`);return i}_calcSubroutineBias(r){let t;return r.length<1240?t=107:r.length<33900?t=1131:t=32768,t}};Li([y("uint8")],bA.prototype,"majorVersion",2),Li([y("uint8")],bA.prototype,"minorVersion",2),Li([y("uint8")],bA.prototype,"headerSize",2),Li([y("uint8")],bA.prototype,"offsetSize",2),bA=Li([Kt("CFF ","cff")],bA);var ud=Object.defineProperty,Sr=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&ud(t,e,i),i};const Gi=class _c extends fe{constructor(t=new ArrayBuffer(262),e){super(t,e,262)}static from(t){const e=new _c;return e.format=0,e.length=e.view.byteLength,e.language=0,t.forEach((A,i)=>{i<256&&A<256&&e.view.writeUint8(A,6+i)}),e}getUnicodeToGlyphIndexMap(){const t=new Map;return this.glyphIndexArray.forEach((e,A)=>{t.set(A,e)}),t}};Sr([y("uint16")],Gi.prototype,"format"),Sr([y("uint16")],Gi.prototype,"length"),Sr([y("uint16")],Gi.prototype,"language"),Sr([y({type:"uint8",size:256})],Gi.prototype,"glyphIndexArray");let dn=Gi;var fd=Object.defineProperty,In=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&fd(t,e,i),i};class Oi extends fe{get subHeaderKeys(){return this.view.seek(6),Array.from({length:256},()=>this.view.readUint16()/8)}get maxSubHeaderKey(){return this.subHeaderKeys.reduce((t,e)=>Math.max(t,e),0)}get subHeaders(){const t=this.maxSubHeaderKey;return this.view.seek(6+256*2),Array.from({length:t},(e,A)=>({firstCode:this.view.readUint16(),entryCount:this.view.readUint16(),idDelta:this.view.readUint16(),idRangeOffset:(this.view.readUint16()-(t-A)*8-2)/2}))}get glyphIndexArray(){const t=this.maxSubHeaderKey,e=6+256*2+t*8;this.view.seek(e);const A=(this.view.byteLength-e)/2;return Array.from({length:A},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(t){const e=new Map,A=this.subHeaderKeys,i=this.maxSubHeaderKey,s=this.subHeaders,n=this.glyphIndexArray,o=A.findIndex(l=>l===i);let a=0;for(let l=0;l<256;l++)if(A[l]===0)l>=o||l<s[0].firstCode||l>=s[0].firstCode+s[0].entryCount||s[0].idRangeOffset+(l-s[0].firstCode)>=n.length?a=0:(a=n[s[0].idRangeOffset+(l-s[0].firstCode)],a!==0&&(a=a+s[0].idDelta)),a!==0&&a<t&&e.set(l,a);else{const c=A[l];for(let g=0,u=s[c].entryCount;g<u;g++)if(s[c].idRangeOffset+g>=n.length?a=0:(a=n[s[c].idRangeOffset+g],a!==0&&(a=a+s[c].idDelta)),a!==0&&a<t){const d=(l<<8|g+s[c].firstCode)%65535;e.set(d,a)}}return e}}In([y("uint16")],Oi.prototype,"format"),In([y("uint16")],Oi.prototype,"length"),In([y("uint16")],Oi.prototype,"language");function wl(r){return r>32767?r-65536:r<-32767?r+65536:r}function pn(r,t){let e;const A=[];let i={};return r.forEach((s,n)=>{t&&n>t||((!e||n!==e.unicode+1||s!==e.glyphIndex+1)&&(e?(i.end=e.unicode,A.push(i),i={start:n,startId:s,delta:wl(s-n)}):(i.start=Number(n),i.startId=s,i.delta=wl(s-n))),e={unicode:n,glyphIndex:s})}),e&&(i.end=e.unicode,A.push(i)),A}var dd=Object.defineProperty,DA=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&dd(t,e,i),i};const cA=class bc extends fe{get endCode(){const t=this.segCountX2;return this.view.seek(14),Array.from({length:t/2},()=>this.view.readUint16())}set endCode(t){this.view.seek(14),t.forEach(e=>this.view.writeUint16(e))}get reservedPad(){return this.view.readUint16(14+this.segCountX2)}set reservedPad(t){this.view.writeUint16(t,14+this.segCountX2)}get startCode(){const t=this.segCountX2;return this.view.seek(14+t+2),Array.from({length:t/2},()=>this.view.readUint16())}set startCode(t){this.view.seek(14+this.segCountX2+2),t.forEach(e=>this.view.writeUint16(e))}get idDelta(){const t=this.segCountX2;return this.view.seek(14+t+2+t),Array.from({length:t/2},()=>this.view.readUint16())}set idDelta(t){const e=this.segCountX2;this.view.seek(14+e+2+e),t.forEach(A=>this.view.writeUint16(A))}get idRangeOffsetCursor(){const t=this.segCountX2;return 14+t+2+t*2}get idRangeOffset(){const t=this.segCountX2;return this.view.seek(this.idRangeOffsetCursor),Array.from({length:t/2},()=>this.view.readUint16())}set idRangeOffset(t){this.view.seek(this.idRangeOffsetCursor),t.forEach(e=>this.view.writeUint16(e))}get glyphIndexArrayCursor(){const t=this.segCountX2;return 14+t+2+t*3}get glyphIndexArray(){const t=this.glyphIndexArrayCursor;this.view.seek(t);const e=(this.view.byteLength-t)/2;return Array.from({length:e},()=>this.view.readUint16())}static from(t){const e=pn(t,65535),A=e.length+1,i=Math.floor(Math.log(A)/Math.LN2),s=2*2**i,n=new bc(new ArrayBuffer(24+e.length*8));return n.format=4,n.length=n.view.byteLength,n.language=0,n.segCountX2=A*2,n.searchRange=s,n.entrySelector=i,n.rangeShift=2*A-s,n.endCode=[...e.map(o=>o.end),65535],n.reservedPad=0,n.startCode=[...e.map(o=>o.start),65535],n.idDelta=[...e.map(o=>o.delta),1],n.idRangeOffset=Array.from({length:A},()=>0),n}getUnicodeToGlyphIndexMap(){const t=new Map,e=this.segCountX2/2,A=(this.glyphIndexArrayCursor-this.idRangeOffsetCursor)/2,i=this.startCode,s=this.endCode,n=this.idRangeOffset,o=this.idDelta,a=this.glyphIndexArray;for(let l=0;l<e;++l)for(let c=i[l],g=s[l];c<=g;++c)if(n[l]===0)t.set(c,(c+o[l])%65536);else{const u=l+n[l]/2+(c-i[l])-A,d=a[u];d!==0?t.set(c,(d+o[l])%65536):t.set(c,0)}return t.delete(65535),t}};DA([y("uint16")],cA.prototype,"format"),DA([y("uint16")],cA.prototype,"length"),DA([y("uint16")],cA.prototype,"language"),DA([y("uint16")],cA.prototype,"segCountX2"),DA([y("uint16")],cA.prototype,"searchRange"),DA([y("uint16")],cA.prototype,"entrySelector"),DA([y("uint16")],cA.prototype,"rangeShift");let En=cA;var Id=Object.defineProperty,Hi=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Id(t,e,i),i};class xA extends fe{get glyphIndexArray(){return this.view.seek(12),Array.from({length:this.entryCount},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(){const t=this.glyphIndexArray,e=new Map;return t.forEach((A,i)=>{e.set(i,A)}),e}}Hi([y("uint16")],xA.prototype,"format"),Hi([y("uint16")],xA.prototype,"length"),Hi([y("uint16")],xA.prototype,"language"),Hi([y("uint16")],xA.prototype,"firstCode"),Hi([y("uint16")],xA.prototype,"entryCount");var pd=Object.defineProperty,Ji=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&pd(t,e,i),i};const zA=class Dc extends fe{get groups(){const t=this.nGroups;return this.view.seek(16),Array.from({length:t},()=>({startCharCode:this.view.readUint32(),endCharCode:this.view.readUint32(),startGlyphCode:this.view.readUint32()}))}static from(t){const e=pn(t),A=new Dc(new ArrayBuffer(16+e.length*12));return A.format=12,A.reserved=0,A.length=A.view.byteLength,A.language=0,A.nGroups=e.length,e.forEach(i=>{A.view.writeUint32(i.start),A.view.writeUint32(i.end),A.view.writeUint32(i.startId)}),A}getUnicodeToGlyphIndexMap(){const t=new Map,e=this.groups;for(let A=0,i=e.length;A<i;A++){const s=e[A];let n=s.startGlyphCode,o=s.startCharCode;const a=s.endCharCode;for(;o<=a;)t.set(o++,n++)}return t}};Ji([y("uint16")],zA.prototype,"format"),Ji([y("uint16")],zA.prototype,"reserved"),Ji([y("uint32")],zA.prototype,"length"),Ji([y("uint32")],zA.prototype,"language"),Ji([y("uint32")],zA.prototype,"nGroups");let Bn=zA;var Ed=Object.defineProperty,Cn=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Ed(t,e,i),i};class Ki extends fe{getVarSelectorRecords(){const t=this.numVarSelectorRecords;return this.view.seek(10),Array.from({length:t},()=>{const e={varSelector:this.view.readUint24(),defaultUVSOffset:this.view.readUint32(),unicodeValueRanges:[],nonDefaultUVSOffset:this.view.readUint32(),uVSMappings:[]};if(e.defaultUVSOffset){this.view.seek(e.defaultUVSOffset);const A=this.view.readUint32();e.unicodeValueRanges=Array.from({length:A},()=>({startUnicodeValue:this.view.readUint24(),additionalCount:this.view.readUint8()}))}if(e.nonDefaultUVSOffset){this.view.seek(e.nonDefaultUVSOffset);const A=this.view.readUint32();e.uVSMappings=Array.from({length:A},()=>({unicodeValue:this.view.readUint24(),glyphID:this.view.readUint16()}))}return e})}getUnicodeToGlyphIndexMap(){const t=new Map,e=this.getVarSelectorRecords();for(let A=0,i=e.length;A<i;A++){const{uVSMappings:s}=e[A];s.forEach(n=>{t.set(n.unicodeValue,n.glyphID)})}return t}}Cn([y("uint16")],Ki.prototype,"format"),Cn([y("uint32")],Ki.prototype,"length"),Cn([y("uint32")],Ki.prototype,"numVarSelectorRecords");var Bd=Object.defineProperty,Cd=Object.getOwnPropertyDescriptor,Qn=(r,t,e,A)=>{for(var i=A>1?void 0:A?Cd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Bd(t,e,i),i};let WA=class extends $t{static from(r){const t=Array.from(r.keys()).some(c=>c>65535),e=En.from(r),A=dn.from(r),i=t?Bn.from(r):void 0,s=4+(i?32:24),n=s+e.view.byteLength,o=n+A.view.byteLength,a=[{platformID:0,platformSpecificID:3,offset:s},{platformID:1,platformSpecificID:0,offset:n},{platformID:3,platformSpecificID:1,offset:s},i&&{platformID:3,platformSpecificID:10,offset:o}].filter(Boolean),l=new WA(new ArrayBuffer(4+8*a.length+e.view.byteLength+A.view.byteLength+(i?.view.byteLength??0)));return l.numberSubtables=a.length,l.view.seek(4),a.forEach(c=>{l.view.writeUint16(c.platformID),l.view.writeUint16(c.platformSpecificID),l.view.writeUint32(c.offset)}),l.view.writeBytes(e.view,s),l.view.writeBytes(A.view,n),i&&l.view.writeBytes(i.view,o),l}_unicodeToGlyphIndexMap;get unicodeToGlyphIndexMap(){return this._unicodeToGlyphIndexMap??=this.readunicodeToGlyphIndexMap()}_glyphIndexToUnicodesMap;get glyphIndexToUnicodesMap(){if(!this._glyphIndexToUnicodesMap){const r=new Map,t=this.unicodeToGlyphIndexMap,e=Array.from(t.keys());for(let A=0,i=e.length;A<i;A++){const s=e[A],n=t.get(s);r.has(n)?r.get(n).push(s):r.set(n,[s])}this._glyphIndexToUnicodesMap=r}return this._glyphIndexToUnicodesMap}readSubtables(){const r=this.numberSubtables;return this.view.seek(4),Array.from({length:r},()=>({platformID:this.view.readUint16(),platformSpecificID:this.view.readUint16(),offset:this.view.readUint32()})).map(t=>{this.view.seek(t.offset);const e=this.view.readUint16();let A;switch(e){case 0:A=new dn(this.view.buffer,t.offset);break;case 2:A=new Oi(this.view.buffer,t.offset,this.view.readUint16());break;case 4:A=new En(this.view.buffer,t.offset,this.view.readUint16());break;case 6:A=new xA(this.view.buffer,t.offset,this.view.readUint16());break;case 12:A=new Bn(this.view.buffer,t.offset,this.view.readUint32(t.offset+4));break;case 14:default:A=new Ki(this.view.buffer,t.offset,this.view.readUint32());break}return{...t,format:e,view:A}})}readunicodeToGlyphIndexMap(){const r=this.readSubtables(),t=r.find(n=>n.format===0)?.view,e=r.find(n=>n.platformID===3&&n.platformSpecificID===3&&n.format===2)?.view,A=r.find(n=>n.platformID===3&&n.platformSpecificID===1&&n.format===4)?.view,i=r.find(n=>n.platformID===3&&n.platformSpecificID===10&&n.format===12)?.view,s=r.find(n=>n.platformID===0&&n.platformSpecificID===5&&n.format===14)?.view;return new Map([...t?.getUnicodeToGlyphIndexMap()??[],...e?.getUnicodeToGlyphIndexMap(this._sfnt.maxp.numGlyphs)??[],...A?.getUnicodeToGlyphIndexMap()??[],...i?.getUnicodeToGlyphIndexMap()??[],...s?.getUnicodeToGlyphIndexMap()??[]])}};Qn([y("uint16")],WA.prototype,"version",2),Qn([y("uint16")],WA.prototype,"numberSubtables",2),WA=Qn([Kt("cmap")],WA);class Qd extends gn{_parseContours(t){const e=[];let A=[];for(let i=0;i<t.length;i+=1){const s=t[i];A.push(s),s.lastPointOfContour&&(e.push(A),A=[])}return Fi(A.length===0,"There are still points left in the current contour."),e}_transformPoints(t,e){const A=[];for(let i=0;i<t.length;i+=1){const s=t[i],n={x:e.xScale*s.x+e.scale10*s.y+e.dx,y:e.scale01*s.x+e.yScale*s.y+e.dy,onCurve:s.onCurve,lastPointOfContour:s.lastPointOfContour};A.push(n)}return A}_parseGlyphCoordinate(t,e,A,i,s){let n;return(e&i)>0?(n=t.view.readUint8(),(e&s)===0&&(n=-n),n=A+n):(e&s)>0?n=A:n=A+t.view.readInt16(),n}parse(t,e,A){t.view.seek(e);const i=this.numberOfContours=t.view.readInt16();if(this.xMin=t.view.readInt16(),this.yMin=t.view.readInt16(),this.xMax=t.view.readInt16(),this.yMax=t.view.readInt16(),i>0){const o=this.endPointIndices=[];for(let B=0;B<i;B++)o.push(t.view.readUint16());const a=this.instructionLength=t.view.readUint16();Fi(a<5e3,`Bad instructionLength:${a}`);const l=this.instructions=[];for(let B=0;B<a;++B)l.push(t.view.readUint8());const c=t.view.byteOffset,g=o[o.length-1]+1;Fi(g<2e4,`Bad numberOfCoordinates:${c}`);const u=[];let d,f=0;for(;f<g;)if(d=t.view.readUint8(),u.push(d),f++,d&8&&f<g){const B=t.view.readUint8();for(let p=0;p<B;p++)u.push(d),f++}if(Fi(u.length===g,`Bad flags length: ${u.length}, numberOfCoordinates: ${g}`),o.length>0){const B=[];let p;if(g>0){for(let w=0;w<g;w+=1)d=u[w],p={},p.onCurve=!!(d&1),p.lastPointOfContour=o.includes(w),B.push(p);let S=0;for(let w=0;w<g;w+=1)d=u[w],p=B[w],p.x=this._parseGlyphCoordinate(t,d,S,2,16),S=p.x;let R=0;for(let w=0;w<g;w+=1)d=u[w],p=B[w],p.y=this._parseGlyphCoordinate(t,d,R,4,32),R=p.y}this.points=B}else this.points=[]}else if(i===0)this.points=[];else{this.isComposite=!0,this.points=[],this.components=[];let o,a=!0;for(;a;){o=t.view.readUint16();const l={glyphIndex:t.view.readUint16(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(l.dx=t.view.readInt16(),l.dy=t.view.readInt16()):l.matchedPoints=[t.view.readUint16(),t.view.readUint16()]:(o&2)>0?(l.dx=t.view.readInt8(),l.dy=t.view.readInt8()):l.matchedPoints=[t.view.readUint8(),t.view.readUint8()],(o&8)>0?l.xScale=l.yScale=t.view.readInt16()/16384:(o&64)>0?(l.xScale=t.view.readInt16()/16384,l.yScale=t.view.readInt16()/16384):(o&128)>0&&(l.xScale=t.view.readInt16()/16384,l.scale01=t.view.readInt16()/16384,l.scale10=t.view.readInt16()/16384,l.yScale=t.view.readInt16()/16384),this.components.push(l),a=!!(o&32)}if(o&256){this.instructionLength=t.view.readUint16(),this.instructions=[];for(let l=0;l<this.instructionLength;l+=1)this.instructions.push(t.view.readUint8())}}if(this.isComposite)for(let o=0;o<this.components.length;o+=1){const a=this.components[o],l=A.get(a.glyphIndex);if(l.getPathCommands(),l.points){let c;if(a.matchedPoints===void 0)c=this._transformPoints(l.points,a);else{Fi(a.matchedPoints[0]>this.points.length-1||a.matchedPoints[1]>l.points.length-1,`Matched points out of range in ${this.name}`);const g=this.points[a.matchedPoints[0]];let u=l.points[a.matchedPoints[1]];const d={xScale:a.xScale,scale01:a.scale01,scale10:a.scale10,yScale:a.yScale,dx:0,dy:0};u=this._transformPoints([u],d)[0],d.dx=g.x-u.x,d.dy=g.y-u.y,c=this._transformPoints(l.points,d)}this.points=this.points.concat(c)}}const s=[],n=this._parseContours(this.points);for(let o=0,a=n.length;o<a;++o){const l=n[o];let c=l[l.length-1],g=l[0];c.onCurve?s.push({type:"M",x:c.x,y:c.y}):g.onCurve?s.push({type:"M",x:g.x,y:g.y}):s.push({type:"M",x:(c.x+g.x)*.5,y:(c.y+g.y)*.5});for(let u=0,d=l.length;u<d;++u)if(c=g,g=l[(u+1)%d],c.onCurve)s.push({type:"L",x:c.x,y:c.y});else{let f=g;g.onCurve||(f={x:(c.x+g.x)*.5,y:(c.y+g.y)*.5}),s.push({type:"Q",x1:c.x,y1:c.y,x:f.x,y:f.y})}s.push({type:"Z"})}this.pathCommands=s}}class yd extends un{get length(){return this._sfnt.loca.locations.length}_get(t){const e=this._sfnt.loca.locations,A=e[t],i=new Qd({index:t});return A!==e[t+1]&&i.parse(this._sfnt.glyf,A,this),i}}var md=Object.getOwnPropertyDescriptor,wd=(r,t,e,A)=>{for(var i=A>1?void 0:A?md(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Mr=class extends $t{static from(r){const t=r.reduce((A,i)=>A+i.byteLength,0),e=new Mr(new ArrayBuffer(t));return r.forEach(A=>{e.view.writeBytes(A)}),e}_glyphs;get glyphs(){return this._glyphs??=new yd(this._sfnt)}};Mr=wd([Kt("glyf")],Mr);var vd=Object.getOwnPropertyDescriptor,_d=(r,t,e,A)=>{for(var i=A>1?void 0:A?vd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let yn=class extends $t{};yn=_d([Kt("GPOS","gpos")],yn);var bd=Object.defineProperty,Dd=Object.getOwnPropertyDescriptor,SA=(r,t,e,A)=>{for(var i=A>1?void 0:A?Dd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&bd(t,e,i),i};let je=class extends $t{};SA([y("uint16")],je.prototype,"majorVersion",2),SA([y("uint16")],je.prototype,"minorVersion",2),SA([y("uint16")],je.prototype,"scriptListOffset",2),SA([y("uint16")],je.prototype,"featureListOffset",2),SA([y("uint16")],je.prototype,"lookupListOffset",2),SA([y("uint16")],je.prototype,"featureVariationsOffset",2),je=SA([Kt("GSUB","gsub")],je);var xd=Object.defineProperty,Sd=Object.getOwnPropertyDescriptor,Ft=(r,t,e,A)=>{for(var i=A>1?void 0:A?Sd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&xd(t,e,i),i};let St=class extends $t{constructor(r=new ArrayBuffer(54),t){super(r,t,Math.min(54,r.byteLength-(t??0)))}};Ft([y("fixed")],St.prototype,"version",2),Ft([y("fixed")],St.prototype,"fontRevision",2),Ft([y("uint32")],St.prototype,"checkSumAdjustment",2),Ft([y("uint32")],St.prototype,"magickNumber",2),Ft([y("uint16")],St.prototype,"flags",2),Ft([y("uint16")],St.prototype,"unitsPerEm",2),Ft([y({type:"longDateTime"})],St.prototype,"created",2),Ft([y({type:"longDateTime"})],St.prototype,"modified",2),Ft([y("int16")],St.prototype,"xMin",2),Ft([y("int16")],St.prototype,"yMin",2),Ft([y("int16")],St.prototype,"xMax",2),Ft([y("int16")],St.prototype,"yMax",2),Ft([y("uint16")],St.prototype,"macStyle",2),Ft([y("uint16")],St.prototype,"lowestRecPPEM",2),Ft([y("int16")],St.prototype,"fontDirectionHint",2),Ft([y("int16")],St.prototype,"indexToLocFormat",2),Ft([y("int16")],St.prototype,"glyphDataFormat",2),St=Ft([Kt("head")],St);var Md=Object.defineProperty,Rd=Object.getOwnPropertyDescriptor,se=(r,t,e,A)=>{for(var i=A>1?void 0:A?Rd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Md(t,e,i),i};let Yt=class extends $t{constructor(r=new ArrayBuffer(36),t){super(r,t,Math.min(36,r.byteLength-(t??0)))}};se([y("fixed")],Yt.prototype,"version",2),se([y("int16")],Yt.prototype,"ascent",2),se([y("int16")],Yt.prototype,"descent",2),se([y("int16")],Yt.prototype,"lineGap",2),se([y("uint16")],Yt.prototype,"advanceWidthMax",2),se([y("int16")],Yt.prototype,"minLeftSideBearing",2),se([y("int16")],Yt.prototype,"minRightSideBearing",2),se([y("int16")],Yt.prototype,"xMaxExtent",2),se([y("int16")],Yt.prototype,"caretSlopeRise",2),se([y("int16")],Yt.prototype,"caretSlopeRun",2),se([y("int16")],Yt.prototype,"caretOffset",2),se([y({type:"int16",size:4})],Yt.prototype,"reserved",2),se([y("int16")],Yt.prototype,"metricDataFormat",2),se([y("uint16")],Yt.prototype,"numOfLongHorMetrics",2),Yt=se([Kt("hhea")],Yt);var Pd=Object.getOwnPropertyDescriptor,kd=(r,t,e,A)=>{for(var i=A>1?void 0:A?Pd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Rr=class extends $t{static from(r){const t=r.length*4,e=new Rr(new ArrayBuffer(t));return r.forEach(A=>{e.view.writeUint16(A.advanceWidth),e.view.writeUint16(A.leftSideBearing)}),e}_metrics;get metrics(){return this._metrics??=this.readMetrics()}readMetrics(){const r=this._sfnt.maxp.numGlyphs,t=this._sfnt.hhea.numOfLongHorMetrics;let e=0;const A=this.view;return A.seek(0),Array.from({length:r}).map((i,s)=>(s<t&&(e=A.readUint16()),{advanceWidth:e,leftSideBearing:A.readUint16()}))}};Rr=kd([Kt("hmtx")],Rr);var Ud=Object.getOwnPropertyDescriptor,Nd=(r,t,e,A)=>{for(var i=A>1?void 0:A?Ud(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let mn=class extends $t{};mn=Nd([Kt("kern","kern")],mn);var Fd=Object.getOwnPropertyDescriptor,Td=(r,t,e,A)=>{for(var i=A>1?void 0:A?Fd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Pr=class extends $t{static from(r,t=1){const e=r.length*(t?4:2),A=new Pr(new ArrayBuffer(e));return r.forEach(i=>{t?A.view.writeUint32(i):A.view.writeUint16(i/2)}),A}_locations;get locations(){return this._locations??=this.readLocations()}readLocations(){const r=this._sfnt.maxp.numGlyphs,t=this._sfnt.head.indexToLocFormat,e=this.view;return e.seek(0),Array.from({length:r}).map(()=>t?e.readUint32():e.readUint16()*2)}};Pr=Td([Kt("loca")],Pr);var Ld=Object.defineProperty,Gd=Object.getOwnPropertyDescriptor,te=(r,t,e,A)=>{for(var i=A>1?void 0:A?Gd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Ld(t,e,i),i};let Tt=class extends $t{constructor(r=new ArrayBuffer(32),t){super(r,t,Math.min(32,r.byteLength-(t??0)))}};te([y("fixed")],Tt.prototype,"version",2),te([y("uint16")],Tt.prototype,"numGlyphs",2),te([y("uint16")],Tt.prototype,"maxPoints",2),te([y("uint16")],Tt.prototype,"maxContours",2),te([y("uint16")],Tt.prototype,"maxComponentPoints",2),te([y("uint16")],Tt.prototype,"maxComponentContours",2),te([y("uint16")],Tt.prototype,"maxZones",2),te([y("uint16")],Tt.prototype,"maxTwilightPoints",2),te([y("uint16")],Tt.prototype,"maxStorage",2),te([y("uint16")],Tt.prototype,"maxFunctionDefs",2),te([y("uint16")],Tt.prototype,"maxInstructionDefs",2),te([y("uint16")],Tt.prototype,"maxStackElements",2),te([y("uint16")],Tt.prototype,"maxSizeOfInstructions",2),te([y("uint16")],Tt.prototype,"maxComponentElements",2),te([y("uint16")],Tt.prototype,"maxComponentDepth",2),Tt=te([Kt("maxp")],Tt);var Od=Object.defineProperty,Hd=Object.getOwnPropertyDescriptor,kr=(r,t,e,A)=>{for(var i=A>1?void 0:A?Hd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Od(t,e,i),i};const vl={0:"copyright",1:"fontFamily",2:"fontSubFamily",3:"uniqueSubFamily",4:"fullName",5:"version",6:"postScriptName",7:"tradeMark",8:"manufacturer",9:"designer",10:"description",11:"urlOfFontVendor",12:"urlOfFontDesigner",13:"licence",14:"urlOfLicence",16:"preferredFamily",17:"preferredSubFamily",18:"compatibleFull",19:"sampleText"},wn={Macintosh:1,Microsoft:3},Jd={Default:0},_l={UCS2:1};let qA=class extends $t{_names;get names(){return this._names??=this.readNames()}readNames(){const r=this.count;this.view.seek(6);const t=[];for(let o=0;o<r;++o)t.push({platform:this.view.readUint16(),encoding:this.view.readUint16(),language:this.view.readUint16(),nameId:this.view.readUint16(),length:this.view.readUint16(),offset:this.view.readUint16()});const e=this.stringOffset;for(let o=0;o<r;++o){const a=t[o];a.name=this.view.readBytes(e+a.offset,a.length)}let A=wn.Macintosh,i=Jd.Default,s=0;t.some(o=>o.platform===wn.Microsoft&&o.encoding===_l.UCS2&&o.language===1033)&&(A=wn.Microsoft,i=_l.UCS2,s=1033);const n={};for(let o=0;o<r;++o){const a=t[o];a.platform===A&&a.encoding===i&&a.language===s&&vl[a.nameId]&&(n[vl[a.nameId]]=s===0?Xf(a.name):jf(a.name))}return n}};kr([y("uint16")],qA.prototype,"format",2),kr([y("uint16")],qA.prototype,"count",2),kr([y("uint16")],qA.prototype,"stringOffset",2),qA=kr([Kt("name")],qA);var Kd=Object.defineProperty,Yd=Object.getOwnPropertyDescriptor,at=(r,t,e,A)=>{for(var i=A>1?void 0:A?Yd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Kd(t,e,i),i};let ot=class extends $t{get fontPANOSE(){return[this.bFamilyType,this.bSerifStyle,this.bWeight,this.bProportion,this.bContrast,this.bStrokeVariation,this.bArmStyle,this.bLetterform,this.bMidline,this.bXHeight]}};at([y("uint16")],ot.prototype,"version",2),at([y("int16")],ot.prototype,"xAvgCharWidth",2),at([y("uint16")],ot.prototype,"usWeightClass",2),at([y("uint16")],ot.prototype,"usWidthClass",2),at([y("uint16")],ot.prototype,"fsType",2),at([y("uint16")],ot.prototype,"ySubscriptXSize",2),at([y("uint16")],ot.prototype,"ySubscriptYSize",2),at([y("uint16")],ot.prototype,"ySubscriptXOffset",2),at([y("uint16")],ot.prototype,"ySubscriptYOffset",2),at([y("uint16")],ot.prototype,"ySuperscriptXSize",2),at([y("uint16")],ot.prototype,"ySuperscriptYSize",2),at([y("uint16")],ot.prototype,"ySuperscriptXOffset",2),at([y("uint16")],ot.prototype,"ySuperscriptYOffset",2),at([y("uint16")],ot.prototype,"yStrikeoutSize",2),at([y("uint16")],ot.prototype,"yStrikeoutPosition",2),at([y("uint16")],ot.prototype,"sFamilyClass",2),at([y({type:"uint8"})],ot.prototype,"bFamilyType",2),at([y({type:"uint8"})],ot.prototype,"bSerifStyle",2),at([y({type:"uint8"})],ot.prototype,"bWeight",2),at([y({type:"uint8"})],ot.prototype,"bProportion",2),at([y({type:"uint8"})],ot.prototype,"bContrast",2),at([y({type:"uint8"})],ot.prototype,"bStrokeVariation",2),at([y({type:"uint8"})],ot.prototype,"bArmStyle",2),at([y({type:"uint8"})],ot.prototype,"bLetterform",2),at([y({type:"uint8"})],ot.prototype,"bMidline",2),at([y({type:"uint8"})],ot.prototype,"bXHeight",2),at([y({type:"uint8",size:16})],ot.prototype,"ulUnicodeRange",2),at([y({type:"char",size:4})],ot.prototype,"achVendID",2),at([y("uint16")],ot.prototype,"fsSelection",2),at([y("uint16")],ot.prototype,"usFirstCharIndex",2),at([y("uint16")],ot.prototype,"usLastCharIndex",2),at([y("int16")],ot.prototype,"sTypoAscender",2),at([y("int16")],ot.prototype,"sTypoDescender",2),at([y("int16")],ot.prototype,"sTypoLineGap",2),at([y("uint16")],ot.prototype,"usWinAscent",2),at([y("uint16")],ot.prototype,"usWinDescent",2),at([y({offset:72,type:"uint8",size:8})],ot.prototype,"ulCodePageRange",2),at([y({offset:72,type:"int16"})],ot.prototype,"sxHeight",2),at([y("int16")],ot.prototype,"sCapHeight",2),at([y("uint16")],ot.prototype,"usDefaultChar",2),at([y("uint16")],ot.prototype,"usBreakChar",2),at([y("uint16")],ot.prototype,"usMaxContext",2),ot=at([Kt("OS/2","os2")],ot);var Vd=Object.defineProperty,zd=Object.getOwnPropertyDescriptor,Ue=(r,t,e,A)=>{for(var i=A>1?void 0:A?zd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Vd(t,e,i),i};let Be=class extends $t{constructor(r=new ArrayBuffer(32),t,e){super(r,t,e)}};Ue([y("fixed")],Be.prototype,"format",2),Ue([y("fixed")],Be.prototype,"italicAngle",2),Ue([y("int16")],Be.prototype,"underlinePosition",2),Ue([y("int16")],Be.prototype,"underlineThickness",2),Ue([y("uint32")],Be.prototype,"isFixedPitch",2),Ue([y("uint32")],Be.prototype,"minMemType42",2),Ue([y("uint32")],Be.prototype,"maxMemType42",2),Ue([y("uint32")],Be.prototype,"minMemType1",2),Ue([y("uint32")],Be.prototype,"maxMemType1",2),Be=Ue([Kt("post")],Be);var Wd=Object.defineProperty,qd=Object.getOwnPropertyDescriptor,ne=(r,t,e,A)=>{for(var i=A>1?void 0:A?qd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Wd(t,e,i),i};let Vt=class extends $t{constructor(r=new ArrayBuffer(36),t){super(r,t,Math.min(36,r.byteLength-(t??0)))}};ne([y("fixed")],Vt.prototype,"version",2),ne([y("int16")],Vt.prototype,"vertTypoAscender",2),ne([y("int16")],Vt.prototype,"vertTypoDescender",2),ne([y("int16")],Vt.prototype,"vertTypoLineGap",2),ne([y("int16")],Vt.prototype,"advanceHeightMax",2),ne([y("int16")],Vt.prototype,"minTopSideBearing",2),ne([y("int16")],Vt.prototype,"minBottomSideBearing",2),ne([y("int16")],Vt.prototype,"yMaxExtent",2),ne([y("int16")],Vt.prototype,"caretSlopeRise",2),ne([y("int16")],Vt.prototype,"caretSlopeRun",2),ne([y("int16")],Vt.prototype,"caretOffset",2),ne([y({type:"int16",size:4})],Vt.prototype,"reserved",2),ne([y("int16")],Vt.prototype,"metricDataFormat",2),ne([y("int16")],Vt.prototype,"numOfLongVerMetrics",2),Vt=ne([Kt("vhea")],Vt);var Xd=Object.getOwnPropertyDescriptor,jd=(r,t,e,A)=>{for(var i=A>1?void 0:A?Xd(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Ur=class extends $t{static from(r){const t=r.length*4,e=new Ur(new ArrayBuffer(t));return r.forEach(A=>{e.view.writeUint16(A.advanceHeight),e.view.writeInt16(A.topSideBearing)}),e}_metrics;get metrics(){return this._metrics??=this.readMetrics()}readMetrics(){const r=this._sfnt.maxp.numGlyphs,t=this._sfnt.vhea?.numOfLongVerMetrics??0,e=this.view;e.seek(0);let A=0;return Array.from({length:r}).map((i,s)=>(s<t&&(A=e.readUint16()),{advanceHeight:A,topSideBearing:e.readUint8()}))}};Ur=jd([Kt("vmtx")],Ur);var Zd=Object.defineProperty,Yi=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&Zd(t,e,i),i};class ve extends wr{format="TrueType";mimeType="font/ttf";_sfnt;get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static signature=new Set([65536,1953658213,1954115633]);static is(t){return typeof t=="number"?this.signature.has(t):this.signature.has(YA(t).getUint32(0))}static checksum(t){const e=YA(t);let A=e.byteLength;for(;A%4;)A++;let i=0;for(let s=0,n=A/4;s<n;s+=4)s*4<A-4&&(i+=e.getUint32(s*4,!1));return i&4294967295}static from(t){const e=g=>g+3&-4,A=t.tableViews.size,i=Array.from(t.tableViews.values()).reduce((g,u)=>g+e(u.byteLength),0),s=new this(new ArrayBuffer(12+A*16+i));s.scalerType=65536,s.numTables=A;const n=Math.log(2);s.searchRange=Math.floor(Math.log(A)/n)*16,s.entrySelector=Math.floor(s.searchRange/n),s.rangeShift=A*16-s.searchRange;let o=12+A*16,a=0;const l=s.getDirectories();t.tableViews.forEach((g,u)=>{const d=l[a++];d.tag=u,d.checkSum=this.checksum(g),d.offset=o,d.length=g.byteLength,s.view.writeBytes(g,o),o+=e(d.length)});const c=s.createSFNT().head;return c.checkSumAdjustment=0,c.checkSumAdjustment=2981146554-this.checksum(s.view),s}getDirectories(){let t=this.view.byteOffset+12;return Array.from({length:this.numTables},()=>{const e=new VA(this.view.buffer,t);return t+=e.view.byteLength,e})}createSFNT(){return new ke(this.getDirectories().reduce((t,e)=>(t[e.tag]=new DataView(this.view.buffer,this.view.byteOffset+e.offset,e.length),t),{}))}}Yi([y("uint32")],ve.prototype,"scalerType"),Yi([y("uint16")],ve.prototype,"numTables"),Yi([y("uint16")],ve.prototype,"searchRange"),Yi([y("uint16")],ve.prototype,"entrySelector"),Yi([y("uint16")],ve.prototype,"rangeShift");class vn extends ve{format="OpenType";mimeType="font/otf";static signature=new Set([1330926671]);static from(t){return super.from(t)}}var $d=Object.defineProperty,Vi=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&$d(t,e,i),i};class MA extends fe{constructor(t,e){super(t,e,20)}}Vi([y({type:"char",size:4})],MA.prototype,"tag"),Vi([y("uint32")],MA.prototype,"offset"),Vi([y("uint32")],MA.prototype,"compLength"),Vi([y("uint32")],MA.prototype,"origLength"),Vi([y("uint32")],MA.prototype,"origChecksum");var tI=Object.defineProperty,de=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&tI(t,e,i),i};const ce=class Zn extends wr{format="WOFF";mimeType="font/woff";get subfontFormat(){return ve.is(this.flavor)?"TrueType":vn.is(this.flavor)?"OpenType":"Open"}_sfnt;get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static signature=new Set([2001684038]);static is(t){return typeof t=="number"?this.signature.has(t):this.signature.has(YA(t).getUint32(0))}static checkSum(t){const e=YA(t),A=e.byteLength,i=Math.floor(A/4);let s=0,n=0;for(;n<i;)s+=e.getUint32(4*n++,!1);let o=A-i*4;if(o){let a=i*4;for(;o>0;)s+=e.getUint8(a)<<o*8,a++,o--}return s%4294967296}static from(t,e=new ArrayBuffer(0)){const A=g=>g+3&-4,i=[];t.tableViews.forEach((g,u)=>{const d=YA(Jf(new Uint8Array(g.buffer,g.byteOffset,g.byteLength)));i.push({tag:u,view:d.byteLength<g.byteLength?d:g,rawView:g})});const s=i.length,n=i.reduce((g,u)=>g+A(u.view.byteLength),0),o=new Zn(new ArrayBuffer(44+20*s+n+e.byteLength));o.signature=2001684038,o.flavor=65536,o.length=o.view.byteLength,o.numTables=s,o.totalSFNTSize=12+16*s+i.reduce((g,u)=>g+A(u.rawView.byteLength),0);let a=44+s*20,l=0;const c=o.getDirectories();return i.forEach(g=>{const u=c[l++];u.tag=g.tag,u.offset=a,u.compLength=g.view.byteLength,u.origChecksum=Zn.checkSum(g.rawView),u.origLength=g.rawView.byteLength,o.view.writeBytes(g.view,a),a+=A(u.compLength)}),o.view.writeBytes(e),o}getDirectories(){let t=44;return Array.from({length:this.numTables},()=>{const e=new MA(this.view.buffer,t);return t+=e.view.byteLength,e})}createSFNT(){return new ke(this.getDirectories().reduce((t,e)=>{const A=e.tag,i=this.view.byteOffset+e.offset,s=e.compLength,n=e.origLength,o=i+s;return t[A]=s>=n?new DataView(this.view.buffer,i,s):new DataView(Kf(new Uint8Array(this.view.buffer.slice(i,o))).buffer),t},{}))}};de([y("uint32")],ce.prototype,"signature"),de([y("uint32")],ce.prototype,"flavor"),de([y("uint32")],ce.prototype,"length"),de([y("uint16")],ce.prototype,"numTables"),de([y("uint16")],ce.prototype,"reserved"),de([y("uint32")],ce.prototype,"totalSFNTSize"),de([y("uint16")],ce.prototype,"majorVersion"),de([y("uint16")],ce.prototype,"minorVersion"),de([y("uint32")],ce.prototype,"metaOffset"),de([y("uint32")],ce.prototype,"metaLength"),de([y("uint32")],ce.prototype,"metaOrigLength"),de([y("uint32")],ce.prototype,"privOffset"),de([y("uint32")],ce.prototype,"privLength");let Nr=ce;function bl(r,t=!0){if(ve.is(r))return new ve(r);if(vn.is(r))return new vn(r);if(Nr.is(r))return new Nr(r);if(t)throw new Error("Failed to parseFont")}function Dl(r,t=!0){const e=bl(r,!1);if(e)return e;if(t)throw new Error("Failed to parseFont")}class Fr{static defaultRequestInit={cache:"force-cache"};fallbackFont;loading=new Map;loaded=new Map;familyToUrl=new Map;setFallbackFont(t){this.fallbackFont=t}async loadFallbackFont(t,e={}){this.fallbackFont=await this.load(t,e)}_createRequest(t,e){const A=new AbortController;return{url:t,when:fetch(t,{...Fr.defaultRequestInit,...e,signal:A.signal}).then(i=>i.arrayBuffer()),cancel:()=>A.abort()}}injectFontFace(t,e){return document.fonts.add(new FontFace(t,e)),this}injectStyleTag(t,e){const A=document.createElement("style");return A.appendChild(document.createTextNode(`@font-face {
|
|
859
|
+
font-family: "${t}";
|
|
860
860
|
src: url(${e});
|
|
861
|
-
}`)),document.head.appendChild(t),this}_parseUrls(A){const e=Array.from(new Set([...A.split(","),A]));return Array.from(new Set(e.map(t=>this.familyToUrl.get(t.trim())??this.familyToUrl.get(t)??t)))}get(A){let e;return A&&(e=this._parseUrls(A).reduce((i,s)=>i||this.loaded.get(s),void 0)),e??this.fallbackFont}set(A,e){return this.familyToUrl.set(A,e.src),this.loaded.set(e.src,e),this}delete(A){return this._parseUrls(A).forEach(e=>{this.familyToUrl.delete(e),this.loaded.delete(e)}),this}clear(){return this.familyToUrl.clear(),this.loading.clear(),this.loaded.clear(),this}async load(A,e={}){const{cancelOther:t,injectFontFace:i=!0,injectStyleTag:s=!0,...n}=e;let o,a;if(typeof A=="string"?o=A:{src:o,family:a}=A,this.loaded.has(o))return t&&(this.loading.forEach(I=>I.cancel()),this.loading.clear()),h(this.loaded.get(o));let l=this.loading.get(o);return l||(l=this._createRequest(o,n),this.loading.set(o,l)),t&&this.loading.forEach((I,d)=>{I!==l&&(I.cancel(),this.loading.delete(d))}),l.when.then(I=>{if(this.loaded.has(o))return h(this.loaded.get(o));{const d=f(I);return e.noAdd||this.loaded.set(o,d),d.familySet.forEach(C=>{this.familyToUrl.set(C,o),typeof document<"u"&&(i&&this.injectFontFace(C,I),s&&this.injectStyleTag(C,o))}),d}}).catch(I=>{if(I instanceof DOMException&&I.message==="The user aborted a request.")return f();throw I}).finally(()=>{this.loading.delete(o)});function c(){return a?Array.isArray(a)?a:[a]:[]}function h(I){return c().forEach(d=>{I.familySet.add(d)}),I}function f(I=new ArrayBuffer(0)){let d;function C(){return d||(d=I.byteLength?Hl(I,!1):void 0),d}function p(){const x=C();if(x instanceof yt||x instanceof Vr)return x.sfnt}return{src:o,family:a,buffer:I,familySet:new Set(c()),getFont:C,getSFNT:p}}}async waitUntilLoad(){await Promise.all(Array.from(this.loading.values()).map(A=>A.when))}};u(os,"defaultRequestInit",{cache:"force-cache"});let zr=os;const Jl=new zr,uI=Object.freeze(Object.defineProperty({__proto__:null,BaseFont:Pr,get Cff(){return SA},get Cmap(){return ti},CmapSubtableFormat0:Mn,CmapSubtableFormat12:Un,CmapSubtableFormat14:ji,CmapSubtableFormat2:Wi,CmapSubtableFormat4:kn,CmapSubtableFormat6:RA,FontDataObject:It,FontDataView:Fe,Fonts:zr,get Glyf(){return Lr},Glyph:Dn,GlyphSet:xn,get Gpos(){return Tn},get Gsub(){return Zt},get Head(){return Re},get Hhea(){return Ve},get Hmtx(){return Or},get Kern(){return Gn},get Loca(){return Hr},get Maxp(){return Ge},get Name(){return Ai},get Os2(){return ae},get Post(){return Qt},SFNT:xA,TTF:yt,TableDirectory:$A,get Vhea(){return ze},get Vmtx(){return Kr},WOFF:Vr,WOFFTableDirectoryEntry:kA,createCmapSegments:Pn,dataTypeToByteLength:Yi,defineColumn:y,defineSFNTTable:Ye,fonts:Jl,parseFont:Hl,parseSFNTFont:Ol},Symbol.toStringTag,{value:"Module"}));function On(r,A,e){if(typeof A=="string"&&A.startsWith("linear-gradient")){const{x0:t,y0:i,x1:s,y1:n,stops:o}=fI(A,e.left,e.top,e.width,e.height),a=r.createLinearGradient(t,i,s,n);return o.forEach(l=>a.addColorStop(l.offset,l.color)),a}return A}function Wr(r,A,e){r!=null&&r.color&&(r.color=On(e,r.color,A)),r!=null&&r.backgroundColor&&(r.backgroundColor=On(e,r.backgroundColor,A)),r!=null&&r.textStrokeColor&&(r.textStrokeColor=On(e,r.textStrokeColor,A))}function fI(r,A,e,t,i){var I;const s=((I=r.match(/linear-gradient\((.+)\)$/))==null?void 0:I[1])??"",n=s.split(",")[0],o=n.includes("deg")?n:"0deg",a=s.replace(o,"").matchAll(/(#|rgba|rgb)(.+?) ([\d.]+%)/gi),c=(Number(o.replace("deg",""))||0)*Math.PI/180,h=t*Math.sin(c),f=i*Math.cos(c);return{x0:A+t/2-h,y0:e+i/2+f,x1:A+t/2+h,y1:e+i/2-f,stops:Array.from(a).map(d=>{let C=d[2];return C.startsWith("(")?C=C.split(",").length>3?`rgba${C}`:`rgb${C}`:C=`#${C}`,{offset:Number(d[3].replace("%",""))/100,color:C}})}}function ii(r){const{ctx:A,path:e,fontSize:t,clipRect:i}=r;A.save(),A.beginPath();const s=e.style,n={...s,fill:r.color??s.fill,stroke:r.textStrokeColor??s.stroke,strokeWidth:r.textStrokeWidth?r.textStrokeWidth*t:s.strokeWidth,strokeLinecap:"round",strokeLinejoin:"round",shadowOffsetX:(r.shadowOffsetX??0)*t,shadowOffsetY:(r.shadowOffsetY??0)*t,shadowBlur:(r.shadowBlur??0)*t,shadowColor:r.shadowColor};i&&(A.rect(i.left,i.top,i.width,i.height),A.clip(),A.beginPath()),e.drawTo(A,n),A.restore()}function dI(r,A,e){const{left:t,top:i,width:s,height:n}=e,o=r.canvas;o.dataset.viewBox=`${t} ${i} ${s} ${n}`,o.dataset.pixelRatio=String(A);const a=s,l=n;o.width=Math.max(1,Math.ceil(a*A)),o.height=Math.max(1,Math.ceil(l*A)),o.style.width=`${a}px`,o.style.height=`${l}px`,r.clearRect(0,0,o.width,o.height),r.scale(A,A),r.translate(-t,-i)}function II(r,A){const{paragraphs:e,computedStyle:t,glyphBox:i}=A;Wr(t,i,r),e.forEach(s=>{Wr(s.computedStyle,s.lineBox,r),s.fragments.forEach(n=>{Wr(n.computedStyle,n.inlineBox,r)})})}const pI=new Set(["©","®","÷"]),EI=new Set(["—","…","“","”","﹏","﹋","﹌","‘","’","˜"]),BI={1:"italic",32:"bold"},CI={1:"italic",2:"bold"},Kl={100:-.2,200:-.1,300:0,400:0,normal:0,500:.1,600:.2,700:.3,bold:.3,800:.4,900:.5};class QI{constructor(A,e,t){u(this,"path",new Ne);u(this,"lineBox",new he);u(this,"inlineBox",new he);u(this,"glyphBox");u(this,"advanceWidth",0);u(this,"advanceHeight",0);u(this,"underlinePosition",0);u(this,"underlineThickness",0);u(this,"strikeoutPosition",0);u(this,"strikeoutSize",0);u(this,"ascender",0);u(this,"descender",0);u(this,"typoAscender",0);u(this,"typoDescender",0);u(this,"typoLineGap",0);u(this,"winAscent",0);u(this,"winDescent",0);u(this,"xHeight",0);u(this,"capHeight",0);u(this,"baseline",0);u(this,"centerDiviation",0);u(this,"fontStyle");this.content=A,this.index=e,this.parent=t}get compatibleGlyphBox(){const A=this.computedStyle.fontSize*.8;return this.glyphBox??(this.isVertical?new he(this.lineBox.left+this.lineBox.width/2-A/2,this.lineBox.top,A,this.lineBox.height):new he(this.lineBox.left,this.lineBox.top+this.lineBox.height/2-A/2,this.lineBox.width,A))}get center(){return this.compatibleGlyphBox.center}get computedStyle(){return this.parent.computedStyle}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get fontSize(){return this.computedStyle.fontSize}get fontHeight(){return this.fontSize*this.computedStyle.lineHeight}_getFontSFNT(A){const e=this.computedStyle.fontFamily,t=A??Jl,i=e?t.get(e):t.fallbackFont;return i==null?void 0:i.getSFNT()}updateGlyph(A=this._getFontSFNT()){if(!A)return this;const{hhea:e,os2:t,post:i,head:s}=A,n=s.unitsPerEm,o=e.ascent,a=e.descent,{content:l,computedStyle:c,isVertical:h}=this,{fontSize:f}=c,I=n/f,d=A.getAdvanceWidth(l,f),C=(o+Math.abs(a))/I,p=o/I;return this.advanceWidth=d,this.advanceHeight=C,this.inlineBox.width=h?C:d,this.inlineBox.height=h?d:C,this.underlinePosition=(o-i.underlinePosition)/I,this.underlineThickness=i.underlineThickness/I,this.strikeoutPosition=(o-t.yStrikeoutPosition)/I,this.strikeoutSize=t.yStrikeoutSize/I,this.ascender=o/I,this.descender=a/I,this.typoAscender=t.sTypoAscender/I,this.typoDescender=t.sTypoDescender/I,this.typoLineGap=t.sTypoLineGap/I,this.winAscent=t.usWinAscent/I,this.winDescent=t.usWinDescent/I,this.xHeight=t.sxHeight/I,this.capHeight=t.sCapHeight/I,this.baseline=p,this.centerDiviation=C/2-p,this.fontStyle=BI[t.fsSelection]??CI[s.macStyle],this}update(A){const e=this._getFontSFNT(A);if(!e)return this;this.updateGlyph(e);const{isVertical:t,content:i,computedStyle:s,baseline:n,inlineBox:o,ascender:a,descender:l,typoAscender:c,fontStyle:h,advanceWidth:f,advanceHeight:I}=this,{left:d,top:C}=o,p=s.fontStyle==="italic"&&h!=="italic";let x=d,P=C+n,w;const R=new Ne;if(t&&(x+=(I-f)/2,Math.abs(f-I)>.1&&(P-=(a-c)/(a+Math.abs(l))*I),w=void 0),t&&!pI.has(i)&&(i.codePointAt(0)<=256||EI.has(i))){R.addCommands(e.getPathCommands(i,x,C+n-(I-f)/2,s.fontSize));const m={y:C-(I-f)/2+I/2,x:x+f/2};p&&this._italic(R,t?{x:m.x,y:C-(I-f)/2+n}:void 0),R.rotate(90,m)}else w!==void 0?(R.addCommands(e.glyphs.get(w).getPathCommands(x,P,s.fontSize)),p&&this._italic(R,t?{x:x+f/2,y:C+c/(a+Math.abs(l))*I}:void 0)):(R.addCommands(e.getPathCommands(i,x,P,s.fontSize)),p&&this._italic(R,t?{x:x+I/2,y:P}:void 0));const v=s.fontWeight??400;return v in Kl&&(v===700||v==="bold")&&h!=="bold"&&R.bold(Kl[v]*s.fontSize*.05),R.style={fill:s.color,stroke:s.textStrokeWidth?s.textStrokeColor:"none",strokeWidth:s.textStrokeWidth?s.textStrokeWidth*s.fontSize*.03:0},this.path=R,this.glyphBox=this.getGlyphBoundingBox(),this}_italic(A,e){A.skew(-.24,0,e||{y:this.inlineBox.top+this.baseline,x:this.inlineBox.left+this.inlineBox.width/2})}getGlyphMinMax(A,e,t){var i;if((i=this.path.curves[0])!=null&&i.curves.length)return this.path.getMinMax(A,e,t)}getGlyphBoundingBox(A){const e=this.getGlyphMinMax(void 0,void 0,A);if(!e)return;const{min:t,max:i}=e;return new he(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(A,e={}){const t=this.computedStyle,i={ctx:A,path:this.path,fontSize:t.fontSize,color:t.color,...e};if(this.glyphBox)ii(i);else{A.save(),A.beginPath();const s=this.path.style,n={...s,fill:i.color??s.fill,stroke:i.textStrokeColor??s.stroke,strokeWidth:i.textStrokeWidth?i.textStrokeWidth*i.fontSize:s.strokeWidth,shadowOffsetX:(i.shadowOffsetX??0)*i.fontSize,shadowOffsetY:(i.shadowOffsetY??0)*i.fontSize,shadowBlur:(i.shadowBlur??0)*i.fontSize,shadowColor:i.shadowColor};An(A,n),A.font=`${i.fontSize}px ${i.fontFamily}`,this.isVertical?(A.textBaseline="middle",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.inlineBox.height/2)):(A.textBaseline="alphabetic",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.baseline)),A.restore()}}}function Yl(){const r=new Map;async function A(t){if(!r.has(t)){r.set(t,t);try{r.set(t,await fetch(t).then(i=>i.text()))}catch(i){console.warn(i),r.delete(t)}}}function e(t){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("blob://")}return{loaded:r,needsLoad:e,load:A}}function Vl(r){const A=new Map;function e(t){let i=A.get(t);if(!i){const s=cn(r.needsLoad(t)?r.loaded.get(t)??t:t),n=gn(s);i={dom:s,pathSet:n},A.set(t,i)}return i}return{parsed:A,parse:e}}function Hn(r,A){return typeof r=="number"?r:r.endsWith("%")?(r=r.substring(0,r.length-1),Math.ceil(Number(r)/100*A.total)):r.endsWith("rem")?(r=r.substring(0,r.length-3),Number(r)*A.fontSize):r.endsWith("em")?(r=r.substring(0,r.length-2),Number(r)*A.fontSize):Number(r)}function Jn(r){return ce(r)?{}:r}function yI(r,A){const e=Object.keys(r),t=Object.keys(A);return Array.from(new Set([...e,...t])).every(s=>ri(r[s],A[s]))}function ri(r,A){const e=typeof r;return e===typeof A?e==="object"?yI(r,A):r===A:!1}function Kn(r){if(!r)return r;const A={};for(const e in r)r[e]!==""&&r[e]!==void 0&&(A[e]=r[e]);return A}class mI{constructor(A,e={},t){u(this,"inlineBox",new he);this.content=A,this.style=e,this.parent=t,this.updateComputedStyle().initCharacters()}get computedContent(){const A=this.computedStyle;return A.textTransform==="uppercase"?this.content.toUpperCase():A.textTransform==="lowercase"?this.content.toLowerCase():this.content}updateComputedStyle(){return this.computedStyle={...this.parent.computedStyle,...Kn(this.style)},this}initCharacters(){const A=[];let e=0;for(const t of this.computedContent)A.push(new QI(t,e++,this));return this.characters=A,this}}class wI{constructor(A,e){u(this,"lineBox",new he);u(this,"fragments",[]);this.style=A,this.parentStyle=e,this.updateComputedStyle()}updateComputedStyle(){return this.computedStyle={...Kn(this.parentStyle),...Kn(this.style)},this}addFragment(A,e){const t=new mI(A,e,this);return this.fragments.push(t),t}}function SE(r){return r}const di=class di{_toDOMStyle(A){const e={};for(const t in A){const i=A[t];di.notZeroStyles.has(t)&&i===0||(typeof i=="number"&&di.pxStyles.has(t)?e[t]=`${i}px`:e[t]=i)}return e}createDOM(A,e){const t=document.createElement("section"),i={...e},s=e.writingMode.includes("horizontal");switch(e.textAlign){case"start":case"left":i.justifyContent="flex-start";break;case"center":i.justifyContent="center";break;case"end":case"right":i.justifyContent="flex-end";break}switch(e.verticalAlign){case"top":i.alignItems="flex-start";break;case"middle":i.alignItems="center";break;case"bottom":i.alignItems="flex-end";break}const n=!!(i.justifyContent||i.alignItems);Object.assign(t.style,{...this._toDOMStyle({...i,boxSizing:i.boxSizing??"border-box",display:i.display??(n?"inline-flex":void 0),width:i.width??"max-content",height:i.height??"max-content"}),whiteSpace:"pre-wrap",wordBreak:"break-all"});const o=document.createElement("ul");return Object.assign(o.style,{verticalAlign:"inherit",listStyleType:"inherit",padding:"0",margin:"0",width:n&&s?"100%":void 0,height:n&&!s?"100%":void 0}),A.forEach(a=>{const l=document.createElement("li");Object.assign(l.style,{verticalAlign:"inherit",...this._toDOMStyle(a.style)}),a.fragments.forEach(c=>{const h=document.createElement("span");Object.assign(h.style,{verticalAlign:"inherit",...this._toDOMStyle(c.style)}),h.appendChild(document.createTextNode(c.content)),l.appendChild(h)}),o.appendChild(l)}),t.appendChild(o),t}measureDOMText(A){const e=document.createRange();e.selectNodeContents(A);const t=A.data??"";let i=0;return Array.from(t).map(s=>{var h;const n=i+=t.substring(i).indexOf(s),o=n+s.length;i+=s.length,e.setStart(A,Math.max(n,0)),e.setEnd(A,o);const a=((h=e.getClientRects)==null?void 0:h.call(e))??[e.getBoundingClientRect()];let l=a[a.length-1];a.length>1&&l.width<2&&(l=a[a.length-2]);const c=e.toString();if(c!==""&&l&&l.width+l.height!==0)return{content:c,top:l.top,left:l.left,height:l.height,width:l.width}}).filter(Boolean)}measureDOM(A){const e=[],t=[],i=[];return A.querySelectorAll("li").forEach((s,n)=>{const o=s.getBoundingClientRect();e.push({paragraphIndex:n,left:o.left,top:o.top,width:o.width,height:o.height}),s.querySelectorAll(":scope > *").forEach((a,l)=>{const c=a.getBoundingClientRect();t.push({paragraphIndex:n,fragmentIndex:l,left:c.left,top:c.top,width:c.width,height:c.height});let h=0;!a.children.length&&a.firstChild instanceof window.Text?this.measureDOMText(a.firstChild).forEach(f=>{i.push({...f,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:h++,textWidth:-1,textHeight:-1})}):a.querySelectorAll(":scope > *").forEach(f=>{f.firstChild instanceof window.Text&&this.measureDOMText(f.firstChild).forEach(I=>{i.push({...I,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:h++,textWidth:-1,textHeight:-1})})})})}),{paragraphs:e,fragments:t,characters:i}}measureParagraphDOM(A,e){const t=e.getBoundingClientRect(),i=this.measureDOM(e);i.paragraphs.forEach(o=>{const a=A[o.paragraphIndex];a.lineBox.left=o.left-t.left,a.lineBox.top=o.top-t.top,a.lineBox.width=o.width,a.lineBox.height=o.height}),i.fragments.forEach(o=>{const a=A[o.paragraphIndex].fragments[o.fragmentIndex];a.inlineBox.left=o.left-t.left,a.inlineBox.top=o.top-t.top,a.inlineBox.width=o.width,a.inlineBox.height=o.height});const s=[];let n=0;return i.characters.forEach(o=>{const{paragraphIndex:a,fragmentIndex:l,characterIndex:c}=o;s.push({...o,newParagraphIndex:a,left:o.left-t.left,top:o.top-t.top});const h=A[a].fragments[l].characters[c],{fontHeight:f,isVertical:I}=h,d=s[n];h.inlineBox.left=d.left,h.inlineBox.top=d.top,h.inlineBox.width=d.width,h.inlineBox.height=d.height,I?(h.lineBox.left=d.left+(d.width-f)/2,h.lineBox.top=d.top,h.lineBox.width=f,h.lineBox.height=d.height):(h.lineBox.left=d.left,h.lineBox.top=d.top+(d.height-f)/2,h.lineBox.width=d.width,h.lineBox.height=f),n++}),{paragraphs:A,boundingBox:new he(0,0,t.width,t.height)}}measure(A,e,t){let i;t||(t=this.createDOM(A,e),Object.assign(t.style,{position:"fixed",visibility:"hidden"}),document.body.appendChild(t),i=()=>{var n;return(n=t==null?void 0:t.parentNode)==null?void 0:n.removeChild(t)});const s=this.measureParagraphDOM(A,t);return i==null||i(),s}};u(di,"notZeroStyles",new Set(["width","height"])),u(di,"pxStyles",new Set(["width","height","fontSize","letterSpacing","textStrokeWidth","textIndent","shadowOffsetX","shadowOffsetY","shadowBlur","margin","marginLeft","marginTop","marginRight","marginBottom","padding","paddingLeft","paddingTop","paddingRight","paddingBottom"]));let Yn=di;class vI{constructor(){u(this,"eventListeners",new Map)}addEventListener(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}removeEventListener(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const c=i[a];(c.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof c.options=="boolean"||!((s=c.options)!=null&&s.once)))&&o.push(c)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}dispatchEvent(A,e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,[e])}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,[e]);return!0}else return!1}on(A,e,t){return this.addEventListener(A,e,t)}once(A,e){return this.addEventListener(A,e,{once:!0})}off(A,e,t){return this.removeEventListener(A,e,t)}emit(A,e){this.dispatchEvent(A,e)}}function _I(){const r=new nA,A=Yl(),e=Vl(A);return{name:"background",pathSet:r,load:async t=>{const{backgroundImage:i}=t.style;i&&A.needsLoad(i)&&await A.load(i)},update:t=>{r.paths.length=0;const{style:i,lineBox:s,isVertical:n}=t,{backgroundImage:o,backgroundSize:a,backgroundColormap:l}=i;if(ce(o))return;const{pathSet:c}=e.parse(o),h=c.getBoundingBox(!0);let f,I,d,C;n?{x:I,y:f,width:C,height:d}=s:{x:f,y:I,width:d,height:C}=s;const p=Jn(l??"none"),x=c.paths.map(v=>{const m=v.clone();return m.style.fill&&m.style.fill in p&&(m.style.fill=p[m.style.fill]),m.style.stroke&&m.style.stroke in p&&(m.style.stroke=p[m.style.stroke]),m});let P,w;if(a==="rigid"){P=Math.max(t.fontSize*5/h.width),w=P;const v=new G;v.x=h.width-d/P,v.y=h.height-C/w,x.forEach(m=>{m.applyTransform(b=>{const D=b.x>h.left+h.width/2,z=b.y>h.top+h.height/2;D&&(b.x-=v.x),z&&(b.y-=v.y)})})}else P=d/h.width,w=C/h.height;const R=new Ke;R.translate(-h.x,-h.y),R.scale(P,w),n&&(R.translate(-d/2,-C/2),R.rotate(-Math.PI/2),R.translate(C/2,d/2)),R.translate(f,I),x.forEach(v=>{v.applyTransform(m=>{m.applyMatrix3(R)})}),r.paths.push(...x)},renderOrder:-2,render:(t,i)=>{const{boundingBox:s,computedStyle:n}=i;ce(n.backgroundColor)||(t.fillStyle=n.backgroundColor,t.fillRect(...s.array)),r.paths.forEach(o=>{if(ii({ctx:t,path:o,fontSize:n.fontSize}),i.debug){const a=new nA([o]).getBoundingBox();a&&t.strokeRect(a.x,a.y,a.width,a.height)}}),i.paragraphs.forEach(o=>{const{lineBox:a,style:l}=o;ce(l.backgroundColor)||(t.fillStyle=l.backgroundColor,t.fillRect(...a.array)),o.fragments.forEach(c=>{const{inlineBox:h,style:f}=c;ce(f.backgroundColor)||(t.fillStyle=f.backgroundColor,t.fillRect(...h.array))})})}}}function Vn(r){const{highlight:A,highlightImage:e,highlightReferImage:t,highlightColormap:i,highlightLine:s,highlightSize:n,highlightThickness:o}=r;return{image:(A==null?void 0:A.image)??e??"none",referImage:(A==null?void 0:A.referImage)??t??"none",colormap:(A==null?void 0:A.colormap)??i??"none",line:(A==null?void 0:A.line)??s??"none",size:(A==null?void 0:A.size)??n??"cover",thickness:(A==null?void 0:A.thickness)??o??"100%"}}function bI(){const r=new nA,A=[],e=Yl(),t=Vl(e);return{name:"highlight",pathSet:r,load:async i=>{const s=new Set;i.forEachCharacter(n=>{const{computedStyle:o}=n,{image:a,referImage:l}=Vn(o);a&&e.needsLoad(a)&&s.add(a),l&&e.needsLoad(l)&&s.add(l)}),await Promise.all(Array.from(s).map(n=>e.load(n)))},update:i=>{A.length=0,r.paths.length=0;let s=[],n,o;i.forEachCharacter(a=>{const{computedStyle:l}=a,c=Vn(l),{image:h,colormap:f,line:I,size:d,thickness:C}=c;if(ce(h))n!=null&&n.length&&(n=[],s.push(n));else{const{inlineBox:p,isVertical:x}=a,{fontSize:P}=l;(!o||ri(o.image,h)&&ri(o.colormap,f)&&ri(o.line,I)&&ri(o.size,d)&&ri(o.thickness,C))&&(n!=null&&n.length)&&(x?n[0].inlineBox.left===p.left:n[0].inlineBox.top===p.top)&&n[0].fontSize===P?n.push(a):(n=[],n.push(a),s.push(n))}o=c}),s=s.filter(a=>a.length);for(let a=0;a<s.length;a++){const l=s[a],c=l[0],h=he.from(...l.map(J=>J.compatibleGlyphBox));if(!h.height||!h.width)continue;const{computedStyle:f,isVertical:I,inlineBox:d,compatibleGlyphBox:C,strikeoutPosition:p,underlinePosition:x}=c,{fontSize:P}=f,{image:w,referImage:R,colormap:v,line:m,size:b,thickness:D}=Vn(f),z=Hn(D,{fontSize:P,total:h.width})/h.width,Ae=Jn(v),{pathSet:W,dom:K}=t.parse(w),te=W.getBoundingBox(!0),Y=P/te.width*2,L=new he().copy(h);I&&(L.width=h.height,L.height=h.width,L.left=h.left+h.width);const se=Math.floor(L.width);let H=se;b!=="cover"&&(H=Hn(b,{fontSize:P,total:h.width})||se,L.width=H);const q=!ce(R)&&ce(m);if(q)te.copy(t.parse(R).pathSet.getBoundingBox(!0));else{let J;if(ce(m))if(te.width/te.height>4){J="underline";const $=K.getAttribute("viewBox");if($){const[N,U,X,ee]=$.split(" ").map(j=>Number(j)),oe=U+ee/2;te.y<oe&&te.y+te.height>oe?J="line-through":te.y+te.height<oe?J="overline":J="underline"}}else J="outline";else J=m;switch(J){case"outline":{const $=L.width*.2,N=L.height*.2;I?(L.x-=N/2,L.y-=$/2,L.x-=L.height):(L.x-=$/2,L.y-=N/2),L.width+=$,L.height+=N;break}case"overline":L.height=te.height*Y,I?L.x=d.left+d.width:L.y=d.top;break;case"line-through":L.height=te.height*Y,I?L.x=d.left+d.width-p+L.height/2:L.y=d.top+p-L.height/2;break;case"underline":L.height=te.height*Y,I?L.x=C.left+C.width-x:L.y=d.top+x;break}}const ie=new Ke;if(ie.translate(-te.x,-te.y),ie.scale(L.width/te.width,L.height/te.height),I){const J=L.width/2,$=L.height/2;q||ie.translate(-J,-$),ie.rotate(-Math.PI/2),q||ie.translate($,J)}ie.translate(L.x,L.y);for(let J=0;J<Math.ceil(se/H);J++){const $=ie.clone();I?$.translate(0,J*L.width):$.translate(J*L.width,0),W.paths.forEach(N=>{const U=N.clone().applyTransform($);U.style.strokeWidth&&(U.style.strokeWidth*=Y*z),U.style.strokeMiterlimit&&(U.style.strokeMiterlimit*=Y),U.style.strokeDashoffset&&(U.style.strokeDashoffset*=Y),U.style.strokeDasharray&&(U.style.strokeDasharray=U.style.strokeDasharray.map(X=>X*Y)),U.style.fill&&U.style.fill in Ae&&(U.style.fill=Ae[U.style.fill]),U.style.stroke&&U.style.stroke in Ae&&(U.style.stroke=Ae[U.style.stroke]),r.paths.push(U),se!==H&&(I?A[r.paths.length-1]=new he(h.left-h.width*2,h.top,h.width*4,h.height):A[r.paths.length-1]=new he(h.left,h.top-h.height*2,h.width,h.height*4))})}}},renderOrder:-1,getBoundingBox:()=>{const i=[];return r.paths.forEach((s,n)=>{const o=A[n];let a=s.getBoundingBox();if(o){const l=Math.max(a.x,o.x),c=Math.max(a.y,o.y),h=Math.min(a.right,o.right),f=Math.min(a.bottom,o.bottom);a=new he(l,c,h-l,f-c)}i.push(a)}),he.from(...i)},render:(i,s)=>{r.paths.forEach((n,o)=>{if(ii({ctx:i,path:n,fontSize:s.computedStyle.fontSize,clipRect:A[o]}),s.debug){const a=new nA([n]).getBoundingBox();a&&i.strokeRect(a.x,a.y,a.width,a.height)}})}}}function DI(r,A){return`<svg width="${r*2}" height="${r*2}" xmlns="http://www.w3.org/2000/svg">
|
|
862
|
-
<circle cx="${r}" cy="${r}" r="${r}" fill="${
|
|
863
|
-
</svg>`}function xI(){const r=new nA;return{name:"listStyle",pathSet:r,update:A=>{r.paths.length=0;const{paragraphs:e,isVertical:t,fontSize:i}=A,s=i*.45;e.forEach(n=>{var m;const{computedStyle:o}=n,{color:a,listStyleImage:l,listStyleColormap:c,listStyleSize:h,listStyleType:f}=o,I=Jn(c);let d=h,C;if(!ce(l))C=l;else if(!ce(f)){const b=i*.38/2;switch(d=d==="cover"?b*2:d,f){case"disc":C=DI(b,String(a));break}}if(!C)return;const p=gn(C),x=p.getBoundingBox(),P=(m=n.fragments[0])==null?void 0:m.characters[0];if(!P)return;const{inlineBox:w}=P,R=d==="cover"?1:Hn(d,{total:i,fontSize:i})/i,v=new Ke;if(t){const b=i/x.height*R;v.translate(-x.left,-x.top).rotate(Math.PI/2).scale(b,b).translate(w.left+(w.width-x.height*b)/2,w.top-s)}else{const b=i/x.height*R;v.translate(-x.left,-x.top).scale(b,b).translate(w.left-x.width*b-s,w.top+(w.height-x.height*b)/2)}r.paths.push(...p.paths.map(b=>{const D=b.clone();return D.applyTransform(v),D.style.fill&&D.style.fill in I&&(D.style.fill=I[D.style.fill]),D.style.stroke&&D.style.stroke in I&&(D.style.stroke=I[D.style.stroke]),D}))})}}}function SI(){return{name:"outline"}}const gA=new G,si=new Ke,uA=new Ke;function MI(){return{name:"render",getBoundingBox:r=>{const{characters:A,fontSize:e,effects:t}=r,i=[];return A.forEach(s=>{t==null||t.forEach(n=>{if(!s.glyphBox)return;const o=s.glyphBox.clone(),a=zn(r,n);gA.set(o.left,o.top),gA.applyMatrix3(a),o.left=gA.x,o.top=gA.y,gA.set(o.right,o.bottom),gA.applyMatrix3(a),o.width=gA.x-o.left,o.height=gA.y-o.top;const l=(n.shadowOffsetX??0)*e,c=(n.shadowOffsetY??0)*e,h=Math.max(.1,n.textStrokeWidth??0)*e;o.left+=l-h,o.top+=c-h,o.width+=h*2,o.height+=h*2,i.push(o)})}),i.length?he.from(...i):void 0},render:(r,A)=>{const{paragraphs:e,glyphBox:t,effects:i}=A;i?i.forEach(s=>{Wr(s,t,r),r.save();const[n,o,a,l,c,h]=zn(A,s).transpose().elements;r.transform(n,l,o,c,a,h),A.forEachCharacter(f=>{f.drawTo(r,s)}),r.restore()}):e.forEach(s=>{s.fragments.forEach(n=>{n.characters.forEach(o=>{o.drawTo(r)})})}),A.debug&&e.forEach(s=>{r.strokeRect(s.lineBox.x,s.lineBox.y,s.lineBox.width,s.lineBox.height)})}}}function zn(r,A){const{fontSize:e,glyphBox:t}=r,i=(A.translateX??0)*e,s=(A.translateY??0)*e,n=Math.PI*2,o=(A.skewX??0)/360*n,a=(A.skewY??0)/360*n,{left:l,top:c,width:h,height:f}=t,I=l+h/2,d=c+f/2;return si.identity(),uA.makeTranslation(i,s),si.multiply(uA),uA.makeTranslation(I,d),si.multiply(uA),uA.set(1,Math.tan(o),0,Math.tan(a),1,0,0,0,1),si.multiply(uA),uA.makeTranslation(-I,-d),si.multiply(uA),si.clone()}function RI(){const r=new nA;return{name:"textDecoration",pathSet:r,update:A=>{r.paths.length=0;const e=[];let t,i;A.forEachCharacter(s=>{const{computedStyle:n,isVertical:o,inlineBox:a,underlinePosition:l,underlineThickness:c,strikeoutPosition:h,strikeoutSize:f}=s,{color:I,textDecoration:d,writingMode:C}=n;if(ce(d))i=void 0;else{let p=!1;if((i==null?void 0:i.textDecoration)===d&&(i==null?void 0:i.writingMode)===C&&(i==null?void 0:i.color)===I&&(o?t[0].inlineBox.left===a.left:t[0].inlineBox.top===a.top))switch(d){case"underline":t[0].underlinePosition===l&&t[0].underlineThickness===c&&(p=!0);break;case"line-through":t[0].strikeoutPosition===h&&t[0].strikeoutSize===f&&(p=!0);break}p?t.push(s):(t=[],t.push(s),e.push(t)),i=n}}),e.forEach(s=>{const{computedStyle:n,isVertical:o,underlinePosition:a,underlineThickness:l,strikeoutPosition:c,strikeoutSize:h}=s[0],{color:f,textDecoration:I}=n,d=he.from(...s.map(b=>b.inlineBox)),{left:C,top:p,width:x,height:P}=d;let w=o?C+x:p;const R=o?-1:1;let v=0;switch(I){case"overline":v=l*2;break;case"underline":w+=R*a,v=l*2;break;case"line-through":w+=R*c,v=h*2;break}w-=v;let m;o?m=new Ne([{type:"M",x:w,y:p},{type:"L",x:w,y:p+P},{type:"L",x:w+v,y:p+P},{type:"L",x:w+v,y:p},{type:"Z"}],{fill:f}):m=new Ne([{type:"M",x:C,y:w},{type:"L",x:C+x,y:w},{type:"L",x:C+x,y:w+v},{type:"L",x:C,y:w+v},{type:"Z"}],{fill:f}),r.paths.push(m)})},render:(A,e)=>{const{effects:t,computedStyle:i}=e;t?t.forEach(s=>{A.save();const[n,o,a,l,c,h]=zn(e,s).transpose().elements;A.transform(n,l,o,c,a,h),r.paths.forEach(f=>{ii({ctx:A,path:f,fontSize:i.fontSize,...s})}),A.restore()}):r.paths.forEach(s=>{ii({ctx:A,path:s,fontSize:i.fontSize})})}}}const Wn=So();class zl extends vI{constructor(e={}){super();u(this,"debug");u(this,"content");u(this,"style");u(this,"effects");u(this,"measureDOM");u(this,"needsUpdate",!0);u(this,"computedStyle",{...Wn});u(this,"paragraphs",[]);u(this,"lineBox",new he);u(this,"rawGlyphBox",new he);u(this,"glyphBox",new he);u(this,"pathBox",new he);u(this,"boundingBox",new he);u(this,"measurer",new Yn);u(this,"plugins",new Map);u(this,"fonts");this.set(e)}get fontSize(){return this.computedStyle.fontSize}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get characters(){return this.paragraphs.flatMap(e=>e.fragments.flatMap(t=>t.characters))}set(e={}){this.debug=e.debug??!1,this.content=ur(e.content??""),this.style=e.style??{},this.measureDOM=e.measureDOM,this.effects=e.effects,this.fonts=e.fonts,this.use(_I()).use(SI()).use(xI()).use(RI()).use(bI()).use(MI()),(e.plugins??[]).forEach(t=>{this.use(t)}),this.updateParagraphs()}use(e){return this.plugins.set(e.name,e),this}forEachCharacter(e){return this.paragraphs.forEach((t,i)=>{t.fragments.forEach((s,n)=>{s.characters.forEach((o,a)=>{e(o,{paragraphIndex:i,fragmentIndex:n,characterIndex:a})})})}),this}async load(){await Promise.all(Array.from(this.plugins.values()).map(e=>{var t;return(t=e.load)==null?void 0:t.call(e,this)}))}updateParagraphs(){this.computedStyle={...Wn,...this.style};const{content:e,computedStyle:t}=this,i=[];return e.forEach(s=>{const{fragments:n,...o}=s,a=new wI(o,t);n.forEach(l=>{const{content:c,...h}=l;c!==void 0&&a.addFragment(c,h)}),i.push(a)}),this.paragraphs=i,this}createDOM(){return this.updateParagraphs(),this.measurer.createDOM(this.paragraphs,this.computedStyle)}measure(e=this.measureDOM){const t={paragraphs:this.paragraphs,lineBox:this.lineBox,rawGlyphBox:this.rawGlyphBox,glyphBox:this.glyphBox,pathBox:this.pathBox,boundingBox:this.boundingBox};this.updateParagraphs();const i=this.measurer.measure(this.paragraphs,this.computedStyle,e);this.paragraphs=i.paragraphs,this.lineBox=i.boundingBox,this.characters.forEach(s=>{s.update(this.fonts)}),this.rawGlyphBox=this.getGlyphBox(),Array.from(this.plugins.values()).sort((s,n)=>(s.updateOrder??0)-(n.updateOrder??0)).forEach(s=>{var n;(n=s.update)==null||n.call(s,this)}),this.glyphBox=this.getGlyphBox(),this.updatePathBox().updateBoundingBox();for(const s in t)i[s]=this[s],this[s]=t[s];return this.emit("measure",{text:this,result:i}),i}getGlyphBox(){const e=G.MAX,t=G.MIN;return this.characters.forEach(i=>{if(!i.getGlyphMinMax(e,t)){const{inlineBox:s}=i,{left:n,top:o,width:a,height:l}=s,c=new G(n,o),h=new G(n+a,o+l);e.min(c,h),t.max(c,h)}}),new he(e.x,e.y,t.x-e.x,t.y-e.y)}updatePathBox(){return this.pathBox=he.from(this.glyphBox,...Array.from(this.plugins.values()).map(e=>{var t;return e.getBoundingBox?e.getBoundingBox(this):(t=e.pathSet)==null?void 0:t.getBoundingBox()}).filter(Boolean)),this}updateBoundingBox(){return this.boundingBox=he.from(this.rawGlyphBox,this.lineBox,this.pathBox),this}requestUpdate(){return this.needsUpdate=!0,this}update(e=this.measureDOM){const t=this.measure(e);for(const i in t)this[i]=t[i];return this.emit("update",{text:this}),this.needsUpdate=!1,this}render(e){var n;const{view:t,pixelRatio:i=2}=e,s=t.getContext("2d");s&&(this.needsUpdate&&this.update(),dI(s,i,this.boundingBox),II(s,this),Array.from(this.plugins.values()).sort((o,a)=>(o.renderOrder??0)-(a.renderOrder??0)).forEach(o=>{var a;if(o.render)(a=o.render)==null||a.call(o,s,this);else if(o.pathSet){const l=this.computedStyle;o.pathSet.paths.forEach(c=>{ii({ctx:s,path:c,fontSize:l.fontSize})})}}),this.emit("render",{text:this,view:t,pixelRatio:i}),(n=e.onContext)==null||n.call(e,s))}toString(){return this.content.flatMap(e=>e.fragments.map(t=>t.content)).join("")}}var PI=Object.defineProperty,er=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&PI(A,e,i),i};class UA extends iA{constructor(e){super();u(this,"base",new zl);u(this,"texture",new YA);u(this,"measureResult");this.parent=e}setProperties(e){return super.setProperties(ce(e)?void 0:Ph(e))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"content":case"effects":case"measureDOM":case"fonts":case"split":case"enabled":this.parent.requestRedraw();break}}_updateText(){this.base.style={justifyContent:"center",alignItems:"center",textAlign:"center",...this.parent.style.toJSON()},this.base.requestUpdate()}measure(){return this._updateText(),this.base.measure()}updateMeasure(){return this.measureResult=this.measure(),this}canDraw(){var e;return!!(this.enabled&&!/^\s*$/.test(this.base.toString())&&((e=this.texture)!=null&&e.valid))}draw(){var s,n;this.base.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload();const e=((s=this.measureResult)==null?void 0:s.boundingBox.width)??this.parent.size.width,t=((n=this.measureResult)==null?void 0:n.boundingBox.height)??this.parent.size.height,i=this.parent.context;i.fillStyle=this.texture,i.uvTransform=new ht().scale(1/e,1/t),i.vertTransform=()=>{const o=this.parent,a=o.getTransformOrigin();return new ht().translate(-a.x,-a.y).scale(o.globalScale.x>0?1:-1,o.globalScale.y>0?1:-1).translate(a.x,a.y)},i.fill()}}er([M({default:!0})],UA.prototype,"enabled"),er([M({alias:"base.content"})],UA.prototype,"content"),er([M({alias:"base.effects"})],UA.prototype,"effects"),er([Ie({alias:"base.measureDOM"})],UA.prototype,"measureDOM"),er([Ie({alias:"base.fonts"})],UA.prototype,"fonts");var kI=Object.defineProperty,UI=Object.getOwnPropertyDescriptor,qn=(r,A,e,t)=>{for(var i=t>1?void 0:t?UI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&kI(A,e,i),i};g.Node2D=class extends g.CanvasItem{constructor(e,t=[]){super();u(this,"position",new ut().on("update",()=>this.updateGlobalTransform()));u(this,"scale",new ut(1,1).on("update",()=>this.updateGlobalTransform()));u(this,"skew",new ut().on("update",()=>this.updateGlobalTransform()));u(this,"transform",new ht);u(this,"globalPosition",new ut);u(this,"globalScale",new ut);u(this,"globalSkew",new ut);u(this,"globalTransform",new ht);u(this,"_parentTransformDirtyId");this.setProperties(e).append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"rotation":this.updateGlobalTransform();break}}getTransformOrigin(){return new ut(0,0)}getTransform(e){const t=this.getTransformOrigin(),i=new ht;return i.translate(-t.x,-t.y).scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation),e==null||e(i),i.translate(this.position.x,this.position.y).translate(t.x,t.y),i}updateTransform(){this.transform.copy(this.getTransform())}updateGlobalTransform(){this.updateTransform();const e=this.getParent();e!=null&&e.globalTransform?(this._parentTransformDirtyId=e.globalTransform.dirtyId,this.globalScale.set(e.globalScale.x*this.scale.x,e.globalScale.y*this.scale.y),this.globalRotation=e.globalRotation+this.rotation,e.globalTransform.multiply(this.transform,this.globalTransform)):(this.globalScale.copy(this.scale),this.globalRotation=this.rotation,this.globalTransform.copy(this.transform));const[t,i,s,n,o,a]=this.globalTransform.toArray();this.globalPosition.set(s,a),this.globalSkew.x=Math.atan2(i,t)-this.globalRotation,this.globalSkew.y=Math.atan2(n,o)-this.globalRotation,this.requestRelayout()}_transformVertices(e,t){let i,s,n,o,a,l;if(t){const h=this.globalTransform.clone();h.multiply(typeof t=="function"?t==null?void 0:t():t),[i,s,n,o,a,l]=h.toArray()}else[i,s,n,o,a,l]=this.globalTransform.toArray();const c=e.slice();for(let h=e.length,f=0;f<h;f+=2){const I=e[f],d=e[f+1];c[f]=i*I+s*d+n,c[f+1]=o*I+a*d+l}return c}_relayout(e){return this.updateGlobalTransform(),super._relayout(e).map(t=>({...t,vertices:this._transformVertices(t.vertices,t.vertTransform)}))}_process(e){var i;super._process(e);const t=this.getParent();t!=null&&t.globalTransform&&this._parentTransformDirtyId!==((i=t==null?void 0:t.globalTransform)==null?void 0:i.dirtyId)&&this.requestRelayout()}},qn([Ie({default:0})],g.Node2D.prototype,"rotation",2),qn([Ie({default:0})],g.Node2D.prototype,"globalRotation",2),g.Node2D=qn([ne("Node2D")],g.Node2D);var NI=Object.getOwnPropertyDescriptor,FI=(r,A,e,t)=>{for(var i=t>1?void 0:t?NI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.BaseElement2D=class extends g.Node2D{constructor(e,t=[]){super();u(this,"size",new ut().on("update",()=>this.updateGlobalTransform()));u(this,"_background",new In(this));u(this,"_shape",new DA(this));u(this,"_fill",new qe(this));u(this,"_outline",new XA(this));u(this,"_foreground",new pn(this));u(this,"_text",new UA(this));u(this,"_shadow",new bA(this));this._updateStyleProperty=this._updateStyleProperty.bind(this),this.style=new Li,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...s)=>{this.emit("updateStyleProperty",...s),this._updateStyleProperty(s[0],s[1],s[2],s[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get background(){return this._background}set background(e){this._background.resetProperties().setProperties(e)}get shape(){return this._shape}set shape(e){this._shape.resetProperties().setProperties(e)}get fill(){return this._fill}set fill(e){this._fill.resetProperties().setProperties(e)}get outline(){return this._outline}set outline(e){this._outline.resetProperties().setProperties(e)}get foreground(){return this._foreground}set foreground(e){this._foreground.resetProperties().setProperties(e)}get text(){return this._text}set text(e){this._text.resetProperties().setProperties(e)}get shadow(){return this._shadow}set shadow(e){this._shadow.resetProperties().setProperties(e)}setProperties(e){if(e){const{style:t,text:i,shape:s,background:n,fill:o,outline:a,foreground:l,shadow:c,...h}=e;t&&this.style.setProperties(t),n&&this.background.setProperties(n),s&&this.shape.setProperties(s),o&&this.fill.setProperties(o),a&&this.outline.setProperties(a),i&&this.text.setProperties(i),l&&this.foreground.setProperties(l),c&&this.shadow.setProperties(c),super.setProperties(h)}return this}_updateStyleProperty(e,t,i,s){switch(e){case"width":case"height":this.mask instanceof g.BaseElement2D&&(this.mask.size.x=this.size.x,this.mask.size.y=this.size.y);break}switch(e){case"rotate":this.rotation=this.style.rotate*jo;break;case"scaleX":this.scale.x=this.style.scaleX;break;case"scaleY":this.scale.y=this.style.scaleY;break;case"skewX":this.skew.x=this.style.skewX;break;case"skewY":this.skew.y=this.style.skewY;break;case"transform":case"transformOrigin":this.updateGlobalTransform();break;case"opacity":this.opacity=this.style.opacity;break;case"visibility":this.visible=this.style.visibility==="visible";break;case"filter":this.requestRepaint();break;case"maskImage":this._updateMaskImage();break;case"borderRadius":this.requestRedraw();break;case"backgroundColor":this.background.color=this.style.backgroundColor;break;case"backgroundImage":this.background.image=this.style.backgroundImage;break;case"borderStyle":case"outlineStyle":this.outline.style=t;break;case"borderWidth":case"outlineWidth":this.outline.width=t;break;case"borderColor":case"outlineColor":this.outline.color=t;break}}_updateMaskImage(){const e="__$style.maskImage",t=this.style.maskImage;if(t&&t!=="none"){const i=this.getNode(e);i?i.src=t:this.appendChild(new g.MaskEffect({name:e,src:t}),"back")}else{const i=this.getNode(e);i&&this.removeChild(i)}}getTransformOrigin(){const{width:e,height:t}=this.size,[i,s]=Ba(this.style.transformOrigin);return new ut(i*e,s*t)}getTransform(e){const{width:t,height:i}=this.size;return super.getTransform(s=>{Ea(this.style.transform??"",t,i,s),e==null||e(s)})}updateGlobalTransform(){super.updateGlobalTransform(),this._updateOverflow()}getRect(){const{width:e,height:t}=this.size,i=0,s=0,n=i+e,o=s+t,[a,l,c,h,f,I]=this.globalTransform.toArray(),d=[[i,s],[i,o],[n,s],[n,o]].map(v=>[a*v[0]+l*v[1]+c,h*v[0]+f*v[1]+I]),C=d.map(v=>v[0]),p=d.map(v=>v[1]),x=Math.min(...C),P=Math.max(...C),w=Math.min(...p),R=Math.max(...p);return new Ys(x,w,P-x,R-w)}_updateOverflow(){if(this.style.overflow==="hidden"){const e=this.getRect();this.mask={x:e.x,y:e.y,width:e.width,height:e.height}}else this.mask=void 0}_draw(){var e,t,i,s,n;super._draw(),this._text.canDraw()&&this._text.updateMeasure(),this._background.canDraw()&&((e=this._tree)==null||e.log(this.name,"draw background"),this._shape.drawRect(),this._background.draw()),this._fill.canDraw()&&((t=this._tree)==null||t.log(this.name,"draw fill"),this._shape.draw(),this._fill.draw()),this._outline.canDraw()&&((i=this._tree)==null||i.log(this.name,"draw outline"),this._shape.draw(),this._outline.draw()),this._foreground.canDraw()&&((s=this._tree)==null||s.log(this.name,"draw foreground"),this._shape.drawRect(),this._foreground.draw()),this._text.canDraw()&&((n=this._tree)==null||n.log(this.name,"draw text"),this._shape.drawRect(),this._text.draw()),this._drawContent()}_drawContent(){}_repaint(e){const t=pa(this.style.filter);return super._repaint(e).map(i=>({...i,colorMatrix:t.toMatrix4().toArray(!0),colorMatrixOffset:t.toVector4().toArray()}))}canPointerEvents(){return this.style.pointerEvents!=="none"}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this.isVisibleInTree()&&this._input(e,t)}_pointerInput(e,t){const{width:i,height:s}=this.size;return e.x>=0&&e.x<i&&e.y>=0&&e.y<s}_input(e,t){switch(t){case"pointerdown":case"pointermove":case"pointerup":{if(this.canPointerEvents()){const{screenX:i,screenY:s}=e;if(i&&s){const[n,o]=this.globalTransform.inverse().applyToPoint(i,s);this._pointerInput({x:n,y:o},t)&&(e.target||(e.target=this),this.emit(t,e))}}break}}}toJSON(){const e=super.toJSON();return{...e,props:{...e.props,style:this.style.toJSON(),background:this.background.toJSON(),shape:this.shape.toJSON(),fill:this.fill.toJSON(),outline:this.outline.toJSON(),text:this.text.toJSON(),foreground:this.foreground.toJSON(),shadow:this.shadow.toJSON()}}}},g.BaseElement2D=FI([ne("BaseElement2D")],g.BaseElement2D);class Xn extends Li{constructor(A){super(),this.setProperties(A)}}const Wl={left:0,top:0,width:0,height:0};for(const r in Wl)hr(Xn,r,{default:Wl[r]});var TI=Object.getOwnPropertyDescriptor,GI=(r,A,e,t)=>{for(var i=t>1?void 0:t?TI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Element2D=class extends g.BaseElement2D{get style(){return this._style}set style(A){var t;const e=(...i)=>{this.emit("updateStyleProperty",...i),this._updateStyleProperty(i[0],i[1],i[2],i[3])};A.on("updateProperty",e),(t=this._style)==null||t.off("updateProperty",e),this._style=A}constructor(A,e=[]){super(),this.style=new Xn,this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"left":this.position.x=Number(e);break;case"top":this.position.y=Number(e);break;case"width":this.size.width=Number(e);break;case"height":this.size.height=Number(e);break}}},g.Element2D=GI([ne("Element2D")],g.Element2D);var LI=(()=>{var r=typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:At&&At.tagName.toUpperCase()==="SCRIPT"&&At.src||new URL("index.js",document.baseURI).href;return function(A){A=A||{};var e;e||(e=typeof A<"u"?A:{});var t,i;e.ready=new Promise(function(E,B){t=E,i=B});var s=Object.assign({},e),n="";typeof document<"u"&&document.currentScript&&(n=document.currentScript.src),r&&(n=r),n.indexOf("blob:")!==0?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="";var o=e.print||console.log.bind(console),a=e.printErr||console.warn.bind(console);Object.assign(e,s),s=null;var l;e.wasmBinary&&(l=e.wasmBinary),e.noExitRuntime,typeof WebAssembly!="object"&&Y("no native wasm support detected");var c,h=!1;function f(E,B,Q){Q=B+Q;for(var _="";!(B>=Q);){var S=E[B++];if(!S)break;if(S&128){var k=E[B++]&63;if((S&224)==192)_+=String.fromCharCode((S&31)<<6|k);else{var F=E[B++]&63;S=(S&240)==224?(S&15)<<12|k<<6|F:(S&7)<<18|k<<12|F<<6|E[B++]&63,65536>S?_+=String.fromCharCode(S):(S-=65536,_+=String.fromCharCode(55296|S>>10,56320|S&1023))}}else _+=String.fromCharCode(S)}return _}var I,d,C,p,x,P,w,R,v;function m(){var E=c.buffer;I=E,e.HEAP8=d=new Int8Array(E),e.HEAP16=p=new Int16Array(E),e.HEAP32=P=new Int32Array(E),e.HEAPU8=C=new Uint8Array(E),e.HEAPU16=x=new Uint16Array(E),e.HEAPU32=w=new Uint32Array(E),e.HEAPF32=R=new Float32Array(E),e.HEAPF64=v=new Float64Array(E)}var b,D=[],z=[],Ae=[];function W(){var E=e.preRun.shift();D.unshift(E)}var K=0,te=null;function Y(E){throw e.onAbort&&e.onAbort(E),E="Aborted("+E+")",a(E),h=!0,E=new WebAssembly.RuntimeError(E+". Build with -sASSERTIONS for more info."),i(E),E}function L(E){return E.startsWith("data:application/octet-stream;base64,")}var se;if(se="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQkDQCAJLQABQSVHBEAgCSEBDAILIAdBAWohByAJLQACIQogCUECaiIBIQkgCkElRg0ACwsgByANayIHIA5B/////wdzIhhKDQcgAARAIAAgDSAHECYLIAcNBiAIIAE2AkwgAUEBaiEHQX8hEgJAIAEsAAEiChBXRQ0AIAEtAAJBJEcNACABQQNqIQcgCkEwayESQQEhFQsgCCAHNgJMQQAhDAJAIAcsAAAiCUEgayIBQR9LBEAgByEKDAELIAchCkEBIAF0IgFBidEEcUUNAANAIAggB0EBaiIKNgJMIAEgDHIhDCAHLAABIglBIGsiAUEgTw0BIAohB0EBIAF0IgFBidEEcQ0ACwsCQCAJQSpGBEACfwJAIAosAAEiARBXRQ0AIAotAAJBJEcNACABQQJ0IARqQcABa0EKNgIAIApBA2ohCUEBIRUgCiwAAUEDdCADakGAA2soAgAMAQsgFQ0GIApBAWohCSAARQRAIAggCTYCTEEAIRVBACETDAMLIAIgAigCACIBQQRqNgIAQQAhFSABKAIACyETIAggCTYCTCATQQBODQFBACATayETIAxBgMAAciEMDAELIAhBzABqEIkBIhNBAEgNCCAIKAJMIQkLQQAhB0F/IQsCfyAJLQAAQS5HBEAgCSEBQQAMAQsgCS0AAUEqRgRAAn8CQCAJLAACIgEQV0UNACAJLQADQSRHDQAgAUECdCAEakHAAWtBCjYCACAJQQRqIQEgCSwAAkEDdCADakGAA2soAgAMAQsgFQ0GIAlBAmohAUEAIABFDQAaIAIgAigCACIKQQRqNgIAIAooAgALIQsgCCABNgJMIAtBf3NBH3YMAQsgCCAJQQFqNgJMIAhBzABqEIkBIQsgCCgCTCEBQQELIQ8DQCAHIRFBHCEKIAEiECwAACIHQfsAa0FGSQ0JIBBBAWohASAHIBFBOmxqQf8qai0AACIHQQFrQQhJDQALIAggATYCTAJAAkAgB0EbRwRAIAdFDQsgEkEATgRAIAQgEkECdGogBzYCACAIIAMgEkEDdGopAwA3A0AMAgsgAEUNCCAIQUBrIAcgAiAGEIcBDAILIBJBAE4NCgtBACEHIABFDQcLIAxB//97cSIJIAwgDEGAwABxGyEMQQAhEkGPCSEWIBQhCgJAAkACQAJ/AkACQAJAAkACfwJAAkACQAJAAkACQAJAIBAsAAAiB0FfcSAHIAdBD3FBA0YbIAcgERsiB0HYAGsOIQQUFBQUFBQUFA4UDwYODg4UBhQUFBQCBQMUFAkUARQUBAALAkAgB0HBAGsOBw4UCxQODg4ACyAHQdMARg0JDBMLIAgpA0AhGUGPCQwFC0EAIQcCQAJAAkACQAJAAkACQCARQf8BcQ4IAAECAwQaBQYaCyAIKAJAIA42AgAMGQsgCCgCQCAONgIADBgLIAgoAkAgDqw3AwAMFwsgCCgCQCAOOwEADBYLIAgoAkAgDjoAAAwVCyAIKAJAIA42AgAMFAsgCCgCQCAOrDcDAAwTC0EIIAsgC0EITRshCyAMQQhyIQxB+AAhBwsgFCENIAgpA0AiGVBFBEAgB0EgcSEQA0AgDUEBayINIBmnQQ9xQZAvai0AACAQcjoAACAZQg9WIQkgGUIEiCEZIAkNAAsLIAxBCHFFIAgpA0BQcg0DIAdBBHZBjwlqIRZBAiESDAMLIBQhByAIKQNAIhlQRQRAA0AgB0EBayIHIBmnQQdxQTByOgAAIBlCB1YhDSAZQgOIIRkgDQ0ACwsgByENIAxBCHFFDQIgCyAUIA1rIgdBAWogByALSBshCwwCCyAIKQNAIhlCAFMEQCAIQgAgGX0iGTcDQEEBIRJBjwkMAQsgDEGAEHEEQEEBIRJBkAkMAQtBkQlBjwkgDEEBcSISGwshFiAZIBQQRyENCyAPQQAgC0EASBsNDiAMQf//e3EgDCAPGyEMIAgpA0AiGUIAUiALckUEQCAUIQ1BACELDAwLIAsgGVAgFCANa2oiByAHIAtIGyELDAsLQQAhDAJ/Qf////8HIAsgC0H/////B08bIgoiEUEARyEQAkACfwJAAkAgCCgCQCIHQY4lIAcbIg0iD0EDcUUgEUVyDQADQCAPLQAAIgxFDQIgEUEBayIRQQBHIRAgD0EBaiIPQQNxRQ0BIBENAAsLIBBFDQICQCAPLQAARSARQQRJckUEQANAIA8oAgAiB0F/cyAHQYGChAhrcUGAgYKEeHENAiAPQQRqIQ8gEUEEayIRQQNLDQALCyARRQ0DC0EADAELQQELIRADQCAQRQRAIA8tAAAhDEEBIRAMAQsgDyAMRQ0CGiAPQQFqIQ8gEUEBayIRRQ0BQQAhEAwACwALQQALIgcgDWsgCiAHGyIHIA1qIQogC0EATgRAIAkhDCAHIQsMCwsgCSEMIAchCyAKLQAADQ0MCgsgCwRAIAgoAkAMAgtBACEHIABBICATQQAgDBApDAILIAhBADYCDCAIIAgpA0A+AgggCCAIQQhqIgc2AkBBfyELIAcLIQlBACEHAkADQCAJKAIAIg1FDQEgCEEEaiANEIYBIgpBAEgiDSAKIAsgB2tLckUEQCAJQQRqIQkgCyAHIApqIgdLDQEMAgsLIA0NDQtBPSEKIAdBAEgNCyAAQSAgEyAHIAwQKSAHRQRAQQAhBwwBC0EAIQogCCgCQCEJA0AgCSgCACINRQ0BIAhBBGogDRCGASINIApqIgogB0sNASAAIAhBBGogDRAmIAlBBGohCSAHIApLDQALCyAAQSAgEyAHIAxBgMAAcxApIBMgByAHIBNIGyEHDAgLIA9BACALQQBIGw0IQT0hCiAAIAgrA0AgEyALIAwgByAFERwAIgdBAE4NBwwJCyAIIAgpA0A8ADdBASELIBchDSAJIQwMBAsgBy0AASEJIAdBAWohBwwACwALIAANByAVRQ0CQQEhBwNAIAQgB0ECdGooAgAiAARAIAMgB0EDdGogACACIAYQhwFBASEOIAdBAWoiB0EKRw0BDAkLC0EBIQ4gB0EKTw0HA0AgBCAHQQJ0aigCAA0BIAdBAWoiB0EKRw0ACwwHC0EcIQoMBAsgCyAKIA1rIhAgCyAQShsiCSASQf////8Hc0oNAkE9IQogEyAJIBJqIgsgCyATSBsiByAYSg0DIABBICAHIAsgDBApIAAgFiASECYgAEEwIAcgCyAMQYCABHMQKSAAQTAgCSAQQQAQKSAAIA0gEBAmIABBICAHIAsgDEGAwABzECkMAQsLQQAhDgwDC0E9IQoLQfw7IAo2AgALQX8hDgsgCEHQAGokACAOC9kCAQR/IwBB0AFrIgUkACAFIAI2AswBIAVBoAFqIgJBAEEoECoaIAUgBSgCzAE2AsgBAkBBACABIAVByAFqIAVB0ABqIAIgAyAEEIoBQQBIBEBBfyEEDAELQQEgBiAAKAJMQQBOGyEGIAAoAgAhByAAKAJIQQBMBEAgACAHQV9xNgIACwJ/AkACQCAAKAIwRQRAIABB0AA2AjAgAEEANgIcIABCADcDECAAKAIsIQggACAFNgIsDAELIAAoAhANAQtBfyAAEJ0BDQEaCyAAIAEgBUHIAWogBUHQAGogBUGgAWogAyAEEIoBCyECIAgEQCAAQQBBACAAKAIkEQYAGiAAQQA2AjAgACAINgIsIABBADYCHCAAKAIUIQEgAEIANwMQIAJBfyABGyECCyAAIAAoAgAiACAHQSBxcjYCAEF/IAIgAEEgcRshBCAGRQ0ACyAFQdABaiQAIAQLfwIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR/QQAFIABEAAAAAAAA8EOiIAEQjAEhACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv////////+HgH+DQoCAgICAgIDwP4S/BSAACwsVACAARQRAQQAPC0H8OyAANgIAQX8LzgECA38CfSMAQRBrIgMkAEEBIQQgA0EIaiAAQfwAaiIFIAAgAUEBdGpBxABqIgEvAQAQHwJAAkAgAyoCCCIHIAIqAgAiBlwEQCAHIAdbBEAgAi0ABCECDAILIAYgBlwhBAsgAi0ABCECIARFDQAgAy0ADCACQf8BcUYNAQsgBSABIAYgAhA5A0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC5AMiAA0ACwsgA0EQaiQAC9EDAEHUO0GoHBAcQdU7QYoWQQFBAUEAEBtB1jtB/RJBAUGAf0H/ABAEQdc7QfYSQQFBgH9B/wAQBEHYO0H0EkEBQQBB/wEQBEHZO0GUCkECQYCAfkH//wEQBEHaO0GLCkECQQBB//8DEARB2ztBsQpBBEGAgICAeEH/////BxAEQdw7QagKQQRBAEF/EARB3TtB+BhBBEGAgICAeEH/////BxAEQd47Qe8YQQRBAEF/EARB3ztBjxBCgICAgICAgICAf0L///////////8AEIQBQeA7QY4QQgBCfxCEAUHhO0GIEEEEEA1B4jtB9BtBCBANQeM7QaQZEA5B5DtBmSIQDkHlO0EEQZcZEAhB5jtBAkGwGRAIQec7QQRBvxkQCEHoO0GPFhAaQek7QQBB1CEQAUHqO0EAQboiEAFB6ztBAUHyIRABQew7QQJB5B4QAUHtO0EDQYMfEAFB7jtBBEGrHxABQe87QQVByB8QAUHwO0EEQd8iEAFB8TtBBUH9IhABQeo7QQBBriAQAUHrO0EBQY0gEAFB7DtBAkHwIBABQe07QQNBziAQAUHuO0EEQbMhEAFB7ztBBUGRIRABQfI7QQZB7h8QAUHzO0EHQaQjEAELJQAgAEH0JjYCACAALQAEBEAgACgCCEH9DxBmCyAAKAIIEAYgAAsDAAALJQAgAEHsJzYCACAALQAEBEAgACgCCEH9DxBmCyAAKAIIEAYgAAs3AQJ/QQQQHiICIAE2AgBBBBAeIgMgATYCAEGjOyAAQeI7QfooQcEBIAJB4jtB/ihBwgEgAxAHCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRBQALOQEBfyABIAAoAgQiBEEBdWohASAAKAIAIQAgASACIAMgBEEBcQR/IAEoAgAgAGooAgAFIAALEQMACwkAIAEgABEAAAsHACAAEQ4ACzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAACzABAX8jAEEQayICJAAgAiABNgIIIAJBCGogABECACEAIAIoAggQBiACQRBqJAAgAAsMACABIAAoAgARAAALCQAgAEEBOgAEC9coAQJ/QaA7QaE7QaI7QQBBjCZBB0GPJkEAQY8mQQBB2RZBkSZBCBAFQQgQHiIAQoiAgIAQNwMAQaA7QZcbQQZBoCZBuCZBCSAAQQEQAEGkO0GlO0GmO0GgO0GMJkEKQYwmQQtBjCZBDEG4EUGRJkENEAVBBBAeIgBBDjYCAEGkO0HoFEECQcAmQcgmQQ8gAEEAEABBoDtBowxBAkHMJkHUJkEQQREQA0GgO0GAHEEDQaQnQbAnQRJBExADQbg7Qbk7Qbo7QQBBjCZBFEGPJkEAQY8mQQBB6RZBkSZBFRAFQQgQHiIAQoiAgIAQNwMAQbg7QegcQQJBuCdByCZBFiAAQQEQAEG7O0G8O0G9O0G4O0GMJkEXQYwmQRhBjCZBGUHPEUGRJkEaEAVBBBAeIgBBGzYCAEG7O0HoFEECQcAnQcgmQRwgAEEAEABBuDtBowxBAkHIJ0HUJkEdQR4QA0G4O0GAHEEDQaQnQbAnQRJBHxADQb47Qb87QcA7QQBBjCZBIEGPJkEAQY8mQQBB2hpBkSZBIRAFQb47QQFB+CdBjCZBIkEjEA9BvjtBkBtBAUH4J0GMJkEiQSMQA0G+O0HpCEECQfwnQcgmQSRBJRADQQgQHiIAQQA2AgQgAEEmNgIAQb47Qa0cQQRBkChBoChBJyAAQQAQAEEIEB4iAEEANgIEIABBKDYCAEG+O0GkEUEDQagoQbQoQSkgAEEAEABBCBAeIgBBADYCBCAAQSo2AgBBvjtByB1BA0G8KEHIKEErIABBABAAQQgQHiIAQQA2AgQgAEEsNgIAQb47QaYQQQNB0ChByChBLSAAQQAQAEEIEB4iAEEANgIEIABBLjYCAEG+O0HLHEEDQdwoQbAnQS8gAEEAEABBCBAeIgBBADYCBCAAQTA2AgBBvjtB0h1BAkHoKEHUJkExIABBABAAQQgQHiIAQQA2AgQgAEEyNgIAQb47QZcQQQJB8ChB1CZBMyAAQQAQAEHBO0GECkH4KEE0QZEmQTUQCkHiD0EAEEhB6g5BCBBIQYITQRAQSEHxFUEYEEhBgxdBIBBIQfAOQSgQSEHBOxAJQaM7Qf8aQfgoQTZBkSZBNxAKQYMXQQAQkwFB8A5BCBCTAUGjOxAJQcI7QYobQfgoQThBkSZBORAKQQQQHiIAQQg2AgBBBBAeIgFBCDYCAEHCO0GEG0HiO0H6KEE6IABB4jtB/ihBOyABEAdBBBAeIgBBADYCAEEEEB4iAUEANgIAQcI7QeUOQds7QdQmQTwgAEHbO0HIKEE9IAEQB0HCOxAJQcM7QcQ7QcU7QQBBjCZBPkGPJkEAQY8mQQBB+xtBkSZBPxAFQcM7QQFBhClBjCZBwABBwQAQD0HDO0HXDkEBQYQpQYwmQcAAQcEAEANBwztB0BpBAkGIKUHUJkHCAEHDABADQcM7QekIQQJBkClByCZBxABBxQAQA0EIEB4iAEEANgIEIABBxgA2AgBBwztB9w9BAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABByAA2AgBBwztB6htBA0GYKUHIKEHJACAAQQAQAEEIEB4iAEEANgIEIABBygA2AgBBwztBnxtBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABBzAA2AgBBwztB0BRBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABBzgA2AgBBwztBiA1BBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABBzwA2AgBBwztB3RNBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB0AA2AgBBwztB+QtBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB0QA2AgBBwztBuBBBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB0gA2AgBBwztB5RpBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB0wA2AgBBwztB/BRBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB1AA2AgBBwztBlRNBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB1QA2AgBBwztBtQpBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB1gA2AgBBwztBuBVBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB1wA2AgBBwztBmw1BBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB2AA2AgBBwztB7RNBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB2QA2AgBBwztBxAlBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB2gA2AgBBwztB8QhBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB2wA2AgBBwztBhwlBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB3QA2AgBBwztB1BBBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB3gA2AgBBwztB5gxBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB3wA2AgBBwztBzBNBAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABB4AA2AgBBwztBrAlBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB4QA2AgBBwztBnxZBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB4gA2AgBBwztBoRdBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB4wA2AgBBwztBvw1BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB5AA2AgBBwztB+xNBAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABB5QA2AgBBwztBkQ9BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB5gA2AgBBwztBwQxBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB5wA2AgBBwztBvhNBAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABB6AA2AgBBwztBsxdBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB6QA2AgBBwztBzw1BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB6gA2AgBBwztBpQ9BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB6wA2AgBBwztB0gxBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB7AA2AgBBwztBiRdBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB7QA2AgBBwztBrA1BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB7gA2AgBBwztB9w5BA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB7wA2AgBBwztBrQxBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB8AA2AgBBwztB/RhBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB8QA2AgBBwztBshRBA0HIKUH+KEHcACAAQQAQAEEIEB4iAEEANgIEIABB8gA2AgBBwztBlBJBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB8wA2AgBBwztBzhlBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB9AA2AgBBwztB4g1BBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB9QA2AgBBwztBrRNBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB9gA2AgBBwztB+gxBBEGwKUHAKUHNACAAQQAQAEEIEB4iAEEANgIEIABB9wA2AgBBwztBnhVBA0GkKUHIKEHLACAAQQAQAEEIEB4iAEEANgIEIABB+AA2AgBBwztBrxtBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABB+gA2AgBBwztB3BRBA0HcKUGwJ0H7ACAAQQAQAEEIEB4iAEEANgIEIABB/AA2AgBBwztBiQxBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABB/QA2AgBBwztBxhBBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABB/gA2AgBBwztB8hpBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABB/wA2AgBBwztBjRVBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBgAE2AgBBwztBoRNBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBgQE2AgBBwztBxwpBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBggE2AgBBwztBwhVBA0HcKUGwJ0H7ACAAQQAQAEEIEB4iAEEANgIEIABBgwE2AgBBwztB4RBBAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBhQE2AgBBwztBuAlBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBhwE2AgBBwztBrRZBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBiAE2AgBBwztBqhdBAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBiQE2AgBBwztBmw9BAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBigE2AgBBwztBvxdBAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBiwE2AgBBwztBsg9BAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBjAE2AgBBwztBlRdBAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBjQE2AgBBwztBhA9BAkHoKUHUJkGEASAAQQAQAEEIEB4iAEEANgIEIABBjgE2AgBBwztBihlBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBjwE2AgBBwztBwRRBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBkAE2AgBBwztBnhJBA0H4KUGEKkGRASAAQQAQAEEIEB4iAEEANgIEIABBkgE2AgBBwztB0AlBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBkwE2AgBBwztB/AhBAkHUKUHUJkH5ACAAQQAQAEEIEB4iAEEANgIEIABBlAE2AgBBwztB2RlBA0HcKUGwJ0H7ACAAQQAQAEEIEB4iAEEANgIEIABBlQE2AgBBwztBtBNBA0GMKkGYKkGWASAAQQAQAEEIEB4iAEEANgIEIABBlwE2AgBBwztBhxxBBEGgKkGgKEGYASAAQQAQAEEIEB4iAEEANgIEIABBmQE2AgBBwztBnBxBA0GwKkHIKEGaASAAQQAQAEEIEB4iAEEANgIEIABBmwE2AgBBwztBmgpBAkG8KkHUJkGcASAAQQAQAEEIEB4iAEEANgIEIABBnQE2AgBBwztBmQxBAkHEKkHUJkGeASAAQQAQAEEIEB4iAEEANgIEIABBnwE2AgBBwztBkxxBA0HMKkGwJ0GgASAAQQAQAEEIEB4iAEEANgIEIABBoQE2AgBBwztBuxZBA0HYKkHIKEGiASAAQQAQAEEIEB4iAEEANgIEIABBowE2AgBBwztBvxtBAkHkKkHUJkGkASAAQQAQAEEIEB4iAEEANgIEIABBpQE2AgBBwztB0xtBA0HYKkHIKEGiASAAQQAQAEEIEB4iAEEANgIEIABBpgE2AgBBwztBqB1BA0HsKkHIKEGnASAAQQAQAEEIEB4iAEEANgIEIABBqAE2AgBBwztBph1BAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABBqQE2AgBBwztBuR1BA0H4KkHIKEGqASAAQQAQAEEIEB4iAEEANgIEIABBqwE2AgBBwztBtx1BAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABBrAE2AgBBwztB3whBAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABBrQE2AgBBwztB1whBAkGEK0HUJkGuASAAQQAQAEEIEB4iAEEANgIEIABBrwE2AgBBwztB3hVBAkGQKUHIJkHHACAAQQAQAEEIEB4iAEEANgIEIABBsAE2AgBBwztB3AlBAkGEK0HUJkGuASAAQQAQAEEIEB4iAEEANgIEIABBsQE2AgBBwztB6QlBBUGQK0GkK0GyASAAQQAQAEEIEB4iAEEANgIEIABBswE2AgBBwztB5w9BAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBtAE2AgBBwztB0Q9BAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBtQE2AgBBwztBhhNBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBtgE2AgBBwztB+BVBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBtwE2AgBBwztByxdBAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBuAE2AgBBwztBvw9BAkHwKUH6KEGGASAAQQAQAEEIEB4iAEEANgIEIABBuQE2AgBBwztB+QlBAkGsK0HUJkG6ASAAQQAQAEEIEB4iAEEANgIEIABBuwE2AgBBwztBzBVBA0H4KUGEKkGRASAAQQAQAEEIEB4iAEEANgIEIABBvAE2AgBBwztBqBJBA0H4KUGEKkGRASAAQQAQAEEIEB4iAEEANgIEIABBvQE2AgBBwztB5BlBA0H4KUGEKkGRASAAQQAQAEEIEB4iAEEANgIEIABBvgE2AgBBwztBqxVBAkHUKUHUJkH5ACAAQQAQAAtZAQF/IAAgACgCSCIBQQFrIAFyNgJIIAAoAgAiAUEIcQRAIAAgAUEgcjYCAEF/DwsgAEIANwIEIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhBBAAtHAAJAIAFBA00EfyAAIAFBAnRqQQRqBSABQQRrIgEgACgCGCIAKAIEIAAoAgAiAGtBAnVPDQEgACABQQJ0agsoAgAPCxACAAs4AQF/IAFBAEgEQBACAAsgAUEBa0EFdkEBaiIBQQJ0EB4hAiAAIAE2AgggAEEANgIEIAAgAjYCAAvSBQEJfyAAIAEvAQA7AQAgACABKQIENwIEIAAgASkCDDcCDCAAIAEoAhQ2AhQCQAJAIAEoAhgiA0UNAEEYEB4iBUEANgIIIAVCADcCACADKAIEIgEgAygCACICRwRAIAEgAmsiAkEASA0CIAUgAhAeIgE2AgAgBSABIAJqNgIIIAMoAgAiAiADKAIEIgZHBEADQCABIAIoAgA2AgAgAUEEaiEBIAJBBGoiAiAGRw0ACwsgBSABNgIECyAFQgA3AgwgBUEANgIUIAMoAhAiAUUNACAFQQxqIAEQnwEgAygCDCEGIAUgBSgCECIEIAMoAhAiAkEfcWogAkFgcWoiATYCEAJAAkAgBEUEQCABQQFrIQMMAQsgAUEBayIDIARBAWtzQSBJDQELIAUoAgwgA0EFdkEAIAFBIU8bQQJ0akEANgIACyAFKAIMIARBA3ZB/P///wFxaiEBIARBH3EiA0UEQCACQQBMDQEgAkEgbSEDIAJBH2pBP08EQCABIAYgA0ECdBAzGgsgAiADQQV0ayICQQBMDQEgASADQQJ0IgNqIgEgASgCAEF/QSAgAmt2IgFBf3NxIAMgBmooAgAgAXFyNgIADAELIAJBAEwNAEF/IAN0IQhBICADayEEIAJBIE4EQCAIQX9zIQkgASgCACEHA0AgASAHIAlxIAYoAgAiByADdHI2AgAgASABKAIEIAhxIAcgBHZyIgc2AgQgBkEEaiEGIAFBBGohASACQT9LIQogAkEgayECIAoNAAsgAkEATA0BCyABIAEoAgBBfyAEIAQgAiACIARKGyIEa3YgCHFBf3NxIAYoAgBBf0EgIAJrdnEiBiADdHI2AgAgAiAEayICQQBMDQAgASADIARqQQN2Qfz///8BcWoiASABKAIAQX9BICACa3ZBf3NxIAYgBHZyNgIACyAAKAIYIQEgACAFNgIYIAEEQCABEFsLDwsQAgALvQMBB38gAARAIwBBIGsiBiQAIAAoAgAiASgC5AMiAwRAIAMgARBvGiABQQA2AuQDCyABKALsAyICIAEoAugDIgNHBEBBASACIANrQQJ1IgIgAkEBTRshBEEAIQIDQCADIAJBAnRqKAIAQQA2AuQDIAJBAWoiAiAERw0ACwsgASADNgLsAwJAIAMgAUHwA2oiAigCAEYNACAGQQhqQQBBACACEEoiAigCBCABKALsAyABKALoAyIEayIFayIDIAQgBRAzIQUgASgC6AMhBCABIAU2AugDIAIgBDYCBCABKALsAyEFIAEgAigCCDYC7AMgAiAFNgIIIAEoAvADIQcgASACKAIMNgLwAyACIAQ2AgAgAiAHNgIMIAQgBUcEQCACIAUgBCAFa0EDakF8cWo2AggLIARFDQAgBBAnIAEoAugDIQMLIAMEQCABIAM2AuwDIAMQJwsgASgClAEhAyABQQA2ApQBIAMEQCADEFsLIAEQJyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALIAAoAgQhASAAQQA2AgQgAQRAIAEgASgCACgCBBEAAAsgBkEgaiQAIAAQIwsLtQEBAX8jAEEQayICJAACfyABBEAgASgCACEBQYgEEB4gARBcIAENARogAkH3GTYCACACEHIQJAALQZQ7LQAARQRAQfg6QQM2AgBBiDtCgICAgICAgMA/NwIAQYA7QgA3AgBBlDtBAToAAEH8OkH8Oi0AAEH+AXE6AABB9DpBADYCAEGQO0EANgIAC0GIBBAeQfQ6EFwLIQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!L(se)){var H=se;se=e.locateFile?e.locateFile(H,n):n+H}function q(){var E=se;try{if(E==se&&l)return new Uint8Array(l);if(L(E))try{var B=_E(E.slice(37)),Q=new Uint8Array(B.length);for(E=0;E<B.length;++E)Q[E]=B.charCodeAt(E);var _=Q}catch{throw Error("Converting base64 string to bytes failed.")}else _=void 0;var S=_;if(S)return S;throw"both async and sync fetching of the wasm failed"}catch(k){Y(k)}}function ie(){return l||typeof fetch!="function"?Promise.resolve().then(function(){return q()}):fetch(se,{credentials:"same-origin"}).then(function(E){if(!E.ok)throw"failed to load wasm binary file at '"+se+"'";return E.arrayBuffer()}).catch(function(){return q()})}function J(E){for(;0<E.length;)E.shift()(e)}function $(E){if(E===void 0)return"_unknown";E=E.replace(/[^a-zA-Z0-9_]/g,"$");var B=E.charCodeAt(0);return 48<=B&&57>=B?"_"+E:E}function N(E,B){return E=$(E),function(){return B.apply(this,arguments)}}var U=[{},{value:void 0},{value:null},{value:!0},{value:!1}],X=[];function ee(E){var B=Error,Q=N(E,function(_){this.name=E,this.message=_,_=Error(_).stack,_!==void 0&&(this.stack=this.toString()+`
|
|
864
|
-
`+_.replace(/^Error(:[^\n]*)?\n/,""))});return Q.prototype=Object.create(B.prototype),Q.prototype.constructor=Q,Q.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Q}var oe=void 0;function j(E){throw new oe(E)}var Ee=E=>(E||j("Cannot use deleted val. handle = "+E),U[E].value),at=E=>{switch(E){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var B=X.length?X.pop():U.length;return U[B]={ga:1,value:E},B}},lt=void 0,He=void 0;function ge(E){for(var B="";C[E];)B+=He[C[E++]];return B}var we=[];function Je(){for(;we.length;){var E=we.pop();E.M.$=!1,E.delete()}}var We=void 0,xe={};function tt(E,B){for(B===void 0&&j("ptr should not be undefined");E.R;)B=E.ba(B),E=E.R;return B}var Ot={};function hs(E){E=kc(E);var B=ge(E);return tA(E),B}function Ao(E,B){var Q=Ot[E];return Q===void 0&&j(B+" has unknown type "+hs(E)),Q}function gs(){}var io=!1;function _c(E){--E.count.value,E.count.value===0&&(E.T?E.U.W(E.T):E.P.N.W(E.O))}function bc(E,B,Q){return B===Q?E:Q.R===void 0?null:(E=bc(E,B,Q.R),E===null?null:Q.na(E))}var Dc={};function nE(E,B){return B=tt(E,B),xe[B]}var xc=void 0;function us(E){throw new xc(E)}function fs(E,B){return B.P&&B.O||us("makeClassHandle requires ptr and ptrType"),!!B.U!=!!B.T&&us("Both smartPtrType and smartPtr must be specified"),B.count={value:1},Ii(Object.create(E,{M:{value:B}}))}function Ii(E){return typeof FinalizationRegistry>"u"?(Ii=B=>B,E):(io=new FinalizationRegistry(B=>{_c(B.M)}),Ii=B=>{var Q=B.M;return Q.T&&io.register(B,{M:Q},B),B},gs=B=>{io.unregister(B)},Ii(E))}var ds={};function ro(E){for(;E.length;){var B=E.pop();E.pop()(B)}}function sr(E){return this.fromWireType(P[E>>2])}var pi={},Is={};function CA(E,B,Q){function _(T){T=Q(T),T.length!==E.length&&us("Mismatched type converter count");for(var V=0;V<E.length;++V)$t(E[V],T[V])}E.forEach(function(T){Is[T]=B});var S=Array(B.length),k=[],F=0;B.forEach((T,V)=>{Ot.hasOwnProperty(T)?S[V]=Ot[T]:(k.push(T),pi.hasOwnProperty(T)||(pi[T]=[]),pi[T].push(()=>{S[V]=Ot[T],++F,F===k.length&&_(S)}))}),k.length===0&&_(S)}function so(E){switch(E){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+E)}}function $t(E,B,Q={}){if(!("argPackAdvance"in B))throw new TypeError("registerType registeredInstance requires argPackAdvance");var _=B.name;if(E||j('type "'+_+'" must have a positive integer typeid pointer'),Ot.hasOwnProperty(E)){if(Q.ua)return;j("Cannot register type '"+_+"' twice")}Ot[E]=B,delete Is[E],pi.hasOwnProperty(E)&&(B=pi[E],delete pi[E],B.forEach(S=>S()))}function no(E){j(E.M.P.N.name+" instance already deleted")}function QA(){}function oo(E,B,Q){if(E[B].S===void 0){var _=E[B];E[B]=function(){return E[B].S.hasOwnProperty(arguments.length)||j("Function '"+Q+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+E[B].S+")!"),E[B].S[arguments.length].apply(this,arguments)},E[B].S=[],E[B].S[_.Z]=_}}function oE(E,B){e.hasOwnProperty(E)?(j("Cannot register public name '"+E+"' twice"),oo(e,E,E),e.hasOwnProperty(void 0)&&j("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),e[E].S[void 0]=B):e[E]=B}function aE(E,B,Q,_,S,k,F,T){this.name=E,this.constructor=B,this.X=Q,this.W=_,this.R=S,this.pa=k,this.ba=F,this.na=T,this.ja=[]}function ao(E,B,Q){for(;B!==Q;)B.ba||j("Expected null or instance of "+Q.name+", got an instance of "+B.name),E=B.ba(E),B=B.R;return E}function lE(E,B){return B===null?(this.ea&&j("null is not a valid "+this.name),0):(B.M||j('Cannot pass "'+go(B)+'" as a '+this.name),B.M.O||j("Cannot pass deleted object as a pointer of type "+this.name),ao(B.M.O,B.M.P.N,this.N))}function cE(E,B){if(B===null){if(this.ea&&j("null is not a valid "+this.name),this.da){var Q=this.fa();return E!==null&&E.push(this.W,Q),Q}return 0}if(B.M||j('Cannot pass "'+go(B)+'" as a '+this.name),B.M.O||j("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&B.M.P.ca&&j("Cannot convert argument of type "+(B.M.U?B.M.U.name:B.M.P.name)+" to parameter type "+this.name),Q=ao(B.M.O,B.M.P.N,this.N),this.da)switch(B.M.T===void 0&&j("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:B.M.U===this?Q=B.M.T:j("Cannot convert argument of type "+(B.M.U?B.M.U.name:B.M.P.name)+" to parameter type "+this.name);break;case 1:Q=B.M.T;break;case 2:if(B.M.U===this)Q=B.M.T;else{var _=B.clone();Q=this.xa(Q,at(function(){_.delete()})),E!==null&&E.push(this.W,Q)}break;default:j("Unsupporting sharing policy")}return Q}function hE(E,B){return B===null?(this.ea&&j("null is not a valid "+this.name),0):(B.M||j('Cannot pass "'+go(B)+'" as a '+this.name),B.M.O||j("Cannot pass deleted object as a pointer of type "+this.name),B.M.P.ca&&j("Cannot convert argument of type "+B.M.P.name+" to parameter type "+this.name),ao(B.M.O,B.M.P.N,this.N))}function eA(E,B,Q,_){this.name=E,this.N=B,this.ea=Q,this.ca=_,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,B.R!==void 0?this.toWireType=cE:(this.toWireType=_?lE:hE,this.V=null)}function gE(E,B){e.hasOwnProperty(E)||us("Replacing nonexistant public symbol"),e[E]=B,e[E].Z=void 0}function uE(E,B){var Q=[];return function(){if(Q.length=0,Object.assign(Q,arguments),E.includes("j")){var _=e["dynCall_"+E];_=Q&&Q.length?_.apply(null,[B].concat(Q)):_.call(null,B)}else _=b.get(B).apply(null,Q);return _}}function Dt(E,B){E=ge(E);var Q=E.includes("j")?uE(E,B):b.get(B);return typeof Q!="function"&&j("unknown function pointer with signature "+E+": "+B),Q}var Sc=void 0;function ps(E,B){function Q(k){S[k]||Ot[k]||(Is[k]?Is[k].forEach(Q):(_.push(k),S[k]=!0))}var _=[],S={};throw B.forEach(Q),new Sc(E+": "+_.map(hs).join([", "]))}function lo(E,B,Q,_,S){var k=B.length;2>k&&j("argTypes array size mismatch! Must at least get return value and 'this' types!");var F=B[1]!==null&&Q!==null,T=!1;for(Q=1;Q<B.length;++Q)if(B[Q]!==null&&B[Q].V===void 0){T=!0;break}var V=B[0].name!=="void",O=k-2,Z=Array(O),re=[],ue=[];return function(){if(arguments.length!==O&&j("function "+E+" called with "+arguments.length+" arguments, expected "+O+" args!"),ue.length=0,re.length=F?2:1,re[0]=S,F){var Pe=B[1].toWireType(ue,this);re[1]=Pe}for(var de=0;de<O;++de)Z[de]=B[de+2].toWireType(ue,arguments[de]),re.push(Z[de]);if(de=_.apply(null,re),T)ro(ue);else for(var Et=F?1:2;Et<B.length;Et++){var xt=Et===1?Pe:Z[Et-2];B[Et].V!==null&&B[Et].V(xt)}return Pe=V?B[0].fromWireType(de):void 0,Pe}}function co(E,B){for(var Q=[],_=0;_<E;_++)Q.push(w[B+4*_>>2]);return Q}function ho(E){4<E&&--U[E].ga===0&&(U[E]=void 0,X.push(E))}function go(E){if(E===null)return"null";var B=typeof E;return B==="object"||B==="array"||B==="function"?E.toString():""+E}function fE(E,B){switch(B){case 2:return function(Q){return this.fromWireType(R[Q>>2])};case 3:return function(Q){return this.fromWireType(v[Q>>3])};default:throw new TypeError("Unknown float type: "+E)}}function dE(E,B,Q){switch(B){case 0:return Q?function(_){return d[_]}:function(_){return C[_]};case 1:return Q?function(_){return p[_>>1]}:function(_){return x[_>>1]};case 2:return Q?function(_){return P[_>>2]}:function(_){return w[_>>2]};default:throw new TypeError("Unknown integer type: "+E)}}function IE(E,B){for(var Q="",_=0;!(_>=B/2);++_){var S=p[E+2*_>>1];if(S==0)break;Q+=String.fromCharCode(S)}return Q}function pE(E,B,Q){if(Q===void 0&&(Q=2147483647),2>Q)return 0;Q-=2;var _=B;Q=Q<2*E.length?Q/2:E.length;for(var S=0;S<Q;++S)p[B>>1]=E.charCodeAt(S),B+=2;return p[B>>1]=0,B-_}function EE(E){return 2*E.length}function BE(E,B){for(var Q=0,_="";!(Q>=B/4);){var S=P[E+4*Q>>2];if(S==0)break;++Q,65536<=S?(S-=65536,_+=String.fromCharCode(55296|S>>10,56320|S&1023)):_+=String.fromCharCode(S)}return _}function CE(E,B,Q){if(Q===void 0&&(Q=2147483647),4>Q)return 0;var _=B;Q=_+Q-4;for(var S=0;S<E.length;++S){var k=E.charCodeAt(S);if(55296<=k&&57343>=k){var F=E.charCodeAt(++S);k=65536+((k&1023)<<10)|F&1023}if(P[B>>2]=k,B+=4,B+4>Q)break}return P[B>>2]=0,B-_}function QE(E){for(var B=0,Q=0;Q<E.length;++Q){var _=E.charCodeAt(Q);55296<=_&&57343>=_&&++Q,B+=4}return B}var yE={};function Mc(E){var B=yE[E];return B===void 0?ge(E):B}var Es=[];function mE(E){var B=Es.length;return Es.push(E),B}function wE(E,B){for(var Q=Array(E),_=0;_<E;++_)Q[_]=Ao(w[B+4*_>>2],"parameter "+_);return Q}var Rc=[],vE=[null,[],[]];oe=e.BindingError=ee("BindingError"),e.count_emval_handles=function(){for(var E=0,B=5;B<U.length;++B)U[B]!==void 0&&++E;return E},e.get_first_emval=function(){for(var E=5;E<U.length;++E)if(U[E]!==void 0)return U[E];return null},lt=e.PureVirtualError=ee("PureVirtualError");for(var Pc=Array(256),Bs=0;256>Bs;++Bs)Pc[Bs]=String.fromCharCode(Bs);He=Pc,e.getInheritedInstanceCount=function(){return Object.keys(xe).length},e.getLiveInheritedInstances=function(){var E=[],B;for(B in xe)xe.hasOwnProperty(B)&&E.push(xe[B]);return E},e.flushPendingDeletes=Je,e.setDelayFunction=function(E){We=E,we.length&&We&&We(Je)},xc=e.InternalError=ee("InternalError"),QA.prototype.isAliasOf=function(E){if(!(this instanceof QA&&E instanceof QA))return!1;var B=this.M.P.N,Q=this.M.O,_=E.M.P.N;for(E=E.M.O;B.R;)Q=B.ba(Q),B=B.R;for(;_.R;)E=_.ba(E),_=_.R;return B===_&&Q===E},QA.prototype.clone=function(){if(this.M.O||no(this),this.M.aa)return this.M.count.value+=1,this;var E=Ii,B=Object,Q=B.create,_=Object.getPrototypeOf(this),S=this.M;return E=E(Q.call(B,_,{M:{value:{count:S.count,$:S.$,aa:S.aa,O:S.O,P:S.P,T:S.T,U:S.U}}})),E.M.count.value+=1,E.M.$=!1,E},QA.prototype.delete=function(){this.M.O||no(this),this.M.$&&!this.M.aa&&j("Object already scheduled for deletion"),gs(this),_c(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},QA.prototype.isDeleted=function(){return!this.M.O},QA.prototype.deleteLater=function(){return this.M.O||no(this),this.M.$&&!this.M.aa&&j("Object already scheduled for deletion"),we.push(this),we.length===1&&We&&We(Je),this.M.$=!0,this},eA.prototype.qa=function(E){return this.ka&&(E=this.ka(E)),E},eA.prototype.ha=function(E){this.W&&this.W(E)},eA.prototype.argPackAdvance=8,eA.prototype.readValueFromPointer=sr,eA.prototype.deleteObject=function(E){E!==null&&E.delete()},eA.prototype.fromWireType=function(E){function B(){return this.da?fs(this.N.X,{P:this.wa,O:Q,U:this,T:E}):fs(this.N.X,{P:this,O:E})}var Q=this.qa(E);if(!Q)return this.ha(E),null;var _=nE(this.N,Q);if(_!==void 0)return _.M.count.value===0?(_.M.O=Q,_.M.T=E,_.clone()):(_=_.clone(),this.ha(E),_);if(_=this.N.pa(Q),_=Dc[_],!_)return B.call(this);_=this.ca?_.la:_.pointerType;var S=bc(Q,this.N,_.N);return S===null?B.call(this):this.da?fs(_.N.X,{P:_,O:S,U:this,T:E}):fs(_.N.X,{P:_,O:S})},Sc=e.UnboundTypeError=ee("UnboundTypeError");var _E=typeof atob=="function"?atob:function(E){var B="",Q=0;E=E.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var _="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),F="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++));_=_<<2|S>>4,S=(S&15)<<4|k>>2;var T=(k&3)<<6|F;B+=String.fromCharCode(_),k!==64&&(B+=String.fromCharCode(S)),F!==64&&(B+=String.fromCharCode(T))}while(Q<E.length);return B},bE={l:function(E,B,Q,_){Y("Assertion failed: "+(E?f(C,E):"")+", at: "+[B?B?f(C,B):"":"unknown filename",Q,_?_?f(C,_):"":"unknown function"])},q:function(E,B,Q){E=ge(E),B=Ao(B,"wrapper"),Q=Ee(Q);var _=[].slice,S=B.N,k=S.X,F=S.R.X,T=S.R.constructor;E=N(E,function(){S.R.ja.forEach((function(O){if(this[O]===F[O])throw new lt("Pure virtual function "+O+" must be implemented in JavaScript")}).bind(this)),Object.defineProperty(this,"__parent",{value:k}),this.__construct.apply(this,_.call(arguments))}),k.__construct=function(){this===k&&j("Pass correct 'this' to __construct");var O=T.implement.apply(void 0,[this].concat(_.call(arguments)));gs(O);var Z=O.M;O.notifyOnDestruction(),Z.aa=!0,Object.defineProperties(this,{M:{value:Z}}),Ii(this),O=Z.O,O=tt(S,O),xe.hasOwnProperty(O)?j("Tried to register registered instance: "+O):xe[O]=this},k.__destruct=function(){this===k&&j("Pass correct 'this' to __destruct"),gs(this);var O=this.M.O;O=tt(S,O),xe.hasOwnProperty(O)?delete xe[O]:j("Tried to unregister unregistered instance: "+O)},E.prototype=Object.create(k);for(var V in Q)E.prototype[V]=Q[V];return at(E)},j:function(E){var B=ds[E];delete ds[E];var Q=B.fa,_=B.W,S=B.ia,k=S.map(F=>F.ta).concat(S.map(F=>F.za));CA([E],k,F=>{var T={};return S.forEach((V,O)=>{var Z=F[O],re=V.ra,ue=V.sa,Pe=F[O+S.length],de=V.ya,Et=V.Aa;T[V.oa]={read:xt=>Z.fromWireType(re(ue,xt)),write:(xt,nr)=>{var AA=[];de(Et,xt,Pe.toWireType(AA,nr)),ro(AA)}}}),[{name:B.name,fromWireType:function(V){var O={},Z;for(Z in T)O[Z]=T[Z].read(V);return _(V),O},toWireType:function(V,O){for(var Z in T)if(!(Z in O))throw new TypeError('Missing field: "'+Z+'"');var re=Q();for(Z in T)T[Z].write(re,O[Z]);return V!==null&&V.push(_,re),re},argPackAdvance:8,readValueFromPointer:sr,V:_}]})},v:function(){},B:function(E,B,Q,_,S){var k=so(Q);B=ge(B),$t(E,{name:B,fromWireType:function(F){return!!F},toWireType:function(F,T){return T?_:S},argPackAdvance:8,readValueFromPointer:function(F){if(Q===1)var T=d;else if(Q===2)T=p;else if(Q===4)T=P;else throw new TypeError("Unknown boolean type size: "+B);return this.fromWireType(T[F>>k])},V:null})},f:function(E,B,Q,_,S,k,F,T,V,O,Z,re,ue){Z=ge(Z),k=Dt(S,k),T&&(T=Dt(F,T)),O&&(O=Dt(V,O)),ue=Dt(re,ue);var Pe=$(Z);oE(Pe,function(){ps("Cannot construct "+Z+" due to unbound types",[_])}),CA([E,B,Q],_?[_]:[],function(de){if(de=de[0],_)var Et=de.N,xt=Et.X;else xt=QA.prototype;de=N(Pe,function(){if(Object.getPrototypeOf(this)!==nr)throw new oe("Use 'new' to construct "+Z);if(AA.Y===void 0)throw new oe(Z+" has no accessible constructor");var Fc=AA.Y[arguments.length];if(Fc===void 0)throw new oe("Tried to invoke ctor of "+Z+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(AA.Y).toString()+") parameters instead!");return Fc.apply(this,arguments)});var nr=Object.create(xt,{constructor:{value:de}});de.prototype=nr;var AA=new aE(Z,de,nr,ue,Et,k,T,O);Et=new eA(Z,AA,!0,!1),xt=new eA(Z+"*",AA,!1,!1);var Nc=new eA(Z+" const*",AA,!1,!0);return Dc[E]={pointerType:xt,la:Nc},gE(Pe,de),[Et,xt,Nc]})},d:function(E,B,Q,_,S,k,F){var T=co(Q,_);B=ge(B),k=Dt(S,k),CA([],[E],function(V){function O(){ps("Cannot call "+Z+" due to unbound types",T)}V=V[0];var Z=V.name+"."+B;B.startsWith("@@")&&(B=Symbol[B.substring(2)]);var re=V.N.constructor;return re[B]===void 0?(O.Z=Q-1,re[B]=O):(oo(re,B,Z),re[B].S[Q-1]=O),CA([],T,function(ue){return ue=lo(Z,[ue[0],null].concat(ue.slice(1)),null,k,F),re[B].S===void 0?(ue.Z=Q-1,re[B]=ue):re[B].S[Q-1]=ue,[]}),[]})},p:function(E,B,Q,_,S,k){0<B||Y();var F=co(B,Q);S=Dt(_,S),CA([],[E],function(T){T=T[0];var V="constructor "+T.name;if(T.N.Y===void 0&&(T.N.Y=[]),T.N.Y[B-1]!==void 0)throw new oe("Cannot register multiple constructors with identical number of parameters ("+(B-1)+") for class '"+T.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return T.N.Y[B-1]=()=>{ps("Cannot construct "+T.name+" due to unbound types",F)},CA([],F,function(O){return O.splice(1,0,null),T.N.Y[B-1]=lo(V,O,null,S,k),[]}),[]})},a:function(E,B,Q,_,S,k,F,T){var V=co(Q,_);B=ge(B),k=Dt(S,k),CA([],[E],function(O){function Z(){ps("Cannot call "+re+" due to unbound types",V)}O=O[0];var re=O.name+"."+B;B.startsWith("@@")&&(B=Symbol[B.substring(2)]),T&&O.N.ja.push(B);var ue=O.N.X,Pe=ue[B];return Pe===void 0||Pe.S===void 0&&Pe.className!==O.name&&Pe.Z===Q-2?(Z.Z=Q-2,Z.className=O.name,ue[B]=Z):(oo(ue,B,re),ue[B].S[Q-2]=Z),CA([],V,function(de){return de=lo(re,de,O,k,F),ue[B].S===void 0?(de.Z=Q-2,ue[B]=de):ue[B].S[Q-2]=de,[]}),[]})},A:function(E,B){B=ge(B),$t(E,{name:B,fromWireType:function(Q){var _=Ee(Q);return ho(Q),_},toWireType:function(Q,_){return at(_)},argPackAdvance:8,readValueFromPointer:sr,V:null})},n:function(E,B,Q){Q=so(Q),B=ge(B),$t(E,{name:B,fromWireType:function(_){return _},toWireType:function(_,S){return S},argPackAdvance:8,readValueFromPointer:fE(B,Q),V:null})},e:function(E,B,Q,_,S){B=ge(B),S===-1&&(S=4294967295),S=so(Q);var k=T=>T;if(_===0){var F=32-8*Q;k=T=>T<<F>>>F}Q=B.includes("unsigned")?function(T,V){return V>>>0}:function(T,V){return V},$t(E,{name:B,fromWireType:k,toWireType:Q,argPackAdvance:8,readValueFromPointer:dE(B,S,_!==0),V:null})},b:function(E,B,Q){function _(k){k>>=2;var F=w;return new S(I,F[k+1],F[k])}var S=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][B];Q=ge(Q),$t(E,{name:Q,fromWireType:_,argPackAdvance:8,readValueFromPointer:_},{ua:!0})},o:function(E,B){B=ge(B);var Q=B==="std::string";$t(E,{name:B,fromWireType:function(_){var S=w[_>>2],k=_+4;if(Q)for(var F=k,T=0;T<=S;++T){var V=k+T;if(T==S||C[V]==0){if(F=F?f(C,F,V-F):"",O===void 0)var O=F;else O+="\0",O+=F;F=V+1}}else{for(O=Array(S),T=0;T<S;++T)O[T]=String.fromCharCode(C[k+T]);O=O.join("")}return tA(_),O},toWireType:function(_,S){S instanceof ArrayBuffer&&(S=new Uint8Array(S));var k,F=typeof S=="string";if(F||S instanceof Uint8Array||S instanceof Uint8ClampedArray||S instanceof Int8Array||j("Cannot pass non-string to std::string"),Q&&F){var T=0;for(k=0;k<S.length;++k){var V=S.charCodeAt(k);127>=V?T++:2047>=V?T+=2:55296<=V&&57343>=V?(T+=4,++k):T+=3}k=T}else k=S.length;if(T=uo(4+k+1),V=T+4,w[T>>2]=k,Q&&F){if(F=V,V=k+1,k=C,0<V){V=F+V-1;for(var O=0;O<S.length;++O){var Z=S.charCodeAt(O);if(55296<=Z&&57343>=Z){var re=S.charCodeAt(++O);Z=65536+((Z&1023)<<10)|re&1023}if(127>=Z){if(F>=V)break;k[F++]=Z}else{if(2047>=Z){if(F+1>=V)break;k[F++]=192|Z>>6}else{if(65535>=Z){if(F+2>=V)break;k[F++]=224|Z>>12}else{if(F+3>=V)break;k[F++]=240|Z>>18,k[F++]=128|Z>>12&63}k[F++]=128|Z>>6&63}k[F++]=128|Z&63}}k[F]=0}}else if(F)for(F=0;F<k;++F)O=S.charCodeAt(F),255<O&&(tA(V),j("String has UTF-16 code units that do not fit in 8 bits")),C[V+F]=O;else for(F=0;F<k;++F)C[V+F]=S[F];return _!==null&&_.push(tA,T),T},argPackAdvance:8,readValueFromPointer:sr,V:function(_){tA(_)}})},i:function(E,B,Q){if(Q=ge(Q),B===2)var _=IE,S=pE,k=EE,F=()=>x,T=1;else B===4&&(_=BE,S=CE,k=QE,F=()=>w,T=2);$t(E,{name:Q,fromWireType:function(V){for(var O=w[V>>2],Z=F(),re,ue=V+4,Pe=0;Pe<=O;++Pe){var de=V+4+Pe*B;(Pe==O||Z[de>>T]==0)&&(ue=_(ue,de-ue),re===void 0?re=ue:(re+="\0",re+=ue),ue=de+B)}return tA(V),re},toWireType:function(V,O){typeof O!="string"&&j("Cannot pass non-string to C++ string type "+Q);var Z=k(O),re=uo(4+Z+B);return w[re>>2]=Z>>T,S(O,re+4,Z+B),V!==null&&V.push(tA,re),re},argPackAdvance:8,readValueFromPointer:sr,V:function(V){tA(V)}})},k:function(E,B,Q,_,S,k){ds[E]={name:ge(B),fa:Dt(Q,_),W:Dt(S,k),ia:[]}},h:function(E,B,Q,_,S,k,F,T,V,O){ds[E].ia.push({oa:ge(B),ta:Q,ra:Dt(_,S),sa:k,za:F,ya:Dt(T,V),Aa:O})},C:function(E,B){B=ge(B),$t(E,{va:!0,name:B,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(E,B,Q,_,S){E=Es[E],B=Ee(B),Q=Mc(Q);var k=[];return w[_>>2]=at(k),E(B,Q,k,S)},t:function(E,B,Q,_){E=Es[E],B=Ee(B),Q=Mc(Q),E(B,Q,null,_)},g:ho,m:function(E,B){var Q=wE(E,B),_=Q[0];B=_.name+"_$"+Q.slice(1).map(function(F){return F.name}).join("_")+"$";var S=Rc[B];if(S!==void 0)return S;var k=Array(E-1);return S=mE((F,T,V,O)=>{for(var Z=0,re=0;re<E-1;++re)k[re]=Q[re+1].readValueFromPointer(O+Z),Z+=Q[re+1].argPackAdvance;for(F=F[T].apply(F,k),re=0;re<E-1;++re)Q[re+1].ma&&Q[re+1].ma(k[re]);if(!_.va)return _.toWireType(V,F)}),Rc[B]=S},D:function(E){4<E&&(U[E].ga+=1)},r:function(E){var B=Ee(E);ro(B),ho(E)},c:function(){Y("")},x:function(E,B,Q){C.copyWithin(E,B,B+Q)},w:function(E){var B=C.length;if(E>>>=0,2147483648<E)return!1;for(var Q=1;4>=Q;Q*=2){var _=B*(1+.2/Q);_=Math.min(_,E+100663296);var S=Math;_=Math.max(E,_),S=S.min.call(S,2147483648,_+(65536-_%65536)%65536);e:{try{c.grow(S-I.byteLength+65535>>>16),m();var k=1;break e}catch{}k=void 0}if(k)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(E,B,Q,_){for(var S=0,k=0;k<Q;k++){var F=w[B>>2],T=w[B+4>>2];B+=8;for(var V=0;V<T;V++){var O=C[F+V],Z=vE[E];O===0||O===10?((E===1?o:a)(f(Z,0)),Z.length=0):Z.push(O)}S+=T}return w[_>>2]=S,0}};(function(){function E(S){e.asm=S.exports,c=e.asm.E,m(),b=e.asm.J,z.unshift(e.asm.F),K--,e.monitorRunDependencies&&e.monitorRunDependencies(K),K==0&&te&&(S=te,te=null,S())}function B(S){E(S.instance)}function Q(S){return ie().then(function(k){return WebAssembly.instantiate(k,_)}).then(function(k){return k}).then(S,function(k){a("failed to asynchronously prepare wasm: "+k),Y(k)})}var _={a:bE};if(K++,e.monitorRunDependencies&&e.monitorRunDependencies(K),e.instantiateWasm)try{return e.instantiateWasm(_,E)}catch(S){a("Module.instantiateWasm callback failed with error: "+S),i(S)}return function(){return l||typeof WebAssembly.instantiateStreaming!="function"||L(se)||typeof fetch!="function"?Q(B):fetch(se,{credentials:"same-origin"}).then(function(S){return WebAssembly.instantiateStreaming(S,_).then(B,function(k){return a("wasm streaming compile failed: "+k),a("falling back to ArrayBuffer instantiation"),Q(B)})})}().catch(i),{}})(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.F).apply(null,arguments)};var kc=e.___getTypeName=function(){return(kc=e.___getTypeName=e.asm.G).apply(null,arguments)};e.__embind_initialize_bindings=function(){return(e.__embind_initialize_bindings=e.asm.H).apply(null,arguments)};var uo=e._malloc=function(){return(uo=e._malloc=e.asm.I).apply(null,arguments)},tA=e._free=function(){return(tA=e._free=e.asm.K).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.L).apply(null,arguments)};var Cs;te=function E(){Cs||Uc(),Cs||(te=E)};function Uc(){function E(){if(!Cs&&(Cs=!0,e.calledRun=!0,!h)){if(J(z),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var B=e.postRun.shift();Ae.unshift(B)}J(Ae)}}if(!(0<K)){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)W();J(D),0<K||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),E()},1)):E())}}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.pop()();return Uc(),A.ready}})();let Le=function(r){return r[r.Auto=0]="Auto",r[r.FlexStart=1]="FlexStart",r[r.Center=2]="Center",r[r.FlexEnd=3]="FlexEnd",r[r.Stretch=4]="Stretch",r[r.Baseline=5]="Baseline",r[r.SpaceBetween=6]="SpaceBetween",r[r.SpaceAround=7]="SpaceAround",r[r.SpaceEvenly=8]="SpaceEvenly",r}({}),qr=function(r){return r[r.BorderBox=0]="BorderBox",r[r.ContentBox=1]="ContentBox",r}({}),ql=function(r){return r[r.Width=0]="Width",r[r.Height=1]="Height",r}({}),fA=function(r){return r[r.Inherit=0]="Inherit",r[r.LTR=1]="LTR",r[r.RTL=2]="RTL",r}({}),ni=function(r){return r[r.Flex=0]="Flex",r[r.None=1]="None",r[r.Contents=2]="Contents",r}({}),pe=function(r){return r[r.Left=0]="Left",r[r.Top=1]="Top",r[r.Right=2]="Right",r[r.Bottom=3]="Bottom",r[r.Start=4]="Start",r[r.End=5]="End",r[r.Horizontal=6]="Horizontal",r[r.Vertical=7]="Vertical",r[r.All=8]="All",r}({}),oi=function(r){return r[r.None=0]="None",r[r.StretchFlexBasis=1]="StretchFlexBasis",r[r.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",r[r.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",r[r.All=2147483647]="All",r[r.Classic=2147483646]="Classic",r}({}),OI=function(r){return r[r.WebFlexBasis=0]="WebFlexBasis",r}({}),dA=function(r){return r[r.Column=0]="Column",r[r.ColumnReverse=1]="ColumnReverse",r[r.Row=2]="Row",r[r.RowReverse=3]="RowReverse",r}({}),Xr=function(r){return r[r.Column=0]="Column",r[r.Row=1]="Row",r[r.All=2]="All",r}({}),mt=function(r){return r[r.FlexStart=0]="FlexStart",r[r.Center=1]="Center",r[r.FlexEnd=2]="FlexEnd",r[r.SpaceBetween=3]="SpaceBetween",r[r.SpaceAround=4]="SpaceAround",r[r.SpaceEvenly=5]="SpaceEvenly",r}({}),ai=function(r){return r[r.Error=0]="Error",r[r.Warn=1]="Warn",r[r.Info=2]="Info",r[r.Debug=3]="Debug",r[r.Verbose=4]="Verbose",r[r.Fatal=5]="Fatal",r}({}),jn=function(r){return r[r.Undefined=0]="Undefined",r[r.Exactly=1]="Exactly",r[r.AtMost=2]="AtMost",r}({}),Xl=function(r){return r[r.Default=0]="Default",r[r.Text=1]="Text",r}({}),li=function(r){return r[r.Visible=0]="Visible",r[r.Hidden=1]="Hidden",r[r.Scroll=2]="Scroll",r}({}),ci=function(r){return r[r.Static=0]="Static",r[r.Relative=1]="Relative",r[r.Absolute=2]="Absolute",r}({}),Ft=function(r){return r[r.Undefined=0]="Undefined",r[r.Point=1]="Point",r[r.Percent=2]="Percent",r[r.Auto=3]="Auto",r}({}),hi=function(r){return r[r.NoWrap=0]="NoWrap",r[r.Wrap=1]="Wrap",r[r.WrapReverse=2]="WrapReverse",r}({});const HI={ALIGN_AUTO:Le.Auto,ALIGN_FLEX_START:Le.FlexStart,ALIGN_CENTER:Le.Center,ALIGN_FLEX_END:Le.FlexEnd,ALIGN_STRETCH:Le.Stretch,ALIGN_BASELINE:Le.Baseline,ALIGN_SPACE_BETWEEN:Le.SpaceBetween,ALIGN_SPACE_AROUND:Le.SpaceAround,ALIGN_SPACE_EVENLY:Le.SpaceEvenly,BOX_SIZING_BORDER_BOX:qr.BorderBox,BOX_SIZING_CONTENT_BOX:qr.ContentBox,DIMENSION_WIDTH:ql.Width,DIMENSION_HEIGHT:ql.Height,DIRECTION_INHERIT:fA.Inherit,DIRECTION_LTR:fA.LTR,DIRECTION_RTL:fA.RTL,DISPLAY_FLEX:ni.Flex,DISPLAY_NONE:ni.None,DISPLAY_CONTENTS:ni.Contents,EDGE_LEFT:pe.Left,EDGE_TOP:pe.Top,EDGE_RIGHT:pe.Right,EDGE_BOTTOM:pe.Bottom,EDGE_START:pe.Start,EDGE_END:pe.End,EDGE_HORIZONTAL:pe.Horizontal,EDGE_VERTICAL:pe.Vertical,EDGE_ALL:pe.All,ERRATA_NONE:oi.None,ERRATA_STRETCH_FLEX_BASIS:oi.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:oi.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:oi.AbsolutePercentAgainstInnerSize,ERRATA_ALL:oi.All,ERRATA_CLASSIC:oi.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:OI.WebFlexBasis,FLEX_DIRECTION_COLUMN:dA.Column,FLEX_DIRECTION_COLUMN_REVERSE:dA.ColumnReverse,FLEX_DIRECTION_ROW:dA.Row,FLEX_DIRECTION_ROW_REVERSE:dA.RowReverse,GUTTER_COLUMN:Xr.Column,GUTTER_ROW:Xr.Row,GUTTER_ALL:Xr.All,JUSTIFY_FLEX_START:mt.FlexStart,JUSTIFY_CENTER:mt.Center,JUSTIFY_FLEX_END:mt.FlexEnd,JUSTIFY_SPACE_BETWEEN:mt.SpaceBetween,JUSTIFY_SPACE_AROUND:mt.SpaceAround,JUSTIFY_SPACE_EVENLY:mt.SpaceEvenly,LOG_LEVEL_ERROR:ai.Error,LOG_LEVEL_WARN:ai.Warn,LOG_LEVEL_INFO:ai.Info,LOG_LEVEL_DEBUG:ai.Debug,LOG_LEVEL_VERBOSE:ai.Verbose,LOG_LEVEL_FATAL:ai.Fatal,MEASURE_MODE_UNDEFINED:jn.Undefined,MEASURE_MODE_EXACTLY:jn.Exactly,MEASURE_MODE_AT_MOST:jn.AtMost,NODE_TYPE_DEFAULT:Xl.Default,NODE_TYPE_TEXT:Xl.Text,OVERFLOW_VISIBLE:li.Visible,OVERFLOW_HIDDEN:li.Hidden,OVERFLOW_SCROLL:li.Scroll,POSITION_TYPE_STATIC:ci.Static,POSITION_TYPE_RELATIVE:ci.Relative,POSITION_TYPE_ABSOLUTE:ci.Absolute,UNIT_UNDEFINED:Ft.Undefined,UNIT_POINT:Ft.Point,UNIT_PERCENT:Ft.Percent,UNIT_AUTO:Ft.Auto,WRAP_NO_WRAP:hi.NoWrap,WRAP_WRAP:hi.Wrap,WRAP_WRAP_REVERSE:hi.WrapReverse};function JI(r){function A(i,s,n){const o=i[s];i[s]=function(){for(var a=arguments.length,l=new Array(a),c=0;c<a;c++)l[c]=arguments[c];return n.call(this,o,...l)}}for(const i of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){const s={[Ft.Point]:r.Node.prototype[i],[Ft.Percent]:r.Node.prototype[`${i}Percent`],[Ft.Auto]:r.Node.prototype[`${i}Auto`]};A(r.Node.prototype,i,function(n){for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const c=a.pop();let h,f;if(c==="auto")h=Ft.Auto,f=void 0;else if(typeof c=="object")h=c.unit,f=c.valueOf();else if(h=typeof c=="string"&&c.endsWith("%")?Ft.Percent:Ft.Point,f=parseFloat(c),c!==void 0&&!Number.isNaN(c)&&Number.isNaN(f))throw new Error(`Invalid value ${c} for ${i}`);if(!s[h])throw new Error(`Failed to execute "${i}": Unsupported unit '${c}'`);return f!==void 0?s[h].call(this,...a,f):s[h].call(this,...a)})}function e(i){return r.MeasureCallback.implement({measure:function(){const{width:s,height:n}=i(...arguments);return{width:s??NaN,height:n??NaN}}})}A(r.Node.prototype,"setMeasureFunc",function(i,s){return s?i.call(this,e(s)):this.unsetMeasureFunc()});function t(i){return r.DirtiedCallback.implement({dirtied:i})}return A(r.Node.prototype,"setDirtiedFunc",function(i,s){i.call(this,t(s))}),A(r.Config.prototype,"free",function(){r.Config.destroy(this)}),A(r.Node,"create",(i,s)=>s?r.Node.createWithConfig(s):r.Node.createDefault()),A(r.Node.prototype,"free",function(){r.Node.destroy(this)}),A(r.Node.prototype,"freeRecursive",function(){for(let i=0,s=this.getChildCount();i<s;++i)this.getChild(0).freeRecursive();this.free()}),A(r.Node.prototype,"calculateLayout",function(i){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:fA.LTR;return i.call(this,s,n,o)}),{Config:r.Config,Node:r.Node,...HI}}async function KI(){return JI(await LI())}class jl extends Li{constructor(A){super(),this.setProperties(A)}}const gi={auto:Le.Auto,"flex-start":Le.FlexStart,center:Le.Center,"flex-end":Le.FlexEnd,stretch:Le.Stretch,baseline:Le.Baseline,"space-between":Le.SpaceBetween,"space-around":Le.SpaceAround,"space-evenly":Le.SpaceEvenly},Zl={none:ni.None,flex:ni.Flex,contents:ni.Contents},$l={inherit:fA.Inherit,ltr:fA.LTR,rtl:fA.RTL},ec={column:dA.Column,"column-reverse":dA.ColumnReverse,row:dA.Row,"row-reverse":dA.RowReverse},tc={"no-wrap":hi.NoWrap,wrap:hi.Wrap,"Wrap-reverse":hi.WrapReverse},Ac={"flex-start":mt.FlexStart,center:mt.Center,"flex-end":mt.FlexEnd,"space-between":mt.SpaceBetween,"space-around":mt.SpaceAround,"space-evenly":mt.SpaceEvenly},ic={visible:li.Visible,hidden:li.Hidden,scroll:li.Scroll},rc={static:ci.Static,relative:ci.Relative,absolute:ci.Absolute},sc={"border-box":qr.BorderBox,"content-box":qr.ContentBox},as=class as{constructor(A){u(this,"_node",as._yoga.Node.create());this._element=A}static async load(){this._yoga=await KI()}get _style(){return this._element.style}get offsetLeft(){return this._node.getComputedLeft()}get offsetTop(){return this._node.getComputedTop()}get offsetWidth(){return this._node.getComputedWidth()}get offsetHeight(){return this._node.getComputedHeight()}calculateLayout(A,e,t){return this._node.calculateLayout(A,e,t)}getComputedLayout(){return this._node.getComputedLayout()}updateStyleProperty(A,e,t,i){switch(A){case"alignContent":this._node.setAlignContent(e?gi[e]:gi["flex-start"]);break;case"alignItems":this._node.setAlignItems(e?gi[e]:gi["flex-start"]);break;case"alignSelf":this._node.setAlignSelf(e?gi[e]:gi["flex-start"]);break;case"aspectRatio":this._node.setAspectRatio(e);break;case"borderTop":this._node.setBorder(pe.Top,this._style.borderWidth);break;case"borderBottom":this._node.setBorder(pe.Bottom,this._style.borderWidth);break;case"borderLeft":this._node.setBorder(pe.Left,this._style.borderWidth);break;case"borderRight":this._node.setBorder(pe.Right,this._style.borderWidth);break;case"border":this._node.setBorder(pe.All,this._style.borderWidth);break;case"direction":this._node.setDirection(e?$l[e]:$l.inherit);break;case"display":this._node.setDisplay(e?Zl[e]:Zl.flex);break;case"flex":this._node.setFlex(this._style.flex);break;case"flexBasis":this._node.setFlexBasis(this._style.flexBasis);break;case"flexDirection":this._node.setFlexDirection(e?ec[e]:ec.row);break;case"flexGrow":this._node.setFlexGrow(this._style.flexGrow);break;case"flexShrink":this._node.setFlexShrink(this._style.flexShrink);break;case"flexWrap":this._node.setFlexWrap(e?tc[e]:tc.wrap);break;case"height":this._node.setHeight(this._style.height);break;case"justifyContent":this._node.setJustifyContent(e?Ac[e]:Ac["flex-start"]);break;case"gap":e!==void 0&&this._node.setGap(Xr.All,e);break;case"marginTop":this._node.setMargin(pe.Top,e);break;case"marginBottom":this._node.setMargin(pe.Top,e);break;case"marginLeft":this._node.setMargin(pe.Left,e);break;case"marginRight":this._node.setMargin(pe.Top,e);break;case"margin":this._node.setMargin(pe.All,e);break;case"maxHeight":this._node.setMaxHeight(e);break;case"maxWidth":this._node.setMaxWidth(e);break;case"minHeight":this._node.setMinHeight(this._style.minHeight);break;case"minWidth":this._node.setMinWidth(this._style.minWidth);break;case"overflow":this._node.setOverflow(e?ic[e]:ic.visible);break;case"paddingTop":this._node.setPadding(pe.Top,this._style.paddingTop);break;case"paddingBottom":this._node.setPadding(pe.Bottom,this._style.paddingBottom);break;case"paddingLeft":this._node.setPadding(pe.Left,this._style.paddingLeft);break;case"paddingRight":this._node.setPadding(pe.Right,this._style.paddingRight);break;case"padding":this._node.setPadding(pe.All,this._style.padding);break;case"top":this._node.setPosition(pe.Top,this._style.top);break;case"bottom":this._node.setPosition(pe.Bottom,this._style.bottom);break;case"left":this._node.setPosition(pe.Left,this._style.left);break;case"right":this._node.setPosition(pe.Right,this._style.right);break;case"position":this._node.setPositionType(e?rc[e]:rc.static);break;case"boxSizing":this._node.setBoxSizing(e?sc[e]:sc["content-box"]);break;case"width":this._node.setWidth(this._style.width);break}}};u(as,"_yoga");let jr=as;var YI=Object.getOwnPropertyDescriptor,VI=(r,A,e,t)=>{for(var i=t>1?void 0:t?YI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.FlexElement2D=class extends g.BaseElement2D{constructor(e,t=[]){super();u(this,"_layout",new jr(this));this.style=new jl,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...s)=>{this.emit("updateStyleProperty",...s),this._updateStyleProperty(s[0],s[1],s[2],s[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get offsetLeft(){return this._layout.offsetLeft}get offsetTop(){return this._layout.offsetTop}get offsetWidth(){return this._layout.offsetWidth}get offsetHeight(){return this._layout.offsetHeight}_parented(e){super._parented(e),e._layout&&this._layout._node&&e._layout._node.insertChild(this._layout._node,e._layout._node.getChildCount())}_unparented(e){var t;super._unparented(e),(t=e._layout)!=null&&t._node&&e._layout._node.removeChild(this._layout._node)}_updateStyleProperty(e,t,i,s){super._updateStyleProperty(e,t,i,s),this._layout.updateStyleProperty(e,t,i,s),this._layout._node.isDirty()&&this.requestRelayout()}updateTransform(){this.calculateLayout(void 0,void 0,fA.LTR);const{left:e,top:t,width:i,height:s}=this._layout.getComputedLayout();this.position.x=e,this.position.y=t,this.size.x=i,this.size.y=s,super.updateTransform()}calculateLayout(e,t,i){var n;const s=this.getParent();(n=s==null?void 0:s._layout)!=null&&n.calculateLayout?s==null||s._layout.calculateLayout(e,t,i):this._layout.calculateLayout(e,t,i)}},g.FlexElement2D=VI([ne("FlexElement2D")],g.FlexElement2D);var zI=Object.defineProperty,WI=Object.getOwnPropertyDescriptor,ke=(r,A,e,t)=>{for(var i=t>1?void 0:t?WI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&zI(A,e,i),i};function Oe(r){return function(A,e){Object.defineProperty(A.constructor.prototype,e,{get(){return r!=null&&r.method?(...t)=>(this.context[e].call(this.context,...t),r.redraw&&this.requestRedraw(),A):this.context[e]},set(t){this.context[e]=t},configurable:!0,enumerable:!0})}}g.Graphics2D=class extends g.Node2D{constructor(){super(...arguments);u(this,"_resetContext",!1);u(this,"lineCap");u(this,"lineJoin");u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineWidth");u(this,"miterLimit")}drawCircle(e,t,i){return this.arc(e+i,t+i,i,0,it),this.fill(),this}drawEllipse(e,t,i,s){const n=i/2,o=s/2;return this.ellipse(e+n,t+o,n,o,0,0,it),this.fill(),this}},ke([Oe()],g.Graphics2D.prototype,"lineCap",2),ke([Oe()],g.Graphics2D.prototype,"lineJoin",2),ke([Oe()],g.Graphics2D.prototype,"fillStyle",2),ke([Oe()],g.Graphics2D.prototype,"strokeStyle",2),ke([Oe()],g.Graphics2D.prototype,"lineWidth",2),ke([Oe()],g.Graphics2D.prototype,"miterLimit",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"rect",2),ke([Oe({method:!0,redraw:!0})],g.Graphics2D.prototype,"fillRect",2),ke([Oe({method:!0,redraw:!0})],g.Graphics2D.prototype,"strokeRect",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"roundRect",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"ellipse",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"arc",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"beginPath",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"moveTo",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"lineTo",2),ke([Oe({method:!0})],g.Graphics2D.prototype,"closePath",2),ke([Oe({method:!0,redraw:!0})],g.Graphics2D.prototype,"fill",2),ke([Oe({method:!0,redraw:!0})],g.Graphics2D.prototype,"stroke",2),g.Graphics2D=ke([ne("Graphics2D")],g.Graphics2D);var qI=Object.defineProperty,XI=Object.getOwnPropertyDescriptor,tr=(r,A,e,t)=>{for(var i=t>1?void 0:t?XI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&qI(A,e,i),i};g.Image2D=class extends g.Element2D{constructor(e,t=[]){super();u(this,"texture");u(this,"_frameIndex",0);u(this,"_complete",!1);u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get currentFrameTexture(){var e,t;return(t=(e=this.texture)==null?void 0:e.frames[this._frameIndex])==null?void 0:t.texture}get textureDuration(){var e;return((e=this.texture)==null?void 0:e.duration)??0}get naturalWidth(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realWidth)??0}get naturalHeight(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realHeight)??0}get complete(){return this._complete}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._wait=this._load(t);break;case"srcRect":this.requestRedraw();break}}decode(){return this._wait}setResource(e){let t;if(e instanceof Cr?t=e:t=new Cr(e),this.texture=t.updateDuration(),this.currentFrameTexture&&(!this.style.width||!this.style.height)){const i=this.currentFrameTexture;this.style.width=i.realWidth,this.style.height=i.realHeight}return this}async _load(e){if(this._complete=!1,e)try{this.setResource(this.gif||e!=null&&e.includes(".gif")?await Gt.gif.load(e):await Gt.texture.load(e)),this.requestRedraw(),this.emit("load")}catch(t){console.warn(t),this.emit("error",t)}else this.texture=void 0;this._complete=!0}_getFrameCurrentTime(){const e=this.textureDuration;if(!e||!this._tree)return 0;const t=this._currentTime;return t<0?0:t%e}_updateFrameIndex(){if(!this.texture)return this;const e=this._getFrameCurrentTime(),t=this.texture.frames,i=t.length;if(i<=1&&this._frameIndex===0)return this;let s=i-1;for(let n=0,o=0;o<i;o++)if(n+=t[o].duration??0,n>=e){s=o;break}return this._frameIndex!==s&&(this._frameIndex=s,this.requestRedraw()),this}_process(e){this._updateFrameIndex(),super._process(e)}_drawContent(){const e=this.currentFrameTexture;if(e!=null&&e.valid){const{left:t=0,top:i=0,right:s=0,bottom:n=0}=this.srcRect??{},{width:o,height:a}=this.size;this.context.fillStyle=e;const l=Math.abs(1+(t+s))*o,c=Math.abs(1+(i+n))*a,h=1/l,f=1/c,I=t*o*h,d=i*a*f;this.context.uvTransform=new ht().scale(h,f).translate(I,d),this.shape.draw(),this.context.fill()}}_repaint(e){return super._repaint(e).map(t=>({...t,disableWrapMode:!0}))}},tr([Ie()],g.Image2D.prototype,"texture",2),tr([M({default:""})],g.Image2D.prototype,"src",2),tr([M()],g.Image2D.prototype,"srcRect",2),tr([M({default:!1})],g.Image2D.prototype,"gif",2),g.Image2D=tr([ne("Image2D")],g.Image2D);class Zr extends g.Element2D{constructor(e,t=[]){super();u(this,"texture");this.setProperties(e).append(t)}_drawContent(){var e;if((e=this.texture)!=null&&e.valid){const{width:t,height:i}=this.size;this.context.fillStyle=this.texture,this.context.uvTransform=new ht().scale(1/t,1/i),this.shape.drawRect(),this.context.fill()}}}var jI=Object.defineProperty,ZI=Object.getOwnPropertyDescriptor,nc=(r,A,e,t)=>{for(var i=t>1?void 0:t?ZI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&jI(A,e,i),i};g.Lottie2D=class extends Zr{constructor(e,t=[]){super();u(this,"texture",new YA);u(this,"animation");this.setProperties(e),this.append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._load();break}}_updateStyleProperty(e,t,i){switch(super._updateStyleProperty(e,t,i),e){case"width":this.texture.width=this.style.width;break;case"height":this.texture.height=this.style.height;break}}async _load(){this.animation=await Gt.lottie.load(this.src,this.texture.source),this.duration=this.animation.getDuration(!1)*1e3,this.texture.requestUpload(),this.requestRedraw()}_process(e){var t;(t=this.animation)==null||t.goToAndStop(this.currentTime,!1),this.texture.requestUpload(),this.requestRedraw(),super._process(e)}},nc([M({default:""})],g.Lottie2D.prototype,"src",2),g.Lottie2D=nc([ne("Lottie2D")],g.Lottie2D);var $I=Object.defineProperty,ep=Object.getOwnPropertyDescriptor,ui=(r,A,e,t)=>{for(var i=t>1?void 0:t?ep(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&$I(A,e,i),i};const tp=new Set(Object.keys(Wn));g.Text2D=class extends Zr{constructor(e,t=[]){super();u(this,"texture",new YA);u(this,"base",new zl);u(this,"measureResult");u(this,"_subTextsCount",0);this.setProperties(e),this.append(t),e!=null&&e.plugins&&e.plugins.forEach(i=>{this.base.use(i)})}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"content":case"effects":case"measureDOM":case"fonts":case"split":this._updateSplit(),this.requestRedraw();break}this._subTextsCount&&e==="effects"&&this._getSubTexts().forEach(n=>{n.setProperties({[e]:t})})}_updateBase(){this.base.style=this.style.toJSON(),this.emit("updateBase",this.base),this.base.requestUpdate()}_updateStyleProperty(e,t,i){switch(e){case"left":case"top":case"width":case"height":this.requestRedraw();break;default:super._updateStyleProperty(e,t,i);break}switch(e){case"width":this.split&&this._updateSubTexts();break}typeof e=="string"&&tp.has(e)&&(this._subTextsCount&&e!=="width"&&e!=="height"&&this._getSubTexts().forEach(s=>{s.style.setProperties({[e]:t})}),this.requestRedraw())}_getSubTexts(){return this.children.front.filter(e=>e instanceof g.Text2D)}_updateSubTexts(){var i;const e=this._getSubTexts();let t=0;this.split&&((i=this.updateMeasure().measureResult)==null||i.paragraphs.forEach(s=>{s.fragments.forEach(n=>{n.characters.forEach(o=>{const a=e[t];a&&(a.style.left=o.inlineBox.left,a.style.top=o.inlineBox.top),t++})})}))}measure(){return this._updateBase(),this.base.measure()}updateMeasure(){this.measureResult=this.measure();const{boundingBox:e}=this.measureResult,{left:t,top:i}=this.style;return this.position.x=t+Math.min(0,e.left),this.position.y=i+Math.min(0,e.top),this.size.width=e.width,this.size.height=e.height,this}_updateSplit(){this._subTextsCount&&(this.children.front.forEach(e=>this.removeChild(e)),this._subTextsCount=0),this.split&&this.measure().paragraphs.forEach(e=>{e.fragments.forEach(t=>{t.characters.forEach(i=>{this.append(new g.Text2D({internalMode:"front",style:{...i.computedStyle,left:i.inlineBox.x,top:i.inlineBox.y,width:0,height:0},content:i.content,effects:this.effects,fonts:this.fonts})),this._subTextsCount++})})})}_redraw(){return this.updateMeasure(),super._redraw()}_drawContent(){this.split||(this.base.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload(),super._drawContent())}},ui([M({default:!1})],g.Text2D.prototype,"split",2),ui([M({alias:"base.content"})],g.Text2D.prototype,"content",2),ui([M({alias:"base.effects"})],g.Text2D.prototype,"effects",2),ui([Ie({alias:"base.measureDOM"})],g.Text2D.prototype,"measureDOM",2),ui([Ie({alias:"base.fonts"})],g.Text2D.prototype,"fonts",2),g.Text2D=ui([ne("Text2D")],g.Text2D);var Ap=Object.defineProperty,ip=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Ap(A,e,i),i};class Zn extends g.Element2D{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":this.requestRedraw();break}}_drawCircle(A,e){this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.fillStyle=_e.WHITE,this.context.fill(),this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_drawEllipse(A,e){this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.fillStyle=_e.WHITE,this.context.fill(),this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_draw(){const{width:A,height:e}=this.getRect();this.context.rect(0,0,A,e),this.context.strokeStyle="#00FF00",this.context.stroke(),this._drawCircle(0,0),this._drawCircle(A,e),this._drawCircle(0,e),this._drawEllipse(0,e/2),this._drawCircle(A,0),this._drawEllipse(A,e/2)}}ip([M({default:6})],Zn.prototype,"handleSize");var rp=Object.defineProperty,sp=Object.getOwnPropertyDescriptor,oc=(r,A,e,t)=>{for(var i=t>1?void 0:t?sp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&rp(A,e,i),i};g.Video2D=class extends Zr{constructor(e,t=[]){super();u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get videoDuration(){var e;return(((e=this.texture)==null?void 0:e.duration)??0)*1e3}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._wait=this._load(t);break}}waitLoad(){return this._wait}async _load(e){this.texture=await Gt.video.load(e),(!this.style.width||!this.style.height)&&(this.style.width=this.texture.width,this.style.height=this.texture.height),this.requestRedraw()}_updateVideoCurrentTime(){let e=this._currentTime;if(e<0)return;const t=this.texture;if(!t)return;const i=t.duration;e=i?e%(i*1e3):0,!t.isPlaying&&!t.seeking&&(e=~~e/1e3,t.currentTime!==e&&(t.currentTime=e))}_process(e){this._updateVideoCurrentTime(),super._process(e)}},oc([M({default:""})],g.Video2D.prototype,"src",2),g.Video2D=oc([ne("Video2D")],g.Video2D);var np=Object.defineProperty,op=Object.getOwnPropertyDescriptor,Ar=(r,A,e,t)=>{for(var i=t>1?void 0:t?op(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&np(A,e,i),i};const ac=r=>r,lc=fi(.25,.1,.25,1),cc=fi(.42,0,1,1),hc=fi(0,0,.58,1),gc=fi(.42,0,.58,1);function fi(r,A,e,t){const s=3*r-3*e+1,n=3*e-6*r,o=3*r,a=3*A-3*t+1,l=3*t-6*A,c=3*A,h=C=>(3*s*C+2*n)*C+o,f=C=>((s*C+n)*C+o)*C,I=C=>((a*C+l)*C+c)*C;function d(C){let p=C,x,P;for(let v=0;v<8;v++){if(P=f(p)-C,Math.abs(P)<1e-6)return p;if(x=h(p),Math.abs(x)<1e-6)break;p-=P/x}let w=1,R=0;for(p=C;w>R;){if(P=f(p)-C,Math.abs(P)<1e-6)return p;P>0?w=p:R=p,p=(w+R)/2}return p}return C=>I(d(C))}const $r={linear:ac,ease:lc,easeIn:cc,easeOut:hc,easeInOut:gc};g.Animation=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"easing");u(this,"_keyframes",[]);u(this,"_isFirstUpdatePosition",!1);u(this,"_cachedProps",new xs);u(this,"_stoped",!1);this.setProperties(e).append(t)}_parented(e){super._parented(e),this._updateCachedProps()}_unparented(e){super._unparented(e),this.cancel()}_process(){this.canProcess()&&this.commitStyles()}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"effectMode":case"keyframes":this._updateKeyframes();break}}_getTargets(){var t;let e;switch(this.effectMode){case"sibling":e=((t=this.getParent())==null?void 0:t.children.internal.filter(i=>i instanceof g.CanvasItem))??[];break;case"parent":default:e=[this.getParent()].filter(Boolean);break}return e.map(i=>i.style)}_updateKeyframes(){const e=[],t=this.keyframes;for(let n=t.length,o=0;o<n;o++){const{offset:a=o===0?0:o/(n-1),easing:l="linear",...c}=t[o];e.push({offset:a,easing:this._parseEasing(l),props:c})}const i=e[0],s=e[e.length-1];i&&i.offset!==0&&e.unshift({offset:0,easing:this._parseEasing("linear"),props:{}}),s&&s.offset!==1&&e.push({offset:1,easing:this._parseEasing("linear"),props:{}}),this._keyframes=e,this._updateCachedProps()}commitStyles(){if(!this.keyframes.length)return;if(this._updateCurrentTime(),this.isInsideTimeRange())this._isFirstUpdatePosition||(this._isFirstUpdatePosition=!0,this._updateCachedProps());else{if(!this._isFirstUpdatePosition)return;this._isFirstUpdatePosition=!1}const e=this._getTargets(),t=1/e.length,i=this.currentTimeProgress;e.forEach((s,n)=>{const o=t===1?i:zt(0,Math.max(0,i-t*n)/t,1),a=this._cachedProps.get(s);if(!a)return;const l=this._parseKeyframes(o,a);l!=null&&l.length&&this._commitStyle(o,s,a,l[0],l[1])})}_updateCachedProps(){this.cancel(),this._getTargets().forEach(e=>{const t=new Map,i=this._keyframes;for(let s=i.length,n=0;n<s;n++)Object.keys(i[n].props).forEach(o=>{t.set(o,e[o])});this._cachedProps.set(e,t)})}_parseEasing(e){if(!e)return $r.linear;if(e in $r)return $r[e];const t=e.replace(/cubic-bezier\((.+)\)/,"$1").split(",").map(i=>Number(i));return fi(t[0],t[1],t[2],t[3])}_parseKeyframes(e,t){let i;const s=this._keyframes;for(let n=s.length,o=0;o<n;o++){const a=s[o],{offset:l,easing:c}=a,h={...a.props};if(i&&e<=l){const{offset:f,easing:I}=i,d={...i.props};return t.forEach((C,p)=>{(!(p in d)||d[p]===null)&&(d[p]=C),(!(p in h)||h[p]===null)&&(h[p]=C)}),[{offset:f,easing:I,props:d},{offset:l,easing:c,props:h}]}i=a}return null}_commitStyle(e,t,i,s,n){const{offset:o,easing:a,props:l}=s,{offset:c,props:h}=n,f=c-o,I=a((e-o)/f),d={width:t.width,height:t.height,fontSize:t.fontSize};i.forEach((C,p)=>{t[p]=this._getDiffValue(p,l[p],h[p],I,d)})}_getDiffValue(e,t,i,s,n){let o,a;if(t==="none"&&(t=void 0),i==="none"&&(i=void 0),t===void 0||i===void 0)if(t!==void 0)o=Ci(e,String(t),n),a=ks(o);else if(i!==void 0)a=Ci(e,String(i),n),o=ks(a);else return;else o=Ci(e,String(t),n),a=Ci(e,String(i),n);if(Array.isArray(o)&&Array.isArray(a)){const l=new Set,c={},h={};o.forEach(({name:I,args:d})=>{c[I]=d,l.add(I)}),a.forEach(({name:I,args:d})=>{h[I]=d,l.add(I)});let f="";return l.forEach(I=>{var x,P;const d=Math.max(((x=c[I])==null?void 0:x.length)??0,((P=h[I])==null?void 0:P.length)??0),C=c[I],p=h[I];f+=`${I}(${Array.from({length:d},(w,R)=>{const v=C==null?void 0:C[R],m=p==null?void 0:p[R],b=(v==null?void 0:v.normalizedIntValue)??0,D=(m==null?void 0:m.normalizedIntValue)??0;return Number.isNaN(b)||Number.isNaN(D)?(m==null?void 0:m.value)??0:Me(b,D,s)}).join(", ")}) `}),f}else if(!Array.isArray(o)&&!Array.isArray(a))return Number.isNaN(o.normalizedIntValue)||Number.isNaN(a.normalizedIntValue)?a.value:Me(o.normalizedIntValue,a.normalizedIntValue,s)}isPlaying(){return!this.paused&&this.isInsideTimeRange()}play(){return this._stoped?(this._stoped=!1,this.startTime=this.timelineCurrentTime):this.startTime=this.timelineCurrentTime-this.currentTime,this.paused=!1,!0}pause(){return this.paused=!0,!0}stop(){return this._stoped=!0,this.paused=!0,this._currentTime=0,!0}cancel(){this._getTargets().forEach(e=>{var t;(t=this._cachedProps.get(e))==null||t.forEach((i,s)=>{e[s]=i}),this._cachedProps.delete(e)})}},Ar([M({default:"parent"})],g.Animation.prototype,"effectMode",2),Ar([M({default:!1})],g.Animation.prototype,"loop",2),Ar([M({default:()=>[]})],g.Animation.prototype,"keyframes",2),Ar([M()],g.Animation.prototype,"easing",2),g.Animation=Ar([ne("Animation",{renderMode:"disabled",processMode:"pausable",processSortMode:"parent_before",duration:2e3})],g.Animation);const ls=class ls extends Jt{constructor(){super(...arguments);u(this,"playbackRate",1);u(this,"muted",!1);u(this,"volume",1);u(this,"paused",!1)}static get instance(){return this._instance||(this._instance=new ls),this._instance}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}get audioContext(){return console.warn("HTML Audio does not support audioContext"),null}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this.paused}free(){this.removeAllListeners()}};u(ls,"_instance");let es=ls;const rr=class rr extends Jt{constructor(){super(...arguments);u(this,"_source",null);u(this,"_audio",null);u(this,"_end",0);u(this,"_pausedReal",!1);u(this,"_duration",0);u(this,"_start",0);u(this,"_playing",!1);u(this,"_paused",!1);u(this,"_playbackRate",1);u(this,"_volume",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_onUpdate",()=>{this._source&&(this.emit("progress",this.progress,this._duration),this._source.currentTime>=this._end&&!this._source.loop&&this._onComplete())})}get progress(){var e;return(((e=this._source)==null?void 0:e.currentTime)??0)/this._duration}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}set(e,t){if(this[e]===void 0)throw new Error(`Property with name ${e} does not exist.`);switch(e){case"playbackRate":this.playbackRate=t;break;case"volume":this.volume=t;break;case"paused":this.paused=t;break;case"loop":this.loop=t;break;case"muted":this.muted=t;break}return this}_onPlay(){this._playing=!0}_onPause(){this._playing=!1}init(e){this._playing=!1,this._duration=e.source.duration;const t=this._source=e.source.cloneNode(!1);return t.src=e.parent.src,t.onplay=this._onPlay.bind(this),t.onpause=this._onPause.bind(this),e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this._audio=e,this}_stop(){this._source&&this._playing&&(this._source.onended=null,this._source.pause())}stop(){this._stop(),this._source&&this.emit("stop")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}refresh(){if(!this._audio||!this._source)return;const e=this._audio.context,t=this._audio.parent;this._source.loop=this._loop||t.loop;const i=e.volume*(e.muted?0:1),s=t.volume*(t.muted?0:1),n=this._volume*(this._muted?0:1);this._source.volume=n*i*s,this._source.playbackRate=this._playbackRate*e.playbackRate*t.playbackRate}refreshPaused(){if(!this._source||!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._source.currentTime,end:this._end,volume:this._volume,playbackRate:this._playbackRate,loop:this._loop})),this.emit("pause",e))}play(e={}){if(!this._source)return;const{start:t=0,end:i=0}=e;i&&console.assert(i>t,"End time is before start time"),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.volume!==void 0&&(this._volume=e.volume),e.loop!==void 0&&(this._loop=e.loop),e.muted!==void 0&&(this._muted=e.muted),this.refresh(),this.loop&&i!==null&&(console.warn('Looping not support when specifying an "end" time'),this.loop=!1),this._start=t,this._end=i||this._duration,this._start=Math.max(0,this._start-rr.PADDING),this._end=Math.min(this._end+rr.PADDING,this._duration),this._source.onloadedmetadata=()=>{this._source&&(this._source.currentTime=t,this._source.onloadedmetadata=null,this.emit("progress",t,this._duration),Se.on(this._onUpdate))},this._source.onended=this._onComplete.bind(this),this._source.play(),this.emit("start")}_onComplete(){Se.off(this._onUpdate),this._stop(),this.emit("progress",1,this._duration),this.emit("end",this)}free(){Se.off(this._onUpdate),this.removeAllListeners();const e=this._source;e&&(e.onended=null,e.onplay=null,e.onpause=null,this._stop()),this._source=null,this._playbackRate=1,this._volume=1,this._loop=!1,this._end=0,this._start=0,this._duration=0,this._playing=!1,this._pausedReal=!1,this._paused=!1,this._muted=!1,this._audio&&(this._audio.context.off("refresh",this.refresh),this._audio.context.off("refreshPaused",this.refreshPaused),this._audio=null)}};u(rr,"PADDING",.1);let ts=rr;class uc{constructor(A){u(this,"source",new globalThis.Audio);u(this,"_src","");this.parent=A}get src(){return this._src}set src(A){this._src!==A&&(this._src=A,this.load())}get duration(){return this.source.duration}get isPlayable(){return!!this.source&&this.source.readyState===4}get context(){return es.instance}async load(){return new Promise(A=>{this.source.onload=()=>A(this),this.source.src=this._src,this.source.load()})}createSound(){return new ts}}class $n extends Jt{constructor(e,t){super();u(this,"_processers",[]);this._input=e,this._output=t}get processors(){return this._processers}set processors(e){if(this._processers.forEach(t=>t.disconnect()),this._processers.length=0,this._input.connect(this._output),e.length){this._processers=e.slice(0),this._input.disconnect();let t;e.forEach(i=>{t?t.connect(i.destination):this._input.connect(i.destination),t=i}),t.connect(this._output)}}get destination(){return this._input}}class ap{constructor(A,e=null){this.destination=A,this.source=e}connect(A){var e;(e=this.source)==null||e.connect(A)}disconnect(){var A;(A=this.source)==null||A.disconnect()}}function lp(){if(Ns)return new AudioContext;if(Fs){const r=globalThis.webkitAudioContext;return new r}else throw new Error("Failed to createAudioContext")}function cp(r,A,e){if(Ts)return new OfflineAudioContext(r,A,e);if(Lo){const t=globalThis.webkitOfflineAudioContext;return new t(r,A,e)}else throw new Error("Failed to createOfflineAudioContext")}const cs=class cs extends $n{constructor(){const e=lp(),t=cp(1,2,Ts?Math.max(8e3,Math.min(96e3,e.sampleRate)):44100),i=e.createDynamicsCompressor(),s=e.createAnalyser();s.connect(i),i.connect(e.destination);super(s,i);u(this,"_context");u(this,"_offlineContext");u(this,"_locked");u(this,"muted",!1);u(this,"volume",1);u(this,"playbackRate",1);u(this,"autoPause",!0);u(this,"_paused",!1);u(this,"_pausedOnBlur",!1);u(this,"_compressor");u(this,"_analyser");u(this,"_unlock",()=>{this._locked&&(this.playEmptySound(),this._context.state==="running"&&(document.removeEventListener("mousedown",this._unlock,!0),document.removeEventListener("touchend",this._unlock,!0),document.removeEventListener("touchstart",this._unlock,!0),this._locked=!1))});this._context=e,this._offlineContext=t,this._compressor=i,this._analyser=s,this._locked=e.state==="suspended"&&(Kt||Go),yi&&(this._locked&&(this._unlock(),document.addEventListener("mousedown",this._unlock,!0),document.addEventListener("touchstart",this._unlock,!0),document.addEventListener("touchend",this._unlock,!0)),globalThis.addEventListener("focus",this._onFocus),globalThis.addEventListener("blur",this._onBlur))}static get instance(){return this._instance||(this._instance=new cs),this._instance}static get audioContext(){return this.instance.audioContext}static get offlineContext(){return this.instance.offlineContext}static setParamValue(e,t){this.instance.setParamValue(e,t)}static decode(e){return this.instance.decode(e)}get audioContext(){return this._context}get offlineContext(){return this._offlineContext}get paused(){return this._paused}set paused(e){e&&this._context.state==="running"?this._context.suspend():!e&&this._context.state==="suspended"&&this._context.resume(),this._paused=e}_onFocus(){if(!this.autoPause)return;const e=this._context.state;(e==="suspended"||e==="interrupted"||!this._locked)&&(this.paused=this._pausedOnBlur,this.refreshPaused())}_onBlur(){this.autoPause&&(this._locked||(this._pausedOnBlur=this._paused,this.paused=!0,this.refreshPaused()))}playEmptySound(){const e=this._context.createBufferSource();e.buffer=this._context.createBuffer(1,1,22050),e.connect(this._context.destination),e.start(0,0,0),e.context.state==="suspended"&&e.context.resume()}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this._paused}decode(e){return new Promise((t,i)=>{const s=o=>{i(new Error((o==null?void 0:o.message)||"Unable to decode file"))},n=this._offlineContext.decodeAudioData(e,t,s);n&&n.catch(s)})}setParamValue(e,t){e.setValueAtTime?e.setValueAtTime(t,this._context.currentTime):e.value=t}};u(cs,"_instance");let IA=cs;class fc extends Jt{constructor(){super(...arguments);u(this,"_audio",null);u(this,"_sourceNode",null);u(this,"_gain",null);u(this,"_progress",0);u(this,"_pausedReal",!1);u(this,"_paused",!1);u(this,"_volume",1);u(this,"_playbackRate",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_duration",0);u(this,"_end",0);u(this,"_elapsed",0);u(this,"_lastUpdate",this._now());u(this,"_processors",[]);u(this,"_onComplete",()=>{if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}}this._sourceNode=null,this._progress=1,this.emit("progress",1,this._duration),this.emit("end",this)});u(this,"_updateListener",()=>this._update())}get progress(){return this._progress}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh(),this._update(!0))}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}init(e){return this._audio=e,e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this}_now(){var e;return((e=this._audio)==null?void 0:e.context.audioContext.currentTime)??0}play(e={}){var o;if(!this._audio)return;const{end:t=0,start:i=0}=e;t&&console.assert(t>i,"End time is before start time"),this._end=t,this._elapsed=i,e.volume!==void 0&&(this._volume=e.volume),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.muted!==void 0&&(this._muted=e.muted),e.loop!==void 0&&(this._loop=e.loop),e.processors!==void 0&&(this._processors=e.processors),this._paused=!1;const{source:s,gain:n}=this._audio.cloneSource();this._sourceNode=s,this._gain=n,this.refresh(),s.onended=this._onComplete.bind(this),this._duration=((o=s.buffer)==null?void 0:o.duration)??0,this._lastUpdate=this._now(),this._loop?(s.loopStart=i,s.loopEnd=t,s.start(0,i)):t?s.start(0,i,t-i):s.start(0,i),this.emit("start"),this._update(!0),this._enableTicker(!0)}_stop(){if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.stop(0),this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}this._sourceNode=null}}stop(){this._sourceNode&&(this._stop(),this.emit("stop"))}_update(e=!1){if(this._sourceNode){const t=this._now(),i=t-this._lastUpdate;if(i>0||e){this._elapsed+=i*this._sourceNode.playbackRate.value,this._lastUpdate=t;const s=this._duration;let n;if(this._sourceNode.loopStart){const o=this._sourceNode.loopEnd-this._sourceNode.loopStart;n=(this._sourceNode.loopStart+this._elapsed%o)/s}else n=this._elapsed%s/s;this._progress=n,this.emit("progress",n,s)}}}refresh(){if(!this._audio||!this._sourceNode)return;const e=this._audio.context,t=this._audio.parent;this._sourceNode.loop=this._loop||t.loop,e.setParamValue(this._gain.gain,this._volume*(this._muted?0:1)*t.volume*(t.muted?0:1)*e.volume*(e.muted?0:1)),e.setParamValue(this._sourceNode.playbackRate,this._playbackRate*t.playbackRate*e.playbackRate),this.applyProcessors()}applyProcessors(){if(this._sourceNode&&this._processors.length){this._sourceNode.disconnect();let e=this._sourceNode;this._processors.forEach(t=>{e.connect(t.destination),e=t}),e.connect(this._gain)}}refreshPaused(){if(!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._elapsed%this._duration,end:this._end,playbackRate:this._playbackRate,loop:this._loop,volume:this._volume})),this.emit("pause",e))}_enableTicker(e){Se.off(this._updateListener),e&&Se.on(this._updateListener)}free(){var e,t,i;this.removeAllListeners(),this._stop(),(e=this._gain)==null||e.disconnect(),this._gain=null,(t=this._audio)==null||t.context.off("refresh",this.refresh),(i=this._audio)==null||i.context.off("refreshPaused",this.refreshPaused),this._audio=null,this._processors.forEach(s=>s.disconnect()),this._processors.length=0,this._end=0,this._playbackRate=1,this._volume=1,this._loop=!1,this._elapsed=0,this._duration=0,this._paused=!1,this._muted=!1,this._pausedReal=!1}}class dc extends $n{constructor(e){const t=IA.audioContext,i=t.createBufferSource(),s=t.createGain(),n=t.createAnalyser();i.connect(n),n.connect(s),s.connect(IA.instance.destination);super(n,s);u(this,"_sourceBuffer");u(this,"_sourceNode");u(this,"_sourceLoad");u(this,"gain");u(this,"analyser");this.parent=e,this._sourceNode=i,this.gain=s,this.analyser=n}get context(){return IA.instance}get isPlayable(){return!!this._sourceNode.buffer}get duration(){var e;return((e=this._sourceNode.buffer)==null?void 0:e.duration)??0}get buffer(){return this._sourceNode.buffer}set buffer(e){this._sourceNode.buffer=e}async load(){return this._sourceLoad||(this._sourceLoad=new Promise(e=>{this._sourceBuffer?this._decode(this._sourceBuffer).then(()=>e(this)):this.parent.src?this._loadUrl(this.parent.src).then(()=>e(this)):e(this)})),this._sourceLoad}_loadUrl(e){return new Promise(t=>{fetch(e).then(i=>i.arrayBuffer()).then(i=>this._decode(i)).finally(()=>t(this))})}_decode(e){return Promise.resolve(e instanceof AudioBuffer?e:IA.decode(e)).then(t=>(this.parent.isLoaded=!0,this.buffer=t,t))}cloneSource(){const e=this.context,t=this._sourceNode,i=e.audioContext.createBufferSource(),s=e.audioContext.createGain();return i.buffer=t.buffer,i.loop=t.loop,e.setParamValue(i.playbackRate,t.playbackRate.value),i.connect(s),s.connect(this.destination),{source:i,gain:s}}createSound(){return new fc}}var hp=Object.defineProperty,gp=Object.getOwnPropertyDescriptor,up=(r,A,e)=>A in r?hp(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,fp=(r,A,e,t)=>{for(var i=t>1?void 0:t?gp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},dp=(r,A,e)=>up(r,A+"",e);g.Audio=class extends g.TimelineNode{constructor(e=""){super();u(this,"_sounds",[]);u(this,"_platformAudio",Oo?new dc(this):new uc(this));u(this,"_src");u(this,"isLoaded",!1);u(this,"_volume",1);u(this,"_muted",!1);u(this,"_loop",!1);u(this,"_playbackRate",1);u(this,"_isPlaying",!1);u(this,"multiple",!1);u(this,"start",0);u(this,"end",0);u(this,"_onComplete",e=>{if(this._sounds){const t=this._sounds.indexOf(e);t>-1&&this._sounds.splice(t,1),this._isPlaying=this._sounds.length>0}this._recycleSound(e)});u(this,"_prevTime",0);u(this,"_timer",0);this.src=e}get platformAudio(){return this._platformAudio}get src(){return this._src}set src(e){this._src!==e&&(this._src=e,this.load())}get isPlayable(){return this.isLoaded&&this._platformAudio.isPlayable}get audioDuration(){return this._platformAudio.duration*1e3}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get isPlaying(){return this._isPlaying}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"paused":this.refreshPaused();break}}async load(){return await this._platformAudio.load(),this}pause(){return this._isPlaying=!1,this.paused=!0,this}resume(){return this._isPlaying=this._sounds.length>0,this.paused=!1,this}stop(){if(!this.isPlayable)return this;this._isPlaying=!1;for(let e=this._sounds.length-1;e>=0;e--)this._sounds[e].stop();return this}play(e={}){if(!this.isLoaded)return;this.multiple||this._removeSounds(),this._isPlaying=!0;const t=this._createSound();this._sounds.push(t),t.once("end",()=>{var n;(n=e.complete)==null||n.call(e),this._onComplete(t)}),t.once("stop",()=>this._onComplete(t));const i=((e==null?void 0:e.start)??this.start)/1e3,s=((e==null?void 0:e.end)??this.end)/1e3;return t.play({...e,start:i,end:s}),t}_removeSounds(){for(let e=this._sounds.length-1;e>=0;e--)this._recycleSound(this._sounds[e]);this._sounds.length=0}_createSound(){return g.Audio._soundPool.length>0?g.Audio._soundPool.pop().init(this._platformAudio):this._platformAudio.createSound().init(this._platformAudio)}refresh(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refresh()}refreshPaused(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refreshPaused()}_recycleSound(e){e.free(),g.Audio._soundPool.includes(e)||g.Audio._soundPool.push(e)}_process(e){var t;if(super._process(e),this.canProcess()){const i=((t=this._tree)==null?void 0:t.timeline.currentTime)??0;i-this._prevTime>0&&(this._timer||(this._setTimeStop(),this.play({start:this.start+(i-this.delay)%this.duration})),this._isPlaying&&this._setTimeStop()),this._prevTime=i}}_setTimeStop(){this._timer&&clearTimeout(this._timer),this._timer=setTimeout(()=>{this.stop(),this._timer=0},100)}},dp(g.Audio,"_soundPool",[]),g.Audio=fp([ne("Audio")],g.Audio);class Ip extends g.Node2D{}var pp=Object.defineProperty,Ep=Object.getOwnPropertyDescriptor,As=(r,A,e,t)=>{for(var i=t>1?void 0:t?Ep(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&pp(A,e,i),i};g.AudioWaveform=class extends g.Element2D{constructor(e={}){super();u(this,"src");u(this,"gap",0);u(this,"color","#000000");u(this,"_audioBuffer");u(this,"_src",yi?new _e(document.createElement("canvas")):void 0);u(this,"_needsUpdateTexture",!1);this.setProperties(e)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._loadSrc(t);break;case"gap":case"color":case"width":case"height":this._needsUpdateTexture=!0;break}}async _loadSrc(e){await globalThis.fetch(e).then(t=>t.arrayBuffer()).then(t=>IA.decode(t)).then(t=>{this._audioBuffer=t,this.syncTexture(!0)})}syncTexture(e=!1){var h,f;const t=this._audioBuffer;if(!t||!e&&!this._needsUpdateTexture)return;this._needsUpdateTexture=!1;const i=(h=this._src)==null?void 0:h.source;if(!i)return;const{width:s=0,height:n=0}=this.style;i.width=s,i.height=n;const o=i.getContext("2d");if(!o){console.warn("Failed to getContext('2d') in syncTexture");return}o.fillStyle=this.color;const a=t.getChannelData(0),l=Math.ceil(a.length/s),c=n/2;for(let I=1,d=-1,C=0;C<s;C++){for(let p=0;p<l;p++){const x=a[C*l+p];x<I&&(I=x),x>d&&(d=x)}if(!this.gap||C%(this.gap*2)===0){const p=C,x=(1+I)*c,P=this.gap||1,w=Math.max(1,(d-I)*c);o.fillRect(p,x,P,w),I=1,d=-1}}(f=this._src)==null||f.requestUpload(),this.requestRedraw()}_process(e){this.syncTexture(),super._process(e)}_drawSrc(){const e=this._src;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.uvTransform=new ht().scale(1/this.style.width,1/this.style.height))}},As([M()],g.AudioWaveform.prototype,"src",2),As([M()],g.AudioWaveform.prototype,"gap",2),As([M()],g.AudioWaveform.prototype,"color",2),g.AudioWaveform=As([ne("AudioWaveform")],g.AudioWaveform);var Bp=Object.getOwnPropertyDescriptor,Cp=(r,A,e,t)=>{for(var i=t>1?void 0:t?Bp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Control=class extends g.Element2D{constructor(A,e=[]){super(),this._parentUpdateRect=this._parentUpdateRect.bind(this),this.setProperties(A),this.append(e)}_parented(A){super._parented(A),A.on("updateRect",this._parentUpdateRect)}_unparented(A){super._unparented(A),A.off("updateRect",this._parentUpdateRect)}_parentUpdateRect(){const A=this._parent.getRect();this.style.left=A.left,this.style.top=A.top,this.style.width=A.width,this.style.height=A.height}_input(A,e){super._input(A,e),this._guiInput(A,e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.emit("updateRect");break}}_guiInput(A,e){}},g.Control=Cp([ne("Control")],g.Control);var Qp=Object.defineProperty,yp=Object.getOwnPropertyDescriptor,pA=(r,A,e,t)=>{for(var i=t>1?void 0:t?yp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Qp(A,e,i),i};g.Range=class extends g.Control{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"allowGreater":case"allowLesser":case"page":case"minValue":case"maxValue":case"step":case"value":this.requestRedraw();break}}},pA([M({default:!1})],g.Range.prototype,"allowGreater",2),pA([M({default:!1})],g.Range.prototype,"allowLesser",2),pA([M({default:1})],g.Range.prototype,"page",2),pA([M({default:0})],g.Range.prototype,"minValue",2),pA([M({default:100})],g.Range.prototype,"maxValue",2),pA([M({default:.01})],g.Range.prototype,"step",2),pA([M({default:0})],g.Range.prototype,"value",2),g.Range=pA([ne("Range")],g.Range);var mp=Object.defineProperty,wp=Object.getOwnPropertyDescriptor,Tt=(r,A,e,t)=>{for(var i=t>1?void 0:t?wp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&mp(A,e,i),i};g.Ruler=class extends g.Control{constructor(e,t=[]){super();u(this,"texture",new YA);this.setProperties(e),this.append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"offsetX":case"offsetY":case"thickness":case"markHeight":case"color":case"markBackgroundColor":case"markColor":case"gap":case"scale":this.requestRedraw();break}}_updateStyleProperty(e,t,i,s){switch(super._updateStyleProperty(e,t,i,s),e){case"width":case"height":this.texture[e]=t,this.requestRedraw();break}}_drawTexture(){const{width:e,height:t}=this.size,{offsetX:i,offsetY:s,thickness:n,markHeight:o,markBackgroundColor:a,markColor:l,color:c,gap:h,gapScale:f}=this,d=this.texture.source.getContext("2d");d.reset(),d.scale(this.texture.pixelRatio,this.texture.pixelRatio);const C=Math.round(i),p=Math.round(s);d.beginPath(),d.fillStyle=a||"#EEE",d.fillRect(0,0,e,n),d.fillRect(0,0,n,t),d.fill(),d.strokeStyle=l||"#000",d.moveTo(n,0),d.lineTo(n,t),d.moveTo(0,n),d.lineTo(e,n),d.stroke();const x=h,P=h*f;let w,R,v,m,b;for(x>=P?(w=x/P,R=Math.floor(w)*x/20,v=x/20*Math.floor(w)/w):(w=P/x,R=Math.floor(x/20/w),R>=2?R=Math.floor(R/2)*2:R=1,v=R*w),d.fillStyle=d.strokeStyle,m=C,b=0;m<e;b++,m+=v)d.moveTo(m,n-(b%5?o:2*o)),d.lineTo(m,n);for(m=C,b=0;m>n;b++,m-=v)d.moveTo(m,n-(b%5?o:2*o)),d.lineTo(m,n);let D=0;for(m=p,b=0;m>n;b++,m-=v)d.moveTo(n-(b%5?o:2*o),m),d.lineTo(n,m);for(m=p,b=0;m<t;b++,m+=v)d.moveTo(n-(b%5?o:2*o),m),d.lineTo(n,m);for(d.save(),d.fillStyle=c,d.scale(.8,.8),D=n-8,m=C,b=0;m<e;b++,m+=v)b%10===0&&d.fillText(String(Math.ceil(R*b)),m*1.25-3,D*1.25);for(m=C,b=0;m>n;b++,m-=v)b%10===0&&d.fillText(String(Math.ceil(-R*b)),m*1.25-3,D*1.25);for(D=0,m=p,b=0;m>n;b++,m-=v)b%10===0&&d.fillText(String(Math.ceil(R*b)),D*1.25,m*1.25+3);for(m=p,b=0;m<t;b++,m+=v)b%10===0&&d.fillText(String(Math.ceil(-R*b)),D*1.25,m*1.25+3);d.restore(),d.stroke(),this.texture.requestUpload()}_draw(){this._drawTexture();const e=this.texture;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.uvTransform=new ht().scale(1/this.size.width,1/this.size.height),this.context.rect(0,0,e.width,e.height),this.context.fill())}},Tt([M({default:0})],g.Ruler.prototype,"offsetX",2),Tt([M({default:0})],g.Ruler.prototype,"offsetY",2),Tt([M({default:20})],g.Ruler.prototype,"thickness",2),Tt([M({default:3})],g.Ruler.prototype,"markHeight",2),Tt([M({default:"#b2b6bc"})],g.Ruler.prototype,"color",2),Tt([M({default:"#f9f9fa"})],g.Ruler.prototype,"markBackgroundColor",2),Tt([M({default:"#b2b6bc"})],g.Ruler.prototype,"markColor",2),Tt([M({default:300})],g.Ruler.prototype,"gap",2),Tt([M({default:1})],g.Ruler.prototype,"gapScale",2),g.Ruler=Tt([ne("Ruler")],g.Ruler);var vp=Object.defineProperty,_p=Object.getOwnPropertyDescriptor,Ic=(r,A,e,t)=>{for(var i=t>1?void 0:t?_p(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&vp(A,e,i),i};g.ScrollBar=class extends g.Range{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.requestRedraw();break}}_rect(){const{size:A,position:e}=this;let t,i,s,n,o;return this.direction==="vertical"?(s=10,n=A.height*(this.page/(this.maxValue-this.minValue)),t=e.left+A.width-s,i=A.height*(this.value/(this.maxValue-this.minValue)),o=s/2):(s=A.width*(this.page/(this.maxValue-this.minValue)),n=10,t=A.width*(this.value/(this.maxValue-this.minValue)),i=e.top+A.height-n,o=n/2),{left:t,top:i,width:s,height:n,radii:o}}_draw(){const{left:A,top:e,width:t,height:i,radii:s}=this._rect();this.context.roundRect(A,e,t,i,s),this.context.fillStyle=34,this.context.fill()}_pointerInput(A,e){var a,l;const{left:t,top:i,width:s,height:n}=this._rect(),o=A.x>=t&&A.x<t+s&&A.y>=i&&A.y<i+n;switch(e){case"pointerdown":case"pointermove":o?(a=this._tree)==null||a.input.setCursor("pointer"):(l=this._tree)==null||l.input.setCursor(void 0);break}return!1}},Ic([M({default:"vertical"})],g.ScrollBar.prototype,"direction",2),g.ScrollBar=Ic([ne("ScrollBar")],g.ScrollBar);var bp=Object.getOwnPropertyDescriptor,Dp=(r,A,e,t)=>{for(var i=t>1?void 0:t?bp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.XScrollBar=class extends g.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.XScrollBar=Dp([ne("XScrollBar",{direction:"horizontal"})],g.XScrollBar);var xp=Object.getOwnPropertyDescriptor,Sp=(r,A,e,t)=>{for(var i=t>1?void 0:t?xp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.YScrollBar=class extends g.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.YScrollBar=Sp([ne("YScrollBar",{direction:"vertical"})],g.YScrollBar);var Mp=Object.defineProperty,Rp=Object.getOwnPropertyDescriptor,is=(r,A,e,t)=>{for(var i=t>1?void 0:t?Rp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Mp(A,e,i),i};g.Scaler=class extends g.Node{get target(){var A;if((A=this.parent)!=null&&A.style)return this.parent}constructor(A,e=[]){super(),this.setProperties(A),this.append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"value":case"min":case"max":{this.value=zt(this.minValue,this.value,this.maxValue),this._updateScale();break}}}_updateScale(){const A=this.target;A&&(A.style.scaleX=this.value,A.style.scaleY=this.value,this.emit("updateScale",this.value))}_onWheel(A){if(!this.target)return;if(A.preventDefault(),!(A.wheelDeltaY?Math.abs(Math.abs(A.wheelDeltaY)-Math.abs(3*A.deltaY))<3:A.deltaMode===0)&&A.ctrlKey){A.preventDefault();let i=A.deltaY/(A.ctrlKey?1:100);i*=-.015,this.value+=i}}_input(A,e){switch(super._input(A,e),e){case"wheel":this._onWheel(A);break}}},is([M({default:1})],g.Scaler.prototype,"value",2),is([M({default:.05})],g.Scaler.prototype,"minValue",2),is([M({default:10})],g.Scaler.prototype,"maxValue",2),g.Scaler=is([ne("Scaler",{processMode:"disabled",renderMode:"disabled"})],g.Scaler);var Pp=Object.defineProperty,kp=Object.getOwnPropertyDescriptor,Up=(r,A,e)=>A in r?Pp(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Np=(r,A,e,t)=>{for(var i=t>1?void 0:t?kp(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},Fp=(r,A,e)=>Up(r,A+"",e);g.KawaseTransition=class extends g.Transition{constructor(){super(...arguments);u(this,"blur",10);u(this,"quality",10)}apply(e,t){const i=this.currentTimeProgress;let s,n;i<.5?(s=0,n=(.5-i)/.5):(s=1,n=(i-.5)/.5);const o=this.blur,a=this.quality,l=t.width,c=t.height,h=[],f=[o];if(o>0){let P=o;const w=o/a;for(let R=1;R<a;R++)P-=w,f.push(P)}const I=1/l,d=1/c,C=[];let p;const x=a-1;for(let P=0;P<x;P++)p=f[P]+.5,C[0]=p*I,C[1]=p*d,h.push({offset:C});p=f[x]+.5,C[0]=p*I,C[1]=p*d,h.push({offset:C}),h.forEach(P=>{fe.draw(e,g.KawaseTransition.material,{sampler:s,progress:n,...P})})}},Fp(g.KawaseTransition,"material",new Ce({vert:`attribute vec2 position;
|
|
861
|
+
}`)),document.head.appendChild(A),this}_parseUrls(t){const e=Array.from(new Set([...t.split(","),t]));return Array.from(new Set(e.map(A=>this.familyToUrl.get(A.trim())??this.familyToUrl.get(A)??A)))}get(t){let e;return t&&(e=this._parseUrls(t).reduce((i,s)=>i||this.loaded.get(s),void 0)),e??this.fallbackFont}set(t,e){return this.familyToUrl.set(t,e.src),this.loaded.set(e.src,e),this}delete(t){return this._parseUrls(t).forEach(e=>{this.familyToUrl.delete(e),this.loaded.delete(e)}),this}clear(){return this.familyToUrl.clear(),this.loading.clear(),this.loaded.clear(),this}async load(t,e={}){const{cancelOther:A,injectFontFace:i=!0,injectStyleTag:s=!0,...n}=e;let o,a;if(typeof t=="string"?o=t:{src:o,family:a}=t,this.loaded.has(o))return A&&(this.loading.forEach(d=>d.cancel()),this.loading.clear()),g(this.loaded.get(o));let l=this.loading.get(o);return l||(l=this._createRequest(o,n),this.loading.set(o,l)),A&&this.loading.forEach((d,f)=>{d!==l&&(d.cancel(),this.loading.delete(f))}),l.when.then(d=>{if(this.loaded.has(o))return g(this.loaded.get(o));{const f=u(d);return e.noAdd||this.loaded.set(o,f),f.familySet.forEach(B=>{this.familyToUrl.set(B,o),typeof document<"u"&&(i&&this.injectFontFace(B,d),s&&this.injectStyleTag(B,o))}),f}}).catch(d=>{if(d instanceof DOMException&&d.message==="The user aborted a request.")return u();throw d}).finally(()=>{this.loading.delete(o)});function c(){return a?Array.isArray(a)?a:[a]:[]}function g(d){return c().forEach(f=>{d.familySet.add(f)}),d}function u(d=new ArrayBuffer(0)){let f;function B(){return f||(f=d.byteLength?Dl(d,!1):void 0),f}function p(){const S=B();if(S instanceof ve||S instanceof Nr)return S.sfnt}return{src:o,family:a,buffer:d,familySet:new Set(c()),getFont:B,getSFNT:p}}}async waitUntilLoad(){await Promise.all(Array.from(this.loading.values()).map(t=>t.when))}}const xl=new Fr,eI=Object.freeze(Object.defineProperty({__proto__:null,BaseFont:wr,get Cff(){return bA},get Cmap(){return WA},CmapSubtableFormat0:dn,CmapSubtableFormat12:Bn,CmapSubtableFormat14:Ki,CmapSubtableFormat2:Oi,CmapSubtableFormat4:En,CmapSubtableFormat6:xA,FontDataObject:fe,FontDataView:Nt,Fonts:Fr,get Glyf(){return Mr},Glyph:gn,GlyphSet:un,get Gpos(){return yn},get Gsub(){return je},get Head(){return St},get Hhea(){return Yt},get Hmtx(){return Rr},get Kern(){return mn},get Loca(){return Pr},get Maxp(){return Tt},get Name(){return qA},get Os2(){return ot},get Post(){return Be},SFNT:ke,TTF:ve,TableDirectory:VA,get Vhea(){return Vt},get Vmtx(){return Ur},WOFF:Nr,WOFFTableDirectoryEntry:MA,createCmapSegments:pn,dataTypeToByteLength:Ti,defineColumn:y,defineSFNTTable:Kt,fonts:xl,parseFont:Dl,parseSFNTFont:bl},Symbol.toStringTag,{value:"Module"}));function _n(r,t,e){if(typeof t=="string"&&t.startsWith("linear-gradient")){const{x0:A,y0:i,x1:s,y1:n,stops:o}=AI(t,e.left,e.top,e.width,e.height),a=r.createLinearGradient(A,i,s,n);return o.forEach(l=>a.addColorStop(l.offset,l.color)),a}return t}function Tr(r,t,e){r?.color&&(r.color=_n(e,r.color,t)),r?.backgroundColor&&(r.backgroundColor=_n(e,r.backgroundColor,t)),r?.textStrokeColor&&(r.textStrokeColor=_n(e,r.textStrokeColor,t))}function AI(r,t,e,A,i){const s=r.match(/linear-gradient\((.+)\)$/)?.[1]??"",n=s.split(",")[0],o=n.includes("deg")?n:"0deg",a=s.replace(o,"").matchAll(/(#|rgba|rgb)(.+?) ([\d.]+%)/gi),c=(Number(o.replace("deg",""))||0)*Math.PI/180,g=A*Math.sin(c),u=i*Math.cos(c);return{x0:t+A/2-g,y0:e+i/2+u,x1:t+A/2+g,y1:e+i/2-u,stops:Array.from(a).map(d=>{let f=d[2];return f.startsWith("(")?f=f.split(",").length>3?`rgba${f}`:`rgb${f}`:f=`#${f}`,{offset:Number(d[3].replace("%",""))/100,color:f}})}}function XA(r){const{ctx:t,path:e,fontSize:A,clipRect:i}=r;t.save(),t.beginPath();const s=e.style,n={...s,fill:r.color??s.fill,stroke:r.textStrokeColor??s.stroke,strokeWidth:r.textStrokeWidth?r.textStrokeWidth*A:s.strokeWidth,strokeLinecap:"round",strokeLinejoin:"round",shadowOffsetX:(r.shadowOffsetX??0)*A,shadowOffsetY:(r.shadowOffsetY??0)*A,shadowBlur:(r.shadowBlur??0)*A,shadowColor:r.shadowColor};i&&(t.rect(i.left,i.top,i.width,i.height),t.clip(),t.beginPath()),e.drawTo(t,n),t.restore()}function iI(r,t,e){const{left:A,top:i,width:s,height:n}=e,o=r.canvas;o.dataset.viewBox=`${A} ${i} ${s} ${n}`,o.dataset.pixelRatio=String(t);const a=s,l=n;o.width=Math.max(1,Math.ceil(a*t)),o.height=Math.max(1,Math.ceil(l*t)),o.style.width=`${a}px`,o.style.height=`${l}px`,r.clearRect(0,0,o.width,o.height),r.scale(t,t),r.translate(-A,-i)}function rI(r,t){const{paragraphs:e,computedStyle:A,glyphBox:i}=t;Tr(A,i,r),e.forEach(s=>{Tr(s.computedStyle,s.lineBox,r),s.fragments.forEach(n=>{Tr(n.computedStyle,n.inlineBox,r)})})}const sI=new Set(["©","®","÷"]),nI=new Set(["—","…","“","”","﹏","﹋","﹌","‘","’","˜"]),oI={1:"italic",32:"bold"},aI={1:"italic",2:"bold"},Sl={100:-.2,200:-.1,300:0,400:0,normal:0,500:.1,600:.2,700:.3,bold:.3,800:.4,900:.5};class lI{constructor(t,e,A){this.content=t,this.index=e,this.parent=A}path=new Ut;lineBox=new ct;inlineBox=new ct;glyphBox;advanceWidth=0;advanceHeight=0;underlinePosition=0;underlineThickness=0;strikeoutPosition=0;strikeoutSize=0;ascender=0;descender=0;typoAscender=0;typoDescender=0;typoLineGap=0;winAscent=0;winDescent=0;xHeight=0;capHeight=0;baseline=0;centerDiviation=0;fontStyle;get compatibleGlyphBox(){const t=this.computedStyle.fontSize*.8;return this.glyphBox??(this.isVertical?new ct(this.lineBox.left+this.lineBox.width/2-t/2,this.lineBox.top,t,this.lineBox.height):new ct(this.lineBox.left,this.lineBox.top+this.lineBox.height/2-t/2,this.lineBox.width,t))}get center(){return this.compatibleGlyphBox.center}get computedStyle(){return this.parent.computedStyle}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get fontSize(){return this.computedStyle.fontSize}get fontHeight(){return this.fontSize*this.computedStyle.lineHeight}_getFontSFNT(t){const e=this.computedStyle.fontFamily,A=t??xl;return(e?A.get(e):A.fallbackFont)?.getSFNT()}updateGlyph(t=this._getFontSFNT()){if(!t)return this;const{hhea:e,os2:A,post:i,head:s}=t,n=s.unitsPerEm,o=e.ascent,a=e.descent,{content:l,computedStyle:c,isVertical:g}=this,{fontSize:u}=c,d=n/u,f=t.getAdvanceWidth(l,u),B=(o+Math.abs(a))/d,p=o/d;return this.advanceWidth=f,this.advanceHeight=B,this.inlineBox.width=g?B:f,this.inlineBox.height=g?f:B,this.underlinePosition=(o-i.underlinePosition)/d,this.underlineThickness=i.underlineThickness/d,this.strikeoutPosition=(o-A.yStrikeoutPosition)/d,this.strikeoutSize=A.yStrikeoutSize/d,this.ascender=o/d,this.descender=a/d,this.typoAscender=A.sTypoAscender/d,this.typoDescender=A.sTypoDescender/d,this.typoLineGap=A.sTypoLineGap/d,this.winAscent=A.usWinAscent/d,this.winDescent=A.usWinDescent/d,this.xHeight=A.sxHeight/d,this.capHeight=A.sCapHeight/d,this.baseline=p,this.centerDiviation=B/2-p,this.fontStyle=oI[A.fsSelection]??aI[s.macStyle],this}update(t){const e=this._getFontSFNT(t);if(!e)return this;this.updateGlyph(e);const{isVertical:A,content:i,computedStyle:s,baseline:n,inlineBox:o,ascender:a,descender:l,typoAscender:c,fontStyle:g,advanceWidth:u,advanceHeight:d}=this,{left:f,top:B}=o,p=s.fontStyle==="italic"&&g!=="italic";let S=f,R=B+n,w;const D=new Ut;if(A&&(S+=(d-u)/2,Math.abs(u-d)>.1&&(R-=(a-c)/(a+Math.abs(l))*d),w=void 0),A&&!sI.has(i)&&(i.codePointAt(0)<=256||nI.has(i))){D.addCommands(e.getPathCommands(i,S,B+n-(d-u)/2,s.fontSize));const m={y:B-(d-u)/2+d/2,x:S+u/2};p&&this._italic(D,A?{x:m.x,y:B-(d-u)/2+n}:void 0),D.rotate(90,m)}else w!==void 0?(D.addCommands(e.glyphs.get(w).getPathCommands(S,R,s.fontSize)),p&&this._italic(D,A?{x:S+u/2,y:B+c/(a+Math.abs(l))*d}:void 0)):(D.addCommands(e.getPathCommands(i,S,R,s.fontSize)),p&&this._italic(D,A?{x:S+d/2,y:R}:void 0));const Q=s.fontWeight??400;return Q in Sl&&(Q===700||Q==="bold")&&g!=="bold"&&D.bold(Sl[Q]*s.fontSize*.05),D.style={fill:s.color,stroke:s.textStrokeWidth?s.textStrokeColor:"none",strokeWidth:s.textStrokeWidth?s.textStrokeWidth*s.fontSize*.03:0},this.path=D,this.glyphBox=this.getGlyphBoundingBox(),this}_italic(t,e){t.skew(-.24,0,e||{y:this.inlineBox.top+this.baseline,x:this.inlineBox.left+this.inlineBox.width/2})}getGlyphMinMax(t,e,A){if(this.path.curves[0]?.curves.length)return this.path.getMinMax(t,e,A)}getGlyphBoundingBox(t){const e=this.getGlyphMinMax(void 0,void 0,t);if(!e)return;const{min:A,max:i}=e;return new ct(A.x,A.y,i.x-A.x,i.y-A.y)}drawTo(t,e={}){const A=this.computedStyle,i={ctx:t,path:this.path,fontSize:A.fontSize,color:A.color,...e};if(this.glyphBox)XA(i);else{t.save(),t.beginPath();const s=this.path.style,n={...s,fill:i.color??s.fill,stroke:i.textStrokeColor??s.stroke,strokeWidth:i.textStrokeWidth?i.textStrokeWidth*i.fontSize:s.strokeWidth,shadowOffsetX:(i.shadowOffsetX??0)*i.fontSize,shadowOffsetY:(i.shadowOffsetY??0)*i.fontSize,shadowBlur:(i.shadowBlur??0)*i.fontSize,shadowColor:i.shadowColor};Gs(t,n),t.font=`${i.fontSize}px ${i.fontFamily}`,this.isVertical?(t.textBaseline="middle",t.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.inlineBox.height/2)):(t.textBaseline="alphabetic",t.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.baseline)),t.restore()}}}function Ml(){const r=new Map;async function t(A){if(!r.has(A)){r.set(A,A);try{r.set(A,await fetch(A).then(i=>i.text()))}catch(i){console.warn(i),r.delete(A)}}}function e(A){return A.startsWith("http://")||A.startsWith("https://")||A.startsWith("blob://")}return{loaded:r,needsLoad:e,load:t}}function Rl(r){const t=new Map;function e(A){let i=t.get(A);if(!i){const s=Hs(r.needsLoad(A)?r.loaded.get(A)??A:A),n=Ks(s);i={dom:s,pathSet:n},t.set(A,i)}return i}return{parsed:t,parse:e}}function bn(r,t){return typeof r=="number"?r:r.endsWith("%")?(r=r.substring(0,r.length-1),Math.ceil(Number(r)/100*t.total)):r.endsWith("rem")?(r=r.substring(0,r.length-3),Number(r)*t.fontSize):r.endsWith("em")?(r=r.substring(0,r.length-2),Number(r)*t.fontSize):Number(r)}function Dn(r){return lt(r)?{}:r}function cI(r,t){const e=Object.keys(r),A=Object.keys(t);return Array.from(new Set([...e,...A])).every(s=>jA(r[s],t[s]))}function jA(r,t){const e=typeof r;return e===typeof t?e==="object"?cI(r,t):r===t:!1}function xn(r){if(!r)return r;const t={};for(const e in r)r[e]!==""&&r[e]!==void 0&&(t[e]=r[e]);return t}class hI{constructor(t,e={},A){this.content=t,this.style=e,this.parent=A,this.updateComputedStyle().initCharacters()}inlineBox=new ct;get computedContent(){const t=this.computedStyle;return t.textTransform==="uppercase"?this.content.toUpperCase():t.textTransform==="lowercase"?this.content.toLowerCase():this.content}updateComputedStyle(){return this.computedStyle={...this.parent.computedStyle,...xn(this.style)},this}initCharacters(){const t=[];let e=0;for(const A of this.computedContent)t.push(new lI(A,e++,this));return this.characters=t,this}}class gI{constructor(t,e){this.style=t,this.parentStyle=e,this.updateComputedStyle()}lineBox=new ct;fragments=[];updateComputedStyle(){return this.computedStyle={...xn(this.parentStyle),...xn(this.style)},this}addFragment(t,e){const A=new hI(t,e,this);return this.fragments.push(A),A}}function IE(r){return r}class Lr{static notZeroStyles=new Set(["width","height"]);static pxStyles=new Set(["width","height","fontSize","letterSpacing","textStrokeWidth","textIndent","shadowOffsetX","shadowOffsetY","shadowBlur","margin","marginLeft","marginTop","marginRight","marginBottom","padding","paddingLeft","paddingTop","paddingRight","paddingBottom"]);_toDOMStyle(t){const e={};for(const A in t){const i=t[A];Lr.notZeroStyles.has(A)&&i===0||(typeof i=="number"&&Lr.pxStyles.has(A)?e[A]=`${i}px`:e[A]=i)}return e}createDOM(t,e){const A=document.createElement("section"),i={...e},s=e.writingMode.includes("horizontal");switch(e.textAlign){case"start":case"left":i.justifyContent="flex-start";break;case"center":i.justifyContent="center";break;case"end":case"right":i.justifyContent="flex-end";break}switch(e.verticalAlign){case"top":i.alignItems="flex-start";break;case"middle":i.alignItems="center";break;case"bottom":i.alignItems="flex-end";break}const n=!!(i.justifyContent||i.alignItems);Object.assign(A.style,{...this._toDOMStyle({...i,boxSizing:i.boxSizing??"border-box",display:i.display??(n?"inline-flex":void 0),width:i.width??"max-content",height:i.height??"max-content"}),whiteSpace:"pre-wrap",wordBreak:"break-all"});const o=document.createElement("ul");return Object.assign(o.style,{verticalAlign:"inherit",listStyleType:"inherit",padding:"0",margin:"0",width:n&&s?"100%":void 0,height:n&&!s?"100%":void 0}),t.forEach(a=>{const l=document.createElement("li");Object.assign(l.style,{verticalAlign:"inherit",...this._toDOMStyle(a.style)}),a.fragments.forEach(c=>{const g=document.createElement("span");Object.assign(g.style,{verticalAlign:"inherit",...this._toDOMStyle(c.style)}),g.appendChild(document.createTextNode(c.content)),l.appendChild(g)}),o.appendChild(l)}),A.appendChild(o),A}measureDOMText(t){const e=document.createRange();e.selectNodeContents(t);const A=t.data??"";let i=0;return Array.from(A).map(s=>{const n=i+=A.substring(i).indexOf(s),o=n+s.length;i+=s.length,e.setStart(t,Math.max(n,0)),e.setEnd(t,o);const a=e.getClientRects?.()??[e.getBoundingClientRect()];let l=a[a.length-1];a.length>1&&l.width<2&&(l=a[a.length-2]);const c=e.toString();if(c!==""&&l&&l.width+l.height!==0)return{content:c,top:l.top,left:l.left,height:l.height,width:l.width}}).filter(Boolean)}measureDOM(t){const e=[],A=[],i=[];return t.querySelectorAll("li").forEach((s,n)=>{const o=s.getBoundingClientRect();e.push({paragraphIndex:n,left:o.left,top:o.top,width:o.width,height:o.height}),s.querySelectorAll(":scope > *").forEach((a,l)=>{const c=a.getBoundingClientRect();A.push({paragraphIndex:n,fragmentIndex:l,left:c.left,top:c.top,width:c.width,height:c.height});let g=0;!a.children.length&&a.firstChild instanceof window.Text?this.measureDOMText(a.firstChild).forEach(u=>{i.push({...u,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:g++,textWidth:-1,textHeight:-1})}):a.querySelectorAll(":scope > *").forEach(u=>{u.firstChild instanceof window.Text&&this.measureDOMText(u.firstChild).forEach(d=>{i.push({...d,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:g++,textWidth:-1,textHeight:-1})})})})}),{paragraphs:e,fragments:A,characters:i}}measureParagraphDOM(t,e){const A=e.getBoundingClientRect(),i=this.measureDOM(e);i.paragraphs.forEach(o=>{const a=t[o.paragraphIndex];a.lineBox.left=o.left-A.left,a.lineBox.top=o.top-A.top,a.lineBox.width=o.width,a.lineBox.height=o.height}),i.fragments.forEach(o=>{const a=t[o.paragraphIndex].fragments[o.fragmentIndex];a.inlineBox.left=o.left-A.left,a.inlineBox.top=o.top-A.top,a.inlineBox.width=o.width,a.inlineBox.height=o.height});const s=[];let n=0;return i.characters.forEach(o=>{const{paragraphIndex:a,fragmentIndex:l,characterIndex:c}=o;s.push({...o,newParagraphIndex:a,left:o.left-A.left,top:o.top-A.top});const g=t[a].fragments[l].characters[c],{fontHeight:u,isVertical:d}=g,f=s[n];g.inlineBox.left=f.left,g.inlineBox.top=f.top,g.inlineBox.width=f.width,g.inlineBox.height=f.height,d?(g.lineBox.left=f.left+(f.width-u)/2,g.lineBox.top=f.top,g.lineBox.width=u,g.lineBox.height=f.height):(g.lineBox.left=f.left,g.lineBox.top=f.top+(f.height-u)/2,g.lineBox.width=f.width,g.lineBox.height=u),n++}),{paragraphs:t,boundingBox:new ct(0,0,A.width,A.height)}}measure(t,e,A){let i;A||(A=this.createDOM(t,e),Object.assign(A.style,{position:"fixed",visibility:"hidden"}),document.body.appendChild(A),i=()=>A?.parentNode?.removeChild(A));const s=this.measureParagraphDOM(t,A);return i?.(),s}}class uI{eventListeners=new Map;addEventListener(t,e,A){const i={value:e,options:A},s=this.eventListeners.get(t);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(t,[s,i]):this.eventListeners.set(t,i),this}removeEventListener(t,e,A){if(!e)return this.eventListeners.delete(t),this;const i=this.eventListeners.get(t);if(!i)return this;if(Array.isArray(i)){const s=[];for(let n=0,o=i.length;n<o;n++){const a=i[n];(a.value!==e||typeof A=="object"&&A?.once&&(typeof a.options=="boolean"||!a.options?.once))&&s.push(a)}s.length?this.eventListeners.set(t,s.length===1?s[0]:s):this.eventListeners.delete(t)}else i.value===e&&(typeof A=="boolean"||!A?.once||typeof i.options=="boolean"||i.options?.once)&&this.eventListeners.delete(t);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(t){return this.eventListeners.has(t)}dispatchEvent(t,e){const A=this.eventListeners.get(t);if(A){if(Array.isArray(A))for(let i=A.length,s=0;s<i;s++){const n=A[s];typeof n.options=="object"&&n.options?.once&&this.off(t,n.value,n.options),n.value.apply(this,[e])}else typeof A.options=="object"&&A.options?.once&&this.off(t,A.value,A.options),A.value.apply(this,[e]);return!0}else return!1}on(t,e,A){return this.addEventListener(t,e,A)}once(t,e){return this.addEventListener(t,e,{once:!0})}off(t,e,A){return this.removeEventListener(t,e,A)}emit(t,e){this.dispatchEvent(t,e)}}function fI(){const r=new sA,t=Ml(),e=Rl(t);return{name:"background",pathSet:r,load:async A=>{const{backgroundImage:i}=A.style;i&&t.needsLoad(i)&&await t.load(i)},update:A=>{r.paths.length=0;const{style:i,lineBox:s,isVertical:n}=A,{backgroundImage:o,backgroundSize:a,backgroundColormap:l}=i;if(lt(o))return;const{pathSet:c}=e.parse(o),g=c.getBoundingBox(!0);let u,d,f,B;n?{x:d,y:u,width:B,height:f}=s:{x:u,y:d,width:f,height:B}=s;const p=Dn(l??"none"),S=c.paths.map(Q=>{const m=Q.clone();return m.style.fill&&m.style.fill in p&&(m.style.fill=p[m.style.fill]),m.style.stroke&&m.style.stroke in p&&(m.style.stroke=p[m.style.stroke]),m});let R,w;if(a==="rigid"){R=Math.max(A.fontSize*5/g.width),w=R;const Q=new O;Q.x=g.width-f/R,Q.y=g.height-B/w,S.forEach(m=>{m.applyTransform(x=>{const M=x.x>g.left+g.width/2,V=x.y>g.top+g.height/2;M&&(x.x-=Q.x),V&&(x.y-=Q.y)})})}else R=f/g.width,w=B/g.height;const D=new Jt;D.translate(-g.x,-g.y),D.scale(R,w),n&&(D.translate(-f/2,-B/2),D.rotate(-Math.PI/2),D.translate(B/2,f/2)),D.translate(u,d),S.forEach(Q=>{Q.applyTransform(m=>{m.applyMatrix3(D)})}),r.paths.push(...S)},renderOrder:-2,render:(A,i)=>{const{boundingBox:s,computedStyle:n}=i;lt(n.backgroundColor)||(A.fillStyle=n.backgroundColor,A.fillRect(...s.array)),r.paths.forEach(o=>{if(XA({ctx:A,path:o,fontSize:n.fontSize}),i.debug){const a=new sA([o]).getBoundingBox();a&&A.strokeRect(a.x,a.y,a.width,a.height)}}),i.paragraphs.forEach(o=>{const{lineBox:a,style:l}=o;lt(l.backgroundColor)||(A.fillStyle=l.backgroundColor,A.fillRect(...a.array)),o.fragments.forEach(c=>{const{inlineBox:g,style:u}=c;lt(u.backgroundColor)||(A.fillStyle=u.backgroundColor,A.fillRect(...g.array))})})}}}function Sn(r){const{highlight:t,highlightImage:e,highlightReferImage:A,highlightColormap:i,highlightLine:s,highlightSize:n,highlightThickness:o}=r;return{image:t?.image??e??"none",referImage:t?.referImage??A??"none",colormap:t?.colormap??i??"none",line:t?.line??s??"none",size:t?.size??n??"cover",thickness:t?.thickness??o??"100%"}}function dI(){const r=new sA,t=[],e=Ml(),A=Rl(e);return{name:"highlight",pathSet:r,load:async i=>{const s=new Set;i.forEachCharacter(n=>{const{computedStyle:o}=n,{image:a,referImage:l}=Sn(o);a&&e.needsLoad(a)&&s.add(a),l&&e.needsLoad(l)&&s.add(l)}),await Promise.all(Array.from(s).map(n=>e.load(n)))},update:i=>{t.length=0,r.paths.length=0;let s=[],n,o;i.forEachCharacter(a=>{const{computedStyle:l}=a,c=Sn(l),{image:g,colormap:u,line:d,size:f,thickness:B}=c;if(lt(g))n?.length&&(n=[],s.push(n));else{const{inlineBox:p,isVertical:S}=a,{fontSize:R}=l;(!o||jA(o.image,g)&&jA(o.colormap,u)&&jA(o.line,d)&&jA(o.size,f)&&jA(o.thickness,B))&&n?.length&&(S?n[0].inlineBox.left===p.left:n[0].inlineBox.top===p.top)&&n[0].fontSize===R?n.push(a):(n=[],n.push(a),s.push(n))}o=c}),s=s.filter(a=>a.length);for(let a=0;a<s.length;a++){const l=s[a],c=l[0],g=ct.from(...l.map(T=>T.compatibleGlyphBox));if(!g.height||!g.width)continue;const{computedStyle:u,isVertical:d,inlineBox:f,compatibleGlyphBox:B,strikeoutPosition:p,underlinePosition:S}=c,{fontSize:R}=u,{image:w,referImage:D,colormap:Q,line:m,size:x,thickness:M}=Sn(u),V=bn(M,{fontSize:R,total:g.width})/g.width,et=Dn(Q),{pathSet:z,dom:J}=A.parse(w),$=z.getBoundingBox(!0),K=R/$.width*2,L=new ct().copy(g);d&&(L.width=g.height,L.height=g.width,L.left=g.left+g.width);const it=Math.floor(L.width);let G=it;x!=="cover"&&(G=bn(x,{fontSize:R,total:g.width})||it,L.width=G);const W=!lt(D)&<(m);if(W)$.copy(A.parse(D).pathSet.getBoundingBox(!0));else{let T;if(lt(m))if($.width/$.height>4){T="underline";const tt=J.getAttribute("viewBox");if(tt){const[U,k,q,Z]=tt.split(" ").map(X=>Number(X)),nt=k+Z/2;$.y<nt&&$.y+$.height>nt?T="line-through":$.y+$.height<nt?T="overline":T="underline"}}else T="outline";else T=m;switch(T){case"outline":{const tt=L.width*.2,U=L.height*.2;d?(L.x-=U/2,L.y-=tt/2,L.x-=L.height):(L.x-=tt/2,L.y-=U/2),L.width+=tt,L.height+=U;break}case"overline":L.height=$.height*K,d?L.x=f.left+f.width:L.y=f.top;break;case"line-through":L.height=$.height*K,d?L.x=f.left+f.width-p+L.height/2:L.y=f.top+p-L.height/2;break;case"underline":L.height=$.height*K,d?L.x=B.left+B.width-S:L.y=f.top+S;break}}const At=new Jt;if(At.translate(-$.x,-$.y),At.scale(L.width/$.width,L.height/$.height),d){const T=L.width/2,tt=L.height/2;W||At.translate(-T,-tt),At.rotate(-Math.PI/2),W||At.translate(tt,T)}At.translate(L.x,L.y);for(let T=0;T<Math.ceil(it/G);T++){const tt=At.clone();d?tt.translate(0,T*L.width):tt.translate(T*L.width,0),z.paths.forEach(U=>{const k=U.clone().applyTransform(tt);k.style.strokeWidth&&(k.style.strokeWidth*=K*V),k.style.strokeMiterlimit&&(k.style.strokeMiterlimit*=K),k.style.strokeDashoffset&&(k.style.strokeDashoffset*=K),k.style.strokeDasharray&&(k.style.strokeDasharray=k.style.strokeDasharray.map(q=>q*K)),k.style.fill&&k.style.fill in et&&(k.style.fill=et[k.style.fill]),k.style.stroke&&k.style.stroke in et&&(k.style.stroke=et[k.style.stroke]),r.paths.push(k),it!==G&&(d?t[r.paths.length-1]=new ct(g.left-g.width*2,g.top,g.width*4,g.height):t[r.paths.length-1]=new ct(g.left,g.top-g.height*2,g.width,g.height*4))})}}},renderOrder:-1,getBoundingBox:()=>{const i=[];return r.paths.forEach((s,n)=>{const o=t[n];let a=s.getBoundingBox();if(o){const l=Math.max(a.x,o.x),c=Math.max(a.y,o.y),g=Math.min(a.right,o.right),u=Math.min(a.bottom,o.bottom);a=new ct(l,c,g-l,u-c)}i.push(a)}),ct.from(...i)},render:(i,s)=>{r.paths.forEach((n,o)=>{if(XA({ctx:i,path:n,fontSize:s.computedStyle.fontSize,clipRect:t[o]}),s.debug){const a=new sA([n]).getBoundingBox();a&&i.strokeRect(a.x,a.y,a.width,a.height)}})}}}function II(r,t){return`<svg width="${r*2}" height="${r*2}" xmlns="http://www.w3.org/2000/svg">
|
|
862
|
+
<circle cx="${r}" cy="${r}" r="${r}" fill="${t}" />
|
|
863
|
+
</svg>`}function pI(){const r=new sA;return{name:"listStyle",pathSet:r,update:t=>{r.paths.length=0;const{paragraphs:e,isVertical:A,fontSize:i}=t,s=i*.45;e.forEach(n=>{const{computedStyle:o}=n,{color:a,listStyleImage:l,listStyleColormap:c,listStyleSize:g,listStyleType:u}=o,d=Dn(c);let f=g,B;if(!lt(l))B=l;else if(!lt(u)){const m=i*.38/2;switch(f=f==="cover"?m*2:f,u){case"disc":B=II(m,String(a));break}}if(!B)return;const p=Ks(B),S=p.getBoundingBox(),R=n.fragments[0]?.characters[0];if(!R)return;const{inlineBox:w}=R,D=f==="cover"?1:bn(f,{total:i,fontSize:i})/i,Q=new Jt;if(A){const m=i/S.height*D;Q.translate(-S.left,-S.top).rotate(Math.PI/2).scale(m,m).translate(w.left+(w.width-S.height*m)/2,w.top-s)}else{const m=i/S.height*D;Q.translate(-S.left,-S.top).scale(m,m).translate(w.left-S.width*m-s,w.top+(w.height-S.height*m)/2)}r.paths.push(...p.paths.map(m=>{const x=m.clone();return x.applyTransform(Q),x.style.fill&&x.style.fill in d&&(x.style.fill=d[x.style.fill]),x.style.stroke&&x.style.stroke in d&&(x.style.stroke=d[x.style.stroke]),x}))})}}}function EI(){return{name:"outline"}}const hA=new O,ZA=new Jt,gA=new Jt;function BI(){return{name:"render",getBoundingBox:r=>{const{characters:t,fontSize:e,effects:A}=r,i=[];return t.forEach(s=>{A?.forEach(n=>{if(!s.glyphBox)return;const o=s.glyphBox.clone(),a=Mn(r,n);hA.set(o.left,o.top),hA.applyMatrix3(a),o.left=hA.x,o.top=hA.y,hA.set(o.right,o.bottom),hA.applyMatrix3(a),o.width=hA.x-o.left,o.height=hA.y-o.top;const l=(n.shadowOffsetX??0)*e,c=(n.shadowOffsetY??0)*e,g=Math.max(.1,n.textStrokeWidth??0)*e;o.left+=l-g,o.top+=c-g,o.width+=g*2,o.height+=g*2,i.push(o)})}),i.length?ct.from(...i):void 0},render:(r,t)=>{const{paragraphs:e,glyphBox:A,effects:i}=t;i?i.forEach(s=>{Tr(s,A,r),r.save();const[n,o,a,l,c,g]=Mn(t,s).transpose().elements;r.transform(n,l,o,c,a,g),t.forEachCharacter(u=>{u.drawTo(r,s)}),r.restore()}):e.forEach(s=>{s.fragments.forEach(n=>{n.characters.forEach(o=>{o.drawTo(r)})})}),t.debug&&e.forEach(s=>{r.strokeRect(s.lineBox.x,s.lineBox.y,s.lineBox.width,s.lineBox.height)})}}}function Mn(r,t){const{fontSize:e,glyphBox:A}=r,i=(t.translateX??0)*e,s=(t.translateY??0)*e,n=Math.PI*2,o=(t.skewX??0)/360*n,a=(t.skewY??0)/360*n,{left:l,top:c,width:g,height:u}=A,d=l+g/2,f=c+u/2;return ZA.identity(),gA.makeTranslation(i,s),ZA.multiply(gA),gA.makeTranslation(d,f),ZA.multiply(gA),gA.set(1,Math.tan(o),0,Math.tan(a),1,0,0,0,1),ZA.multiply(gA),gA.makeTranslation(-d,-f),ZA.multiply(gA),ZA.clone()}function CI(){const r=new sA;return{name:"textDecoration",pathSet:r,update:t=>{r.paths.length=0;const e=[];let A,i;t.forEachCharacter(s=>{const{computedStyle:n,isVertical:o,inlineBox:a,underlinePosition:l,underlineThickness:c,strikeoutPosition:g,strikeoutSize:u}=s,{color:d,textDecoration:f,writingMode:B}=n;if(lt(f))i=void 0;else{let p=!1;if(i?.textDecoration===f&&i?.writingMode===B&&i?.color===d&&(o?A[0].inlineBox.left===a.left:A[0].inlineBox.top===a.top))switch(f){case"underline":A[0].underlinePosition===l&&A[0].underlineThickness===c&&(p=!0);break;case"line-through":A[0].strikeoutPosition===g&&A[0].strikeoutSize===u&&(p=!0);break}p?A.push(s):(A=[],A.push(s),e.push(A)),i=n}}),e.forEach(s=>{const{computedStyle:n,isVertical:o,underlinePosition:a,underlineThickness:l,strikeoutPosition:c,strikeoutSize:g}=s[0],{color:u,textDecoration:d}=n,f=ct.from(...s.map(x=>x.inlineBox)),{left:B,top:p,width:S,height:R}=f;let w=o?B+S:p;const D=o?-1:1;let Q=0;switch(d){case"overline":Q=l*2;break;case"underline":w+=D*a,Q=l*2;break;case"line-through":w+=D*c,Q=g*2;break}w-=Q;let m;o?m=new Ut([{type:"M",x:w,y:p},{type:"L",x:w,y:p+R},{type:"L",x:w+Q,y:p+R},{type:"L",x:w+Q,y:p},{type:"Z"}],{fill:u}):m=new Ut([{type:"M",x:B,y:w},{type:"L",x:B+S,y:w},{type:"L",x:B+S,y:w+Q},{type:"L",x:B,y:w+Q},{type:"Z"}],{fill:u}),r.paths.push(m)})},render:(t,e)=>{const{effects:A,computedStyle:i}=e;A?A.forEach(s=>{t.save();const[n,o,a,l,c,g]=Mn(e,s).transpose().elements;t.transform(n,l,o,c,a,g),r.paths.forEach(u=>{XA({ctx:t,path:u,fontSize:i.fontSize,...s})}),t.restore()}):r.paths.forEach(s=>{XA({ctx:t,path:s,fontSize:i.fontSize})})}}}const Rn=fo();class Pl extends uI{debug;content;style;effects;measureDOM;needsUpdate=!0;computedStyle={...Rn};paragraphs=[];lineBox=new ct;rawGlyphBox=new ct;glyphBox=new ct;pathBox=new ct;boundingBox=new ct;measurer=new Lr;plugins=new Map;fonts;get fontSize(){return this.computedStyle.fontSize}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get characters(){return this.paragraphs.flatMap(t=>t.fragments.flatMap(e=>e.characters))}constructor(t={}){super(),this.set(t)}set(t={}){this.debug=t.debug??!1,this.content=sr(t.content??""),this.style=t.style??{},this.measureDOM=t.measureDOM,this.effects=t.effects,this.fonts=t.fonts,this.use(fI()).use(EI()).use(pI()).use(CI()).use(dI()).use(BI()),(t.plugins??[]).forEach(e=>{this.use(e)}),this.updateParagraphs()}use(t){return this.plugins.set(t.name,t),this}forEachCharacter(t){return this.paragraphs.forEach((e,A)=>{e.fragments.forEach((i,s)=>{i.characters.forEach((n,o)=>{t(n,{paragraphIndex:A,fragmentIndex:s,characterIndex:o})})})}),this}async load(){await Promise.all(Array.from(this.plugins.values()).map(t=>t.load?.(this)))}updateParagraphs(){this.computedStyle={...Rn,...this.style};const{content:t,computedStyle:e}=this,A=[];return t.forEach(i=>{const{fragments:s,...n}=i,o=new gI(n,e);s.forEach(a=>{const{content:l,...c}=a;l!==void 0&&o.addFragment(l,c)}),A.push(o)}),this.paragraphs=A,this}createDOM(){return this.updateParagraphs(),this.measurer.createDOM(this.paragraphs,this.computedStyle)}measure(t=this.measureDOM){const e={paragraphs:this.paragraphs,lineBox:this.lineBox,rawGlyphBox:this.rawGlyphBox,glyphBox:this.glyphBox,pathBox:this.pathBox,boundingBox:this.boundingBox};this.updateParagraphs();const A=this.measurer.measure(this.paragraphs,this.computedStyle,t);this.paragraphs=A.paragraphs,this.lineBox=A.boundingBox,this.characters.forEach(i=>{i.update(this.fonts)}),this.rawGlyphBox=this.getGlyphBox(),Array.from(this.plugins.values()).sort((i,s)=>(i.updateOrder??0)-(s.updateOrder??0)).forEach(i=>{i.update?.(this)}),this.glyphBox=this.getGlyphBox(),this.updatePathBox().updateBoundingBox();for(const i in e)A[i]=this[i],this[i]=e[i];return this.emit("measure",{text:this,result:A}),A}getGlyphBox(){const t=O.MAX,e=O.MIN;return this.characters.forEach(A=>{if(!A.getGlyphMinMax(t,e)){const{inlineBox:i}=A,{left:s,top:n,width:o,height:a}=i,l=new O(s,n),c=new O(s+o,n+a);t.min(l,c),e.max(l,c)}}),new ct(t.x,t.y,e.x-t.x,e.y-t.y)}updatePathBox(){return this.pathBox=ct.from(this.glyphBox,...Array.from(this.plugins.values()).map(t=>t.getBoundingBox?t.getBoundingBox(this):t.pathSet?.getBoundingBox()).filter(Boolean)),this}updateBoundingBox(){return this.boundingBox=ct.from(this.rawGlyphBox,this.lineBox,this.pathBox),this}requestUpdate(){return this.needsUpdate=!0,this}update(t=this.measureDOM){const e=this.measure(t);for(const A in e)this[A]=e[A];return this.emit("update",{text:this}),this.needsUpdate=!1,this}render(t){const{view:e,pixelRatio:A=2}=t,i=e.getContext("2d");i&&(this.needsUpdate&&this.update(),iI(i,A,this.boundingBox),rI(i,this),Array.from(this.plugins.values()).sort((s,n)=>(s.renderOrder??0)-(n.renderOrder??0)).forEach(s=>{if(s.render)s.render?.(i,this);else if(s.pathSet){const n=this.computedStyle;s.pathSet.paths.forEach(o=>{XA({ctx:i,path:o,fontSize:n.fontSize})})}}),this.emit("render",{text:this,view:e,pixelRatio:A}),t.onContext?.(i))}toString(){return this.content.flatMap(t=>t.fragments.map(e=>e.content)).join("")}}var QI=Object.defineProperty,zi=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&QI(t,e,i),i};class RA extends AA{constructor(t){super(),this.parent=t}base=new Pl;texture=new TA;measureResult;setProperties(t){return super.setProperties(lt(t)?void 0:Qh(t))}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"content":case"effects":case"measureDOM":case"fonts":case"split":case"enabled":this.parent.requestRedraw();break}}_updateText(){this.base.style={justifyContent:"center",alignItems:"center",textAlign:"center",...this.parent.style.toJSON()},this.base.requestUpdate()}measure(){return this._updateText(),this.base.measure()}updateMeasure(){return this.measureResult=this.measure(),this}canDraw(){return!!(this.enabled&&!/^\s*$/.test(this.base.toString())&&this.texture?.valid)}draw(){this.base.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload();const t=this.measureResult?.boundingBox.width??this.parent.size.width,e=this.measureResult?.boundingBox.height??this.parent.size.height,A=this.parent.context;A.fillStyle=this.texture,A.uvTransform=new kt().scale(1/t,1/e),A.vertTransform=()=>{const i=this.parent,s=i.getTransformOrigin();return new kt().translate(-s.x,-s.y).scale(i.globalScale.x>0?1:-1,i.globalScale.y>0?1:-1).translate(s.x,s.y)},A.fill()}}zi([b({default:!0})],RA.prototype,"enabled"),zi([b({alias:"base.content"})],RA.prototype,"content"),zi([b({alias:"base.effects"})],RA.prototype,"effects"),zi([dt({alias:"base.measureDOM"})],RA.prototype,"measureDOM"),zi([dt({alias:"base.fonts"})],RA.prototype,"fonts");var yI=Object.defineProperty,mI=Object.getOwnPropertyDescriptor,Pn=(r,t,e,A)=>{for(var i=A>1?void 0:A?mI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&yI(t,e,i),i};h.Node2D=class extends h.CanvasItem{position=new he().on("update",()=>this.updateGlobalTransform());scale=new he(1,1).on("update",()=>this.updateGlobalTransform());skew=new he().on("update",()=>this.updateGlobalTransform());transform=new kt;globalPosition=new he;globalScale=new he;globalSkew=new he;globalTransform=new kt;_parentTransformDirtyId;constructor(t,e=[]){super(),this.setProperties(t).append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"rotation":this.updateGlobalTransform();break}}getTransformOrigin(){return new he(0,0)}getTransform(t){const e=this.getTransformOrigin(),A=new kt;return A.translate(-e.x,-e.y).scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation),t?.(A),A.translate(this.position.x,this.position.y).translate(e.x,e.y),A}updateTransform(){this.transform.copy(this.getTransform())}updateGlobalTransform(){this.updateTransform();const t=this.getParent();t?.globalTransform?(this._parentTransformDirtyId=t.globalTransform.dirtyId,this.globalScale.set(t.globalScale.x*this.scale.x,t.globalScale.y*this.scale.y),this.globalRotation=t.globalRotation+this.rotation,t.globalTransform.multiply(this.transform,this.globalTransform)):(this.globalScale.copy(this.scale),this.globalRotation=this.rotation,this.globalTransform.copy(this.transform));const[e,A,i,s,n,o]=this.globalTransform.toArray();this.globalPosition.set(i,o),this.globalSkew.x=Math.atan2(A,e)-this.globalRotation,this.globalSkew.y=Math.atan2(s,n)-this.globalRotation,this.requestRelayout()}_transformVertices(t,e){let A,i,s,n,o,a;if(e){const c=this.globalTransform.clone();c.multiply(typeof e=="function"?e?.():e),[A,i,s,n,o,a]=c.toArray()}else[A,i,s,n,o,a]=this.globalTransform.toArray();const l=t.slice();for(let c=t.length,g=0;g<c;g+=2){const u=t[g],d=t[g+1];l[g]=A*u+i*d+s,l[g+1]=n*u+o*d+a}return l}_relayout(t){return this.updateGlobalTransform(),super._relayout(t).map(e=>({...e,vertices:this._transformVertices(e.vertices,e.vertTransform)}))}_process(t){super._process(t);const e=this.getParent();e?.globalTransform&&this._parentTransformDirtyId!==e?.globalTransform?.dirtyId&&this.requestRelayout()}},Pn([dt({default:0})],h.Node2D.prototype,"rotation",2),Pn([dt({default:0})],h.Node2D.prototype,"globalRotation",2),h.Node2D=Pn([st("Node2D")],h.Node2D);var wI=Object.getOwnPropertyDescriptor,vI=(r,t,e,A)=>{for(var i=A>1?void 0:A?wI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.BaseElement2D=class extends h.Node2D{size=new he().on("update",()=>this.updateGlobalTransform());get style(){return this._style}set style(t){const e=(...A)=>{this.emit("updateStyleProperty",...A),this._updateStyleProperty(A[0],A[1],A[2],A[3])};t.on("updateProperty",e),this._style?.off("updateProperty",e),this._style=t}_background=new $s(this);get background(){return this._background}set background(t){this._background.resetProperties().setProperties(t)}_shape=new _A(this);get shape(){return this._shape}set shape(t){this._shape.resetProperties().setProperties(t)}_fill=new qt(this);get fill(){return this._fill}set fill(t){this._fill.resetProperties().setProperties(t)}_outline=new JA(this);get outline(){return this._outline}set outline(t){this._outline.resetProperties().setProperties(t)}_foreground=new tn(this);get foreground(){return this._foreground}set foreground(t){this._foreground.resetProperties().setProperties(t)}_text=new RA(this);get text(){return this._text}set text(t){this._text.resetProperties().setProperties(t)}_shadow=new vA(this);get shadow(){return this._shadow}set shadow(t){this._shadow.resetProperties().setProperties(t)}constructor(t,e=[]){super(),this._updateStyleProperty=this._updateStyleProperty.bind(this),this.style=new Pi,this.setProperties(t).append(e)}setProperties(t){if(t){const{style:e,text:A,shape:i,background:s,fill:n,outline:o,foreground:a,shadow:l,...c}=t;e&&this.style.setProperties(e),s&&this.background.setProperties(s),i&&this.shape.setProperties(i),n&&this.fill.setProperties(n),o&&this.outline.setProperties(o),A&&this.text.setProperties(A),a&&this.foreground.setProperties(a),l&&this.shadow.setProperties(l),super.setProperties(c)}return this}_updateStyleProperty(t,e,A,i){switch(t){case"width":case"height":this.mask instanceof h.BaseElement2D&&(this.mask.size.x=this.size.x,this.mask.size.y=this.size.y);break}switch(t){case"rotate":this.rotation=this.style.rotate*Fo;break;case"scaleX":this.scale.x=this.style.scaleX;break;case"scaleY":this.scale.y=this.style.scaleY;break;case"skewX":this.skew.x=this.style.skewX;break;case"skewY":this.skew.y=this.style.skewY;break;case"transform":case"transformOrigin":this.updateGlobalTransform();break;case"opacity":this.opacity=this.style.opacity;break;case"visibility":this.visible=this.style.visibility==="visible";break;case"filter":this.requestRepaint();break;case"maskImage":this._updateMaskImage();break;case"borderRadius":this.requestRedraw();break;case"backgroundColor":this.background.color=this.style.backgroundColor;break;case"backgroundImage":this.background.image=this.style.backgroundImage;break;case"borderStyle":case"outlineStyle":this.outline.style=e;break;case"borderWidth":case"outlineWidth":this.outline.width=e;break;case"borderColor":case"outlineColor":this.outline.color=e;break}}_updateMaskImage(){const t="__$style.maskImage",e=this.style.maskImage;if(e&&e!=="none"){const A=this.getNode(t);A?A.src=e:this.appendChild(new h.MaskEffect({name:t,src:e}),"back")}else{const A=this.getNode(t);A&&this.removeChild(A)}}getTransformOrigin(){const{width:t,height:e}=this.size,[A,i]=sa(this.style.transformOrigin);return new he(A*t,i*e)}getTransform(t){const{width:e,height:A}=this.size;return super.getTransform(i=>{ra(this.style.transform??"",e,A,i),t?.(i)})}updateGlobalTransform(){super.updateGlobalTransform(),this._updateOverflow()}getRect(){const{width:t,height:e}=this.size,A=0,i=0,s=A+t,n=i+e,[o,a,l,c,g,u]=this.globalTransform.toArray(),d=[[A,i],[A,n],[s,i],[s,n]].map(D=>[o*D[0]+a*D[1]+l,c*D[0]+g*D[1]+u]),f=d.map(D=>D[0]),B=d.map(D=>D[1]),p=Math.min(...f),S=Math.max(...f),R=Math.min(...B),w=Math.max(...B);return new xs(p,R,S-p,w-R)}_updateOverflow(){if(this.style.overflow==="hidden"){const t=this.getRect();this.mask={x:t.x,y:t.y,width:t.width,height:t.height}}else this.mask=void 0}_draw(){super._draw(),this._text.canDraw()&&this._text.updateMeasure(),this._background.canDraw()&&(this._tree?.log(this.name,"draw background"),this._shape.drawRect(),this._background.draw()),this._fill.canDraw()&&(this._tree?.log(this.name,"draw fill"),this._shape.draw(),this._fill.draw()),this._outline.canDraw()&&(this._tree?.log(this.name,"draw outline"),this._shape.draw(),this._outline.draw()),this._foreground.canDraw()&&(this._tree?.log(this.name,"draw foreground"),this._shape.drawRect(),this._foreground.draw()),this._text.canDraw()&&(this._tree?.log(this.name,"draw text"),this._shape.drawRect(),this._text.draw()),this._drawContent()}_drawContent(){}_repaint(t){const e=ia(this.style.filter);return super._repaint(t).map(A=>({...A,colorMatrix:e.toMatrix4().toArray(!0),colorMatrixOffset:e.toVector4().toArray()}))}canPointerEvents(){return this.style.pointerEvents!=="none"}input(t,e){for(let A=this._children.length-1;A>=0;A--)this._children[A].input(t,e);this.isVisibleInTree()&&this._input(t,e)}_pointerInput(t,e){const{width:A,height:i}=this.size;return t.x>=0&&t.x<A&&t.y>=0&&t.y<i}_input(t,e){switch(e){case"pointerdown":case"pointermove":case"pointerup":{if(this.canPointerEvents()){const{screenX:A,screenY:i}=t;if(A&&i){const[s,n]=this.globalTransform.inverse().applyToPoint(A,i);this._pointerInput({x:s,y:n},e)&&(t.target||(t.target=this),this.emit(e,t))}}break}}}toJSON(){const t=super.toJSON();return{...t,props:{...t.props,style:this.style.toJSON(),background:this.background.toJSON(),shape:this.shape.toJSON(),fill:this.fill.toJSON(),outline:this.outline.toJSON(),text:this.text.toJSON(),foreground:this.foreground.toJSON(),shadow:this.shadow.toJSON()}}}},h.BaseElement2D=vI([st("BaseElement2D")],h.BaseElement2D);class kn extends Pi{constructor(t){super(),this.setProperties(t)}}const kl={left:0,top:0,width:0,height:0};for(const r in kl)ir(kn,r,{default:kl[r]});var _I=Object.getOwnPropertyDescriptor,bI=(r,t,e,A)=>{for(var i=A>1?void 0:A?_I(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.Element2D=class extends h.BaseElement2D{get style(){return this._style}set style(t){const e=(...A)=>{this.emit("updateStyleProperty",...A),this._updateStyleProperty(A[0],A[1],A[2],A[3])};t.on("updateProperty",e),this._style?.off("updateProperty",e),this._style=t}constructor(t,e=[]){super(),this.style=new kn,this.setProperties(t).append(e)}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"left":this.position.x=Number(e);break;case"top":this.position.y=Number(e);break;case"width":this.size.width=Number(e);break;case"height":this.size.height=Number(e);break}}},h.Element2D=bI([st("Element2D")],h.Element2D);var DI=(()=>{var r=typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:BA&&BA.tagName.toUpperCase()==="SCRIPT"&&BA.src||new URL("index.js",document.baseURI).href;return function(t){t=t||{};var e;e||(e=typeof t<"u"?t:{});var A,i;e.ready=new Promise(function(I,E){A=I,i=E});var s=Object.assign({},e),n="";typeof document<"u"&&document.currentScript&&(n=document.currentScript.src),r&&(n=r),n.indexOf("blob:")!==0?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="";var o=e.print||console.log.bind(console),a=e.printErr||console.warn.bind(console);Object.assign(e,s),s=null;var l;e.wasmBinary&&(l=e.wasmBinary),e.noExitRuntime,typeof WebAssembly!="object"&&K("no native wasm support detected");var c,g=!1;function u(I,E,C){C=E+C;for(var v="";!(E>=C);){var _=I[E++];if(!_)break;if(_&128){var P=I[E++]&63;if((_&224)==192)v+=String.fromCharCode((_&31)<<6|P);else{var N=I[E++]&63;_=(_&240)==224?(_&15)<<12|P<<6|N:(_&7)<<18|P<<12|N<<6|I[E++]&63,65536>_?v+=String.fromCharCode(_):(_-=65536,v+=String.fromCharCode(55296|_>>10,56320|_&1023))}}else v+=String.fromCharCode(_)}return v}var d,f,B,p,S,R,w,D,Q;function m(){var I=c.buffer;d=I,e.HEAP8=f=new Int8Array(I),e.HEAP16=p=new Int16Array(I),e.HEAP32=R=new Int32Array(I),e.HEAPU8=B=new Uint8Array(I),e.HEAPU16=S=new Uint16Array(I),e.HEAPU32=w=new Uint32Array(I),e.HEAPF32=D=new Float32Array(I),e.HEAPF64=Q=new Float64Array(I)}var x,M=[],V=[],et=[];function z(){var I=e.preRun.shift();M.unshift(I)}var J=0,$=null;function K(I){throw e.onAbort&&e.onAbort(I),I="Aborted("+I+")",a(I),g=!0,I=new WebAssembly.RuntimeError(I+". Build with -sASSERTIONS for more info."),i(I),I}function L(I){return I.startsWith("data:application/octet-stream;base64,")}var it;if(it="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQYwmCwdpaQB2AHZpAEGgJgs3ox0AAKEdAADhHQAA2x0AAOEdAADbHQAAaWlpZmlmaQDUHQAApB0AAHZpaQClHQAA6B0AAGlpaQBB4CYLCcQAAADFAAAAxgBB9CYLDsQAAADHAAAAyAAAANQdAEGQJws+ox0AAOEdAADbHQAA4R0AANsdAADoHQAA4x0AAOgdAABpaWlpAAAAANQdAAC5HQAA1B0AALsdAAC8HQAA6B0AQdgnCwnJAAAAygAAAMsAQewnCxbJAAAAzAAAAMgAAAC/HQAA1B0AAL8dAEGQKAuiA9QdAAC/HQAA2x0AANUdAAB2aWlpaQAAANQdAAC/HQAA4R0AAHZpaWYAAAAA1B0AAL8dAADbHQAAdmlpaQAAAADUHQAAvx0AANUdAADVHQAAwB0AANsdAADbHQAAwB0AANUdAADAHQAAaQBkaWkAdmlpZAAAxB0AAMQdAAC/HQAA1B0AAMQdAADUHQAAxB0AAMMdAADUHQAAxB0AANsdAADUHQAAxB0AANsdAADiHQAAdmlpaWQAAADUHQAAxB0AAOIdAADbHQAAxR0AAMIdAADFHQAA2x0AAMIdAADFHQAA4h0AAMUdAADiHQAAxR0AANsdAABkaWlpAAAAAOEdAADEHQAA2x0AAGZpaWkAAAAA1B0AAMQdAADEHQAA3B0AANQdAADEHQAAxB0AANwdAADFHQAAxB0AAMQdAADEHQAAxB0AANwdAADUHQAAxB0AANUdAADVHQAAxB0AANQdAADEHQAAoR0AANQdAADEHQAAuR0AANUdAADFHQAAAAAAANQdAADEHQAA4h0AAOIdAADbHQAAdmlpZGRpAADBHQAAxR0AQcArC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBkSwLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBByywLAQwAQdcsCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQYUtCwEQAEGRLQsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEG/LQsBEgBByy0LHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgi4LDhoAAAAaGhoAAAAAAAAJAEGzLgsBFABBvy4LFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7S4LARYAQfkuCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQcQvCwHSAEHsLwsI//////////8AQbAwCwkQIgEAAAAAAAUAQcQwCwHNAEHcMAsKzgAAAM8AAAD8HQBB9DALAQIAQYQxCwj//////////wBByDELAQUAQdQxCwHQAEHsMQsOzgAAANEAAAAIHgAAAAQAQYQyCwEBAEGUMgsF/////woAQdgyCwHT",!L(it)){var G=it;it=e.locateFile?e.locateFile(G,n):n+G}function W(){var I=it;try{if(I==it&&l)return new Uint8Array(l);if(L(I))try{var E=fE(I.slice(37)),C=new Uint8Array(E.length);for(I=0;I<E.length;++I)C[I]=E.charCodeAt(I);var v=C}catch{throw Error("Converting base64 string to bytes failed.")}else v=void 0;var _=v;if(_)return _;throw"both async and sync fetching of the wasm failed"}catch(P){K(P)}}function At(){return l||typeof fetch!="function"?Promise.resolve().then(function(){return W()}):fetch(it,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+it+"'";return I.arrayBuffer()}).catch(function(){return W()})}function T(I){for(;0<I.length;)I.shift()(e)}function tt(I){if(I===void 0)return"_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var E=I.charCodeAt(0);return 48<=E&&57>=E?"_"+I:I}function U(I,E){return I=tt(I),function(){return E.apply(this,arguments)}}var k=[{},{value:void 0},{value:null},{value:!0},{value:!1}],q=[];function Z(I){var E=Error,C=U(I,function(v){this.name=I,this.message=v,v=Error(v).stack,v!==void 0&&(this.stack=this.toString()+`
|
|
864
|
+
`+v.replace(/^Error(:[^\n]*)?\n/,""))});return C.prototype=Object.create(E.prototype),C.prototype.constructor=C,C.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},C}var nt=void 0;function X(I){throw new nt(I)}var pt=I=>(I||X("Cannot use deleted val. handle = "+I),k[I].value),oe=I=>{switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var E=q.length?q.pop():k.length;return k[E]={ga:1,value:I},E}},ae=void 0,Ot=void 0;function ht(I){for(var E="";B[I];)E+=Ot[B[I++]];return E}var mt=[];function Ht(){for(;mt.length;){var I=mt.pop();I.M.$=!1,I.delete()}}var zt=void 0,Dt={};function ee(I,E){for(E===void 0&&X("ptr should not be undefined");I.R;)E=I.ba(E),I=I.R;return E}var Ge={};function qr(I){I=Cc(I);var E=ht(I);return tA(I),E}function Gn(I,E){var C=Ge[I];return C===void 0&&X(E+" has unknown type "+qr(I)),C}function Xr(){}var On=!1;function gc(I){--I.count.value,I.count.value===0&&(I.T?I.U.W(I.T):I.P.N.W(I.O))}function uc(I,E,C){return E===C?I:C.R===void 0?null:(I=uc(I,E,C.R),I===null?null:C.na(I))}var fc={};function Wp(I,E){return E=ee(I,E),Dt[E]}var dc=void 0;function jr(I){throw new dc(I)}function Zr(I,E){return E.P&&E.O||jr("makeClassHandle requires ptr and ptrType"),!!E.U!=!!E.T&&jr("Both smartPtrType and smartPtr must be specified"),E.count={value:1},ai(Object.create(I,{M:{value:E}}))}function ai(I){return typeof FinalizationRegistry>"u"?(ai=E=>E,I):(On=new FinalizationRegistry(E=>{gc(E.M)}),ai=E=>{var C=E.M;return C.T&&On.register(E,{M:C},E),E},Xr=E=>{On.unregister(E)},ai(I))}var $r={};function Hn(I){for(;I.length;){var E=I.pop();I.pop()(E)}}function ji(I){return this.fromWireType(R[I>>2])}var li={},ts={};function pA(I,E,C){function v(F){F=C(F),F.length!==I.length&&jr("Mismatched type converter count");for(var Y=0;Y<I.length;++Y)Ze(I[Y],F[Y])}I.forEach(function(F){ts[F]=E});var _=Array(E.length),P=[],N=0;E.forEach((F,Y)=>{Ge.hasOwnProperty(F)?_[Y]=Ge[F]:(P.push(F),li.hasOwnProperty(F)||(li[F]=[]),li[F].push(()=>{_[Y]=Ge[F],++N,N===P.length&&v(_)}))}),P.length===0&&v(_)}function Jn(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+I)}}function Ze(I,E,C={}){if(!("argPackAdvance"in E))throw new TypeError("registerType registeredInstance requires argPackAdvance");var v=E.name;if(I||X('type "'+v+'" must have a positive integer typeid pointer'),Ge.hasOwnProperty(I)){if(C.ua)return;X("Cannot register type '"+v+"' twice")}Ge[I]=E,delete ts[I],li.hasOwnProperty(I)&&(E=li[I],delete li[I],E.forEach(_=>_()))}function Kn(I){X(I.M.P.N.name+" instance already deleted")}function EA(){}function Yn(I,E,C){if(I[E].S===void 0){var v=I[E];I[E]=function(){return I[E].S.hasOwnProperty(arguments.length)||X("Function '"+C+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+I[E].S+")!"),I[E].S[arguments.length].apply(this,arguments)},I[E].S=[],I[E].S[v.Z]=v}}function qp(I,E){e.hasOwnProperty(I)?(X("Cannot register public name '"+I+"' twice"),Yn(e,I,I),e.hasOwnProperty(void 0)&&X("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),e[I].S[void 0]=E):e[I]=E}function Xp(I,E,C,v,_,P,N,F){this.name=I,this.constructor=E,this.X=C,this.W=v,this.R=_,this.pa=P,this.ba=N,this.na=F,this.ja=[]}function Vn(I,E,C){for(;E!==C;)E.ba||X("Expected null or instance of "+C.name+", got an instance of "+E.name),I=E.ba(I),E=E.R;return I}function jp(I,E){return E===null?(this.ea&&X("null is not a valid "+this.name),0):(E.M||X('Cannot pass "'+Xn(E)+'" as a '+this.name),E.M.O||X("Cannot pass deleted object as a pointer of type "+this.name),Vn(E.M.O,E.M.P.N,this.N))}function Zp(I,E){if(E===null){if(this.ea&&X("null is not a valid "+this.name),this.da){var C=this.fa();return I!==null&&I.push(this.W,C),C}return 0}if(E.M||X('Cannot pass "'+Xn(E)+'" as a '+this.name),E.M.O||X("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&E.M.P.ca&&X("Cannot convert argument of type "+(E.M.U?E.M.U.name:E.M.P.name)+" to parameter type "+this.name),C=Vn(E.M.O,E.M.P.N,this.N),this.da)switch(E.M.T===void 0&&X("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:E.M.U===this?C=E.M.T:X("Cannot convert argument of type "+(E.M.U?E.M.U.name:E.M.P.name)+" to parameter type "+this.name);break;case 1:C=E.M.T;break;case 2:if(E.M.U===this)C=E.M.T;else{var v=E.clone();C=this.xa(C,oe(function(){v.delete()})),I!==null&&I.push(this.W,C)}break;default:X("Unsupporting sharing policy")}return C}function $p(I,E){return E===null?(this.ea&&X("null is not a valid "+this.name),0):(E.M||X('Cannot pass "'+Xn(E)+'" as a '+this.name),E.M.O||X("Cannot pass deleted object as a pointer of type "+this.name),E.M.P.ca&&X("Cannot convert argument of type "+E.M.P.name+" to parameter type "+this.name),Vn(E.M.O,E.M.P.N,this.N))}function $e(I,E,C,v){this.name=I,this.N=E,this.ea=C,this.ca=v,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,E.R!==void 0?this.toWireType=Zp:(this.toWireType=v?jp:$p,this.V=null)}function tE(I,E){e.hasOwnProperty(I)||jr("Replacing nonexistant public symbol"),e[I]=E,e[I].Z=void 0}function eE(I,E){var C=[];return function(){if(C.length=0,Object.assign(C,arguments),I.includes("j")){var v=e["dynCall_"+I];v=C&&C.length?v.apply(null,[E].concat(C)):v.call(null,E)}else v=x.get(E).apply(null,C);return v}}function _e(I,E){I=ht(I);var C=I.includes("j")?eE(I,E):x.get(E);return typeof C!="function"&&X("unknown function pointer with signature "+I+": "+E),C}var Ic=void 0;function es(I,E){function C(P){_[P]||Ge[P]||(ts[P]?ts[P].forEach(C):(v.push(P),_[P]=!0))}var v=[],_={};throw E.forEach(C),new Ic(I+": "+v.map(qr).join([", "]))}function zn(I,E,C,v,_){var P=E.length;2>P&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");var N=E[1]!==null&&C!==null,F=!1;for(C=1;C<E.length;++C)if(E[C]!==null&&E[C].V===void 0){F=!0;break}var Y=E[0].name!=="void",H=P-2,j=Array(H),rt=[],gt=[];return function(){if(arguments.length!==H&&X("function "+I+" called with "+arguments.length+" arguments, expected "+H+" args!"),gt.length=0,rt.length=N?2:1,rt[0]=_,N){var Mt=E[1].toWireType(gt,this);rt[1]=Mt}for(var ft=0;ft<H;++ft)j[ft]=E[ft+2].toWireType(gt,arguments[ft]),rt.push(j[ft]);if(ft=v.apply(null,rt),F)Hn(gt);else for(var Ie=N?1:2;Ie<E.length;Ie++){var be=Ie===1?Mt:j[Ie-2];E[Ie].V!==null&&E[Ie].V(be)}return Mt=Y?E[0].fromWireType(ft):void 0,Mt}}function Wn(I,E){for(var C=[],v=0;v<I;v++)C.push(w[E+4*v>>2]);return C}function qn(I){4<I&&--k[I].ga===0&&(k[I]=void 0,q.push(I))}function Xn(I){if(I===null)return"null";var E=typeof I;return E==="object"||E==="array"||E==="function"?I.toString():""+I}function AE(I,E){switch(E){case 2:return function(C){return this.fromWireType(D[C>>2])};case 3:return function(C){return this.fromWireType(Q[C>>3])};default:throw new TypeError("Unknown float type: "+I)}}function iE(I,E,C){switch(E){case 0:return C?function(v){return f[v]}:function(v){return B[v]};case 1:return C?function(v){return p[v>>1]}:function(v){return S[v>>1]};case 2:return C?function(v){return R[v>>2]}:function(v){return w[v>>2]};default:throw new TypeError("Unknown integer type: "+I)}}function rE(I,E){for(var C="",v=0;!(v>=E/2);++v){var _=p[I+2*v>>1];if(_==0)break;C+=String.fromCharCode(_)}return C}function sE(I,E,C){if(C===void 0&&(C=2147483647),2>C)return 0;C-=2;var v=E;C=C<2*I.length?C/2:I.length;for(var _=0;_<C;++_)p[E>>1]=I.charCodeAt(_),E+=2;return p[E>>1]=0,E-v}function nE(I){return 2*I.length}function oE(I,E){for(var C=0,v="";!(C>=E/4);){var _=R[I+4*C>>2];if(_==0)break;++C,65536<=_?(_-=65536,v+=String.fromCharCode(55296|_>>10,56320|_&1023)):v+=String.fromCharCode(_)}return v}function aE(I,E,C){if(C===void 0&&(C=2147483647),4>C)return 0;var v=E;C=v+C-4;for(var _=0;_<I.length;++_){var P=I.charCodeAt(_);if(55296<=P&&57343>=P){var N=I.charCodeAt(++_);P=65536+((P&1023)<<10)|N&1023}if(R[E>>2]=P,E+=4,E+4>C)break}return R[E>>2]=0,E-v}function lE(I){for(var E=0,C=0;C<I.length;++C){var v=I.charCodeAt(C);55296<=v&&57343>=v&&++C,E+=4}return E}var cE={};function pc(I){var E=cE[I];return E===void 0?ht(I):E}var As=[];function hE(I){var E=As.length;return As.push(I),E}function gE(I,E){for(var C=Array(I),v=0;v<I;++v)C[v]=Gn(w[E+4*v>>2],"parameter "+v);return C}var Ec=[],uE=[null,[],[]];nt=e.BindingError=Z("BindingError"),e.count_emval_handles=function(){for(var I=0,E=5;E<k.length;++E)k[E]!==void 0&&++I;return I},e.get_first_emval=function(){for(var I=5;I<k.length;++I)if(k[I]!==void 0)return k[I];return null},ae=e.PureVirtualError=Z("PureVirtualError");for(var Bc=Array(256),is=0;256>is;++is)Bc[is]=String.fromCharCode(is);Ot=Bc,e.getInheritedInstanceCount=function(){return Object.keys(Dt).length},e.getLiveInheritedInstances=function(){var I=[],E;for(E in Dt)Dt.hasOwnProperty(E)&&I.push(Dt[E]);return I},e.flushPendingDeletes=Ht,e.setDelayFunction=function(I){zt=I,mt.length&&zt&&zt(Ht)},dc=e.InternalError=Z("InternalError"),EA.prototype.isAliasOf=function(I){if(!(this instanceof EA&&I instanceof EA))return!1;var E=this.M.P.N,C=this.M.O,v=I.M.P.N;for(I=I.M.O;E.R;)C=E.ba(C),E=E.R;for(;v.R;)I=v.ba(I),v=v.R;return E===v&&C===I},EA.prototype.clone=function(){if(this.M.O||Kn(this),this.M.aa)return this.M.count.value+=1,this;var I=ai,E=Object,C=E.create,v=Object.getPrototypeOf(this),_=this.M;return I=I(C.call(E,v,{M:{value:{count:_.count,$:_.$,aa:_.aa,O:_.O,P:_.P,T:_.T,U:_.U}}})),I.M.count.value+=1,I.M.$=!1,I},EA.prototype.delete=function(){this.M.O||Kn(this),this.M.$&&!this.M.aa&&X("Object already scheduled for deletion"),Xr(this),gc(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},EA.prototype.isDeleted=function(){return!this.M.O},EA.prototype.deleteLater=function(){return this.M.O||Kn(this),this.M.$&&!this.M.aa&&X("Object already scheduled for deletion"),mt.push(this),mt.length===1&&zt&&zt(Ht),this.M.$=!0,this},$e.prototype.qa=function(I){return this.ka&&(I=this.ka(I)),I},$e.prototype.ha=function(I){this.W&&this.W(I)},$e.prototype.argPackAdvance=8,$e.prototype.readValueFromPointer=ji,$e.prototype.deleteObject=function(I){I!==null&&I.delete()},$e.prototype.fromWireType=function(I){function E(){return this.da?Zr(this.N.X,{P:this.wa,O:C,U:this,T:I}):Zr(this.N.X,{P:this,O:I})}var C=this.qa(I);if(!C)return this.ha(I),null;var v=Wp(this.N,C);if(v!==void 0)return v.M.count.value===0?(v.M.O=C,v.M.T=I,v.clone()):(v=v.clone(),this.ha(I),v);if(v=this.N.pa(C),v=fc[v],!v)return E.call(this);v=this.ca?v.la:v.pointerType;var _=uc(C,this.N,v.N);return _===null?E.call(this):this.da?Zr(v.N.X,{P:v,O:_,U:this,T:I}):Zr(v.N.X,{P:v,O:_})},Ic=e.UnboundTypeError=Z("UnboundTypeError");var fE=typeof atob=="function"?atob:function(I){var E="",C=0;I=I.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),P="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),N="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++));v=v<<2|_>>4,_=(_&15)<<4|P>>2;var F=(P&3)<<6|N;E+=String.fromCharCode(v),P!==64&&(E+=String.fromCharCode(_)),N!==64&&(E+=String.fromCharCode(F))}while(C<I.length);return E},dE={l:function(I,E,C,v){K("Assertion failed: "+(I?u(B,I):"")+", at: "+[E?E?u(B,E):"":"unknown filename",C,v?v?u(B,v):"":"unknown function"])},q:function(I,E,C){I=ht(I),E=Gn(E,"wrapper"),C=pt(C);var v=[].slice,_=E.N,P=_.X,N=_.R.X,F=_.R.constructor;I=U(I,function(){_.R.ja.forEach((function(H){if(this[H]===N[H])throw new ae("Pure virtual function "+H+" must be implemented in JavaScript")}).bind(this)),Object.defineProperty(this,"__parent",{value:P}),this.__construct.apply(this,v.call(arguments))}),P.__construct=function(){this===P&&X("Pass correct 'this' to __construct");var H=F.implement.apply(void 0,[this].concat(v.call(arguments)));Xr(H);var j=H.M;H.notifyOnDestruction(),j.aa=!0,Object.defineProperties(this,{M:{value:j}}),ai(this),H=j.O,H=ee(_,H),Dt.hasOwnProperty(H)?X("Tried to register registered instance: "+H):Dt[H]=this},P.__destruct=function(){this===P&&X("Pass correct 'this' to __destruct"),Xr(this);var H=this.M.O;H=ee(_,H),Dt.hasOwnProperty(H)?delete Dt[H]:X("Tried to unregister unregistered instance: "+H)},I.prototype=Object.create(P);for(var Y in C)I.prototype[Y]=C[Y];return oe(I)},j:function(I){var E=$r[I];delete $r[I];var C=E.fa,v=E.W,_=E.ia,P=_.map(N=>N.ta).concat(_.map(N=>N.za));pA([I],P,N=>{var F={};return _.forEach((Y,H)=>{var j=N[H],rt=Y.ra,gt=Y.sa,Mt=N[H+_.length],ft=Y.ya,Ie=Y.Aa;F[Y.oa]={read:be=>j.fromWireType(rt(gt,be)),write:(be,Zi)=>{var eA=[];ft(Ie,be,Mt.toWireType(eA,Zi)),Hn(eA)}}}),[{name:E.name,fromWireType:function(Y){var H={},j;for(j in F)H[j]=F[j].read(Y);return v(Y),H},toWireType:function(Y,H){for(var j in F)if(!(j in H))throw new TypeError('Missing field: "'+j+'"');var rt=C();for(j in F)F[j].write(rt,H[j]);return Y!==null&&Y.push(v,rt),rt},argPackAdvance:8,readValueFromPointer:ji,V:v}]})},v:function(){},B:function(I,E,C,v,_){var P=Jn(C);E=ht(E),Ze(I,{name:E,fromWireType:function(N){return!!N},toWireType:function(N,F){return F?v:_},argPackAdvance:8,readValueFromPointer:function(N){if(C===1)var F=f;else if(C===2)F=p;else if(C===4)F=R;else throw new TypeError("Unknown boolean type size: "+E);return this.fromWireType(F[N>>P])},V:null})},f:function(I,E,C,v,_,P,N,F,Y,H,j,rt,gt){j=ht(j),P=_e(_,P),F&&(F=_e(N,F)),H&&(H=_e(Y,H)),gt=_e(rt,gt);var Mt=tt(j);qp(Mt,function(){es("Cannot construct "+j+" due to unbound types",[v])}),pA([I,E,C],v?[v]:[],function(ft){if(ft=ft[0],v)var Ie=ft.N,be=Ie.X;else be=EA.prototype;ft=U(Mt,function(){if(Object.getPrototypeOf(this)!==Zi)throw new nt("Use 'new' to construct "+j);if(eA.Y===void 0)throw new nt(j+" has no accessible constructor");var mc=eA.Y[arguments.length];if(mc===void 0)throw new nt("Tried to invoke ctor of "+j+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(eA.Y).toString()+") parameters instead!");return mc.apply(this,arguments)});var Zi=Object.create(be,{constructor:{value:ft}});ft.prototype=Zi;var eA=new Xp(j,ft,Zi,gt,Ie,P,F,H);Ie=new $e(j,eA,!0,!1),be=new $e(j+"*",eA,!1,!1);var yc=new $e(j+" const*",eA,!1,!0);return fc[I]={pointerType:be,la:yc},tE(Mt,ft),[Ie,be,yc]})},d:function(I,E,C,v,_,P,N){var F=Wn(C,v);E=ht(E),P=_e(_,P),pA([],[I],function(Y){function H(){es("Cannot call "+j+" due to unbound types",F)}Y=Y[0];var j=Y.name+"."+E;E.startsWith("@@")&&(E=Symbol[E.substring(2)]);var rt=Y.N.constructor;return rt[E]===void 0?(H.Z=C-1,rt[E]=H):(Yn(rt,E,j),rt[E].S[C-1]=H),pA([],F,function(gt){return gt=zn(j,[gt[0],null].concat(gt.slice(1)),null,P,N),rt[E].S===void 0?(gt.Z=C-1,rt[E]=gt):rt[E].S[C-1]=gt,[]}),[]})},p:function(I,E,C,v,_,P){0<E||K();var N=Wn(E,C);_=_e(v,_),pA([],[I],function(F){F=F[0];var Y="constructor "+F.name;if(F.N.Y===void 0&&(F.N.Y=[]),F.N.Y[E-1]!==void 0)throw new nt("Cannot register multiple constructors with identical number of parameters ("+(E-1)+") for class '"+F.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return F.N.Y[E-1]=()=>{es("Cannot construct "+F.name+" due to unbound types",N)},pA([],N,function(H){return H.splice(1,0,null),F.N.Y[E-1]=zn(Y,H,null,_,P),[]}),[]})},a:function(I,E,C,v,_,P,N,F){var Y=Wn(C,v);E=ht(E),P=_e(_,P),pA([],[I],function(H){function j(){es("Cannot call "+rt+" due to unbound types",Y)}H=H[0];var rt=H.name+"."+E;E.startsWith("@@")&&(E=Symbol[E.substring(2)]),F&&H.N.ja.push(E);var gt=H.N.X,Mt=gt[E];return Mt===void 0||Mt.S===void 0&&Mt.className!==H.name&&Mt.Z===C-2?(j.Z=C-2,j.className=H.name,gt[E]=j):(Yn(gt,E,rt),gt[E].S[C-2]=j),pA([],Y,function(ft){return ft=zn(rt,ft,H,P,N),gt[E].S===void 0?(ft.Z=C-2,gt[E]=ft):gt[E].S[C-2]=ft,[]}),[]})},A:function(I,E){E=ht(E),Ze(I,{name:E,fromWireType:function(C){var v=pt(C);return qn(C),v},toWireType:function(C,v){return oe(v)},argPackAdvance:8,readValueFromPointer:ji,V:null})},n:function(I,E,C){C=Jn(C),E=ht(E),Ze(I,{name:E,fromWireType:function(v){return v},toWireType:function(v,_){return _},argPackAdvance:8,readValueFromPointer:AE(E,C),V:null})},e:function(I,E,C,v,_){E=ht(E),_===-1&&(_=4294967295),_=Jn(C);var P=F=>F;if(v===0){var N=32-8*C;P=F=>F<<N>>>N}C=E.includes("unsigned")?function(F,Y){return Y>>>0}:function(F,Y){return Y},Ze(I,{name:E,fromWireType:P,toWireType:C,argPackAdvance:8,readValueFromPointer:iE(E,_,v!==0),V:null})},b:function(I,E,C){function v(P){P>>=2;var N=w;return new _(d,N[P+1],N[P])}var _=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][E];C=ht(C),Ze(I,{name:C,fromWireType:v,argPackAdvance:8,readValueFromPointer:v},{ua:!0})},o:function(I,E){E=ht(E);var C=E==="std::string";Ze(I,{name:E,fromWireType:function(v){var _=w[v>>2],P=v+4;if(C)for(var N=P,F=0;F<=_;++F){var Y=P+F;if(F==_||B[Y]==0){if(N=N?u(B,N,Y-N):"",H===void 0)var H=N;else H+="\0",H+=N;N=Y+1}}else{for(H=Array(_),F=0;F<_;++F)H[F]=String.fromCharCode(B[P+F]);H=H.join("")}return tA(v),H},toWireType:function(v,_){_ instanceof ArrayBuffer&&(_=new Uint8Array(_));var P,N=typeof _=="string";if(N||_ instanceof Uint8Array||_ instanceof Uint8ClampedArray||_ instanceof Int8Array||X("Cannot pass non-string to std::string"),C&&N){var F=0;for(P=0;P<_.length;++P){var Y=_.charCodeAt(P);127>=Y?F++:2047>=Y?F+=2:55296<=Y&&57343>=Y?(F+=4,++P):F+=3}P=F}else P=_.length;if(F=jn(4+P+1),Y=F+4,w[F>>2]=P,C&&N){if(N=Y,Y=P+1,P=B,0<Y){Y=N+Y-1;for(var H=0;H<_.length;++H){var j=_.charCodeAt(H);if(55296<=j&&57343>=j){var rt=_.charCodeAt(++H);j=65536+((j&1023)<<10)|rt&1023}if(127>=j){if(N>=Y)break;P[N++]=j}else{if(2047>=j){if(N+1>=Y)break;P[N++]=192|j>>6}else{if(65535>=j){if(N+2>=Y)break;P[N++]=224|j>>12}else{if(N+3>=Y)break;P[N++]=240|j>>18,P[N++]=128|j>>12&63}P[N++]=128|j>>6&63}P[N++]=128|j&63}}P[N]=0}}else if(N)for(N=0;N<P;++N)H=_.charCodeAt(N),255<H&&(tA(Y),X("String has UTF-16 code units that do not fit in 8 bits")),B[Y+N]=H;else for(N=0;N<P;++N)B[Y+N]=_[N];return v!==null&&v.push(tA,F),F},argPackAdvance:8,readValueFromPointer:ji,V:function(v){tA(v)}})},i:function(I,E,C){if(C=ht(C),E===2)var v=rE,_=sE,P=nE,N=()=>S,F=1;else E===4&&(v=oE,_=aE,P=lE,N=()=>w,F=2);Ze(I,{name:C,fromWireType:function(Y){for(var H=w[Y>>2],j=N(),rt,gt=Y+4,Mt=0;Mt<=H;++Mt){var ft=Y+4+Mt*E;(Mt==H||j[ft>>F]==0)&&(gt=v(gt,ft-gt),rt===void 0?rt=gt:(rt+="\0",rt+=gt),gt=ft+E)}return tA(Y),rt},toWireType:function(Y,H){typeof H!="string"&&X("Cannot pass non-string to C++ string type "+C);var j=P(H),rt=jn(4+j+E);return w[rt>>2]=j>>F,_(H,rt+4,j+E),Y!==null&&Y.push(tA,rt),rt},argPackAdvance:8,readValueFromPointer:ji,V:function(Y){tA(Y)}})},k:function(I,E,C,v,_,P){$r[I]={name:ht(E),fa:_e(C,v),W:_e(_,P),ia:[]}},h:function(I,E,C,v,_,P,N,F,Y,H){$r[I].ia.push({oa:ht(E),ta:C,ra:_e(v,_),sa:P,za:N,ya:_e(F,Y),Aa:H})},C:function(I,E){E=ht(E),Ze(I,{va:!0,name:E,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(I,E,C,v,_){I=As[I],E=pt(E),C=pc(C);var P=[];return w[v>>2]=oe(P),I(E,C,P,_)},t:function(I,E,C,v){I=As[I],E=pt(E),C=pc(C),I(E,C,null,v)},g:qn,m:function(I,E){var C=gE(I,E),v=C[0];E=v.name+"_$"+C.slice(1).map(function(N){return N.name}).join("_")+"$";var _=Ec[E];if(_!==void 0)return _;var P=Array(I-1);return _=hE((N,F,Y,H)=>{for(var j=0,rt=0;rt<I-1;++rt)P[rt]=C[rt+1].readValueFromPointer(H+j),j+=C[rt+1].argPackAdvance;for(N=N[F].apply(N,P),rt=0;rt<I-1;++rt)C[rt+1].ma&&C[rt+1].ma(P[rt]);if(!v.va)return v.toWireType(Y,N)}),Ec[E]=_},D:function(I){4<I&&(k[I].ga+=1)},r:function(I){var E=pt(I);Hn(E),qn(I)},c:function(){K("")},x:function(I,E,C){B.copyWithin(I,E,E+C)},w:function(I){var E=B.length;if(I>>>=0,2147483648<I)return!1;for(var C=1;4>=C;C*=2){var v=E*(1+.2/C);v=Math.min(v,I+100663296);var _=Math;v=Math.max(I,v),_=_.min.call(_,2147483648,v+(65536-v%65536)%65536);t:{try{c.grow(_-d.byteLength+65535>>>16),m();var P=1;break t}catch{}P=void 0}if(P)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(I,E,C,v){for(var _=0,P=0;P<C;P++){var N=w[E>>2],F=w[E+4>>2];E+=8;for(var Y=0;Y<F;Y++){var H=B[N+Y],j=uE[I];H===0||H===10?((I===1?o:a)(u(j,0)),j.length=0):j.push(H)}_+=F}return w[v>>2]=_,0}};(function(){function I(_){e.asm=_.exports,c=e.asm.E,m(),x=e.asm.J,V.unshift(e.asm.F),J--,e.monitorRunDependencies&&e.monitorRunDependencies(J),J==0&&$&&(_=$,$=null,_())}function E(_){I(_.instance)}function C(_){return At().then(function(P){return WebAssembly.instantiate(P,v)}).then(function(P){return P}).then(_,function(P){a("failed to asynchronously prepare wasm: "+P),K(P)})}var v={a:dE};if(J++,e.monitorRunDependencies&&e.monitorRunDependencies(J),e.instantiateWasm)try{return e.instantiateWasm(v,I)}catch(_){a("Module.instantiateWasm callback failed with error: "+_),i(_)}return function(){return l||typeof WebAssembly.instantiateStreaming!="function"||L(it)||typeof fetch!="function"?C(E):fetch(it,{credentials:"same-origin"}).then(function(_){return WebAssembly.instantiateStreaming(_,v).then(E,function(P){return a("wasm streaming compile failed: "+P),a("falling back to ArrayBuffer instantiation"),C(E)})})}().catch(i),{}})(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.F).apply(null,arguments)};var Cc=e.___getTypeName=function(){return(Cc=e.___getTypeName=e.asm.G).apply(null,arguments)};e.__embind_initialize_bindings=function(){return(e.__embind_initialize_bindings=e.asm.H).apply(null,arguments)};var jn=e._malloc=function(){return(jn=e._malloc=e.asm.I).apply(null,arguments)},tA=e._free=function(){return(tA=e._free=e.asm.K).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.L).apply(null,arguments)};var rs;$=function I(){rs||Qc(),rs||($=I)};function Qc(){function I(){if(!rs&&(rs=!0,e.calledRun=!0,!g)){if(T(V),A(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var E=e.postRun.shift();et.unshift(E)}T(et)}}if(!(0<J)){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)z();T(M),0<J||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),I()},1)):I())}}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.pop()();return Qc(),t.ready}})();let Lt=function(r){return r[r.Auto=0]="Auto",r[r.FlexStart=1]="FlexStart",r[r.Center=2]="Center",r[r.FlexEnd=3]="FlexEnd",r[r.Stretch=4]="Stretch",r[r.Baseline=5]="Baseline",r[r.SpaceBetween=6]="SpaceBetween",r[r.SpaceAround=7]="SpaceAround",r[r.SpaceEvenly=8]="SpaceEvenly",r}({}),Gr=function(r){return r[r.BorderBox=0]="BorderBox",r[r.ContentBox=1]="ContentBox",r}({}),Ul=function(r){return r[r.Width=0]="Width",r[r.Height=1]="Height",r}({}),uA=function(r){return r[r.Inherit=0]="Inherit",r[r.LTR=1]="LTR",r[r.RTL=2]="RTL",r}({}),$A=function(r){return r[r.Flex=0]="Flex",r[r.None=1]="None",r[r.Contents=2]="Contents",r}({}),It=function(r){return r[r.Left=0]="Left",r[r.Top=1]="Top",r[r.Right=2]="Right",r[r.Bottom=3]="Bottom",r[r.Start=4]="Start",r[r.End=5]="End",r[r.Horizontal=6]="Horizontal",r[r.Vertical=7]="Vertical",r[r.All=8]="All",r}({}),ti=function(r){return r[r.None=0]="None",r[r.StretchFlexBasis=1]="StretchFlexBasis",r[r.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",r[r.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",r[r.All=2147483647]="All",r[r.Classic=2147483646]="Classic",r}({}),xI=function(r){return r[r.WebFlexBasis=0]="WebFlexBasis",r}({}),fA=function(r){return r[r.Column=0]="Column",r[r.ColumnReverse=1]="ColumnReverse",r[r.Row=2]="Row",r[r.RowReverse=3]="RowReverse",r}({}),Or=function(r){return r[r.Column=0]="Column",r[r.Row=1]="Row",r[r.All=2]="All",r}({}),Ce=function(r){return r[r.FlexStart=0]="FlexStart",r[r.Center=1]="Center",r[r.FlexEnd=2]="FlexEnd",r[r.SpaceBetween=3]="SpaceBetween",r[r.SpaceAround=4]="SpaceAround",r[r.SpaceEvenly=5]="SpaceEvenly",r}({}),ei=function(r){return r[r.Error=0]="Error",r[r.Warn=1]="Warn",r[r.Info=2]="Info",r[r.Debug=3]="Debug",r[r.Verbose=4]="Verbose",r[r.Fatal=5]="Fatal",r}({}),Un=function(r){return r[r.Undefined=0]="Undefined",r[r.Exactly=1]="Exactly",r[r.AtMost=2]="AtMost",r}({}),Nl=function(r){return r[r.Default=0]="Default",r[r.Text=1]="Text",r}({}),Ai=function(r){return r[r.Visible=0]="Visible",r[r.Hidden=1]="Hidden",r[r.Scroll=2]="Scroll",r}({}),ii=function(r){return r[r.Static=0]="Static",r[r.Relative=1]="Relative",r[r.Absolute=2]="Absolute",r}({}),Ne=function(r){return r[r.Undefined=0]="Undefined",r[r.Point=1]="Point",r[r.Percent=2]="Percent",r[r.Auto=3]="Auto",r}({}),ri=function(r){return r[r.NoWrap=0]="NoWrap",r[r.Wrap=1]="Wrap",r[r.WrapReverse=2]="WrapReverse",r}({});const SI={ALIGN_AUTO:Lt.Auto,ALIGN_FLEX_START:Lt.FlexStart,ALIGN_CENTER:Lt.Center,ALIGN_FLEX_END:Lt.FlexEnd,ALIGN_STRETCH:Lt.Stretch,ALIGN_BASELINE:Lt.Baseline,ALIGN_SPACE_BETWEEN:Lt.SpaceBetween,ALIGN_SPACE_AROUND:Lt.SpaceAround,ALIGN_SPACE_EVENLY:Lt.SpaceEvenly,BOX_SIZING_BORDER_BOX:Gr.BorderBox,BOX_SIZING_CONTENT_BOX:Gr.ContentBox,DIMENSION_WIDTH:Ul.Width,DIMENSION_HEIGHT:Ul.Height,DIRECTION_INHERIT:uA.Inherit,DIRECTION_LTR:uA.LTR,DIRECTION_RTL:uA.RTL,DISPLAY_FLEX:$A.Flex,DISPLAY_NONE:$A.None,DISPLAY_CONTENTS:$A.Contents,EDGE_LEFT:It.Left,EDGE_TOP:It.Top,EDGE_RIGHT:It.Right,EDGE_BOTTOM:It.Bottom,EDGE_START:It.Start,EDGE_END:It.End,EDGE_HORIZONTAL:It.Horizontal,EDGE_VERTICAL:It.Vertical,EDGE_ALL:It.All,ERRATA_NONE:ti.None,ERRATA_STRETCH_FLEX_BASIS:ti.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:ti.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:ti.AbsolutePercentAgainstInnerSize,ERRATA_ALL:ti.All,ERRATA_CLASSIC:ti.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:xI.WebFlexBasis,FLEX_DIRECTION_COLUMN:fA.Column,FLEX_DIRECTION_COLUMN_REVERSE:fA.ColumnReverse,FLEX_DIRECTION_ROW:fA.Row,FLEX_DIRECTION_ROW_REVERSE:fA.RowReverse,GUTTER_COLUMN:Or.Column,GUTTER_ROW:Or.Row,GUTTER_ALL:Or.All,JUSTIFY_FLEX_START:Ce.FlexStart,JUSTIFY_CENTER:Ce.Center,JUSTIFY_FLEX_END:Ce.FlexEnd,JUSTIFY_SPACE_BETWEEN:Ce.SpaceBetween,JUSTIFY_SPACE_AROUND:Ce.SpaceAround,JUSTIFY_SPACE_EVENLY:Ce.SpaceEvenly,LOG_LEVEL_ERROR:ei.Error,LOG_LEVEL_WARN:ei.Warn,LOG_LEVEL_INFO:ei.Info,LOG_LEVEL_DEBUG:ei.Debug,LOG_LEVEL_VERBOSE:ei.Verbose,LOG_LEVEL_FATAL:ei.Fatal,MEASURE_MODE_UNDEFINED:Un.Undefined,MEASURE_MODE_EXACTLY:Un.Exactly,MEASURE_MODE_AT_MOST:Un.AtMost,NODE_TYPE_DEFAULT:Nl.Default,NODE_TYPE_TEXT:Nl.Text,OVERFLOW_VISIBLE:Ai.Visible,OVERFLOW_HIDDEN:Ai.Hidden,OVERFLOW_SCROLL:Ai.Scroll,POSITION_TYPE_STATIC:ii.Static,POSITION_TYPE_RELATIVE:ii.Relative,POSITION_TYPE_ABSOLUTE:ii.Absolute,UNIT_UNDEFINED:Ne.Undefined,UNIT_POINT:Ne.Point,UNIT_PERCENT:Ne.Percent,UNIT_AUTO:Ne.Auto,WRAP_NO_WRAP:ri.NoWrap,WRAP_WRAP:ri.Wrap,WRAP_WRAP_REVERSE:ri.WrapReverse};function MI(r){function t(i,s,n){const o=i[s];i[s]=function(){for(var a=arguments.length,l=new Array(a),c=0;c<a;c++)l[c]=arguments[c];return n.call(this,o,...l)}}for(const i of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){const s={[Ne.Point]:r.Node.prototype[i],[Ne.Percent]:r.Node.prototype[`${i}Percent`],[Ne.Auto]:r.Node.prototype[`${i}Auto`]};t(r.Node.prototype,i,function(n){for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const c=a.pop();let g,u;if(c==="auto")g=Ne.Auto,u=void 0;else if(typeof c=="object")g=c.unit,u=c.valueOf();else if(g=typeof c=="string"&&c.endsWith("%")?Ne.Percent:Ne.Point,u=parseFloat(c),c!==void 0&&!Number.isNaN(c)&&Number.isNaN(u))throw new Error(`Invalid value ${c} for ${i}`);if(!s[g])throw new Error(`Failed to execute "${i}": Unsupported unit '${c}'`);return u!==void 0?s[g].call(this,...a,u):s[g].call(this,...a)})}function e(i){return r.MeasureCallback.implement({measure:function(){const{width:s,height:n}=i(...arguments);return{width:s??NaN,height:n??NaN}}})}t(r.Node.prototype,"setMeasureFunc",function(i,s){return s?i.call(this,e(s)):this.unsetMeasureFunc()});function A(i){return r.DirtiedCallback.implement({dirtied:i})}return t(r.Node.prototype,"setDirtiedFunc",function(i,s){i.call(this,A(s))}),t(r.Config.prototype,"free",function(){r.Config.destroy(this)}),t(r.Node,"create",(i,s)=>s?r.Node.createWithConfig(s):r.Node.createDefault()),t(r.Node.prototype,"free",function(){r.Node.destroy(this)}),t(r.Node.prototype,"freeRecursive",function(){for(let i=0,s=this.getChildCount();i<s;++i)this.getChild(0).freeRecursive();this.free()}),t(r.Node.prototype,"calculateLayout",function(i){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:uA.LTR;return i.call(this,s,n,o)}),{Config:r.Config,Node:r.Node,...SI}}async function RI(){return MI(await DI())}class Fl extends Pi{constructor(t){super(),this.setProperties(t)}}const si={auto:Lt.Auto,"flex-start":Lt.FlexStart,center:Lt.Center,"flex-end":Lt.FlexEnd,stretch:Lt.Stretch,baseline:Lt.Baseline,"space-between":Lt.SpaceBetween,"space-around":Lt.SpaceAround,"space-evenly":Lt.SpaceEvenly},Tl={none:$A.None,flex:$A.Flex,contents:$A.Contents},Ll={inherit:uA.Inherit,ltr:uA.LTR,rtl:uA.RTL},Gl={column:fA.Column,"column-reverse":fA.ColumnReverse,row:fA.Row,"row-reverse":fA.RowReverse},Ol={"no-wrap":ri.NoWrap,wrap:ri.Wrap,"Wrap-reverse":ri.WrapReverse},Hl={"flex-start":Ce.FlexStart,center:Ce.Center,"flex-end":Ce.FlexEnd,"space-between":Ce.SpaceBetween,"space-around":Ce.SpaceAround,"space-evenly":Ce.SpaceEvenly},Jl={visible:Ai.Visible,hidden:Ai.Hidden,scroll:Ai.Scroll},Kl={static:ii.Static,relative:ii.Relative,absolute:ii.Absolute},Yl={"border-box":Gr.BorderBox,"content-box":Gr.ContentBox};class Hr{constructor(t){this._element=t}static _yoga;static async load(){this._yoga=await RI()}_node=Hr._yoga.Node.create();get _style(){return this._element.style}get offsetLeft(){return this._node.getComputedLeft()}get offsetTop(){return this._node.getComputedTop()}get offsetWidth(){return this._node.getComputedWidth()}get offsetHeight(){return this._node.getComputedHeight()}calculateLayout(t,e,A){return this._node.calculateLayout(t,e,A)}getComputedLayout(){return this._node.getComputedLayout()}updateStyleProperty(t,e,A,i){switch(t){case"alignContent":this._node.setAlignContent(e?si[e]:si["flex-start"]);break;case"alignItems":this._node.setAlignItems(e?si[e]:si["flex-start"]);break;case"alignSelf":this._node.setAlignSelf(e?si[e]:si["flex-start"]);break;case"aspectRatio":this._node.setAspectRatio(e);break;case"borderTop":this._node.setBorder(It.Top,this._style.borderWidth);break;case"borderBottom":this._node.setBorder(It.Bottom,this._style.borderWidth);break;case"borderLeft":this._node.setBorder(It.Left,this._style.borderWidth);break;case"borderRight":this._node.setBorder(It.Right,this._style.borderWidth);break;case"border":this._node.setBorder(It.All,this._style.borderWidth);break;case"direction":this._node.setDirection(e?Ll[e]:Ll.inherit);break;case"display":this._node.setDisplay(e?Tl[e]:Tl.flex);break;case"flex":this._node.setFlex(this._style.flex);break;case"flexBasis":this._node.setFlexBasis(this._style.flexBasis);break;case"flexDirection":this._node.setFlexDirection(e?Gl[e]:Gl.row);break;case"flexGrow":this._node.setFlexGrow(this._style.flexGrow);break;case"flexShrink":this._node.setFlexShrink(this._style.flexShrink);break;case"flexWrap":this._node.setFlexWrap(e?Ol[e]:Ol.wrap);break;case"height":this._node.setHeight(this._style.height);break;case"justifyContent":this._node.setJustifyContent(e?Hl[e]:Hl["flex-start"]);break;case"gap":e!==void 0&&this._node.setGap(Or.All,e);break;case"marginTop":this._node.setMargin(It.Top,e);break;case"marginBottom":this._node.setMargin(It.Top,e);break;case"marginLeft":this._node.setMargin(It.Left,e);break;case"marginRight":this._node.setMargin(It.Top,e);break;case"margin":this._node.setMargin(It.All,e);break;case"maxHeight":this._node.setMaxHeight(e);break;case"maxWidth":this._node.setMaxWidth(e);break;case"minHeight":this._node.setMinHeight(this._style.minHeight);break;case"minWidth":this._node.setMinWidth(this._style.minWidth);break;case"overflow":this._node.setOverflow(e?Jl[e]:Jl.visible);break;case"paddingTop":this._node.setPadding(It.Top,this._style.paddingTop);break;case"paddingBottom":this._node.setPadding(It.Bottom,this._style.paddingBottom);break;case"paddingLeft":this._node.setPadding(It.Left,this._style.paddingLeft);break;case"paddingRight":this._node.setPadding(It.Right,this._style.paddingRight);break;case"padding":this._node.setPadding(It.All,this._style.padding);break;case"top":this._node.setPosition(It.Top,this._style.top);break;case"bottom":this._node.setPosition(It.Bottom,this._style.bottom);break;case"left":this._node.setPosition(It.Left,this._style.left);break;case"right":this._node.setPosition(It.Right,this._style.right);break;case"position":this._node.setPositionType(e?Kl[e]:Kl.static);break;case"boxSizing":this._node.setBoxSizing(e?Yl[e]:Yl["content-box"]);break;case"width":this._node.setWidth(this._style.width);break}}}var PI=Object.getOwnPropertyDescriptor,kI=(r,t,e,A)=>{for(var i=A>1?void 0:A?PI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.FlexElement2D=class extends h.BaseElement2D{get style(){return this._style}set style(t){const e=(...A)=>{this.emit("updateStyleProperty",...A),this._updateStyleProperty(A[0],A[1],A[2],A[3])};t.on("updateProperty",e),this._style?.off("updateProperty",e),this._style=t}_layout=new Hr(this);get offsetLeft(){return this._layout.offsetLeft}get offsetTop(){return this._layout.offsetTop}get offsetWidth(){return this._layout.offsetWidth}get offsetHeight(){return this._layout.offsetHeight}constructor(t,e=[]){super(),this.style=new Fl,this.setProperties(t).append(e)}_parented(t){super._parented(t),t._layout&&this._layout._node&&t._layout._node.insertChild(this._layout._node,t._layout._node.getChildCount())}_unparented(t){super._unparented(t),t._layout?._node&&t._layout._node.removeChild(this._layout._node)}_updateStyleProperty(t,e,A,i){super._updateStyleProperty(t,e,A,i),this._layout.updateStyleProperty(t,e,A,i),this._layout._node.isDirty()&&this.requestRelayout()}updateTransform(){this.calculateLayout(void 0,void 0,uA.LTR);const{left:t,top:e,width:A,height:i}=this._layout.getComputedLayout();this.position.x=t,this.position.y=e,this.size.x=A,this.size.y=i,super.updateTransform()}calculateLayout(t,e,A){const i=this.getParent();i?._layout?.calculateLayout?i?._layout.calculateLayout(t,e,A):this._layout.calculateLayout(t,e,A)}},h.FlexElement2D=kI([st("FlexElement2D")],h.FlexElement2D);var UI=Object.defineProperty,NI=Object.getOwnPropertyDescriptor,Rt=(r,t,e,A)=>{for(var i=A>1?void 0:A?NI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&UI(t,e,i),i};function Gt(r){return function(t,e){Object.defineProperty(t.constructor.prototype,e,{get(){return r?.method?(...A)=>(this.context[e].call(this.context,...A),r.redraw&&this.requestRedraw(),t):this.context[e]},set(A){this.context[e]=A},configurable:!0,enumerable:!0})}}h.Graphics2D=class extends h.Node2D{_resetContext=!1;lineCap;lineJoin;fillStyle;strokeStyle;lineWidth;miterLimit;drawCircle(t,e,A){return this.arc(t+A,e+A,A,0,Ae),this.fill(),this}drawEllipse(t,e,A,i){const s=A/2,n=i/2;return this.ellipse(t+s,e+n,s,n,0,0,Ae),this.fill(),this}},Rt([Gt()],h.Graphics2D.prototype,"lineCap",2),Rt([Gt()],h.Graphics2D.prototype,"lineJoin",2),Rt([Gt()],h.Graphics2D.prototype,"fillStyle",2),Rt([Gt()],h.Graphics2D.prototype,"strokeStyle",2),Rt([Gt()],h.Graphics2D.prototype,"lineWidth",2),Rt([Gt()],h.Graphics2D.prototype,"miterLimit",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"rect",2),Rt([Gt({method:!0,redraw:!0})],h.Graphics2D.prototype,"fillRect",2),Rt([Gt({method:!0,redraw:!0})],h.Graphics2D.prototype,"strokeRect",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"roundRect",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"ellipse",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"arc",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"beginPath",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"moveTo",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"lineTo",2),Rt([Gt({method:!0})],h.Graphics2D.prototype,"closePath",2),Rt([Gt({method:!0,redraw:!0})],h.Graphics2D.prototype,"fill",2),Rt([Gt({method:!0,redraw:!0})],h.Graphics2D.prototype,"stroke",2),h.Graphics2D=Rt([st("Graphics2D")],h.Graphics2D);var FI=Object.defineProperty,TI=Object.getOwnPropertyDescriptor,Wi=(r,t,e,A)=>{for(var i=A>1?void 0:A?TI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&FI(t,e,i),i};h.Image2D=class extends h.Element2D{texture;get currentFrameTexture(){return this.texture?.frames[this._frameIndex]?.texture}get textureDuration(){return this.texture?.duration??0}get naturalWidth(){return this.currentFrameTexture?.realWidth??0}get naturalHeight(){return this.currentFrameTexture?.realHeight??0}get complete(){return this._complete}_frameIndex=0;_complete=!1;_wait=Promise.resolve();constructor(t,e=[]){super(),this.setProperties(t),this.append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"src":this._wait=this._load(e);break;case"srcRect":this.requestRedraw();break}}decode(){return this._wait}setResource(t){let e;if(t instanceof hr?e=t:e=new hr(t),this.texture=e.updateDuration(),this.currentFrameTexture&&(!this.style.width||!this.style.height)){const A=this.currentFrameTexture;this.style.width=A.realWidth,this.style.height=A.realHeight}return this}async _load(t){if(this._complete=!1,t)try{this.setResource(this.gif||t?.includes(".gif")?await Te.gif.load(t):await Te.texture.load(t)),this.requestRedraw(),this.emit("load")}catch(e){console.warn(e),this.emit("error",e)}else this.texture=void 0;this._complete=!0}_getFrameCurrentTime(){const t=this.textureDuration;if(!t||!this._tree)return 0;const e=this._currentTime;return e<0?0:e%t}_updateFrameIndex(){if(!this.texture)return this;const t=this._getFrameCurrentTime(),e=this.texture.frames,A=e.length;if(A<=1&&this._frameIndex===0)return this;let i=A-1;for(let s=0,n=0;n<A;n++)if(s+=e[n].duration??0,s>=t){i=n;break}return this._frameIndex!==i&&(this._frameIndex=i,this.requestRedraw()),this}_process(t){this._updateFrameIndex(),super._process(t)}_drawContent(){const t=this.currentFrameTexture;if(t?.valid){const{left:e=0,top:A=0,right:i=0,bottom:s=0}=this.srcRect??{},{width:n,height:o}=this.size;this.context.fillStyle=t;const a=Math.abs(1+(e+i))*n,l=Math.abs(1+(A+s))*o,c=1/a,g=1/l,u=e*n*c,d=A*o*g;this.context.uvTransform=new kt().scale(c,g).translate(u,d),this.shape.draw(),this.context.fill()}}_repaint(t){return super._repaint(t).map(e=>({...e,disableWrapMode:!0}))}},Wi([dt()],h.Image2D.prototype,"texture",2),Wi([b({default:""})],h.Image2D.prototype,"src",2),Wi([b()],h.Image2D.prototype,"srcRect",2),Wi([b({default:!1})],h.Image2D.prototype,"gif",2),h.Image2D=Wi([st("Image2D")],h.Image2D);class Jr extends h.Element2D{texture;constructor(t,e=[]){super(),this.setProperties(t).append(e)}_drawContent(){if(this.texture?.valid){const{width:t,height:e}=this.size;this.context.fillStyle=this.texture,this.context.uvTransform=new kt().scale(1/t,1/e),this.shape.drawRect(),this.context.fill()}}}var LI=Object.defineProperty,GI=Object.getOwnPropertyDescriptor,Vl=(r,t,e,A)=>{for(var i=A>1?void 0:A?GI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&LI(t,e,i),i};h.Lottie2D=class extends Jr{texture=new TA;animation;constructor(t,e=[]){super(),this.setProperties(t),this.append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"src":this._load();break}}_updateStyleProperty(t,e,A){switch(super._updateStyleProperty(t,e,A),t){case"width":this.texture.width=this.style.width;break;case"height":this.texture.height=this.style.height;break}}async _load(){this.animation=await Te.lottie.load(this.src,this.texture.source),this.duration=this.animation.getDuration(!1)*1e3,this.texture.requestUpload(),this.requestRedraw()}_process(t){this.animation?.goToAndStop(this.currentTime,!1),this.texture.requestUpload(),this.requestRedraw(),super._process(t)}},Vl([b({default:""})],h.Lottie2D.prototype,"src",2),h.Lottie2D=Vl([st("Lottie2D")],h.Lottie2D);var OI=Object.defineProperty,HI=Object.getOwnPropertyDescriptor,ni=(r,t,e,A)=>{for(var i=A>1?void 0:A?HI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&OI(t,e,i),i};const JI=new Set(Object.keys(Rn));h.Text2D=class extends Jr{texture=new TA;base=new Pl;measureResult;_subTextsCount=0;constructor(t,e=[]){super(),this.setProperties(t),this.append(e),t?.plugins&&t.plugins.forEach(A=>{this.base.use(A)})}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"content":case"effects":case"measureDOM":case"fonts":case"split":this._updateSplit(),this.requestRedraw();break}this._subTextsCount&&t==="effects"&&this._getSubTexts().forEach(s=>{s.setProperties({[t]:e})})}_updateBase(){this.base.style=this.style.toJSON(),this.emit("updateBase",this.base),this.base.requestUpdate()}_updateStyleProperty(t,e,A){switch(t){case"left":case"top":case"width":case"height":this.requestRedraw();break;default:super._updateStyleProperty(t,e,A);break}switch(t){case"width":this.split&&this._updateSubTexts();break}typeof t=="string"&&JI.has(t)&&(this._subTextsCount&&t!=="width"&&t!=="height"&&this._getSubTexts().forEach(i=>{i.style.setProperties({[t]:e})}),this.requestRedraw())}_getSubTexts(){return this.children.front.filter(t=>t instanceof h.Text2D)}_updateSubTexts(){const t=this._getSubTexts();let e=0;this.split&&this.updateMeasure().measureResult?.paragraphs.forEach(A=>{A.fragments.forEach(i=>{i.characters.forEach(s=>{const n=t[e];n&&(n.style.left=s.inlineBox.left,n.style.top=s.inlineBox.top),e++})})})}measure(){return this._updateBase(),this.base.measure()}updateMeasure(){this.measureResult=this.measure();const{boundingBox:t}=this.measureResult,{left:e,top:A}=this.style;return this.position.x=e+Math.min(0,t.left),this.position.y=A+Math.min(0,t.top),this.size.width=t.width,this.size.height=t.height,this}_updateSplit(){this._subTextsCount&&(this.children.front.forEach(t=>this.removeChild(t)),this._subTextsCount=0),this.split&&this.measure().paragraphs.forEach(t=>{t.fragments.forEach(e=>{e.characters.forEach(A=>{this.append(new h.Text2D({internalMode:"front",style:{...A.computedStyle,left:A.inlineBox.x,top:A.inlineBox.y,width:0,height:0},content:A.content,effects:this.effects,fonts:this.fonts})),this._subTextsCount++})})})}_redraw(){return this.updateMeasure(),super._redraw()}_drawContent(){this.split||(this.base.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload(),super._drawContent())}},ni([b({default:!1})],h.Text2D.prototype,"split",2),ni([b({alias:"base.content"})],h.Text2D.prototype,"content",2),ni([b({alias:"base.effects"})],h.Text2D.prototype,"effects",2),ni([dt({alias:"base.measureDOM"})],h.Text2D.prototype,"measureDOM",2),ni([dt({alias:"base.fonts"})],h.Text2D.prototype,"fonts",2),h.Text2D=ni([st("Text2D")],h.Text2D);var KI=Object.defineProperty,YI=(r,t,e,A)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(t,e,i)||i);return i&&KI(t,e,i),i};class Nn extends h.Element2D{constructor(t,e=[]){super(),this.setProperties(t).append(e)}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"width":case"height":this.requestRedraw();break}}_drawCircle(t,e){this.context.arc(t,e,this.handleSize,0,Math.PI*2,!0),this.context.fillStyle=vt.WHITE,this.context.fill(),this.context.arc(t,e,this.handleSize,0,Math.PI*2,!0),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_drawEllipse(t,e){this.context.roundRect(t-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.fillStyle=vt.WHITE,this.context.fill(),this.context.roundRect(t-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_draw(){const{width:t,height:e}=this.getRect();this.context.rect(0,0,t,e),this.context.strokeStyle="#00FF00",this.context.stroke(),this._drawCircle(0,0),this._drawCircle(t,e),this._drawCircle(0,e),this._drawEllipse(0,e/2),this._drawCircle(t,0),this._drawEllipse(t,e/2)}}YI([b({default:6})],Nn.prototype,"handleSize");var VI=Object.defineProperty,zI=Object.getOwnPropertyDescriptor,zl=(r,t,e,A)=>{for(var i=A>1?void 0:A?zI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&VI(t,e,i),i};h.Video2D=class extends Jr{get videoDuration(){return(this.texture?.duration??0)*1e3}_wait=Promise.resolve();constructor(t,e=[]){super(),this.setProperties(t),this.append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"src":this._wait=this._load(e);break}}waitLoad(){return this._wait}async _load(t){this.texture=await Te.video.load(t),(!this.style.width||!this.style.height)&&(this.style.width=this.texture.width,this.style.height=this.texture.height),this.requestRedraw()}_updateVideoCurrentTime(){let t=this._currentTime;if(t<0)return;const e=this.texture;if(!e)return;const A=e.duration;t=A?t%(A*1e3):0,!e.isPlaying&&!e.seeking&&(t=~~t/1e3,e.currentTime!==t&&(e.currentTime=t))}_process(t){this._updateVideoCurrentTime(),super._process(t)}},zl([b({default:""})],h.Video2D.prototype,"src",2),h.Video2D=zl([st("Video2D")],h.Video2D);var WI=Object.defineProperty,qI=Object.getOwnPropertyDescriptor,qi=(r,t,e,A)=>{for(var i=A>1?void 0:A?qI(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&WI(t,e,i),i};const Wl=r=>r,ql=oi(.25,.1,.25,1),Xl=oi(.42,0,1,1),jl=oi(0,0,.58,1),Zl=oi(.42,0,.58,1);function oi(r,t,e,A){const s=3*r-3*e+1,n=3*e-6*r,o=3*r,a=3*t-3*A+1,l=3*A-6*t,c=3*t,g=B=>(3*s*B+2*n)*B+o,u=B=>((s*B+n)*B+o)*B,d=B=>((a*B+l)*B+c)*B;function f(B){let p=B,S,R;for(let Q=0;Q<8;Q++){if(R=u(p)-B,Math.abs(R)<1e-6)return p;if(S=g(p),Math.abs(S)<1e-6)break;p-=R/S}let w=1,D=0;for(p=B;w>D;){if(R=u(p)-B,Math.abs(R)<1e-6)return p;R>0?w=p:D=p,p=(w+D)/2}return p}return B=>d(f(B))}const Kr={linear:Wl,ease:ql,easeIn:Xl,easeOut:jl,easeInOut:Zl};h.Animation=class extends h.TimelineNode{easing;_keyframes=[];_isFirstUpdatePosition=!1;_cachedProps=new us;_stoped=!1;constructor(t,e=[]){super(),this.setProperties(t).append(e)}_parented(t){super._parented(t),this._updateCachedProps()}_unparented(t){super._unparented(t),this.cancel()}_process(){this.canProcess()&&this.commitStyles()}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"effectMode":case"keyframes":this._updateKeyframes();break}}_getTargets(){let t;switch(this.effectMode){case"sibling":t=this.getParent()?.children.internal.filter(e=>e instanceof h.CanvasItem)??[];break;case"parent":default:t=[this.getParent()].filter(Boolean);break}return t.map(e=>e.style)}_updateKeyframes(){const t=[],e=this.keyframes;for(let s=e.length,n=0;n<s;n++){const{offset:o=n===0?0:n/(s-1),easing:a="linear",...l}=e[n];t.push({offset:o,easing:this._parseEasing(a),props:l})}const A=t[0],i=t[t.length-1];A&&A.offset!==0&&t.unshift({offset:0,easing:this._parseEasing("linear"),props:{}}),i&&i.offset!==1&&t.push({offset:1,easing:this._parseEasing("linear"),props:{}}),this._keyframes=t,this._updateCachedProps()}commitStyles(){if(!this.keyframes.length)return;if(this._updateCurrentTime(),this.isInsideTimeRange())this._isFirstUpdatePosition||(this._isFirstUpdatePosition=!0,this._updateCachedProps());else{if(!this._isFirstUpdatePosition)return;this._isFirstUpdatePosition=!1}const t=this._getTargets(),e=1/t.length,A=this.currentTimeProgress;t.forEach((i,s)=>{const n=e===1?A:Ve(0,Math.max(0,A-e*s)/e,1),o=this._cachedProps.get(i);if(!o)return;const a=this._parseKeyframes(n,o);a?.length&&this._commitStyle(n,i,o,a[0],a[1])})}_updateCachedProps(){this.cancel(),this._getTargets().forEach(t=>{const e=new Map,A=this._keyframes;for(let i=A.length,s=0;s<i;s++)Object.keys(A[s].props).forEach(n=>{e.set(n,t[n])});this._cachedProps.set(t,e)})}_parseEasing(t){if(!t)return Kr.linear;if(t in Kr)return Kr[t];const e=t.replace(/cubic-bezier\((.+)\)/,"$1").split(",").map(A=>Number(A));return oi(e[0],e[1],e[2],e[3])}_parseKeyframes(t,e){let A;const i=this._keyframes;for(let s=i.length,n=0;n<s;n++){const o=i[n],{offset:a,easing:l}=o,c={...o.props};if(A&&t<=a){const{offset:g,easing:u}=A,d={...A.props};return e.forEach((f,B)=>{(!(B in d)||d[B]===null)&&(d[B]=f),(!(B in c)||c[B]===null)&&(c[B]=f)}),[{offset:g,easing:u,props:d},{offset:a,easing:l,props:c}]}A=o}return null}_commitStyle(t,e,A,i,s){const{offset:n,easing:o,props:a}=i,{offset:l,props:c}=s,g=l-n,u=o((t-n)/g),d={width:e.width,height:e.height,fontSize:e.fontSize};A.forEach((f,B)=>{e[B]=this._getDiffValue(B,a[B],c[B],u,d)})}_getDiffValue(t,e,A,i,s){let n,o;if(e==="none"&&(e=void 0),A==="none"&&(A=void 0),e===void 0||A===void 0)if(e!==void 0)n=gi(t,String(e),s),o=Es(n);else if(A!==void 0)o=gi(t,String(A),s),n=Es(o);else return;else n=gi(t,String(e),s),o=gi(t,String(A),s);if(Array.isArray(n)&&Array.isArray(o)){const a=new Set,l={},c={};n.forEach(({name:u,args:d})=>{l[u]=d,a.add(u)}),o.forEach(({name:u,args:d})=>{c[u]=d,a.add(u)});let g="";return a.forEach(u=>{const d=Math.max(l[u]?.length??0,c[u]?.length??0),f=l[u],B=c[u];g+=`${u}(${Array.from({length:d},(p,S)=>{const R=f?.[S],w=B?.[S],D=R?.normalizedIntValue??0,Q=w?.normalizedIntValue??0;return Number.isNaN(D)||Number.isNaN(Q)?w?.value??0:xt(D,Q,i)}).join(", ")}) `}),g}else if(!Array.isArray(n)&&!Array.isArray(o))return Number.isNaN(n.normalizedIntValue)||Number.isNaN(o.normalizedIntValue)?o.value:xt(n.normalizedIntValue,o.normalizedIntValue,i)}isPlaying(){return!this.paused&&this.isInsideTimeRange()}play(){return this._stoped?(this._stoped=!1,this.startTime=this.timelineCurrentTime):this.startTime=this.timelineCurrentTime-this.currentTime,this.paused=!1,!0}pause(){return this.paused=!0,!0}stop(){return this._stoped=!0,this.paused=!0,this._currentTime=0,!0}cancel(){this._getTargets().forEach(t=>{this._cachedProps.get(t)?.forEach((e,A)=>{t[A]=e}),this._cachedProps.delete(t)})}},qi([b({default:"parent"})],h.Animation.prototype,"effectMode",2),qi([b({default:!1})],h.Animation.prototype,"loop",2),qi([b({default:()=>[]})],h.Animation.prototype,"keyframes",2),qi([b()],h.Animation.prototype,"easing",2),h.Animation=qi([st("Animation",{renderMode:"disabled",processMode:"pausable",processSortMode:"parent_before",duration:2e3})],h.Animation);class Yr extends He{static _instance;static get instance(){return this._instance||(this._instance=new Yr),this._instance}playbackRate=1;muted=!1;volume=1;paused=!1;refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(t){console.warn("HTML Audio does not support processors")}get audioContext(){return console.warn("HTML Audio does not support audioContext"),null}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this.paused}free(){this.removeAllListeners()}}class Xi extends He{static PADDING=.1;_source=null;_audio=null;_end=0;_pausedReal=!1;_duration=0;_start=0;_playing=!1;get progress(){return(this._source?.currentTime??0)/this._duration}_paused=!1;get paused(){return this._paused}set paused(t){this._paused!==t&&(this._paused=t,this.refreshPaused())}_playbackRate=1;get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate!==t&&(this._playbackRate=t,this.refresh())}_volume=1;get volume(){return this._volume}set volume(t){this._volume!==t&&(this._volume=t,this.refresh())}_loop=!1;get loop(){return this._loop}set loop(t){this._loop!==t&&(this._loop=t,this.refresh())}_muted=!1;get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this.refresh())}set(t,e){if(this[t]===void 0)throw new Error(`Property with name ${t} does not exist.`);switch(t){case"playbackRate":this.playbackRate=e;break;case"volume":this.volume=e;break;case"paused":this.paused=e;break;case"loop":this.loop=e;break;case"muted":this.muted=e;break}return this}_onPlay(){this._playing=!0}_onPause(){this._playing=!1}init(t){this._playing=!1,this._duration=t.source.duration;const e=this._source=t.source.cloneNode(!1);return e.src=t.parent.src,e.onplay=this._onPlay.bind(this),e.onpause=this._onPause.bind(this),t.context.on("refresh",this.refresh),t.context.on("refreshPaused",this.refreshPaused),this._audio=t,this}_stop(){this._source&&this._playing&&(this._source.onended=null,this._source.pause())}stop(){this._stop(),this._source&&this.emit("stop")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(t){console.warn("HTML Audio does not support processors")}refresh(){if(!this._audio||!this._source)return;const t=this._audio.context,e=this._audio.parent;this._source.loop=this._loop||e.loop;const A=t.volume*(t.muted?0:1),i=e.volume*(e.muted?0:1),s=this._volume*(this._muted?0:1);this._source.volume=s*A*i,this._source.playbackRate=this._playbackRate*t.playbackRate*e.playbackRate}refreshPaused(){if(!this._source||!this._audio)return;const t=this._paused||this._audio.parent.paused||this._audio.context.paused;t!==this._pausedReal&&(this._pausedReal=t,t?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._source.currentTime,end:this._end,volume:this._volume,playbackRate:this._playbackRate,loop:this._loop})),this.emit("pause",t))}play(t={}){if(!this._source)return;const{start:e=0,end:A=0}=t;A&&console.assert(A>e,"End time is before start time"),t.playbackRate!==void 0&&(this._playbackRate=t.playbackRate),t.volume!==void 0&&(this._volume=t.volume),t.loop!==void 0&&(this._loop=t.loop),t.muted!==void 0&&(this._muted=t.muted),this.refresh(),this.loop&&A!==null&&(console.warn('Looping not support when specifying an "end" time'),this.loop=!1),this._start=e,this._end=A||this._duration,this._start=Math.max(0,this._start-Xi.PADDING),this._end=Math.min(this._end+Xi.PADDING,this._duration),this._source.onloadedmetadata=()=>{this._source&&(this._source.currentTime=e,this._source.onloadedmetadata=null,this.emit("progress",e,this._duration),Wt.on(this._onUpdate))},this._source.onended=this._onComplete.bind(this),this._source.play(),this.emit("start")}_onUpdate=()=>{this._source&&(this.emit("progress",this.progress,this._duration),this._source.currentTime>=this._end&&!this._source.loop&&this._onComplete())};_onComplete(){Wt.off(this._onUpdate),this._stop(),this.emit("progress",1,this._duration),this.emit("end",this)}free(){Wt.off(this._onUpdate),this.removeAllListeners();const t=this._source;t&&(t.onended=null,t.onplay=null,t.onpause=null,this._stop()),this._source=null,this._playbackRate=1,this._volume=1,this._loop=!1,this._end=0,this._start=0,this._duration=0,this._playing=!1,this._pausedReal=!1,this._paused=!1,this._muted=!1,this._audio&&(this._audio.context.off("refresh",this.refresh),this._audio.context.off("refreshPaused",this.refreshPaused),this._audio=null)}}class $l{constructor(t){this.parent=t}source=new globalThis.Audio;_src="";get src(){return this._src}set src(t){this._src!==t&&(this._src=t,this.load())}get duration(){return this.source.duration}get isPlayable(){return!!this.source&&this.source.readyState===4}get context(){return Yr.instance}async load(){return new Promise(t=>{this.source.onload=()=>t(this),this.source.src=this._src,this.source.load()})}createSound(){return new Xi}}class Fn extends He{constructor(t,e){super(),this._input=t,this._output=e}_processers=[];get processors(){return this._processers}set processors(t){if(this._processers.forEach(e=>e.disconnect()),this._processers.length=0,this._input.connect(this._output),t.length){this._processers=t.slice(0),this._input.disconnect();let e;t.forEach(A=>{e?e.connect(A.destination):this._input.connect(A.destination),e=A}),e.connect(this._output)}}get destination(){return this._input}}class XI{constructor(t,e=null){this.destination=t,this.source=e}connect(t){this.source?.connect(t)}disconnect(){this.source?.disconnect()}}function jI(){if(Cs)return new AudioContext;if(Qs){const r=globalThis.webkitAudioContext;return new r}else throw new Error("Failed to createAudioContext")}function ZI(r,t,e){if(ys)return new OfflineAudioContext(r,t,e);if(vo){const A=globalThis.webkitOfflineAudioContext;return new A(r,t,e)}else throw new Error("Failed to createOfflineAudioContext")}class dA extends Fn{static _instance;static get instance(){return this._instance||(this._instance=new dA),this._instance}static get audioContext(){return this.instance.audioContext}static get offlineContext(){return this.instance.offlineContext}static setParamValue(t,e){this.instance.setParamValue(t,e)}static decode(t){return this.instance.decode(t)}_context;_offlineContext;get audioContext(){return this._context}get offlineContext(){return this._offlineContext}_locked;muted=!1;volume=1;playbackRate=1;autoPause=!0;_paused=!1;_pausedOnBlur=!1;get paused(){return this._paused}set paused(t){t&&this._context.state==="running"?this._context.suspend():!t&&this._context.state==="suspended"&&this._context.resume(),this._paused=t}_compressor;_analyser;constructor(){const t=jI(),e=ZI(1,2,ys?Math.max(8e3,Math.min(96e3,t.sampleRate)):44100),A=t.createDynamicsCompressor(),i=t.createAnalyser();i.connect(A),A.connect(t.destination),super(i,A),this._context=t,this._offlineContext=e,this._compressor=A,this._analyser=i,this._locked=t.state==="suspended"&&(Je||wo),fi&&(this._locked&&(this._unlock(),document.addEventListener("mousedown",this._unlock,!0),document.addEventListener("touchstart",this._unlock,!0),document.addEventListener("touchend",this._unlock,!0)),globalThis.addEventListener("focus",this._onFocus),globalThis.addEventListener("blur",this._onBlur))}_onFocus(){if(!this.autoPause)return;const t=this._context.state;(t==="suspended"||t==="interrupted"||!this._locked)&&(this.paused=this._pausedOnBlur,this.refreshPaused())}_onBlur(){this.autoPause&&(this._locked||(this._pausedOnBlur=this._paused,this.paused=!0,this.refreshPaused()))}_unlock=()=>{this._locked&&(this.playEmptySound(),this._context.state==="running"&&(document.removeEventListener("mousedown",this._unlock,!0),document.removeEventListener("touchend",this._unlock,!0),document.removeEventListener("touchstart",this._unlock,!0),this._locked=!1))};playEmptySound(){const t=this._context.createBufferSource();t.buffer=this._context.createBuffer(1,1,22050),t.connect(this._context.destination),t.start(0,0,0),t.context.state==="suspended"&&t.context.resume()}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this._paused}decode(t){return new Promise((e,A)=>{const i=n=>{A(new Error(n?.message||"Unable to decode file"))},s=this._offlineContext.decodeAudioData(t,e,i);s&&s.catch(i)})}setParamValue(t,e){t.setValueAtTime?t.setValueAtTime(e,this._context.currentTime):t.value=e}}class tc extends He{_audio=null;_sourceNode=null;_gain=null;_progress=0;get progress(){return this._progress}_pausedReal=!1;_paused=!1;get paused(){return this._paused}set paused(t){this._paused!==t&&(this._paused=t,this.refreshPaused())}_volume=1;get volume(){return this._volume}set volume(t){this._volume!==t&&(this._volume=t,this.refresh())}_playbackRate=1;get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate!==t&&(this._playbackRate=t,this.refresh(),this._update(!0))}_loop=!1;get loop(){return this._loop}set loop(t){this._loop!==t&&(this._loop=t,this.refresh())}_muted=!1;get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this.refresh())}_duration=0;_end=0;_elapsed=0;_lastUpdate=this._now();_processors=[];init(t){return this._audio=t,t.context.on("refresh",this.refresh),t.context.on("refreshPaused",this.refreshPaused),this}_now(){return this._audio?.context.audioContext.currentTime??0}play(t={}){if(!this._audio)return;const{end:e=0,start:A=0}=t;e&&console.assert(e>A,"End time is before start time"),this._end=e,this._elapsed=A,t.volume!==void 0&&(this._volume=t.volume),t.playbackRate!==void 0&&(this._playbackRate=t.playbackRate),t.muted!==void 0&&(this._muted=t.muted),t.loop!==void 0&&(this._loop=t.loop),t.processors!==void 0&&(this._processors=t.processors),this._paused=!1;const{source:i,gain:s}=this._audio.cloneSource();this._sourceNode=i,this._gain=s,this.refresh(),i.onended=this._onComplete.bind(this),this._duration=i.buffer?.duration??0,this._lastUpdate=this._now(),this._loop?(i.loopStart=A,i.loopEnd=e,i.start(0,A)):e?i.start(0,A,e-A):i.start(0,A),this.emit("start"),this._update(!0),this._enableTicker(!0)}_stop(){if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.stop(0),this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(t){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",t)}this._sourceNode=null}}stop(){this._sourceNode&&(this._stop(),this.emit("stop"))}_update(t=!1){if(this._sourceNode){const e=this._now(),A=e-this._lastUpdate;if(A>0||t){this._elapsed+=A*this._sourceNode.playbackRate.value,this._lastUpdate=e;const i=this._duration;let s;if(this._sourceNode.loopStart){const n=this._sourceNode.loopEnd-this._sourceNode.loopStart;s=(this._sourceNode.loopStart+this._elapsed%n)/i}else s=this._elapsed%i/i;this._progress=s,this.emit("progress",s,i)}}}refresh(){if(!this._audio||!this._sourceNode)return;const t=this._audio.context,e=this._audio.parent;this._sourceNode.loop=this._loop||e.loop,t.setParamValue(this._gain.gain,this._volume*(this._muted?0:1)*e.volume*(e.muted?0:1)*t.volume*(t.muted?0:1)),t.setParamValue(this._sourceNode.playbackRate,this._playbackRate*e.playbackRate*t.playbackRate),this.applyProcessors()}applyProcessors(){if(this._sourceNode&&this._processors.length){this._sourceNode.disconnect();let t=this._sourceNode;this._processors.forEach(e=>{t.connect(e.destination),t=e}),t.connect(this._gain)}}refreshPaused(){if(!this._audio)return;const t=this._paused||this._audio.parent.paused||this._audio.context.paused;t!==this._pausedReal&&(this._pausedReal=t,t?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._elapsed%this._duration,end:this._end,playbackRate:this._playbackRate,loop:this._loop,volume:this._volume})),this.emit("pause",t))}_onComplete=()=>{if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(t){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",t)}}this._sourceNode=null,this._progress=1,this.emit("progress",1,this._duration),this.emit("end",this)};_updateListener=()=>this._update();_enableTicker(t){Wt.off(this._updateListener),t&&Wt.on(this._updateListener)}free(){this.removeAllListeners(),this._stop(),this._gain?.disconnect(),this._gain=null,this._audio?.context.off("refresh",this.refresh),this._audio?.context.off("refreshPaused",this.refreshPaused),this._audio=null,this._processors.forEach(t=>t.disconnect()),this._processors.length=0,this._end=0,this._playbackRate=1,this._volume=1,this._loop=!1,this._elapsed=0,this._duration=0,this._paused=!1,this._muted=!1,this._pausedReal=!1}}class ec extends Fn{constructor(t){const e=dA.audioContext,A=e.createBufferSource(),i=e.createGain(),s=e.createAnalyser();A.connect(s),s.connect(i),i.connect(dA.instance.destination),super(s,i),this.parent=t,this._sourceNode=A,this.gain=i,this.analyser=s}_sourceBuffer;_sourceNode;_sourceLoad;gain;analyser;get context(){return dA.instance}get isPlayable(){return!!this._sourceNode.buffer}get duration(){return this._sourceNode.buffer?.duration??0}get buffer(){return this._sourceNode.buffer}set buffer(t){this._sourceNode.buffer=t}async load(){return this._sourceLoad||(this._sourceLoad=new Promise(t=>{this._sourceBuffer?this._decode(this._sourceBuffer).then(()=>t(this)):this.parent.src?this._loadUrl(this.parent.src).then(()=>t(this)):t(this)})),this._sourceLoad}_loadUrl(t){return new Promise(e=>{fetch(t).then(A=>A.arrayBuffer()).then(A=>this._decode(A)).finally(()=>e(this))})}_decode(t){return Promise.resolve(t instanceof AudioBuffer?t:dA.decode(t)).then(e=>(this.parent.isLoaded=!0,this.buffer=e,e))}cloneSource(){const t=this.context,e=this._sourceNode,A=t.audioContext.createBufferSource(),i=t.audioContext.createGain();return A.buffer=e.buffer,A.loop=e.loop,t.setParamValue(A.playbackRate,e.playbackRate.value),A.connect(i),i.connect(this.destination),{source:A,gain:i}}createSound(){return new tc}}var $I=Object.defineProperty,tp=Object.getOwnPropertyDescriptor,ep=(r,t,e)=>t in r?$I(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Ap=(r,t,e,A)=>{for(var i=A>1?void 0:A?tp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},ip=(r,t,e)=>ep(r,t+"",e);h.Audio=class extends h.TimelineNode{_sounds=[];_platformAudio=_o?new ec(this):new $l(this);get platformAudio(){return this._platformAudio}_src;get src(){return this._src}set src(t){this._src!==t&&(this._src=t,this.load())}isLoaded=!1;get isPlayable(){return this.isLoaded&&this._platformAudio.isPlayable}get audioDuration(){return this._platformAudio.duration*1e3}_volume=1;get volume(){return this._volume}set volume(t){this._volume!==t&&(this._volume=t,this.refresh())}_muted=!1;get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this.refresh())}_loop=!1;get loop(){return this._loop}set loop(t){this._loop!==t&&(this._loop=t,this.refresh())}_playbackRate=1;get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate!==t&&(this._playbackRate=t,this.refresh())}_isPlaying=!1;get isPlaying(){return this._isPlaying}multiple=!1;start=0;end=0;constructor(t=""){super(),this.src=t}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"paused":this.refreshPaused();break}}async load(){return await this._platformAudio.load(),this}pause(){return this._isPlaying=!1,this.paused=!0,this}resume(){return this._isPlaying=this._sounds.length>0,this.paused=!1,this}stop(){if(!this.isPlayable)return this;this._isPlaying=!1;for(let t=this._sounds.length-1;t>=0;t--)this._sounds[t].stop();return this}play(t={}){if(!this.isLoaded)return;this.multiple||this._removeSounds(),this._isPlaying=!0;const e=this._createSound();this._sounds.push(e),e.once("end",()=>{t.complete?.(),this._onComplete(e)}),e.once("stop",()=>this._onComplete(e));const A=(t?.start??this.start)/1e3,i=(t?.end??this.end)/1e3;return e.play({...t,start:A,end:i}),e}_removeSounds(){for(let t=this._sounds.length-1;t>=0;t--)this._recycleSound(this._sounds[t]);this._sounds.length=0}_createSound(){return h.Audio._soundPool.length>0?h.Audio._soundPool.pop().init(this._platformAudio):this._platformAudio.createSound().init(this._platformAudio)}refresh(){for(let t=this._sounds.length,e=0;e<t;e++)this._sounds[e].refresh()}refreshPaused(){for(let t=this._sounds.length,e=0;e<t;e++)this._sounds[e].refreshPaused()}_onComplete=t=>{if(this._sounds){const e=this._sounds.indexOf(t);e>-1&&this._sounds.splice(e,1),this._isPlaying=this._sounds.length>0}this._recycleSound(t)};_recycleSound(t){t.free(),h.Audio._soundPool.includes(t)||h.Audio._soundPool.push(t)}_prevTime=0;_timer=0;_process(t){if(super._process(t),this.canProcess()){const e=this._tree?.timeline.currentTime??0;e-this._prevTime>0&&(this._timer||(this._setTimeStop(),this.play({start:this.start+(e-this.delay)%this.duration})),this._isPlaying&&this._setTimeStop()),this._prevTime=e}}_setTimeStop(){this._timer&&clearTimeout(this._timer),this._timer=setTimeout(()=>{this.stop(),this._timer=0},100)}},ip(h.Audio,"_soundPool",[]),h.Audio=Ap([st("Audio")],h.Audio);class rp extends h.Node2D{}var sp=Object.defineProperty,np=Object.getOwnPropertyDescriptor,Vr=(r,t,e,A)=>{for(var i=A>1?void 0:A?np(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&sp(t,e,i),i};h.AudioWaveform=class extends h.Element2D{src;gap=0;color="#000000";_audioBuffer;_src=fi?new vt(document.createElement("canvas")):void 0;_needsUpdateTexture=!1;constructor(t={}){super(),this.setProperties(t)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"src":this._loadSrc(e);break;case"gap":case"color":case"width":case"height":this._needsUpdateTexture=!0;break}}async _loadSrc(t){await globalThis.fetch(t).then(e=>e.arrayBuffer()).then(e=>dA.decode(e)).then(e=>{this._audioBuffer=e,this.syncTexture(!0)})}syncTexture(t=!1){const e=this._audioBuffer;if(!e||!t&&!this._needsUpdateTexture)return;this._needsUpdateTexture=!1;const A=this._src?.source;if(!A)return;const{width:i=0,height:s=0}=this.style;A.width=i,A.height=s;const n=A.getContext("2d");if(!n){console.warn("Failed to getContext('2d') in syncTexture");return}n.fillStyle=this.color;const o=e.getChannelData(0),a=Math.ceil(o.length/i),l=s/2;for(let c=1,g=-1,u=0;u<i;u++){for(let d=0;d<a;d++){const f=o[u*a+d];f<c&&(c=f),f>g&&(g=f)}if(!this.gap||u%(this.gap*2)===0){const d=u,f=(1+c)*l,B=this.gap||1,p=Math.max(1,(g-c)*l);n.fillRect(d,f,B,p),c=1,g=-1}}this._src?.requestUpload(),this.requestRedraw()}_process(t){this.syncTexture(),super._process(t)}_drawSrc(){const t=this._src;t?.valid&&(this.context.fillStyle=t,this.context.uvTransform=new kt().scale(1/this.style.width,1/this.style.height))}},Vr([b()],h.AudioWaveform.prototype,"src",2),Vr([b()],h.AudioWaveform.prototype,"gap",2),Vr([b()],h.AudioWaveform.prototype,"color",2),h.AudioWaveform=Vr([st("AudioWaveform")],h.AudioWaveform);var op=Object.getOwnPropertyDescriptor,ap=(r,t,e,A)=>{for(var i=A>1?void 0:A?op(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.Control=class extends h.Element2D{constructor(t,e=[]){super(),this._parentUpdateRect=this._parentUpdateRect.bind(this),this.setProperties(t),this.append(e)}_parented(t){super._parented(t),t.on("updateRect",this._parentUpdateRect)}_unparented(t){super._unparented(t),t.off("updateRect",this._parentUpdateRect)}_parentUpdateRect(){const t=this._parent.getRect();this.style.left=t.left,this.style.top=t.top,this.style.width=t.width,this.style.height=t.height}_input(t,e){super._input(t,e),this._guiInput(t,e)}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"width":case"height":case"left":case"top":this.emit("updateRect");break}}_guiInput(t,e){}},h.Control=ap([st("Control")],h.Control);var lp=Object.defineProperty,cp=Object.getOwnPropertyDescriptor,IA=(r,t,e,A)=>{for(var i=A>1?void 0:A?cp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&lp(t,e,i),i};h.Range=class extends h.Control{constructor(t,e=[]){super(),this.setProperties(t).append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"allowGreater":case"allowLesser":case"page":case"minValue":case"maxValue":case"step":case"value":this.requestRedraw();break}}},IA([b({default:!1})],h.Range.prototype,"allowGreater",2),IA([b({default:!1})],h.Range.prototype,"allowLesser",2),IA([b({default:1})],h.Range.prototype,"page",2),IA([b({default:0})],h.Range.prototype,"minValue",2),IA([b({default:100})],h.Range.prototype,"maxValue",2),IA([b({default:.01})],h.Range.prototype,"step",2),IA([b({default:0})],h.Range.prototype,"value",2),h.Range=IA([st("Range")],h.Range);var hp=Object.defineProperty,gp=Object.getOwnPropertyDescriptor,Fe=(r,t,e,A)=>{for(var i=A>1?void 0:A?gp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&hp(t,e,i),i};h.Ruler=class extends h.Control{texture=new TA;constructor(t,e=[]){super(),this.setProperties(t),this.append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"offsetX":case"offsetY":case"thickness":case"markHeight":case"color":case"markBackgroundColor":case"markColor":case"gap":case"scale":this.requestRedraw();break}}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"width":case"height":this.texture[t]=e,this.requestRedraw();break}}_drawTexture(){const{width:t,height:e}=this.size,{offsetX:A,offsetY:i,thickness:s,markHeight:n,markBackgroundColor:o,markColor:a,color:l,gap:c,gapScale:g}=this,d=this.texture.source.getContext("2d");d.reset(),d.scale(this.texture.pixelRatio,this.texture.pixelRatio);const f=Math.round(A),B=Math.round(i);d.beginPath(),d.fillStyle=o||"#EEE",d.fillRect(0,0,t,s),d.fillRect(0,0,s,e),d.fill(),d.strokeStyle=a||"#000",d.moveTo(s,0),d.lineTo(s,e),d.moveTo(0,s),d.lineTo(t,s),d.stroke();const p=c,S=c*g;let R,w,D,Q,m;for(p>=S?(R=p/S,w=Math.floor(R)*p/20,D=p/20*Math.floor(R)/R):(R=S/p,w=Math.floor(p/20/R),w>=2?w=Math.floor(w/2)*2:w=1,D=w*R),d.fillStyle=d.strokeStyle,Q=f,m=0;Q<t;m++,Q+=D)d.moveTo(Q,s-(m%5?n:2*n)),d.lineTo(Q,s);for(Q=f,m=0;Q>s;m++,Q-=D)d.moveTo(Q,s-(m%5?n:2*n)),d.lineTo(Q,s);let x=0;for(Q=B,m=0;Q>s;m++,Q-=D)d.moveTo(s-(m%5?n:2*n),Q),d.lineTo(s,Q);for(Q=B,m=0;Q<e;m++,Q+=D)d.moveTo(s-(m%5?n:2*n),Q),d.lineTo(s,Q);for(d.save(),d.fillStyle=l,d.scale(.8,.8),x=s-8,Q=f,m=0;Q<t;m++,Q+=D)m%10===0&&d.fillText(String(Math.ceil(w*m)),Q*1.25-3,x*1.25);for(Q=f,m=0;Q>s;m++,Q-=D)m%10===0&&d.fillText(String(Math.ceil(-w*m)),Q*1.25-3,x*1.25);for(x=0,Q=B,m=0;Q>s;m++,Q-=D)m%10===0&&d.fillText(String(Math.ceil(w*m)),x*1.25,Q*1.25+3);for(Q=B,m=0;Q<e;m++,Q+=D)m%10===0&&d.fillText(String(Math.ceil(-w*m)),x*1.25,Q*1.25+3);d.restore(),d.stroke(),this.texture.requestUpload()}_draw(){this._drawTexture();const t=this.texture;t?.valid&&(this.context.fillStyle=t,this.context.uvTransform=new kt().scale(1/this.size.width,1/this.size.height),this.context.rect(0,0,t.width,t.height),this.context.fill())}},Fe([b({default:0})],h.Ruler.prototype,"offsetX",2),Fe([b({default:0})],h.Ruler.prototype,"offsetY",2),Fe([b({default:20})],h.Ruler.prototype,"thickness",2),Fe([b({default:3})],h.Ruler.prototype,"markHeight",2),Fe([b({default:"#b2b6bc"})],h.Ruler.prototype,"color",2),Fe([b({default:"#f9f9fa"})],h.Ruler.prototype,"markBackgroundColor",2),Fe([b({default:"#b2b6bc"})],h.Ruler.prototype,"markColor",2),Fe([b({default:300})],h.Ruler.prototype,"gap",2),Fe([b({default:1})],h.Ruler.prototype,"gapScale",2),h.Ruler=Fe([st("Ruler")],h.Ruler);var up=Object.defineProperty,fp=Object.getOwnPropertyDescriptor,Ac=(r,t,e,A)=>{for(var i=A>1?void 0:A?fp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&up(t,e,i),i};h.ScrollBar=class extends h.Range{constructor(t,e=[]){super(),this.setProperties(t).append(e)}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"width":case"height":case"left":case"top":this.requestRedraw();break}}_rect(){const{size:t,position:e}=this;let A,i,s,n,o;return this.direction==="vertical"?(s=10,n=t.height*(this.page/(this.maxValue-this.minValue)),A=e.left+t.width-s,i=t.height*(this.value/(this.maxValue-this.minValue)),o=s/2):(s=t.width*(this.page/(this.maxValue-this.minValue)),n=10,A=t.width*(this.value/(this.maxValue-this.minValue)),i=e.top+t.height-n,o=n/2),{left:A,top:i,width:s,height:n,radii:o}}_draw(){const{left:t,top:e,width:A,height:i,radii:s}=this._rect();this.context.roundRect(t,e,A,i,s),this.context.fillStyle=34,this.context.fill()}_pointerInput(t,e){const{left:A,top:i,width:s,height:n}=this._rect(),o=t.x>=A&&t.x<A+s&&t.y>=i&&t.y<i+n;switch(e){case"pointerdown":case"pointermove":o?this._tree?.input.setCursor("pointer"):this._tree?.input.setCursor(void 0);break}return!1}},Ac([b({default:"vertical"})],h.ScrollBar.prototype,"direction",2),h.ScrollBar=Ac([st("ScrollBar")],h.ScrollBar);var dp=Object.getOwnPropertyDescriptor,Ip=(r,t,e,A)=>{for(var i=A>1?void 0:A?dp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.XScrollBar=class extends h.ScrollBar{constructor(t,e=[]){super(),this.setProperties(t).append(e)}},h.XScrollBar=Ip([st("XScrollBar",{direction:"horizontal"})],h.XScrollBar);var pp=Object.getOwnPropertyDescriptor,Ep=(r,t,e,A)=>{for(var i=A>1?void 0:A?pp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};h.YScrollBar=class extends h.ScrollBar{constructor(t,e=[]){super(),this.setProperties(t).append(e)}},h.YScrollBar=Ep([st("YScrollBar",{direction:"vertical"})],h.YScrollBar);var Bp=Object.defineProperty,Cp=Object.getOwnPropertyDescriptor,zr=(r,t,e,A)=>{for(var i=A>1?void 0:A?Cp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(A?n(t,e,i):n(i))||i);return A&&i&&Bp(t,e,i),i};h.Scaler=class extends h.Node{get target(){if(this.parent?.style)return this.parent}constructor(t,e=[]){super(),this.setProperties(t),this.append(e)}_updateProperty(t,e,A,i){switch(super._updateProperty(t,e,A,i),t){case"value":case"min":case"max":{this.value=Ve(this.minValue,this.value,this.maxValue),this._updateScale();break}}}_updateScale(){const t=this.target;t&&(t.style.scaleX=this.value,t.style.scaleY=this.value,this.emit("updateScale",this.value))}_onWheel(t){if(!this.target)return;if(t.preventDefault(),!(t.wheelDeltaY?Math.abs(Math.abs(t.wheelDeltaY)-Math.abs(3*t.deltaY))<3:t.deltaMode===0)&&t.ctrlKey){t.preventDefault();let i=t.deltaY/(t.ctrlKey?1:100);i*=-.015,this.value+=i}}_input(t,e){switch(super._input(t,e),e){case"wheel":this._onWheel(t);break}}},zr([b({default:1})],h.Scaler.prototype,"value",2),zr([b({default:.05})],h.Scaler.prototype,"minValue",2),zr([b({default:10})],h.Scaler.prototype,"maxValue",2),h.Scaler=zr([st("Scaler",{processMode:"disabled",renderMode:"disabled"})],h.Scaler);var Qp=Object.defineProperty,yp=Object.getOwnPropertyDescriptor,mp=(r,t,e)=>t in r?Qp(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,wp=(r,t,e,A)=>{for(var i=A>1?void 0:A?yp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},vp=(r,t,e)=>mp(r,t+"",e);h.KawaseTransition=class extends h.Transition{blur=10;quality=10;apply(t,e){const A=this.currentTimeProgress;let i,s;A<.5?(i=0,s=(.5-A)/.5):(i=1,s=(A-.5)/.5);const n=this.blur,o=this.quality,a=e.width,l=e.height,c=[],g=[n];if(n>0){let S=n;const R=n/o;for(let w=1;w<o;w++)S-=R,g.push(S)}const u=1/a,d=1/l,f=[];let B;const p=o-1;for(let S=0;S<p;S++)B=g[S]+.5,f[0]=B*u,f[1]=B*d,c.push({offset:f});B=g[p]+.5,f[0]=B*u,f[1]=B*d,c.push({offset:f}),c.forEach(S=>{ut.draw(t,h.KawaseTransition.material,{sampler:i,progress:s,...S})})}},vp(h.KawaseTransition,"material",new Qt({vert:`attribute vec2 position;
|
|
865
865
|
attribute vec2 uv;
|
|
866
866
|
varying vec2 vUv;
|
|
867
867
|
void main() {
|
|
@@ -882,7 +882,7 @@ void main(void) {
|
|
|
882
882
|
color += texture2D(sampler, vec2(vUv.x - offset1.x, vUv.y - offset1.y));
|
|
883
883
|
color *= 0.25;
|
|
884
884
|
gl_FragColor = color;
|
|
885
|
-
}`})),
|
|
885
|
+
}`})),h.KawaseTransition=wp([st("KawaseTransition")],h.KawaseTransition);var _p=Object.defineProperty,bp=Object.getOwnPropertyDescriptor,Dp=(r,t,e)=>t in r?_p(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,xp=(r,t,e,A)=>{for(var i=A>1?void 0:A?bp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},Sp=(r,t,e)=>Dp(r,t+"",e);h.LeftEraseTransition=class extends h.Transition{apply(t){ut.draw(t,h.LeftEraseTransition.material,{previous:0,next:1,progress:this.currentTimeProgress})}},Sp(h.LeftEraseTransition,"material",new Qt({vert:`attribute vec2 position;
|
|
886
886
|
attribute vec2 uv;
|
|
887
887
|
varying vec2 vUv;
|
|
888
888
|
void main() {
|
|
@@ -907,7 +907,7 @@ void main() {
|
|
|
907
907
|
mixPercent = 1.0;
|
|
908
908
|
}
|
|
909
909
|
gl_FragColor = mix(src2Color, src1Color, mixPercent);
|
|
910
|
-
}`})),
|
|
910
|
+
}`})),h.LeftEraseTransition=xp([st("LeftEraseTransition")],h.LeftEraseTransition);var Mp=Object.defineProperty,Rp=Object.getOwnPropertyDescriptor,Pp=(r,t,e)=>t in r?Mp(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,kp=(r,t,e,A)=>{for(var i=A>1?void 0:A?Rp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},Up=(r,t,e)=>Pp(r,t+"",e);h.TiltShiftTransition=class extends h.Transition{blur=100;gradientBlur=600;apply(t,e){const A=this.currentTimeProgress;let i,s;A<.5?(i=0,s=(.5-A)/.5):(i=1,s=(A-.5)/.5);const n=e.width,o=e.height,a=[0,o/2],l=[600,o/2],c=[n,o],g=l[0]-a[0],u=l[1]-a[1],d=Math.sqrt(g*g+u*u);ut.draw(t,h.TiltShiftTransition.material,{sampler:i,progress:s,blur:this.blur,gradientBlur:this.gradientBlur,start:a,end:l,delta:[g/d,u/d],texSize:c}),ut.draw(t,h.TiltShiftTransition.material,{sampler:i,progress:s,blur:this.blur,gradientBlur:this.gradientBlur,start:a,end:l,delta:[-u/d,g/d],texSize:c})}},Up(h.TiltShiftTransition,"material",new Qt({vert:`attribute vec2 position;
|
|
911
911
|
attribute vec2 uv;
|
|
912
912
|
varying vec2 vUv;
|
|
913
913
|
void main() {
|
|
@@ -951,7 +951,7 @@ void main(void) {
|
|
|
951
951
|
color.rgb /= color.a + 0.00001;
|
|
952
952
|
|
|
953
953
|
gl_FragColor = color;
|
|
954
|
-
}`})),
|
|
954
|
+
}`})),h.TiltShiftTransition=kp([st("TiltShiftTransition")],h.TiltShiftTransition);var Np=Object.defineProperty,Fp=Object.getOwnPropertyDescriptor,Tp=(r,t,e)=>t in r?Np(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Lp=(r,t,e,A)=>{for(var i=A>1?void 0:A?Fp(t,e):t,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},Gp=(r,t,e)=>Tp(r,t+"",e);h.TwistTransition=class extends h.Transition{radius;angle=4;padding=20;offset;apply(t,e){const A=this.currentTimeProgress;let i,s;A<.5?(i=0,s=(.5-A)/.5):(i=1,s=(A-.5)/.5);const n=e.width,o=e.height;ut.draw(t,h.TwistTransition.material,{sampler:i,progress:s,filterArea:[n,o,0,0],radius:this.radius??n,angle:this.angle,padding:this.padding,offset:this.offset??[n/2,o/2]})}},Gp(h.TwistTransition,"material",new Qt({vert:`attribute vec2 position;
|
|
955
955
|
attribute vec2 uv;
|
|
956
956
|
varying vec2 vUv;
|
|
957
957
|
void main() {
|
|
@@ -997,4 +997,4 @@ void main(void) {
|
|
|
997
997
|
coord = twist(coord, radius - (progress * radius));
|
|
998
998
|
coord = unmapCoord(coord);
|
|
999
999
|
gl_FragColor = texture2D(sampler, coord);
|
|
1000
|
-
}`})),g.TwistTransition=jp([ne("TwistTransition")],g.TwistTransition);class pc extends rA{install(A){const e=async t=>{const{decodeFrames:i}=await import("modern-gif");return await A.fetch(t).then(s=>s.arrayBuffer()).then(s=>i(s)).then(s=>new Cr(s.map(n=>({duration:n.delay,texture:new Ws(n.data,n.width,n.height)}))))};return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif"].forEach(t=>{A.register(t,e)}),A.gif=this,this}}class Ec extends rA{install(A){const e=t=>A.fetch(t).then(i=>i.json());return this.load=t=>A.loadBy(t,()=>e(t)),["json"].forEach(t=>{A.register(t,e)}),A.json=this,this}}class Bc extends rA{install(A){const e=async(t,i)=>(await import("lottie-web").then(n=>n.default)).loadAnimation({container:null,renderer:"canvas",rendererSettings:{context:i.getContext("2d")},loop:!1,autoplay:!1,animationData:await A.fetch(t).then(n=>n.json())});return this.load=(t,i)=>A.loadBy(t,()=>e(t,i)),["lottie"].forEach(t=>{A.register(t,e)}),A.lottie=this,this}}class Cc extends rA{install(A){const e=async t=>await A.fetch(t).then(i=>i.text());return this.load=t=>A.loadBy(t,()=>e(t)),A.text=this,this}}class Qc extends rA{install(A){const e=t=>A.fetchImageBitmap(t,{premultiplyAlpha:"premultiply"}).then(i=>new _e(i));return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif","image/jpeg","image/png","image/tiff","image/vnd.wap.wbmp","image/x-icon","image/x-jng","image/x-ms-bmp","image/svg+xml","image/webp"].forEach(t=>{A.register(t,e)}),A.texture=this,this}}class yc extends rA{install(A){const e=t=>new wa(t).load();return this.load=t=>A.loadBy(t,()=>e(t)),["video/3gpp","video/mpeg","video/quicktime","video/x-flv","video/x-mng","video/x-ms-asf","video/x-ms-wmv","video/x-msvideo","video/mp4"].forEach(t=>{A.register(t,e)}),A.video=this,this}}const $p=Object.entries({"text/html":["html","htm","shtml"],"text/css":["css"],"text/xml":["xml"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls"],"application/vnd.ms-powerpoint":["ppt"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"]});function eE(r){for(const[A,e]of $p)if(e.includes(r))return A}async function tE(r){var e,t;let A;if(r.startsWith("data:"))A=(e=r.match(/^data:(.+?);/))==null?void 0:e[1];else if(r.startsWith("http")){const i=(t=r.split(/[#?]/)[0].split(".").pop())==null?void 0:t.trim();i&&(A=eE(i))}return A??await fetch(r).then(i=>i.headers.get("Content-Type"))??""}const rs="WeakRef"in globalThis;class mc{constructor(){u(this,"defaultHandler",A=>this.fetch(A));u(this,"_handlers",new Map);u(this,"_handleing",new Map);u(this,"_handled",new Map);u(this,"_gc",rs?new FinalizationRegistry(A=>{const e=this.get(A);e&&"free"in e&&e.free(),this._handled.delete(A)}):void 0);rs||Se.on(this.gc.bind(this),{sort:2})}use(A){return A.install(this),this}register(A,e){return this._handlers.set(A,e),this}fetch(A){return fetch(A)}_fixSVG(A){var a;let e;A.includes(";base64,")?e=atob(A.split(",")[1]):e=decodeURIComponent(A.split(",")[1]);const t=new DOMParser().parseFromString(e,"image/svg+xml").documentElement,i=t.getAttribute("width"),s=t.getAttribute("height"),n=i&&/^[\d.]+$/.test(i),o=s&&/^[\d.]+$/.test(s);if(!n||!o){const l=(a=t.getAttribute("viewBox"))==null?void 0:a.split(" ").map(c=>Number(c));n||t.setAttribute("width",String(l?l[2]-l[0]:512)),o||t.setAttribute("height",String(l?l[3]-l[1]:512))}return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t.outerHTML)}`}async fetchImageBitmap(A,e){return A.startsWith("http")?await this.fetch(A).then(t=>t.blob()).then(t=>t.type==="image/svg+xml"?t.text().then(i=>this.fetchImageBitmap(this._fixSVG(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),e)):createImageBitmap(t,e)):(A.startsWith("data:image/svg+xml;")&&(A=this._fixSVG(A)),new Promise(t=>{const i=new Image;i.src=A,i.onload=()=>{i.decode().finally(()=>{t(i)})}}).then(t=>createImageBitmap(t,e)))}get(A){let e=this._handled.get(A);return rs&&e instanceof WeakRef&&(e=e.deref(),e||this._handleing.delete(A)),e}set(A,e){let t=e;rs&&typeof e=="object"&&(this._gc.register(e,A),t=new WeakRef(e)),this._handled.set(A,t)}async loadBy(A,e){const t=this.get(A)??this._handleing.get(A);if(t)return t;const i=e().then(s=>(this.set(A,s),s)).finally(()=>{this._handleing.delete(A)});return this._handleing.set(A,i),i}async load(A,e){return this.loadBy(A,async()=>{const t=await tE(A);return(this._handlers.get(t)??this.defaultHandler)(A,e)})}async waitUntilLoad(){await Promise.all(Array.from(this._handleing.values()))}gc(){this._handled.forEach((A,e)=>{const t=this.get(e);t&&"free"in t&&t.free()}),this._handled.clear()}}const Gt=new mc().use(new da).use(new pc).use(new Ec).use(new Bc).use(new Cc).use(new Qc).use(new yc);class AE extends g.Control{constructor(){super();u(this,"_pointerStart");u(this,"_pointerOffset");u(this,"selected");u(this,"dragging");u(this,"hovered");u(this,"hover",new g.Element2D({name:"hover",internalMode:"back",style:{visibility:"hidden",outlineStyle:"solid",outlineColor:"#00FF00FF",outlineWidth:2,pointerEvents:"none"}}));u(this,"transformRect",new Zn({name:"transformRect",internalMode:"back",style:{visibility:"hidden",pointerEvents:"none"}}));u(this,"scaler",new g.Scaler({internalMode:"back"}).on("updateScale",e=>{this.ruler.gapScale=e,this._updateScrollbars(),this._updateSelectionRect()}));u(this,"xScrollBar",new g.XScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"yScrollBar",new g.YScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"drawboard",new g.Element2D({name:"drawboard",style:{width:500,height:500,backgroundColor:"#FFFFFFFF",overflow:"hidden",pointerEvents:"none",boxShadow:"2px 2px 2px 1px rgba(0, 0, 0, 0.2)"}},[this.scaler]));u(this,"ruler",new g.Ruler({name:"ruler",offsetX:100,offsetY:100,style:{pointerEvents:"none"}},[this.drawboard,this.hover,this.transformRect,this.xScrollBar,this.yScrollBar]));this._onPointerdown=this._onPointerdown.bind(this),this._onPointermove=this._onPointermove.bind(this),this._onPointerup=this._onPointerup.bind(this),this.append(this.ruler)}_updateStyleProperty(e,t,i,s){switch(super._updateStyleProperty(e,t,i,s),e){case"width":this.drawboard.style.left=(this.size.width-this.drawboard.size.width)/2,this.ruler.offsetX=this.drawboard.style.left;break;case"height":this.drawboard.style.top=(this.size.height-this.drawboard.size.height)/2,this.ruler.offsetY=this.drawboard.style.top;break}}_guiInput(e,t){switch(super._guiInput(e,t),t){case"pointerdown":this._onPointerdown(e);break;case"pointermove":this._onPointermove(e);break;case"pointerup":this._onPointerup();break}}_onPointerdown(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected),this._pointerOffset={x:e.offsetX,y:e.offsetY},this.selected=t,this.dragging=t,t instanceof g.Element2D?this._pointerStart=t.style.clone():this._pointerStart=void 0,this._updateHover(),this._updateSelectionRect()}_onPointermove(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected);const{selected:i,dragging:s,_pointerStart:n,_pointerOffset:o}=this;i&&(t!=null&&t.is(i))?this.hovered=void 0:this.hovered=t;const a=o?{x:e.offsetX-o.x,y:e.offsetY-o.y}:{x:0,y:0};s&&n&&(s.style.left=n.left+a.x/this.scaler.value,s.style.top=n.top+a.y/this.scaler.value,s.update()),this._updateHover(),this._updateSelectionRect()}_onPointerup(){this.dragging=void 0,this._updateHover(),this._updateSelectionRect()}_copyGlobalTransform(e,t){e.style.visibility="visible",e.style.width=t.globalScale.x*t.size.x,e.style.height=t.globalScale.y*t.size.y,e.style.left=t.globalPosition.x,e.style.top=t.globalPosition.y,e.style.rotate=t.globalRotation,e.update()}_updateHover(){const e=this.hovered;e instanceof g.Element2D?(this.hover.style.visibility="visible",this._copyGlobalTransform(this.hover,e),this.hover.requestRedraw()):this.hover.style.visibility="hidden"}_updateSelectionRect(){this.selected?(this.transformRect.style.visibility="visible",this._copyGlobalTransform(this.transformRect,this.selected)):this.transformRect.style.visibility="hidden"}_updateScrollbars(){const e=this.ruler.gapScale,t=this.drawboard.size.height*e,i=this.drawboard.size.width*e;t>this.size.height?(this.yScrollBar.style.visibility="visible",this.yScrollBar.maxValue=t,this.yScrollBar.page=this.size.height):this.yScrollBar.style.visibility="hidden",i>this.size.width?(this.xScrollBar.style.visibility="visible",this.xScrollBar.maxValue=i,this.xScrollBar.page=this.size.width):this.xScrollBar.style.visibility="hidden"}}const wc={alpha:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"};class vc extends Ni{constructor(e={}){var I,d;const{debug:t=!1,view:i,width:s,height:n,pixelRatio:o=Gs,backgroundColor:a=0,autoResize:l,autoStart:c,timeline:h,...f}=e;super(h);u(this,"renderer");u(this,"_resizeObserver",Fo?new ResizeObserver(e=>{const t=e[0];if(t.target===this.view){const{inlineSize:i,blockSize:s}=Array.isArray(t.contentBoxSize)?t.contentBoxSize[0]:t.contentBoxSize;this.resize(i,s)}}):void 0);this.debug=t,this.renderer=new fa(i,{...wc,...f}),this._setupInput(),this.pixelRatio=o,this.backgroundColor=a,l?(!i&&this.renderer.view&&(this.renderer.view.style.width="100%",this.renderer.view.style.height="100%"),this.enableAutoResize(l)):this.resize(s||this.gl.drawingBufferWidth||((I=this.view)==null?void 0:I.clientWidth)||200,n||this.gl.drawingBufferHeight||((d=this.view)==null?void 0:d.clientHeight)||200,!i),c&&this.start()}get view(){return this.renderer.view}get gl(){return this.renderer.gl}get screen(){return this.renderer.screen}get width(){return this.screen.width}get height(){return this.screen.height}get pixelRatio(){return this.renderer.pixelRatio}set pixelRatio(e){this.renderer.pixelRatio=e,this.resize(this.width,this.height),this.view&&(this.view.dataset.pixelRatio=String(e))}_setupInput(){return this.view&&(this.input.setTarget(this.view),["pointerdown","pointerover","pointermove","pointerup","wheel"].forEach(e=>{this.input.on(e,t=>{this.root.input(t,e),this.emit(e,t)})})),this}enableAutoResize(e=!0){var t,i;return this.view&&(e?(t=this._resizeObserver)==null||t.observe(this.view):(i=this._resizeObserver)==null||i.unobserve(this.view)),this}resize(e,t,i=!1){return this.renderer.resize(e,t,i),this.root.width=e,this.root.height=t,this.root.requestUpload(),this.render(),this}nextTick(){return Rs()}async waitUntilLoad(){await Gt.waitUntilLoad(),await this.nextTick()}async waitAndRender(e=0){await Gt.waitUntilLoad(),this._process(e),await this.nextTick(),this._render(this.renderer)}render(e=0){this._process(e),this._render(this.renderer)}async start(){await this.waitAndRender(),super.start(e=>{this._process(e),this._render(this.renderer)})}free(){super.free(),this.enableAutoResize(!1),this.renderer.free()}toPixels(){return this.renderer.toPixels()}toImageData(){return new ImageData(this.toPixels(),this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}toCanvas2D(){var s,n;const e=this.toImageData(),t=document.createElement("canvas");t.width=e.width,t.height=e.height,(s=t.getContext("2d"))==null||s.putImageData(e,0,0);const i=document.createElement("canvas");return i.width=this.width,i.height=this.height,(n=i.getContext("2d"))==null||n.drawImage(t,0,0,t.width,t.height,0,0,i.width,i.height),i}}let Lt;const eo=[];let to=!1;async function iE(r=100){if(!to){for(to=!0;eo.length;){const A=eo.shift();if(A)try{await A()}catch(e){console.error(e)}else await new Promise(e=>setTimeout(e,r))}to=!1}}async function rE(r){var n;const{data:A,width:e,height:t,debug:i=!1,time:s=0}=r;return Lt??(Lt=new vc({width:1,height:1,preserveDrawingBuffer:!0})),Lt.debug=i,Lt.root.removeChildren(),Lt.timeline.currentTime=s,Lt.resize(e,t,!0),(Array.isArray(A)?A:[A]).forEach(o=>{o instanceof g.Node?(o.parent=void 0,Lt.root.appendChild(o)):Lt.root.appendChild(g.Node.parse(o))}),await((n=r.onBeforeRender)==null?void 0:n.call(r,Lt)),await Lt.waitAndRender(),Lt.toCanvas2D()}async function sE(r){return new Promise(A=>{eo.push(async()=>A(await rE(r))),iE()})}g.AnimatedTexture=Cr,g.Assets=mc,g.AudioPipeline=$n,g.AudioProcessor=ap,g.AudioSpectrum=Ip,g.BaseElement2DBackground=In,g.BaseElement2DFill=qe,g.BaseElement2DForeground=pn,g.BaseElement2DOutline=XA,g.BaseElement2DShadow=bA,g.BaseElement2DShape=DA,g.BaseElement2DStyle=Li,g.BaseElement2DText=UA,g.CanvasContext=sl,g.CanvasItemEditor=AE,g.CanvasTexture=YA,g.Color=Vt,g.ColorMatrix=Js,g.ColorTexture=ya,g.CoreObject=iA,g.DEG_TO_RAD=jo,g.DEVICE_PIXEL_RATIO=Gs,g.EffectMaterial=Br,g.Element2DStyle=Xn,g.Engine=vc,g.EventEmitter=Jt,g.FlexElement2DStyle=jl,g.FlexLayout=jr,g.FontLoader=da,g.GIFLoader=pc,g.Geometry=Er,g.GradientTexture=Qr,g.HTMLAudio=uc,g.HTMLAudioContext=es,g.HTMLSound=ts,g.IN_BROWSER=yi,g.ImageTexture=cg,g.IndexBuffer=HA,g.Input=qo,g.InputEvent=Ir,g.JSONLoader=Ec,g.Loader=rA,g.LottieLoader=Bc,g.MainLoop=pr,g.Material=Ce,g.Matrix=Mt,g.Matrix2=zh,g.Matrix3=Ks,g.Matrix4=Xo,g.MouseInputEvent=Hs,g.PI=dr,g.PI_2=it,g.PixelsTexture=Ws,g.PointerInputEvent=Wo,g.Projection2D=$o,g.QuadGeometry=tg,g.QuadUvGeometry=fe,g.RAD_TO_DEG=Yh,g.RawWeakMap=Os,g.Rect2=Ys,g.RefCounted=Ro,g.Renderer=ta,g.Resource=Yt,g.SUPPORTS_AUDIO_CONTEXT=Ns,g.SUPPORTS_CLICK_EVENTS=Go,g.SUPPORTS_CREATE_IMAGE_BITMAP=Us,g.SUPPORTS_IMAGE_BITMAP=No,g.SUPPORTS_MOUSE_EVENTS=Oh,g.SUPPORTS_OFFLINE_AUDIO_CONTEXT=Ts,g.SUPPORTS_POINTER_EVENTS=LA,g.SUPPORTS_RESIZE_OBSERVER=Fo,g.SUPPORTS_TOUCH_EVENTS=Kt,g.SUPPORTS_WEBGL2=Uo,g.SUPPORTS_WEBKIT_AUDIO_CONTEXT=Fs,g.SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT=Lo,g.SUPPORTS_WEB_AUDIO=Oo,g.SUPPORTS_WHEEL_EVENTS=To,g.SceneTree=Ni,g.TextLoader=Cc,g.Texture2D=_e,g.TextureLoader=Qc,g.TextureRect2D=Zr,g.Ticker=Se,g.Transform2D=ht,g.TransformRect2D=Zn,g.UvGeometry=sg,g.UvMaterial=JA,g.Vector=wt,g.Vector2=ut,g.Vector3=Wh,g.Vector4=Zo,g.VertexAttribute=ft,g.VertexBuffer=Wt,g.VideoLoader=yc,g.VideoTexture=wa,g.ViewportTexture=Xs,g.WebAudio=dc,g.WebAudioContext=IA,g.WebGLBatch2DModule=ra,g.WebGLBlendMode=OA,g.WebGLBufferModule=sa,g.WebGLFramebufferModule=na,g.WebGLMaskModule=oa,g.WebGLModule=Ct,g.WebGLProgramModule=aa,g.WebGLRenderer=fa,g.WebGLScissorModule=la,g.WebGLState=mA,g.WebGLStateModule=ia,g.WebGLStencilModule=ca,g.WebGLTextureModule=ha,g.WebGLVertexArrayModule=ga,g.WebGLViewportModule=ua,g.WebSound=fc,g.WheelInputEvent=mi,g.assets=Gt,g.clamp=zt,g.clampFrag=dl,g.createHTMLCanvas=Yo,g.createNode=kh,g.crossOrigin=zo,g.cubicBezier=fi,g.curves=Vh,g.customNode=ne,g.customNodes=fr,g.defaultOptions=wc,g.determineCrossOrigin=Vo,g.ease=lc,g.easeIn=cc,g.easeInOut=gc,g.easeOut=hc,g.frag=fl,g.getDefaultCssPropertyValue=ks,g.isCanvasElement=Jo,g.isElementNode=Ls,g.isImageElement=Hh,g.isPow2=Ps,g.isVideoElement=Ho,g.isWebgl2=Ko,g.lerp=Me,g.linear=ac,g.log2=zs,g.mapWebGLBlendModes=Aa,g.nextPow2=Vs,g.nextTick=Rs,g.parseCSSFilter=pa,g.parseCSSTransform=Ea,g.parseCSSTransformOrigin=Ba,g.parseCssFunctions=Qi,g.parseCssProperty=Ci,g.protectedProperty=Ie,g.render=sE,g.timingFunctions=$r,g.uid=Po,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
|
|
1000
|
+
}`})),h.TwistTransition=Lp([st("TwistTransition")],h.TwistTransition);class ic extends iA{install(t){const e=async A=>{const{decodeFrames:i}=await import("modern-gif");return await t.fetch(A).then(s=>s.arrayBuffer()).then(s=>i(s)).then(s=>new hr(s.map(n=>({duration:n.delay,texture:new Rs(n.data,n.width,n.height)}))))};return this.load=A=>t.loadBy(A,()=>e(A)),["image/gif"].forEach(A=>{t.register(A,e)}),t.gif=this,this}}class rc extends iA{install(t){const e=A=>t.fetch(A).then(i=>i.json());return this.load=A=>t.loadBy(A,()=>e(A)),["json"].forEach(A=>{t.register(A,e)}),t.json=this,this}}class sc extends iA{install(t){const e=async(A,i)=>(await import("lottie-web").then(n=>n.default)).loadAnimation({container:null,renderer:"canvas",rendererSettings:{context:i.getContext("2d")},loop:!1,autoplay:!1,animationData:await t.fetch(A).then(n=>n.json())});return this.load=(A,i)=>t.loadBy(A,()=>e(A,i)),["lottie"].forEach(A=>{t.register(A,e)}),t.lottie=this,this}}class nc extends iA{install(t){const e=async A=>await t.fetch(A).then(i=>i.text());return this.load=A=>t.loadBy(A,()=>e(A)),t.text=this,this}}class oc extends iA{install(t){const e=A=>t.fetchImageBitmap(A,{premultiplyAlpha:"premultiply"}).then(i=>new vt(i));return this.load=A=>t.loadBy(A,()=>e(A)),["image/gif","image/jpeg","image/png","image/tiff","image/vnd.wap.wbmp","image/x-icon","image/x-jng","image/x-ms-bmp","image/svg+xml","image/webp"].forEach(A=>{t.register(A,e)}),t.texture=this,this}}class ac extends iA{install(t){const e=A=>new ca(A).load();return this.load=A=>t.loadBy(A,()=>e(A)),["video/3gpp","video/mpeg","video/quicktime","video/x-flv","video/x-mng","video/x-ms-asf","video/x-ms-wmv","video/x-msvideo","video/mp4"].forEach(A=>{t.register(A,e)}),t.video=this,this}}const Op=Object.entries({"text/html":["html","htm","shtml"],"text/css":["css"],"text/xml":["xml"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls"],"application/vnd.ms-powerpoint":["ppt"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"]});function Hp(r){for(const[t,e]of Op)if(e.includes(r))return t}async function Jp(r){let t;if(r.startsWith("data:"))t=r.match(/^data:(.+?);/)?.[1];else if(r.startsWith("http")){const e=r.split(/[#?]/)[0].split(".").pop()?.trim();e&&(t=Hp(e))}return t??await fetch(r).then(e=>e.headers.get("Content-Type"))??""}const Wr="WeakRef"in globalThis;class lc{defaultHandler=t=>this.fetch(t);_handlers=new Map;_handleing=new Map;_handled=new Map;_gc=Wr?new FinalizationRegistry(t=>{const e=this.get(t);e&&"free"in e&&e.free(),this._handled.delete(t)}):void 0;constructor(){Wr||Wt.on(this.gc.bind(this),{sort:2})}use(t){return t.install(this),this}register(t,e){return this._handlers.set(t,e),this}fetch(t){return fetch(t)}_fixSVG(t){let e;t.includes(";base64,")?e=atob(t.split(",")[1]):e=decodeURIComponent(t.split(",")[1]);const A=new DOMParser().parseFromString(e,"image/svg+xml").documentElement,i=A.getAttribute("width"),s=A.getAttribute("height"),n=i&&/^[\d.]+$/.test(i),o=s&&/^[\d.]+$/.test(s);if(!n||!o){const a=A.getAttribute("viewBox")?.split(" ").map(l=>Number(l));n||A.setAttribute("width",String(a?a[2]-a[0]:512)),o||A.setAttribute("height",String(a?a[3]-a[1]:512))}return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(A.outerHTML)}`}async fetchImageBitmap(t,e){return t.startsWith("http")?await this.fetch(t).then(A=>A.blob()).then(A=>A.type==="image/svg+xml"?A.text().then(i=>this.fetchImageBitmap(this._fixSVG(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),e)):createImageBitmap(A,e)):(t.startsWith("data:image/svg+xml;")&&(t=this._fixSVG(t)),new Promise(A=>{const i=new Image;i.src=t,i.onload=()=>{i.decode().finally(()=>{A(i)})}}).then(A=>createImageBitmap(A,e)))}get(t){let e=this._handled.get(t);return Wr&&e instanceof WeakRef&&(e=e.deref(),e||this._handleing.delete(t)),e}set(t,e){let A=e;Wr&&typeof e=="object"&&(this._gc.register(e,t),A=new WeakRef(e)),this._handled.set(t,A)}async loadBy(t,e){const A=this.get(t)??this._handleing.get(t);if(A)return A;const i=e().then(s=>(this.set(t,s),s)).finally(()=>{this._handleing.delete(t)});return this._handleing.set(t,i),i}async load(t,e){return this.loadBy(t,async()=>{const A=await Jp(t);return(this._handlers.get(A)??this.defaultHandler)(t,e)})}async waitUntilLoad(){await Promise.all(Array.from(this._handleing.values()))}gc(){this._handled.forEach((t,e)=>{const A=this.get(e);A&&"free"in A&&A.free()}),this._handled.clear()}}const Te=new lc().use(new ea).use(new ic).use(new rc).use(new sc).use(new nc).use(new oc).use(new ac);class Kp extends h.Control{_pointerStart;_pointerOffset;selected;dragging;hovered;hover=new h.Element2D({name:"hover",internalMode:"back",style:{visibility:"hidden",outlineStyle:"solid",outlineColor:"#00FF00FF",outlineWidth:2,pointerEvents:"none"}});transformRect=new Nn({name:"transformRect",internalMode:"back",style:{visibility:"hidden",pointerEvents:"none"}});scaler=new h.Scaler({internalMode:"back"}).on("updateScale",t=>{this.ruler.gapScale=t,this._updateScrollbars(),this._updateSelectionRect()});xScrollBar=new h.XScrollBar({internalMode:"back",style:{visibility:"hidden"}});yScrollBar=new h.YScrollBar({internalMode:"back",style:{visibility:"hidden"}});drawboard=new h.Element2D({name:"drawboard",style:{width:500,height:500,backgroundColor:"#FFFFFFFF",overflow:"hidden",pointerEvents:"none",boxShadow:"2px 2px 2px 1px rgba(0, 0, 0, 0.2)"}},[this.scaler]);ruler=new h.Ruler({name:"ruler",offsetX:100,offsetY:100,style:{pointerEvents:"none"}},[this.drawboard,this.hover,this.transformRect,this.xScrollBar,this.yScrollBar]);constructor(){super(),this._onPointerdown=this._onPointerdown.bind(this),this._onPointermove=this._onPointermove.bind(this),this._onPointerup=this._onPointerup.bind(this),this.append(this.ruler)}_updateStyleProperty(t,e,A,i){switch(super._updateStyleProperty(t,e,A,i),t){case"width":this.drawboard.style.left=(this.size.width-this.drawboard.size.width)/2,this.ruler.offsetX=this.drawboard.style.left;break;case"height":this.drawboard.style.top=(this.size.height-this.drawboard.size.height)/2,this.ruler.offsetY=this.drawboard.style.top;break}}_guiInput(t,e){switch(super._guiInput(t,e),e){case"pointerdown":this._onPointerdown(t);break;case"pointermove":this._onPointermove(t);break;case"pointerup":this._onPointerup();break}}_onPointerdown(t){let e=t.target;e?.is(this)&&(e=void 0),e?.is(this.transformRect)&&(e=this.selected),this._pointerOffset={x:t.offsetX,y:t.offsetY},this.selected=e,this.dragging=e,e instanceof h.Element2D?this._pointerStart=e.style.clone():this._pointerStart=void 0,this._updateHover(),this._updateSelectionRect()}_onPointermove(t){let e=t.target;e?.is(this)&&(e=void 0),e?.is(this.transformRect)&&(e=this.selected);const{selected:A,dragging:i,_pointerStart:s,_pointerOffset:n}=this;A&&e?.is(A)?this.hovered=void 0:this.hovered=e;const o=n?{x:t.offsetX-n.x,y:t.offsetY-n.y}:{x:0,y:0};i&&s&&(i.style.left=s.left+o.x/this.scaler.value,i.style.top=s.top+o.y/this.scaler.value,i.update()),this._updateHover(),this._updateSelectionRect()}_onPointerup(){this.dragging=void 0,this._updateHover(),this._updateSelectionRect()}_copyGlobalTransform(t,e){t.style.visibility="visible",t.style.width=e.globalScale.x*e.size.x,t.style.height=e.globalScale.y*e.size.y,t.style.left=e.globalPosition.x,t.style.top=e.globalPosition.y,t.style.rotate=e.globalRotation,t.update()}_updateHover(){const t=this.hovered;t instanceof h.Element2D?(this.hover.style.visibility="visible",this._copyGlobalTransform(this.hover,t),this.hover.requestRedraw()):this.hover.style.visibility="hidden"}_updateSelectionRect(){this.selected?(this.transformRect.style.visibility="visible",this._copyGlobalTransform(this.transformRect,this.selected)):this.transformRect.style.visibility="hidden"}_updateScrollbars(){const t=this.ruler.gapScale,e=this.drawboard.size.height*t,A=this.drawboard.size.width*t;e>this.size.height?(this.yScrollBar.style.visibility="visible",this.yScrollBar.maxValue=e,this.yScrollBar.page=this.size.height):this.yScrollBar.style.visibility="hidden",A>this.size.width?(this.xScrollBar.style.visibility="visible",this.xScrollBar.maxValue=A,this.xScrollBar.page=this.size.width):this.xScrollBar.style.visibility="hidden"}}const cc={alpha:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"};class hc extends xi{renderer;get view(){return this.renderer.view}get gl(){return this.renderer.gl}get screen(){return this.renderer.screen}get width(){return this.screen.width}get height(){return this.screen.height}get pixelRatio(){return this.renderer.pixelRatio}set pixelRatio(t){this.renderer.pixelRatio=t,this.resize(this.width,this.height),this.view&&(this.view.dataset.pixelRatio=String(t))}_resizeObserver=yo?new ResizeObserver(t=>{const e=t[0];if(e.target===this.view){const{inlineSize:A,blockSize:i}=Array.isArray(e.contentBoxSize)?e.contentBoxSize[0]:e.contentBoxSize;this.resize(A,i)}}):void 0;constructor(t={}){const{debug:e=!1,view:A,width:i,height:s,pixelRatio:n=ms,backgroundColor:o=0,autoResize:a,autoStart:l,timeline:c,...g}=t;super(c),this.debug=e,this.renderer=new ta(A,{...cc,...g}),this._setupInput(),this.pixelRatio=n,this.backgroundColor=o,a?(!A&&this.renderer.view&&(this.renderer.view.style.width="100%",this.renderer.view.style.height="100%"),this.enableAutoResize(a)):this.resize(i||this.gl.drawingBufferWidth||this.view?.clientWidth||200,s||this.gl.drawingBufferHeight||this.view?.clientHeight||200,!A),l&&this.start()}_setupInput(){return this.view&&(this.input.setTarget(this.view),["pointerdown","pointerover","pointermove","pointerup","wheel"].forEach(t=>{this.input.on(t,e=>{this.root.input(e,t),this.emit(t,e)})})),this}enableAutoResize(t=!0){return this.view&&(t?this._resizeObserver?.observe(this.view):this._resizeObserver?.unobserve(this.view)),this}resize(t,e,A=!1){return this.renderer.resize(t,e,A),this.root.width=t,this.root.height=e,this.root.requestUpload(),this.render(),this}nextTick(){return Is()}async waitUntilLoad(){await Te.waitUntilLoad(),await this.nextTick()}async waitAndRender(t=0){await Te.waitUntilLoad(),this._process(t),await this.nextTick(),this._render(this.renderer)}render(t=0){this._process(t),this._render(this.renderer)}async start(){await this.waitAndRender(),super.start(t=>{this._process(t),this._render(this.renderer)})}free(){super.free(),this.enableAutoResize(!1),this.renderer.free()}toPixels(){return this.renderer.toPixels()}toImageData(){return new ImageData(this.toPixels(),this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}toCanvas2D(){const t=this.toImageData(),e=document.createElement("canvas");e.width=t.width,e.height=t.height,e.getContext("2d")?.putImageData(t,0,0);const A=document.createElement("canvas");return A.width=this.width,A.height=this.height,A.getContext("2d")?.drawImage(e,0,0,e.width,e.height,0,0,A.width,A.height),A}}let Le;const Tn=[];let Ln=!1;async function Yp(r=100){if(!Ln){for(Ln=!0;Tn.length;){const t=Tn.shift();if(t)try{await t()}catch(e){console.error(e)}else await new Promise(e=>setTimeout(e,r))}Ln=!1}}async function Vp(r){const{data:t,width:e,height:A,debug:i=!1,time:s=0}=r;return Le??=new hc({width:1,height:1,preserveDrawingBuffer:!0}),Le.debug=i,Le.root.removeChildren(),Le.timeline.currentTime=s,Le.resize(e,A,!0),(Array.isArray(t)?t:[t]).forEach(n=>{n instanceof h.Node?(n.parent=void 0,Le.root.appendChild(n)):Le.root.appendChild(h.Node.parse(n))}),await r.onBeforeRender?.(Le),await Le.waitAndRender(),Le.toCanvas2D()}async function zp(r){return new Promise(t=>{Tn.push(async()=>t(await Vp(r))),Yp()})}h.AnimatedTexture=hr,h.Assets=lc,h.AudioPipeline=Fn,h.AudioProcessor=XI,h.AudioSpectrum=rp,h.BaseElement2DBackground=$s,h.BaseElement2DFill=qt,h.BaseElement2DForeground=tn,h.BaseElement2DOutline=JA,h.BaseElement2DShadow=vA,h.BaseElement2DShape=_A,h.BaseElement2DStyle=Pi,h.BaseElement2DText=RA,h.CanvasContext=Ya,h.CanvasItemEditor=Kp,h.CanvasTexture=TA,h.Color=Ye,h.ColorMatrix=bs,h.ColorTexture=aa,h.CoreObject=AA,h.DEG_TO_RAD=Fo,h.DEVICE_PIXEL_RATIO=ms,h.EffectMaterial=di,h.Element2DStyle=kn,h.Engine=hc,h.EventEmitter=He,h.FlexElement2DStyle=Fl,h.FlexLayout=Hr,h.FontLoader=ea,h.GIFLoader=ic,h.Geometry=cr,h.GradientTexture=gr,h.HTMLAudio=$l,h.HTMLAudioContext=Yr,h.HTMLSound=Xi,h.IN_BROWSER=fi,h.ImageTexture=Zh,h.IndexBuffer=NA,h.Input=Uo,h.InputEvent=ar,h.JSONLoader=rc,h.Loader=iA,h.LottieLoader=sc,h.MainLoop=lr,h.Material=Qt,h.Matrix=xe,h.Matrix2=Uh,h.Matrix3=Ds,h.Matrix4=No,h.MouseInputEvent=_s,h.PI=or,h.PI_2=Ae,h.PixelsTexture=Rs,h.PointerInputEvent=Po,h.Projection2D=Lo,h.QuadGeometry=Jh,h.QuadUvGeometry=ut,h.RAD_TO_DEG=Ph,h.RawWeakMap=vs,h.Rect2=xs,h.RefCounted=po,h.Renderer=Oo,h.Resource=Ke,h.SUPPORTS_AUDIO_CONTEXT=Cs,h.SUPPORTS_CLICK_EVENTS=wo,h.SUPPORTS_CREATE_IMAGE_BITMAP=Bs,h.SUPPORTS_IMAGE_BITMAP=Qo,h.SUPPORTS_MOUSE_EVENTS=xh,h.SUPPORTS_OFFLINE_AUDIO_CONTEXT=ys,h.SUPPORTS_POINTER_EVENTS=kA,h.SUPPORTS_RESIZE_OBSERVER=yo,h.SUPPORTS_TOUCH_EVENTS=Je,h.SUPPORTS_WEBGL2=Co,h.SUPPORTS_WEBKIT_AUDIO_CONTEXT=Qs,h.SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT=vo,h.SUPPORTS_WEB_AUDIO=_o,h.SUPPORTS_WHEEL_EVENTS=mo,h.SceneTree=xi,h.TextLoader=nc,h.Texture2D=vt,h.TextureLoader=oc,h.TextureRect2D=Jr,h.Ticker=Wt,h.Transform2D=kt,h.TransformRect2D=Nn,h.UvGeometry=zh,h.UvMaterial=Ii,h.Vector=Qe,h.Vector2=he,h.Vector3=Nh,h.Vector4=To,h.VertexAttribute=ge,h.VertexBuffer=ze,h.VideoLoader=ac,h.VideoTexture=ca,h.ViewportTexture=ks,h.WebAudio=ec,h.WebAudioContext=dA,h.WebGLBatch2DModule=Ko,h.WebGLBlendMode=UA,h.WebGLBufferModule=Yo,h.WebGLFramebufferModule=Vo,h.WebGLMaskModule=zo,h.WebGLModule=Ee,h.WebGLProgramModule=Wo,h.WebGLRenderer=ta,h.WebGLScissorModule=qo,h.WebGLState=QA,h.WebGLStateModule=Jo,h.WebGLStencilModule=Xo,h.WebGLTextureModule=jo,h.WebGLVertexArrayModule=Zo,h.WebGLViewportModule=$o,h.WebSound=tc,h.WheelInputEvent=ko,h.assets=Te,h.clamp=Ve,h.clampFrag=el,h.createHTMLCanvas=So,h.createNode=yh,h.crossOrigin=Ro,h.cubicBezier=oi,h.curves=kh,h.customNode=st,h.customNodes=nr,h.defaultOptions=cc,h.determineCrossOrigin=Mo,h.ease=ql,h.easeIn=Xl,h.easeInOut=Zl,h.easeOut=jl,h.frag=tl,h.getDefaultCssPropertyValue=Es,h.isCanvasElement=Do,h.isElementNode=ws,h.isImageElement=Sh,h.isPow2=ps,h.isVideoElement=bo,h.isWebgl2=xo,h.lerp=xt,h.linear=Wl,h.log2=Ms,h.mapWebGLBlendModes=Ho,h.nextPow2=Ss,h.nextTick=Is,h.parseCSSFilter=ia,h.parseCSSTransform=ra,h.parseCSSTransformOrigin=sa,h.parseCssFunctions=ui,h.parseCssProperty=gi,h.protectedProperty=dt,h.render=zp,h.timingFunctions=Kr,h.uid=Eo,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|