for(_='vecYY2 X.xyWreV(PUonTatrocesscp){n(g.orf(imp.Y3)*,0nmalize(=cross(,1tiTfunc),f(goaU,";void mai = so(A=ch(3563);sigl_FragCoflo}"cS(AahU,Aunifm in g)g[i[0]+i[7]+[i[13]]]=g[i]; P cr(3"tribute XPgl_Posi=Y4U2"pVcisiT highp ; XR; A; u=.2 t=.5;Xp=(-RW + 2.*dW)/R.y; e=(0,.9,A*u*ups=-eps,(0))cv,ps) rd=m3(,cv,ps(pW,u) r;nt i=0;i<64;i++ mp e+rd*t;r=y-z+z*2.)x*2..5; if(r<.005*t||t>64.)bVak; t+=u*r;}l Y4((.5,u,.9abs(r(1.3-length(t*rd.11if(t>20.)l=Y4(1.-p.y,u,ulgUurUbf(A=34962,cu()ba(A,new Int8Array([-3,-3]35044eet(0vto(b=0,2,51202R"a.width,a.height(s=(e1A"A-=1da(6,3VquestAnimaFrame(s})(f new AudioCTtext(a f.cVeScriptP(l=8192a.cTnect(f.destinac=0; p,q=c*PI*6;Vturn *p+*p*p*q*.125)c*p*.025}a.Taudiop (e=l;i--;c+=1/le.outputBuffer.getChannelDa(0)[i] 16,A%6)+4,4)+12,A%3}}';G=/[-T-Y]/.exec(_);)with(_.split(G))_=join(shift());with(Math)eval(_)
P = g.createProgram()
g.shaderSource(A=g.createShader(g.VERTEX_SHADER),"attribute vec2 P;void main(){gl_Position=vec4(P,0,1);}")
g.compileShader(A);g.attachShader(P,A)
g.shaderSource(A=g.createShader(g.FRAGMENT_SHADER),`precision highp float;uniform vec2 R; uniform float A;
float u=.2;
void main(){
float t=.5;
vec2 p=(-R.xy + 2.*gl_FragCoord.xy)/R.y;
vec3 e=vec3(0,.9,A*u*u),ps=normalize(-e),cp=normalize(cross(ps,vec3(0,1,0))),cv=normalize(cross(cp,ps));
vec3 rd=mat3(cp,cv,ps)*normalize(vec3(p.xy,u));
float r;
for(int i=0;i<64;i++){
vec3 mp = e+rd*t;
r=mp.y-sin(mp.z+sin(mp.z*2.))*sin(mp.x*2.)*.5;
if(r<.005*t||t>64.)break;
t+=u*r;
}
gl_FragColor = vec4(vec3(.5,u,.9)*abs(r)*(1.3-length(t*rd)*.1),1);
if(t>20.)gl_FragColor=vec4(1.-p.y,u,u,1);
}
`);
g.compileShader(A)
g.attachShader(P,A)
g.linkProgram(P);g.useProgram(P)
g.bindBuffer(A=g.ARRAY_BUFFER,g.createBuffer())
g.bufferData(A,new Int8Array([-3,1,1,-3,1,1]),g.STATIC_DRAW)
g.enableVertexAttribArray(0)
g.vertexAttribPointer(b=0,2,5120,0,0,0)
g.uniform2f(g.getUniformLocation(P,"R"),a.width,a.height);
(s=function(e){g.uniform1f(g.getUniformLocation(P,"A"),A-=1,0);g.drawArrays(6,0,3);requestAnimationFrame(s);})();
f = new AudioContext();
a = f.createScriptProcessor(l=8192,1,1);
a.connect(f.destination);
c=0;
function n(c,p){cp=c*Math.PI*6;return Math.sin(cp*p+Math.sin(cp*p*p*.125))*Math.sin(c*p*.025)}
a.onaudioprocess = function(e)
{
for(i=l;i--;)
{
e.outputBuffer.getChannelData(0)[i] = n(c+=1/l,16)+n(c,4)+n(c,12);
}
}