Nico Pr

Nico Pr

<div id="app">
	<canvas id="c"></canvas>
	<div id="hints">
		<div id="cred" class="btn">credits</div>
		<div id="mode" class="btn">contain</div>
		<div>
			<label class="btn" for="file">browse</label>
			<input type="file" id="file" accept="image/*" />
		</div>
	</div>
</div>
#app {
	width: 100%;
	height: 100%;
	display: flex;
	-webkit-user-select: none;
	user-select: none;
	-webkit-tap-highlight-color: transparent;
	-webkit-touch-callout: none;
	touch-action: none;
}
canvas {
	display: block;
	width: 100%;
	height: 100%;
}
#file {
	display: none;
}
.btn {
	padding: 0;
	border: none;
	cursor: pointer;
	font-family: inherit;
	pointer-events: all;
	mix-blend-mode: color-dodge;
}
#hints {
	position: fixed;
	bottom: 10px;
	width: 100%;
	display: flex;
	justify-content: space-evenly;
	opacity: .5;
	pointer-events: none;
	color: #fff;
}
(function(t,p){const fW=r,X=t();while(!![]){try{const L=-parseInt(fW(0x136))/0x1*(-parseInt(fW(0x13b))/0x2)+-parseInt(fW(0x115))/0x3*(-parseInt(fW(0xe1))/0x4)+parseInt(fW(0x10b))/0x5+parseInt(fW(0xea))/0x6*(parseInt(fW(0xde))/0x7)+-parseInt(fW(0xad))/0x8+parseInt(fW(0xc6))/0x9*(parseInt(fW(0xec))/0xa)+-parseInt(fW(0xfe))/0xb;if(L===p)break;else X['push'](X['shift']());}catch(D){X['push'](X['shift']());}}}(q,0xf1003));function q(){const J0=['push','Renum.uncmin:\x20gradient\x20is\x20zero\x20(local\x20extremum)','70272QtTkCI','width','TEXTURE_WRAP_T','factor','MDEpY29udGludWU7ZmxvYXQgaW5BbmdsZT1hdGFuKHIsZGlzdC','delete','set','innerHeight','pow','mouse','link:\x20','c1tIT0xFU107dW5pZm9ybSBmbG9hdCBzdHJlbmd0aHNbSE9MRV','TEXTURE_MIN_FILTER','slice','createBuffer','texSize','number','sin','dataTransfer',',\x201.0);\x0a\x09\x09\x09\x09}','getShaderInfoLog','reduce','uniform2fv','abs','1049447rYekAj','bind','vertexAttribPointer','12aAyBNk','mode','load','VERTEX_SHADER','tan','pointerId','eenUV;\x0a\x09\x09\x09\x09void\x20main()\x20{\x0a\x09\x09\x09\x09\x09screenUV\x20=\x20position;','TRIANGLE_STRIP','getElementById','6QbGsAD','src','2280XueWuT','no\x20WebGL','constructor','TEXTURE_2D','open','drop','enableVertexAttribArray','naturalHeight','RGBA','search','textContent','uniform1i','(((.+)+)+)+$','ARRAY_BUFFER','bindBuffer','texImage2D','FRAGMENT_SHADER','drawArrays','26677178bKbuHb','height','5nbGVGbihmbG9hdCBhKXtmbG9hdCBvPTAuLHA9MS47Zm9yKGlu','addEventListener','entries','getUniformLocation','_blank','pageX','cos','1wKChjb29yZCtkaXNwKS90ZXhTaXplLHZlYzIoMCksdmVjMigx','uniform1fv','max','angle','3246590vAMUZg','ZXdTaXplLG9mZnNldDt1bmlmb3JtIGZsb2F0IGZhY3Rvcjt1bm','Renum.gradient:\x20did\x20not\x20converge','Not\x20enough\x20photonPath\x20coords','centers','dist','uniform2f','uniform1f','body','Renum.uncmin:\x20converged\x20(small\x20step)','638661FxLWPt','isArray','TEXTURE_WRAP_S','k7aWYoaW5BbmdsZTw9bWF4SW5BbmdsZSpzKWJsYWNrPTEuO2lu','media/void/spirals.webp','innerWidth','shader\x20compile:\x20','files','CLAMP_TO_EDGE','tyZXR1cm4gbzt9dm9pZCBtYWluKCl7dmVjMiBjb29yZD0odmVj','viewport','onclick','xiYXNlVGMpLHZlYzQoMCwwLDAsMSksYmxhY2spO30=','forEach','bmp\x20fail','FLOAT','texture','sqrt','texParameteri','onchange','maxInAngle','lzdCxtYXhJbkFuZ2xlO3VuaWZvcm0gdmVjMiB0ZXhTaXplLHZp','dCBpPTA7aTxIT0xFUztpKyspbys9Y29lZmZzW2ldKnAscCo9YT','QW5nbGU9dGFuKG91dEFuZ2xlRm4oaW5BbmdsZSkpKmRpc3Q7ZG','MihzY3JlZW5VVi54LDEuLXNjcmVlblVWLnkpKnZpZXdTaXplLW','compileShader','getContext','undefined','aF0sMC4sMS4pO3M9cypzKigzLi0yLipzKTt2ZWMyIGQ9Y29vcm','KSk7Z2xfRnJhZ0NvbG9yPW1peCh0ZXh0dXJlMkQodGV4dHVyZS','Renum.uncmin:\x20f(x0)\x20is\x20a\x20NaN','Renum.uncmin:\x20converged','getAttribLocation','23TdCJTZ','Renum.gradient:\x20f(x)\x20is\x20a\x20NaN','VtSG9sZXMpYnJlYWs7ZmxvYXQgcz1jbGFtcChzdHJlbmd0aHNb','webgl','UNSIGNED_BYTE','124658qRYwWl','\x0a\x09\x09\x09\x09attribute\x20vec2\x20position;\x0a\x09\x09\x09\x09varying\x20vec2\x20scr','lzcCs9ZC9yKihpbkFuZ2xlLXIpKnM7fXZlYzIgYmFzZVRjPWNv','map','COMPILE_STATUS','replaceAll','useProgram','min','dHVyZTt2YXJ5aW5nIHZlYzIgc2NyZWVuVVY7ZmxvYXQgb3V0QW','9mZnNldCkvZmFjdG9yLGRpc3A9dmVjMigwKTtmbG9hdCBibGFj','apply','shaderSource','toString','isFinite','linkProgram','9914832Gahzns','dragover','coeffs','error','createShader','offset','STATIC_DRAW','getProgramInfoLog','az0wLjtmb3IoaW50IGg9MDtoPEhPTEVTO2grKyl7aWYoaD49bn','atan2','length','bindTexture','viewSize','Renum.uncmin:\x20step\x20too\x20small','get','b2xvcj12ZWM0KDAsMCwwLDEpO3JldHVybjt9YmFzZVRjPWNsYW','position','cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O3VuaWZvcm0gZmxvYXQgZG','pageY','crossOrigin','LINEAR','numHoles','pointerType'];q=function(){return J0;};return q();}const J=(function(){let t=!![];return function(p,X){const L=t?function(){const fb=r;if(X){const D=X[fb(0x145)](p,arguments);return X=null,D;}}:function(){};return t=![],L;};}()),f=J(this,function(){const fO=r;return f['toString']()[fO(0xf5)](fO(0xf8))[fO(0x147)]()[fO(0xee)](f)[fO(0xf5)]('(((.+)+)+)+$');});function r(f,J){f=f-0xab;const t=q();let p=t[f];return p;}f(),function(){const fa=r;function t(f0,f1,f2){const fZ=r,f3=Array['isArray'](f0),f4=Array[fZ(0x116)](f1);return f3&&f4?f0[fZ(0x13e)]((f5,f6)=>t(f5,f1[f6],f2)):f3?f0[fZ(0x13e)](f5=>t(f5,f1,f2)):f4?f1['map'](f5=>t(f0,f5,f2)):f2(f0,f1);}function p(f0,f1){return t(f0,f1,(f2,f3)=>f2-f3);}function C(f0,f1){let f2=0x0;for(let f3=0x0;f3<f0['length'];f3++)f2+=f0[f3]*f1[f3];return f2;}function G(f0){const fo=r;return Math[fo(0x126)](C(f0,f0));}function n(f0){const fT=r;let f1=0x0;for(let f2=0x0;f2<f0[fT(0xb7)];f2++){const f3=Math[fT(0xdd)](f0[f2]);f3>f1&&(f1=f3);}return f1;}function b(f0){const fu=r;return Array['isArray'](f0)?f0[fu(0x13e)](f1=>b(f1)):f0;}function o(f0){const f1=[];for(let f2=0x0;f2<f0;f2++){f1[f2]=[];for(let f3=0x0;f3<f0;f3++)f1[f2][f3]=f2===f3?0x1:0x0;}return f1;}function u(f0,f1){const fR=r,f2=f0[fR(0xb7)],f3=Array(f2);for(let f4=0x0;f4<f2;f4++){let f5=0x0;for(let f6=0x0;f6<f1[fR(0xb7)];f6++)f5+=f0[f4][f6]*f1[f6];f3[f4]=f5;}return f3;}function w(f0,f1,f2){const fY=r,f3=f0['length'],f4=f1[fY(0xb7)],f5=[];for(let f6=0x0;f6<f3;f6++){f5[f6]=[];for(let f7=0x0;f7<f4;f7++)f5[f6][f7]=f2*f0[f6]*f1[f7];}return f5;}function x(f0,f1){const fw=r;return f0['map']((f2,f3)=>f2[fw(0x13e)]((f4,f5)=>f4+f1[f3][f5]));}function A(f0,f1){const fA=r;var f2=null,f3=0x0,f4={};const f5=ft=>{const fx=r,fp=ft[fx(0xb7)],fX=f0(ft);if(isNaN(fX))throw Error(fx(0x137));const fL=Array(fp),fD=b(ft);for(let fG=0x0;fG<fp;fG++){let fF=Math[fx(0x109)](0.000001*fX,1e-8);for(let fH=0x0;;fH++){if(fH===0x14)throw Error(fx(0x10d));fD[fG]=ft[fG]+fF;var fC=f0(fD);fD[fG]=ft[fG]-fF;const fn=f0(fD);fD[fG]=ft[fG];if(!isNaN(fC)&&!isNaN(fn)){fL[fG]=(fC-fn)/(0x2*fF);const fI=ft[fG]-fF,fU=ft[fG]+fF;fC=Math[fx(0x142)](Math[fx(0xdd)](fL[fG]*(fU-fI)),Math[fx(0xdd)](fC-fn))/(0x3e8*(Math[fx(0xdd)](fX)+0x1));if(fI===ft[fG]||fU===ft[fG]||fL[fG]===0x0&&fX!==0x0||fC<=0.001)break;}fF/=0x10;}}return fL;};f2=f2===null?1e-8:f2;var f6=b(f1);f1=f6[fA(0xb7)];var f7=f0(f6);if(isNaN(f7))throw Error(fA(0x133));f3=f3||0x3e8;let f8=0x0;var f9=f5(f6);f4=f4['la']||o(f1);let ff='';for(;f8<f3;){f8++;if(n(f9)===0x0){ff=fA(0xc5);break;}const ft=u(f4,f9)['map'](fD=>-fD);var fJ=C(f9,ft);if(fJ>=0x0){f4=o(f1);for(fJ=0x0;fJ<f1;fJ++)ft[fJ]=-f9[fJ];fJ=C(f9,ft);}let fp=0x1;var fq=f6,fr=G(ft);if(fr<f2){ff=fA(0xba);break;}let fX,fL;for(;f8<f3&&!(fp*fr<f2);){fX=fq[fA(0x13e)]((fD,fC)=>fD+fp*ft[fC]),fL=f0(fX);if(fL-f7<0.1*fp*fJ&&!isNaN(fL))break;fp*=0.5,f8++;}if(fp*fr<f2){ff='Renum.uncmin:\x20line\x20search\x20step\x20too\x20small';break;}if(Math[fA(0xdd)](fL-f7)<=f2*(Math[fA(0xdd)](fL)+Math['abs'](f7)+0x1)&&G(ft[fA(0x13e)](fD=>fp*fD))<f2){f6=fX,f7=fL,ff=fA(0x134);break;}fJ=f5(fX),f9=p(fJ,f9),fq=ft[fA(0x13e)](fD=>fp*fD),f6=C(f9,fq),f6>1e-12&&(f7=u(f4,f9),f9=w(fq,fq,(f6+C(f9,f7))/(f6*f6)),fr=w(f7,fq,-0x1/f6),f6=w(fq,f7,-0x1/f6),f4=x(x(f4,f9),x(fr,f6))),f6=fX,f7=fL,f9=fJ;if(G(fq)<f2){ff=fA(0x114);break;}}return{'ha':f6,'f':f7,'na':f9,'oa':f4,'iterations':f8,'message':ff};}function e(f0){const fN=r;var f1=0x64,f2=0x14*Math['PI'],f3=v,f4=void 0x0;const f5=[0.2,0.3,0.8,0x8/0x9,0x1,0x1],f6=[[0.2],[0.075,0.225],[0x2c/0x2d,-0x38/0xf,0x20/0x9],[0x4bac/0x19a1,-0x6310/0x88b,0xfbc0/0x19a1,-0xd4/0x2d9],[0x2339/0xc60,-0x163/0x21,0xb68c/0x147f,0x31/0xb0,-0x13ef/0x48e0],[0x23/0x180,0x0,0x1f4/0x459,0x7d/0xc0,-0x88b/0x1a80,0xb/0x54]],f7=[0x47/0xe100,0x0,-0x47/0x4137,0x47/0x780,-0x4365/0x52d00,0x16/0x20d,-0.025];typeof f4===fN(0x130)&&(f4=0.000001),typeof f1===fN(0x130)&&(f1=0x3e8);const f8=typeof f0===fN(0xd6);var f9=f8?[f0]:b(f0);f0=f8?(fI,fU)=>[f3(fI,fU[0x0])]:f3;const ff=[0x0];f9=[f9];const fJ=[];let fq=0x0,fr=f9[0x0];var ft=f2-0x0;let fp=ft/f1;ft=Math[fN(0xdd)](ft)/0x64;let fX=0x0,fL=0x0;f1*=0x64;const fD=f2>0x0?0x1:-0x1;for(;fD*fq<fD*f2&&fL<f1;){fL++,fD*(fq+fp)>fD*f2&&(fp=f2-fq);var fC=[];fC[0x0]=f0(fq,fr);for(var fG=0x1;fG<0x7;fG++){var fF=fr['slice']();for(var fH=0x0;fH<fG;fH++)if(f6[fG-0x1][fH]!==void 0x0){for(var fn=0x0;fn<fF[fN(0xb7)];fn++)fF[fn]+=fp*f6[fG-0x1][fH]*fC[fH][fn];}fC[fG]=f0(fq+(fG<0x6?f5[fG-0x1]:0x1)*fp,fF);}fG=fr[fN(0xd3)]();for(fF=0x0;fF<0x6;fF++)for(fH=0x0;fH<fG[fN(0xb7)];fH++)fG[fH]+=fp*f6[0x5][fF]*fC[fF][fH];fF=0x0;for(fH=0x0;fH<fr[fN(0xb7)];fH++){fn=0x0;for(let fI=0x0;fI<0x7;fI++)fn+=f7[fI]*fC[fI][fH];fn*=fp,fn=Math[fN(0xdd)](fn)/(f4*(0x1+Math[fN(0xdd)](fr[fH]))),fn>fF&&(fF=fn);}if(fF>0x1&&fL<f1){fp*=Math[fN(0x109)](0.1,0.8*Math['pow'](fF,-0.2));continue;}fq+=fp,fr=fG,fX++,ff[fX]=fq,f9[fX]=fr,fJ[fX-0x1]=fC,fC=!0x0;for(fG=0x0;fG<fr[fN(0xb7)];fG++)if(!Number[fN(0xab)](fr[fG])){fC=!0x1;break;}if(!fC)break;fp*=fF===0x0?0x5:Math[fN(0x142)](0x5,0.8*Math[fN(0xce)](fF,-0.2)),Math['abs'](fp)>ft&&(fp=fD*ft);}return{'x':ff,'y':f8?f9[fN(0x13e)](fU=>fU[0x0]):f9,'ma':fJ,'R':f0,'v':f8,'at'(fU){return B(this,fU);}};}function B(f0,f1){const fQ=r;var f2=f0['x'],f3=f0['v']?f0['y']['map'](fq=>[fq]):f0['y'],f4=0x0,f5=f2['length']-0x1;if(f1<=f2[0x0])return f0['v']?f3[0x0][0x0]:f3[0x0][fQ(0xd3)]();if(f1>=f2[f5])return f0['v']?f3[f5][0x0]:f3[f5][fQ(0xd3)]();for(;f5-f4>0x1;){var f6=f4+f5>>0x1;f2[f6]<=f1?f4=f6:f5=f6;}f6=f2[f4];var f7=f2[f5];f2=f7-f6,f1=(f1-f6)/f2,f4=f3[f4],f3=f3[f5],f5=f0['R'](f6,f4),f6=f0['R'](f7,f3),f7=Array(f4[fQ(0xb7)]);var f8=f1*f1,f9=f8*f1;const ff=0x2*f9-0x3*f8+0x1;f1=f9-0x2*f8+f1;const fJ=-0x2*f9+0x3*f8;f8=f9-f8;for(f9=0x0;f9<f4['length'];f9++)f7[f9]=ff*f4[f9]+f1*f2*f5[f9]+fJ*f3[f9]+f8*f2*f6[f9];return f0['v']?f7[0x0]:f7;};function s(f0){return f0*Math['PI']/0xb4;}function m(){const fM=r,f0=g(),f1=[];for(let f2=0x0;f2<=2.2;f2++)f1[fM(0xc4)](0x1);return{'Z':A(f3=>f0['ca'][fM(0xdb)]((f4,f5,f6)=>{let f7=0x0;for(let f8=0x0;f8<=2.2;f8++)f7+=f3[f8]*Math['pow'](f5,f8);return f5=f7-f0['ga'][f6],f4+f5*f5;},0x0),f1)['ha'],'J':f0['J']};}function g(){const fK=r,f0=[];for(let f5=0x0;f5<0x76;f5+=0.0472)f0[fK(0xc4)](f5);const f1=f0['map'](f6=>{const fS=fK;var f7=e([0.0125,0x1/(0x50*Math[fS(0xe5)](s(f6)))]),f8=f7['x'];f6=[];for(let f9=0x0;f9<f7['y'][fS(0xb7)];f9++){const ff=0x1/f7['y'][f9][0x0];if(ff<0x0)break;f6['push']([ff*Math[fS(0x106)](f8[f9]),ff*Math[fS(0xd7)](f8[f9])]);}if(f6[fS(0xb7)]<0x1)throw Error('At\x20least\x20one\x20photonPath\x20coord\x20required');f7=f6[f6[fS(0xb7)]-0x1];if(Math[fS(0xdd)](f7[0x0])<0x1&&Math[fS(0xdd)](f7[0x1])<0x1)f6={'da':!0x0};else{if(f6[fS(0xb7)]<0x2)throw Error(fS(0x10e));f7=f6[f6[fS(0xb7)]-0x2],f8=f6[f6[fS(0xb7)]-0x1],f6=f8[0x0]-f7[0x0],f7=f8[0x1]-f7[0x1],f6={'angle':Math[fS(0xb6)](f7,f6)*0xb4/Math['PI']};}return f6;});let f2=0x0;const f3=[],f4=[];return f0[fK(0x122)]((f6,f7)=>{const fe=fK;f7=f1[f7],f7['da']?f2=f6:isNaN(f6)||isNaN(f7[fe(0x10a)])||(f3[fe(0xc4)](f6+Math['PI']),f6=f7['angle'],f4[fe(0xc4)](f6<0x0?-0xb4-f6:0xb4-f6));}),{'J':s(f2),'ca':f3[fK(0x13e)](s),'ga':f4[fK(0x13e)](s)};}function v(f0,f1){return f0=f1[0x0],[f1[0x1],0x3*f0*f0-f0];}function y(f0){const fB=r,f1=f0['j'][fB(0x12f)](fB(0x139),{'premultipliedAlpha':!0x1,'alpha':!0x1});if(f1){f0['o']=f1;var f2=atob(fB(0xbe)+fB(0x12a)+fB(0x10c)+'lmb3JtIGludCBudW1Ib2xlczt1bmlmb3JtIHZlYzIgY2VudGVy'+fB(0xd1)+'NdLGNvZWZmc1tIT0xFU107dW5pZm9ybSBzYW1wbGVyMkQgdGV4'+fB(0x143)+fB(0x100)+fB(0x12b)+fB(0x11e)+fB(0x12d)+fB(0x144)+fB(0xb5)+fB(0x138)+fB(0x131)+'QtY2VudGVyc1toXTtmbG9hdCByPWxlbmd0aChkKTtpZihyPC4w'+fB(0xca)+fB(0x118)+fB(0x12c)+fB(0x13d)+('b3JkL3RleFNpemU7aWYoYmFzZVRjLng8MC58fGJhc2VUYy54Pj'+'EufHxiYXNlVGMueTwwLnx8YmFzZVRjLnk+MS4pe2dsX0ZyYWdD'+fB(0xbc)+fB(0x107)+fB(0x132)+fB(0x121)))[fB(0x140)]('HOLES',0x10[fB(0x147)](0xa)),f3=f0['o'];const f4=f3['createProgram']();f3['attachShader'](f4,z(f0,f3[fB(0xe4)],fB(0x13c)+fB(0xe7)+'\x0a\x09\x09\x09\x09\x09gl_Position\x20=\x20vec4(position\x20*\x202.0\x20-\x201.0,\x200.0'+fB(0xd9))),f3['attachShader'](f4,z(f0,f3[fB(0xfc)],f2)),f3[fB(0xac)](f4);if(!f3['getProgramParameter'](f4,f3['LINK_STATUS']))throw fB(0xd0)+f3[fB(0xb4)](f4);f0['g']=f4,f1[fB(0x141)](f0['g']),f2=f1[fB(0xd4)](),f1[fB(0xfa)](f1[fB(0xf9)],f2),f1['bufferData'](f1[fB(0xf9)],new Float32Array([0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x1]),f1[fB(0xb3)]),f2=f1[fB(0x135)](f0['g'],fB(0xbd)),f1[fB(0xf2)](f2),f1[fB(0xe0)](f2,0x2,f1[fB(0x124)],!0x1,0x0,0x0),f0['h']={'ba':f1[fB(0x103)](f0['g'],fB(0x110)),'ea':f1[fB(0x103)](f0['g'],fB(0x129)),'ja':f1[fB(0x103)](f0['g'],fB(0xd5)),'ka':f1[fB(0x103)](f0['g'],fB(0xb9)),'offset':f1[fB(0x103)](f0['g'],fB(0xb2)),'m':f1[fB(0x103)](f0['g'],fB(0xc9)),'fa':f1['getUniformLocation'](f0['g'],fB(0xc2)),'$':f1[fB(0x103)](f0['g'],fB(0x10f)),'ia':f1[fB(0x103)](f0['g'],'strengths'),'aa':f1[fB(0x103)](f0['g'],fB(0xaf)),'pa':f1[fB(0x103)](f0['g'],fB(0x125))},f2=f0['K']['Z'],f3=new Float32Array(0x10),f3[fB(0xcc)](f2[fB(0xd3)](0x0,0x10)),f1[fB(0x108)](f0['h']['aa'],f3),f1['uniform1f'](f0['h']['ea'],f0['K']['J']),f0['I']=f1['createTexture'](),f1[fB(0xb8)](f1['TEXTURE_2D'],f0['I']),f1[fB(0x127)](f1[fB(0xef)],f1[fB(0xd2)],f1[fB(0xc1)]),f1[fB(0x127)](f1[fB(0xef)],f1['TEXTURE_MAG_FILTER'],f1[fB(0xc1)]),f1['texParameteri'](f1[fB(0xef)],f1[fB(0x117)],f1[fB(0x11d)]),f1[fB(0x127)](f1['TEXTURE_2D'],f1[fB(0xc8)],f1[fB(0x11d)]),f0['A']=new Float32Array(0x20),f0['H']=new Float32Array(0x10);}else document[fB(0x113)][fB(0xf6)]=fB(0xed);}function j(f0){const fP=r;Object[fP(0x102)]({'touchstart':f0['U'],'pointerdown':f0['W'],'pointermove':f0['X'],'pointerup':f0['O'],'pointercancel':f0['O'],'pointerout':f0['Y']})[fP(0x122)](([f1,f2])=>f0['j']['addEventListener'](f1,f3=>f2[fP(0xdf)](f0)(f3))),document[fP(0xe9)]('cred')[fP(0x120)]=()=>window[fP(0xf0)]('https://github.com/cliffcrosland/black-hole.js',fP(0x104)),f0['N'][fP(0x120)]=()=>{const fs=fP;f0[fs(0xe2)]=0x1-f0[fs(0xe2)],f0['N']['textContent']=f0[fs(0xe2)]?'contain':'cover',k(f0);},document[fP(0xe9)]('file')[fP(0x128)]=f1=>h(f0,f1['target']?.[fP(0x11c)]?.[0x0]),window[fP(0x101)](fP(0xae),f1=>f1['preventDefault']()),window[fP(0x101)](fP(0xf1),f1=>{const fm=fP;f1['preventDefault'](),h(f0,f1[fm(0xd8)]?.[fm(0x11c)]?.[0x0]);}),window[fP(0x101)]('resize',()=>k(f0));}function h(f0,f1){const fy=r,f2=f0['o'],f3=f4=>{const fg=r;f0['M']=f4,f0['C']=f4['naturalWidth']||f4[fg(0xc7)],f0['B']=f4[fg(0xf3)]||f4[fg(0xff)],f2[fg(0xb8)](f2[fg(0xef)],f0['I']),f2[fg(0xfb)](f2[fg(0xef)],0x0,f2[fg(0xf4)],f2['RGBA'],f2[fg(0x13a)],f4),f2['uniform2f'](f0['h']['ja'],f0['C'],f0['B']),f0['L']=Math['hypot'](f0['C'],f0['B'])/Math[fg(0xe5)](f0['V']),f0['P']=!0x0,k(f0);};if(f1 instanceof File)createImageBitmap(f1)['then'](f4=>f3(f4))['catch'](f4=>{const fv=r;console[fv(0xb0)](fv(0x123),f4);});else{const f4=new Image();f4[fy(0xc0)]='anonymous',f4['onload']=()=>f3(f4),f4[fy(0xeb)]=f1;}}function l(f0,f1){const fj=r;requestAnimationFrame(f3=>l(f0,f3));if(f0['P']){f0['D']||(f0['D']=f1);var f2=(f1-f0['D'])/0x3e8;f0['D']=f1,f2>0.1&&(f2=0.1),f1=0x1-Math['exp'](-0x1e*f2);for(const [f3,f4]of f0['l']){f4['x']+=(f4['S']-f4['x'])*f1,f4['y']+=(f4['T']-f4['y'])*f1;const f5=f4['u']?0x0:0x1;f4['i']<f5?f4['i']=Math[fj(0x142)](f5,f4['i']+0x4*f2):f4['i']>f5&&(f4['i']=Math[fj(0x109)](f5,f4['i']-5.5*f2)),f4['u']&&f4['i']<=0.0001&&f0['l'][fj(0xcb)](f3);}c(f0);}}function z(f0,f1,f2){const fh=r;f0=f0['o'],f1=f0[fh(0xb1)](f1),f0[fh(0x146)](f1,f2),f0[fh(0x12e)](f1);if(!f0['getShaderParameter'](f1,f0[fh(0x13f)]))throw fh(0x11b)+f0[fh(0xda)](f1);return f1;}function k(f0){const fl=r;if(f0['M']){var f1=f0['o'],f2=window[fl(0x11a)],f3=window[fl(0xcd)],f4=Math[fl(0x142)](window['devicePixelRatio']||0x1,0x2);f0['j']['width']=f2*f4,f0['j'][fl(0xff)]=f3*f4,f1[fl(0x11f)](0x0,0x0,f0['j'][fl(0xc7)],f0['j']['height']),f4=f0['C'];var f5=f0['B'],f6=f2/f4,f7=f3/f5,f8=Math[fl(0x142)](f6,f7);f6=f0[fl(0xe2)]?Math[fl(0x109)](f6,f7):f8,f0['m']=f6,f0['F']=(f2-f4*f6)/0x2,f0['G']=(f3-f5*f6)/0x2,f1[fl(0x112)](f0['h']['ba'],f8/f6*f0['L']),f1[fl(0x111)](f0['h']['ka'],f2,f3),f1[fl(0x111)](f0['h']['offset'],f0['F'],f0['G']),f1[fl(0x112)](f0['h']['m'],f0['m']);}}function d(f0,f1,f2,f3){const fz=r;f2=(f2-f0['F'])/f0['m'],f3=(f3-f0['G'])/f0['m'];let f4=f0['l'][fz(0xbb)](f1);f4?(f4['u']=!0x1,f4['S']=f2,f4['T']=f3):f0['l'][fz(0xcc)](f1,{'x':f2,'y':f3,'S':f2,'T':f3,'i':0x0,'u':!0x1});}function c(f0){const fk=r,f1=f0['o'];let f2=0x0;for(const [,f3]of f0['l']){if(f2>=0x10)break;f0['A'][f2*0x2]=f3['x'],f0['A'][f2*0x2+0x1]=f3['y'],f0['H'][f2]=f3['i'],f2++;}f1[fk(0xf7)](f0['h']['fa'],f2),f2>0x0&&(f1[fk(0xdc)](f0['h']['$'],f0['A']),f1[fk(0x108)](f0['h']['ia'],f0['H'])),f1[fk(0xfd)](f1[fk(0xe8)],0x0,0x4);}class i{constructor(){const fd=r;this['M']=this['I']=this['C']=this['B']=this['j']=this['o']=this['h']=this['g']=this['A']=this['H']=null,this['L']=this['F']=this['G']=this['m']=0x0,this['N']=document[fd(0xe9)](fd(0xe2)),this[fd(0xe2)]=0x1,this['l']=new Map(),this['D']=0x0,this['P']=!0x1,this['V']=0x49*Math['PI']/0xb4,this['K']=m(),this['j']=document[fd(0xe9)]('c'),y(this),j(this),h(this,fd(0x119)),requestAnimationFrame(f0=>l(this,f0));}['U'](f0){f0['preventDefault']();}['W'](f0){const fV=r;f0[fV(0xc3)]!==fV(0xcf)&&d(this,f0[fV(0xe6)],f0['pageX'],f0[fV(0xbf)]);}['X'](f0){const fc=r;d(this,f0['pointerType']==='mouse'?fc(0xcf):f0[fc(0xe6)],f0[fc(0x105)],f0['pageY']);}['O'](f0){const fi=r;f0[fi(0xc3)]!==fi(0xcf)&&(f0=this['l']['get'](f0[fi(0xe6)]))&&(f0['u']=!0x0);}['Y'](f0){const fE=r;if(f0=this['l'][fE(0xbb)](f0[fE(0xc3)]==='mouse'?fE(0xcf):f0[fE(0xe6)]))f0['u']=!0x0;}}window[fa(0x101)](fa(0xe3),()=>new i());}['call'](this);