Transaction

8e82dbd75716bba45519d4858c8ffa4ecce8a655b55f7128babc8175eea3106a

Summary

Block
776,282(147k)
Date / Time
2023-02-13(2.8y ago)
Fee Rate(sat/vB)
25
Total Fee
0.00659625BTC

Technical Details

Version
1
Size(vB)
26,385(105,255)
Raw Data(hex)
010000…00000
Weight(wu)
105,537

1 Input, 1 Output

Input Scripts

Input
0
witness
#0
utf8�[a��҈.�Mi߈_����*{���!HC^�ʁM�>�H7ΦR9���J�h�Bs`�@=(m��[a��҈.�Mi߈_����*{���!HC^�ʁM�>�H7ΦR9���J�h�Bs`�@=(m�
#1
utf8 /���걤��,{{9 �Y��m���`�WC̒��cordtext/html;charset=utf-8M<!DOCTYPE html> <html lang="en"> <head> <style> html, body { margin: 0; padding: 0; } canvas { display: block; } </style> <meta charset="utf-8" /> </head> <body> <main> </main> <script> let seed=window.location.href.split('/').find(t=>t.includes('i0')); if (seed == null) { seed = new URLSearchParams(window.location.search).get("seed"); } else { let pattern = "seed="; for(let i = 0; i < seed.length - pattern.length; M++i) { if (seed.substring(i, i + pattern.length) == pattern) { seed = seed.substring(i + pattern.length); break; } } } function cyrb128($) { let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762; for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179); return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0] } function sfc32($, _, u, i) { return function () { u >>>= 0, i >>>= 0; var l = ($ >>>= 0) + (_ >>>= 0) | 0; return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296 } } let mathRand =M sfc32(...cyrb128(seed)); let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER); !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m}); function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)} class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}} </script> </body> </html>h /���걤��,{{9 �Y��m���`�WC̒��cordtext/html;charset=utf-8M<!DOCTYPE html> <html lang="en"> <head> <style> html, body { margin: 0; padding: 0; } canvas { display: block; } </style> <meta charset="utf-8" /> </head> <body> <main> </main> <script> let seed=window.location.href.split('/').find(t=>t.includes('i0')); if (seed == null) { seed = new URLSearchParams(window.location.search).get("seed"); } else { let pattern = "seed="; for(let i = 0; i < seed.length - pattern.length; M++i) { if (seed.substring(i, i + pattern.length) == pattern) { seed = seed.substring(i + pattern.length); break; } } } function cyrb128($) { let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762; for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179); return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0] } function sfc32($, _, u, i) { return function () { u >>>= 0, i >>>= 0; var l = ($ >>>= 0) + (_ >>>= 0) | 0; return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296 } } let mathRand =M sfc32(...cyrb128(seed)); let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER); !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m}); function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)} class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}} </script> </body> </html>h
#2
utf8�/���걤��,{{9 �Y��m���`�WC̒��/���걤��,{{9 �Y��m���`�WC̒�

Output Scripts

Script Pub Key
0
hex
hexf41b6e4173a31e50e63450601c5157c8d551177f997fd2f48639dbc86afcc8c4f41b6e4173a31e50e63450601c5157c8d551177f997fd2f48639dbc86afcc8c4
This transaction is very large. Displaying it's data here may cause problems. Instead, see it's raw data via the internal API:
8e82dbd75716bba45519d4858c8ffa4ecce8a655b55f7128babc8175eea3106a