-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathwebgl-rsm.js
280 lines (280 loc) · 143 KB
/
webgl-rsm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
(function e$$0(c,f,a){function b(g,r){if(!f[g]){if(!c[g]){var h="function"==typeof require&&require;if(!r&&h)return h(g,!0);if(e)return e(g,!0);h=Error("Cannot find module '"+g+"'");throw h.code="MODULE_NOT_FOUND",h;}h=f[g]={exports:{}};c[g][0].call(h.exports,function(a){var e=c[g][1][a];return b(e?e:a)},h,h.exports,e$$0,c,f,a)}return f[g].exports}for(var e="function"==typeof require&&require,g=0;g<a.length;g++)b(a[g]);return b})({1:[function(d,c,f){function a(a,b,e){this.elements=a;this.position=
b;this.normal=e}c=document.body.appendChild(document.createElement("canvas"));f=document.createElement("div");f.innerHTML='<a href="https://github.com/Erkaman/webgl-rsm"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://camo.githubusercontent.com/82b228a3648bf44fc1163ef44c62fcc60081495e/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_left_red_aa0000.png"></a>';
document.body.appendChild(f);f=d("canvas-fit");var b=d("regl")({canvas:c,extensions:["oes_texture_float","webgl_draw_buffers"]}),e=d("gl-mat4"),g=d("gl-quat"),k=d("seed-random")("myseed");window.addEventListener("resize",f(c),!1);var r=d("angle-normals");c=[];for(f=0;64>f;f++){var h=k(),z=k();c.push([h*Math.sin(2*Math.PI*z),h*Math.cos(2*Math.PI*z),h])}for(k=1;64>k;)k*=2;h=[];for(f=0;f<k;f++)z=64>f?c[f]:[0,0,0],h.push(z[0]),h.push(z[1]),h.push(z[2]),h.push(0);c=b.texture({width:k,height:1,wrap:"repeat",
mag:"nearest",min:"nearest",type:"float",data:h});var B=b.framebuffer({color:[b.texture({type:"float"}),b.texture({type:"float"}),b.texture({type:"float"}),b.texture({type:"float"})],depth:!0}),n=b.framebuffer({color:[b.texture({type:"float"}),b.texture({type:"float"}),b.texture({type:"float"})],depth:!0}),u=d("regl-camera")(b,{center:[0,0,0],distance:140,theta:.17,phi:.7,near:.01,far:1E3}),p=b({context:{lightDir:[.23,.79,.55]},uniforms:{ambientLightAmount:.3,diffuseLightAmount:.7,indirectLightAmount:3,
sampleRadius:300,lightDir:b.context("lightDir"),lightView:function(a){return e.lookAt([],a.lightDir,[0,0,0],[0,1,0])},lightProjection:e.ortho([],-60,90,-80,90,-130,30)}}),m=[],v=[],w=[];v.push([-1,0,-1]);v.push([1,0,-1]);v.push([-1,0,1]);v.push([1,0,1]);v.push([-1,0,-1]);v.push([1,0,-1]);v.push([-1,0,1]);v.push([1,0,1]);f=[0,1,0];h=[0,-1,0];w.push(f);w.push(f);w.push(f);w.push(f);w.push(h);w.push(h);w.push(h);w.push(h);m.push([3,1,0]);m.push([0,2,3]);m.push([4,5,7]);m.push([7,6,4]);var t=b({frag:"\n precision mediump float;\n varying vec2 uv;\n\n uniform vec3 color;\n uniform vec3 lightDir;\n\n uniform sampler2D shadowMap;\n\n uniform sampler2D normalTex;\n uniform sampler2D albedoTex;\n uniform sampler2D worldPosTex;\n\n uniform float ambientLightAmount;\n uniform float diffuseLightAmount;\n\n#define texelSize 1.0 / float(1024)\n\n uniform float minBias;\n uniform float maxBias;\n\n uniform mat4 lightProjection, lightView;\n\n float shadowSample(vec2 co, float z, float bias) {\n float a = texture2D(shadowMap, co).z;\n float b = z;\n return step(b-bias, a);\n }\n\n void main () {\n\n vec3 n = texture2D(normalTex, uv).xyz;\n vec3 albedo = texture2D(albedoTex, uv).xyz;\n vec3 p = texture2D(worldPosTex, uv).xyz;\n\n vec3 ambient = ambientLightAmount * albedo;\n float cosTheta = dot(n, lightDir);\n\n vec4 shadowCoord = (lightProjection * lightView * vec4(p,1.0) );\n shadowCoord.xyz /= shadowCoord.w;\n\n float v = 1.0; // shadow value\n vec2 co = shadowCoord.xy * 0.5 + 0.5;\n // counteract shadow acne.\n float bias = max(maxBias * (1.0 - cosTheta), minBias);\n float v0 = shadowSample(co + texelSize * vec2(0.0, 0.0), shadowCoord.z, bias);\n float v1 = shadowSample(co + texelSize * vec2(1.0, 0.0), shadowCoord.z, bias);\n float v2 = shadowSample(co + texelSize * vec2(0.0, 1.0), shadowCoord.z, bias);\n float v3 = shadowSample(co + texelSize * vec2(1.0, 1.0), shadowCoord.z, bias);\n v = (v0 + v1 + v2 + v3) * (1.0 / 4.0);\n\n vec3 diffuse = diffuseLightAmount * albedo * clamp(cosTheta , 0.0, 1.0 );\n\n gl_FragColor = vec4(ambient + diffuse *v, 1.0);\n }",
vert:"\nprecision mediump float;\nattribute vec2 position;\nvarying vec2 uv;\nvoid main() {\n uv = 0.5 * (position + 1.0);\n gl_Position = vec4(position, 0, 1);\n}",attributes:{position:[-4,-4,4,-4,0,4]},uniforms:{shadowMap:B.color[0],normalTex:n.color[0],albedoTex:n.color[1],worldPosTex:n.color[2],minBias:function(){return.005},maxBias:function(){return.03}},depth:{enable:!1},count:3}),y=b({frag:"\n precision mediump float;\n varying vec2 uv;\n\n uniform vec3 color;\n uniform vec3 lightDir;\n\n uniform sampler2D shadowMap;\n\n uniform sampler2D gNormalTex;\n uniform sampler2D gWorldPosTex;\n\n uniform sampler2D rNormalTex;\n uniform sampler2D rWorldPosTex;\n uniform sampler2D rFluxTex;\n uniform sampler2D samplesTex;\n\n uniform float indirectLightAmount;\n uniform float sampleRadius;\n\n#define texelSize 1.0 / float(1024)\n\n uniform mat4 lightProjection, lightView;\n\n vec3 indirect() {\n vec3 P = texture2D(gWorldPosTex, uv).xyz;\n vec3 N = texture2D(gNormalTex, uv).xyz;\n\n vec4 texPos = (lightProjection * lightView * vec4(P, 1.0));\n texPos.xyz /= texPos.w;\n\n vec3 indirect = vec3(0.0, 0.0, 0.0);\n texPos.xyz = texPos.xyz * 0.5 + 0.5;\n\n for(int i = 0; i < int(64); i++) {\n vec3 s = texture2D(samplesTex, vec2( float(i) / float("+
k+"),0.0) ).xyz;\n vec2 offset = s.xy;\n float weight = s.z;\n\n vec2 coords = texPos.xy + offset * sampleRadius * texelSize;\n\n vec3 vplPos = texture2D(rWorldPosTex, coords).xyz;\n vec3 vplNormal = texture2D(rNormalTex, coords).xyz;\n vec3 vplFlux = texture2D(rFluxTex, coords).xyz;\n\n // formula (1) from the paper. except that we normalize inside the dot product,\n // instead of outside, like they seem to do.\n vec3 result = vplFlux * (max(0.0, dot( vplNormal, normalize(P - vplPos) ))\n * max(0.0, dot(N, normalize(vplPos - P) )));\n\n // like in the paper, we weight by xi1 squared.\n result *= weight * weight;\n result *= (1.0 / float(64));\n indirect +=result;\n }\n return clamp(indirect *indirectLightAmount, 0.0, 1.0);\n }\n\n void main () {\n gl_FragColor = vec4( indirect(), 1.0);\n }",
vert:"\nprecision mediump float;\nattribute vec2 position;\nvarying vec2 uv;\nvoid main() {\n uv = 0.5 * (position + 1.0);\n gl_Position = vec4(position, 0, 1);\n}",attributes:{position:[-4,-4,4,-4,0,4]},uniforms:{gNormalTex:n.color[0],gWorldPosTex:n.color[2],rNormalTex:B.color[1],rFluxTex:B.color[2],rWorldPosTex:B.color[3],samplesTex:c},depth:{enable:!1},count:3,blend:{enable:!0,func:{src:1,dst:1}}}),A=b({frag:"\n#extension GL_EXT_draw_buffers : require\n precision mediump float;\n varying vec3 vPosition;\n varying vec3 vNormal;\n varying vec3 vWorldSpacePosition;\n\n uniform vec3 color;\n\n void main () {\n gl_FragData[0] = vec4(vec3(vPosition.z), 1.0);\n gl_FragData[1] = vec4(vec3(vNormal.xyz), 1.0);\n gl_FragData[2] = vec4(vec3(color.xyz), 1.0);\n gl_FragData[3] = vec4(vec3(vWorldSpacePosition.xyz), 1.0);\n }",
vert:"\n precision mediump float;\n attribute vec3 position;\n attribute vec3 normal;\n varying vec3 vPosition;\n varying vec3 vWorldSpacePosition;\n\n varying vec3 vNormal;\n uniform mat4 lightProjection, lightView, model, normalMatrix;\n void main() {\n vec4 worldSpacePos = model * vec4(position , 1);\n vec4 p = lightProjection * lightView * worldSpacePos;\n vNormal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n\n vPosition = p.xyz / p.w;\n vWorldSpacePosition = worldSpacePos.xyz;\n gl_Position = p;\n }",
framebuffer:B}),C=b({frag:"\n#extension GL_EXT_draw_buffers : require\n precision mediump float;\n varying vec3 vPosition;\n varying vec3 vNormal;\n varying vec3 vWorldSpacePosition;\n\n uniform vec3 color;\n\n void main () {\n gl_FragData[0] = vec4(vec3(vNormal.xyz), 1.0);\n gl_FragData[1] = vec4(vec3(color.xyz), 1.0);\n gl_FragData[2] = vec4(vec3(vWorldSpacePosition.xyz), 1.0);\n }",vert:"\n precision mediump float;\n attribute vec3 position;\n attribute vec3 normal;\n varying vec3 vPosition;\n varying vec3 vWorldSpacePosition;\n\n varying vec3 vNormal;\n uniform mat4 model, normalMatrix, projection, view;\n void main() {\n vec4 worldSpacePos = model * vec4(position , 1);\n vec4 p = projection * view * worldSpacePos;\n vNormal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n\n vPosition = p.xyz / p.w;\n vWorldSpacePosition = worldSpacePos.xyz;\n gl_Position = p;\n }",
framebuffer:n});a.prototype.draw=b({context:{model:function(a,b,k){a=e.identity([]);k=g.create();g.rotateX(k,k,b.rotation[0]);g.rotateY(k,k,b.rotation[1]);g.rotateZ(k,k,b.rotation[2]);var h=b.translate;b=[b.scale,b.scale,b.scale];e.identity(a);var r=e.create();e.fromQuat(r,k);e.translate(a,a,h);e.multiply(a,a,r);e.scale(a,a,b);return a}},uniforms:{model:b.context("model"),normalMatrix:function(a){return e.transpose([],e.invert([],a.model))},color:b.prop("color")},attributes:{position:b["this"]("position"),
normal:b["this"]("normal")},elements:b["this"]("elements"),cull:{enable:!0}});d("resl")({manifest:{bunnyJson:{type:"text",src:"bunny.json",parser:JSON.parse},lucyJson:{type:"text",src:"lucy.json",parser:JSON.parse}},onDone:function(e){var g=e.bunnyJson;e=e.lucyJson;var k=new a(g.cells,g.positions,r(g.cells,g.positions)),h=new a(e.cells,e.positions,r(e.cells,e.positions)),z=new a(m,v,w);b.frame(function(a){var e=a.viewportWidth;a=a.viewportHeight;B.resize(1024,1024);n.resize(e,a);var g=function(){var a=
[.6,.6,.6];k.draw({scale:2,translate:[0,8,30],color:a,rotation:[0,.8,0]});h.draw({scale:1,translate:[30,0,0],color:a,rotation:[0,0,0]});z.draw({scale:50,translate:[25,0,25],color:[1,1,1],rotation:[0,0,0]});z.draw({scale:50,translate:[25,50,-25],color:[1,0,0],rotation:[1.57,0,0]});z.draw({scale:50,translate:[-25,50,25],color:[0,0,1],rotation:[0,0,1.57]})};u(function(){b.clear({color:[0,0,0,255],depth:1});p(function(){A({},function(){b.clear({color:[0,0,0,255],depth:1});g()});C({},function(){b.clear({color:[0,
0,0,255],depth:1});g()});t();y()})})})}})},{"angle-normals":2,"canvas-fit":3,"gl-mat4":15,"gl-quat":40,regl:77,"regl-camera":76,resl:78,"seed-random":79}],2:[function(d,c,f){function a(a,e,g){return Math.sqrt(Math.pow(a,2)+Math.pow(e,2)+Math.pow(g,2))}c.exports=function(b,e){for(var g=e.length,k=b.length,r=Array(g),h=0;h<g;++h)r[h]=[0,0,0];for(h=0;h<k;++h){var z=b[h],c=e[z[0]],d=e[z[1]],u=e[z[2]],p=c[0]-d[0],m=c[1]-d[1],f=c[2]-d[2],w=a(p,m,f),t=d[0]-u[0],y=d[1]-u[1],A=d[2]-u[2],C=a(t,y,A),x=a(u[0]-
c[0],u[1]-c[1],u[2]-c[2]);1E-6>Math.min(w,C,x)||(u=.5*(w+C+x),d=Math.sqrt((u-w)*(u-C)*(u-x)/u),c=m*A-f*y,f=f*t-p*A,p=p*y-m*t,m=a(c,f,p),c/=m,f/=m,p/=m,m=r[z[0]],C=Math.atan2(d,u-C),t=f,y=p,m[0]+=C*c,m[1]+=C*t,m[2]+=C*y,C=r[z[1]],x=Math.atan2(d,u-x),m=f,t=p,C[0]+=x*c,C[1]+=x*m,C[2]+=x*t,z=r[z[2]],w=Math.atan2(d,u-w),u=f,d=p,z[0]+=w*c,z[1]+=w*u,z[2]+=w*d)}for(h=0;h<g;++h)k=r[h],w=Math.sqrt(Math.pow(k[0],2)+Math.pow(k[1],2)+Math.pow(k[2],2)),1E-8>w?(k[0]=1,k[1]=0,k[2]=0):(k[0]/=w,k[1]/=w,k[2]/=w);return r}},
{}],3:[function(d,c,f){var a=d("element-size");c.exports=function(e,g,k){function r(){var g=r.parent||e.parentNode;if("function"===typeof g)var k=g(b)||b,g=k[0],k=k[1];else g&&g!==document.body?(k=a(g),g=k[0]|0,k=k[1]|0):(g=window.innerWidth,k=window.innerHeight);h?(e.setAttribute("width",g*r.scale+"px"),e.setAttribute("height",k*r.scale+"px")):(e.width=g*r.scale,e.height=k*r.scale);e.style.width=g+"px";e.style.height=k+"px";return r}var h="SVG"===e.nodeName.toUpperCase();e.style.position=e.style.position||
"absolute";e.style.top=0;e.style.left=0;r.scale=parseFloat(k||1);r.parent=g;return r()};var b=new Float32Array(2)},{"element-size":4}],4:[function(d,c,f){function a(a){return parseFloat(a)||0}c.exports=function(b){if(b===window||b===document.body)return[window.innerWidth,window.innerHeight];if(!b.parentNode){var e=!0;document.body.appendChild(b)}var g=b.getBoundingClientRect(),k=getComputedStyle(b),r=(g.height|0)+a(k.getPropertyValue("margin-top"))+a(k.getPropertyValue("margin-bottom")),g=(g.width|
0)+a(k.getPropertyValue("margin-left"))+a(k.getPropertyValue("margin-right"));e&&document.body.removeChild(b);return[g,r]}},{}],5:[function(d,c,f){c.exports=function(){var a=new Float32Array(9);a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a}},{}],6:[function(d,c,f){c.exports=function(a,b){var e=b[0],g=b[1],k=b[2],r=b[3],h=b[4],c=b[5],d=b[6],n=b[7],f=b[8],p=b[9],m=b[10],v=b[11],w=b[12],t=b[13],y=b[14],A=b[15];a[0]=c*(m*A-v*y)-p*(d*A-n*y)+t*(d*v-n*m);a[1]=-(g*(m*A-v*y)-p*(k*
A-r*y)+t*(k*v-r*m));a[2]=g*(d*A-n*y)-c*(k*A-r*y)+t*(k*n-r*d);a[3]=-(g*(d*v-n*m)-c*(k*v-r*m)+p*(k*n-r*d));a[4]=-(h*(m*A-v*y)-f*(d*A-n*y)+w*(d*v-n*m));a[5]=e*(m*A-v*y)-f*(k*A-r*y)+w*(k*v-r*m);a[6]=-(e*(d*A-n*y)-h*(k*A-r*y)+w*(k*n-r*d));a[7]=e*(d*v-n*m)-h*(k*v-r*m)+f*(k*n-r*d);a[8]=h*(p*A-v*t)-f*(c*A-n*t)+w*(c*v-n*p);a[9]=-(e*(p*A-v*t)-f*(g*A-r*t)+w*(g*v-r*p));a[10]=e*(c*A-n*t)-h*(g*A-r*t)+w*(g*n-r*c);a[11]=-(e*(c*v-n*p)-h*(g*v-r*p)+f*(g*n-r*c));a[12]=-(h*(p*y-m*t)-f*(c*y-d*t)+w*(c*m-d*p));a[13]=e*(p*
y-m*t)-f*(g*y-k*t)+w*(g*m-k*p);a[14]=-(e*(c*y-d*t)-h*(g*y-k*t)+w*(g*d-k*c));a[15]=e*(c*m-d*p)-h*(g*m-k*p)+f*(g*d-k*c);return a}},{}],7:[function(d,c,f){c.exports=function(a){var b=new Float32Array(16);b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b}},{}],8:[function(d,c,f){c.exports=function(a,b){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];a[4]=b[4];a[5]=b[5];a[6]=b[6];
a[7]=b[7];a[8]=b[8];a[9]=b[9];a[10]=b[10];a[11]=b[11];a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a}},{}],9:[function(d,c,f){c.exports=function(){var a=new Float32Array(16);a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a}},{}],10:[function(d,c,f){c.exports=function(a){var b=a[0],e=a[1],g=a[2],k=a[3],r=a[4],h=a[5],c=a[6],d=a[7],n=a[8],f=a[9],p=a[10],m=a[11],v=a[12],w=a[13],t=a[14];a=a[15];return(b*h-e*r)*(p*a-
m*t)-(b*c-g*r)*(f*a-m*w)+(b*d-k*r)*(f*t-p*w)+(e*c-g*h)*(n*a-m*v)-(e*d-k*h)*(n*t-p*v)+(g*d-k*c)*(n*w-f*v)}},{}],11:[function(d,c,f){c.exports=function(a,b){var e=b[0],g=b[1],k=b[2],r=b[3],h=e+e,c=g+g,d=k+k,e=e*h,n=g*h,g=g*c,f=k*h,p=k*c,k=k*d,h=r*h,c=r*c,r=r*d;a[0]=1-g-k;a[1]=n+r;a[2]=f-c;a[3]=0;a[4]=n-r;a[5]=1-e-k;a[6]=p+h;a[7]=0;a[8]=f+c;a[9]=p-h;a[10]=1-e-g;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a}},{}],12:[function(d,c,f){c.exports=function(a,b,e){var g=b[0],k=b[1],r=b[2],h=b[3],c=g+g,d=
k+k,f=r+r;b=g*c;var u=g*d,g=g*f,p=k*d,k=k*f,r=r*f,c=h*c,d=h*d,h=h*f;a[0]=1-(p+r);a[1]=u+h;a[2]=g-d;a[3]=0;a[4]=u-h;a[5]=1-(b+r);a[6]=k+c;a[7]=0;a[8]=g+d;a[9]=k-c;a[10]=1-(b+p);a[11]=0;a[12]=e[0];a[13]=e[1];a[14]=e[2];a[15]=1;return a}},{}],13:[function(d,c,f){c.exports=function(a,b,e,g,k,r,h){var c=1/(e-b),d=1/(k-g),f=1/(r-h);a[0]=2*r*c;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=2*r*d;a[6]=0;a[7]=0;a[8]=(e+b)*c;a[9]=(k+g)*d;a[10]=(h+r)*f;a[11]=-1;a[12]=0;a[13]=0;a[14]=h*r*2*f;a[15]=0;return a}},{}],14:[function(d,
c,f){c.exports=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a}},{}],15:[function(d,c,f){c.exports={create:d("./create"),clone:d("./clone"),copy:d("./copy"),identity:d("./identity"),transpose:d("./transpose"),invert:d("./invert"),adjoint:d("./adjoint"),determinant:d("./determinant"),multiply:d("./multiply"),translate:d("./translate"),scale:d("./scale"),rotate:d("./rotate"),rotateX:d("./rotateX"),rotateY:d("./rotateY"),
rotateZ:d("./rotateZ"),fromRotationTranslation:d("./fromRotationTranslation"),fromQuat:d("./fromQuat"),frustum:d("./frustum"),perspective:d("./perspective"),perspectiveFromFieldOfView:d("./perspectiveFromFieldOfView"),ortho:d("./ortho"),lookAt:d("./lookAt"),str:d("./str")}},{"./adjoint":6,"./clone":7,"./copy":8,"./create":9,"./determinant":10,"./fromQuat":11,"./fromRotationTranslation":12,"./frustum":13,"./identity":14,"./invert":16,"./lookAt":17,"./multiply":18,"./ortho":19,"./perspective":20,"./perspectiveFromFieldOfView":21,
"./rotate":22,"./rotateX":23,"./rotateY":24,"./rotateZ":25,"./scale":26,"./str":27,"./translate":28,"./transpose":29}],16:[function(d,c,f){c.exports=function(a,b){var e=b[0],g=b[1],k=b[2],c=b[3],h=b[4],d=b[5],f=b[6],n=b[7],u=b[8],p=b[9],m=b[10],v=b[11],w=b[12],t=b[13],y=b[14],A=b[15],C=e*d-g*h,x=e*f-k*h,D=e*n-c*h,G=g*f-k*d,J=g*n-c*d,W=k*n-c*f,Q=u*t-p*w,O=u*y-m*w,X=u*A-v*w,da=p*y-m*t,U=p*A-v*t,R=m*A-v*y,H=C*R-x*U+D*da+G*X-J*O+W*Q;if(!H)return null;H=1/H;a[0]=(d*R-f*U+n*da)*H;a[1]=(k*U-g*R-c*da)*H;
a[2]=(t*W-y*J+A*G)*H;a[3]=(m*J-p*W-v*G)*H;a[4]=(f*X-h*R-n*O)*H;a[5]=(e*R-k*X+c*O)*H;a[6]=(y*D-w*W-A*x)*H;a[7]=(u*W-m*D+v*x)*H;a[8]=(h*U-d*X+n*Q)*H;a[9]=(g*X-e*U-c*Q)*H;a[10]=(w*J-t*D+A*C)*H;a[11]=(p*D-u*J-v*C)*H;a[12]=(d*O-h*da-f*Q)*H;a[13]=(e*da-g*O+k*Q)*H;a[14]=(t*x-w*G-y*C)*H;a[15]=(u*G-p*x+m*C)*H;return a}},{}],17:[function(d,c,f){var a=d("./identity");c.exports=function(b,e,g,k){var c,h,d,f,n,u,p,m,v=e[0],w=e[1];e=e[2];d=k[0];f=k[1];h=k[2];p=g[0];k=g[1];c=g[2];if(1E-6>Math.abs(v-p)&&1E-6>Math.abs(w-
k)&&1E-6>Math.abs(e-c))return a(b);g=v-p;k=w-k;p=e-c;m=1/Math.sqrt(g*g+k*k+p*p);g*=m;k*=m;p*=m;c=f*p-h*k;h=h*g-d*p;d=d*k-f*g;(m=Math.sqrt(c*c+h*h+d*d))?(m=1/m,c*=m,h*=m,d*=m):d=h=c=0;f=k*d-p*h;n=p*c-g*d;u=g*h-k*c;(m=Math.sqrt(f*f+n*n+u*u))?(m=1/m,f*=m,n*=m,u*=m):u=n=f=0;b[0]=c;b[1]=f;b[2]=g;b[3]=0;b[4]=h;b[5]=n;b[6]=k;b[7]=0;b[8]=d;b[9]=u;b[10]=p;b[11]=0;b[12]=-(c*v+h*w+d*e);b[13]=-(f*v+n*w+u*e);b[14]=-(g*v+k*w+p*e);b[15]=1;return b}},{"./identity":14}],18:[function(d,c,f){c.exports=function(a,b,
e){var g=b[0],k=b[1],c=b[2],h=b[3],d=b[4],f=b[5],n=b[6],u=b[7],p=b[8],m=b[9],v=b[10],w=b[11],t=b[12],y=b[13],A=b[14];b=b[15];var C=e[0],x=e[1],D=e[2],G=e[3];a[0]=C*g+x*d+D*p+G*t;a[1]=C*k+x*f+D*m+G*y;a[2]=C*c+x*n+D*v+G*A;a[3]=C*h+x*u+D*w+G*b;C=e[4];x=e[5];D=e[6];G=e[7];a[4]=C*g+x*d+D*p+G*t;a[5]=C*k+x*f+D*m+G*y;a[6]=C*c+x*n+D*v+G*A;a[7]=C*h+x*u+D*w+G*b;C=e[8];x=e[9];D=e[10];G=e[11];a[8]=C*g+x*d+D*p+G*t;a[9]=C*k+x*f+D*m+G*y;a[10]=C*c+x*n+D*v+G*A;a[11]=C*h+x*u+D*w+G*b;C=e[12];x=e[13];D=e[14];G=e[15];
a[12]=C*g+x*d+D*p+G*t;a[13]=C*k+x*f+D*m+G*y;a[14]=C*c+x*n+D*v+G*A;a[15]=C*h+x*u+D*w+G*b;return a}},{}],19:[function(d,c,f){c.exports=function(a,b,e,g,k,c,d){var f=1/(b-e),B=1/(g-k),n=1/(c-d);a[0]=-2*f;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=-2*B;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=2*n;a[11]=0;a[12]=(b+e)*f;a[13]=(k+g)*B;a[14]=(d+c)*n;a[15]=1;return a}},{}],20:[function(d,c,f){c.exports=function(a,b,e,g,k){b=1/Math.tan(b/2);var c=1/(g-k);a[0]=b/e;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=b;a[6]=0;a[7]=0;a[8]=0;a[9]=
0;a[10]=(k+g)*c;a[11]=-1;a[12]=0;a[13]=0;a[14]=2*k*g*c;a[15]=0;return a}},{}],21:[function(d,c,f){c.exports=function(a,b,e,g){var k=Math.tan(b.upDegrees*Math.PI/180),c=Math.tan(b.downDegrees*Math.PI/180),d=Math.tan(b.leftDegrees*Math.PI/180);b=Math.tan(b.rightDegrees*Math.PI/180);var f=2/(d+b),B=2/(k+c);a[0]=f;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=B;a[6]=0;a[7]=0;a[8]=-((d-b)*f*.5);a[9]=(k-c)*B*.5;a[10]=g/(e-g);a[11]=-1;a[12]=0;a[13]=0;a[14]=g*e/(e-g);a[15]=0;return a}},{}],22:[function(d,c,f){c.exports=
function(a,b,e,g){var k=g[0],c=g[1];g=g[2];var d=Math.sqrt(k*k+c*c+g*g),f,B,n,u,p,m,v,w,t,y,A,C,x,D,G,J,W,Q,O,X;if(1E-6>Math.abs(d))return null;d=1/d;k*=d;c*=d;g*=d;f=Math.sin(e);B=Math.cos(e);n=1-B;e=b[0];d=b[1];u=b[2];p=b[3];m=b[4];v=b[5];w=b[6];t=b[7];y=b[8];A=b[9];C=b[10];x=b[11];D=k*k*n+B;G=c*k*n+g*f;J=g*k*n-c*f;W=k*c*n-g*f;Q=c*c*n+B;O=g*c*n+k*f;X=k*g*n+c*f;k=c*g*n-k*f;c=g*g*n+B;a[0]=e*D+m*G+y*J;a[1]=d*D+v*G+A*J;a[2]=u*D+w*G+C*J;a[3]=p*D+t*G+x*J;a[4]=e*W+m*Q+y*O;a[5]=d*W+v*Q+A*O;a[6]=u*W+w*Q+
C*O;a[7]=p*W+t*Q+x*O;a[8]=e*X+m*k+y*c;a[9]=d*X+v*k+A*c;a[10]=u*X+w*k+C*c;a[11]=p*X+t*k+x*c;b!==a&&(a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);return a}},{}],23:[function(d,c,f){c.exports=function(a,b,e){var g=Math.sin(e);e=Math.cos(e);var c=b[4],d=b[5],h=b[6],f=b[7],B=b[8],n=b[9],u=b[10],p=b[11];b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);a[4]=c*e+B*g;a[5]=d*e+n*g;a[6]=h*e+u*g;a[7]=f*e+p*g;a[8]=B*e-c*g;a[9]=n*e-d*g;a[10]=u*e-h*g;a[11]=p*e-
f*g;return a}},{}],24:[function(d,c,f){c.exports=function(a,b,e){var g=Math.sin(e);e=Math.cos(e);var c=b[0],d=b[1],h=b[2],f=b[3],B=b[8],n=b[9],u=b[10],p=b[11];b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);a[0]=c*e-B*g;a[1]=d*e-n*g;a[2]=h*e-u*g;a[3]=f*e-p*g;a[8]=c*g+B*e;a[9]=d*g+n*e;a[10]=h*g+u*e;a[11]=f*g+p*e;return a}},{}],25:[function(d,c,f){c.exports=function(a,b,e){var g=Math.sin(e);e=Math.cos(e);var c=b[0],d=b[1],h=b[2],f=b[3],B=b[4],n=b[5],
u=b[6],p=b[7];b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);a[0]=c*e+B*g;a[1]=d*e+n*g;a[2]=h*e+u*g;a[3]=f*e+p*g;a[4]=B*e-c*g;a[5]=n*e-d*g;a[6]=u*e-h*g;a[7]=p*e-f*g;return a}},{}],26:[function(d,c,f){c.exports=function(a,b,e){var g=e[0],c=e[1];e=e[2];a[0]=b[0]*g;a[1]=b[1]*g;a[2]=b[2]*g;a[3]=b[3]*g;a[4]=b[4]*c;a[5]=b[5]*c;a[6]=b[6]*c;a[7]=b[7]*c;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];
return a}},{}],27:[function(d,c,f){c.exports=function(a){return"mat4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+")"}},{}],28:[function(d,c,f){c.exports=function(a,b,e){var g=e[0],c=e[1];e=e[2];var d,h,f,B,n,u,p,m,v,w,t,y;b===a?(a[12]=b[0]*g+b[4]*c+b[8]*e+b[12],a[13]=b[1]*g+b[5]*c+b[9]*e+b[13],a[14]=b[2]*g+b[6]*c+b[10]*e+b[14],a[15]=b[3]*g+b[7]*c+b[11]*e+b[15]):(d=b[0],h=b[1],f=b[2],
B=b[3],n=b[4],u=b[5],p=b[6],m=b[7],v=b[8],w=b[9],t=b[10],y=b[11],a[0]=d,a[1]=h,a[2]=f,a[3]=B,a[4]=n,a[5]=u,a[6]=p,a[7]=m,a[8]=v,a[9]=w,a[10]=t,a[11]=y,a[12]=d*g+n*c+v*e+b[12],a[13]=h*g+u*c+w*e+b[13],a[14]=f*g+p*c+t*e+b[14],a[15]=B*g+m*c+y*e+b[15]);return a}},{}],29:[function(d,c,f){c.exports=function(a,b){if(a===b){var e=b[1],g=b[2],c=b[3],d=b[6],h=b[7],f=b[11];a[1]=b[4];a[2]=b[8];a[3]=b[12];a[4]=e;a[6]=b[9];a[7]=b[13];a[8]=g;a[9]=d;a[11]=b[14];a[12]=c;a[13]=h;a[14]=f}else a[0]=b[0],a[1]=b[4],a[2]=
b[8],a[3]=b[12],a[4]=b[1],a[5]=b[5],a[6]=b[9],a[7]=b[13],a[8]=b[2],a[9]=b[6],a[10]=b[10],a[11]=b[14],a[12]=b[3],a[13]=b[7],a[14]=b[11],a[15]=b[15];return a}},{}],30:[function(d,c,f){c.exports=d("gl-vec4/add")},{"gl-vec4/add":61}],31:[function(d,c,f){c.exports=function(a,b){var e=b[0],c=b[1],d=b[2];a[0]=e;a[1]=c;a[2]=d;a[3]=Math.sqrt(Math.abs(1-e*e-c*c-d*d));return a}},{}],32:[function(d,c,f){c.exports=d("gl-vec4/clone")},{"gl-vec4/clone":62}],33:[function(d,c,f){c.exports=function(a,b){a[0]=-b[0];
a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a}},{}],34:[function(d,c,f){c.exports=d("gl-vec4/copy")},{"gl-vec4/copy":63}],35:[function(d,c,f){c.exports=function(){var a=new Float32Array(4);a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},{}],36:[function(d,c,f){c.exports=d("gl-vec4/dot")},{"gl-vec4/dot":64}],37:[function(d,c,f){c.exports=function(a,b){var e=b[0]+b[4]+b[8];if(0<e)e=Math.sqrt(e+1),a[3]=.5*e,e=.5/e,a[0]=(b[5]-b[7])*e,a[1]=(b[6]-b[2])*e,a[2]=(b[1]-b[3])*e;else{var c=0;b[4]>b[0]&&(c=1);b[8]>b[3*c+c]&&
(c=2);var d=(c+1)%3,f=(c+2)%3,e=Math.sqrt(b[3*c+c]-b[3*d+d]-b[3*f+f]+1);a[c]=.5*e;e=.5/e;a[3]=(b[3*d+f]-b[3*f+d])*e;a[d]=(b[3*d+c]+b[3*c+d])*e;a[f]=(b[3*f+c]+b[3*c+f])*e}return a}},{}],38:[function(d,c,f){c.exports=d("gl-vec4/fromValues")},{"gl-vec4/fromValues":65}],39:[function(d,c,f){c.exports=function(a){a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},{}],40:[function(d,c,f){c.exports={add:d("./add"),calculateW:d("./calculateW"),clone:d("./clone"),conjugate:d("./conjugate"),copy:d("./copy"),create:d("./create"),
dot:d("./dot"),fromMat3:d("./fromMat3"),fromValues:d("./fromValues"),identity:d("./identity"),invert:d("./invert"),length:d("./length"),lerp:d("./lerp"),multiply:d("./multiply"),normalize:d("./normalize"),rotateX:d("./rotateX"),rotateY:d("./rotateY"),rotateZ:d("./rotateZ"),rotationTo:d("./rotationTo"),scale:d("./scale"),set:d("./set"),setAxes:d("./setAxes"),setAxisAngle:d("./setAxisAngle"),slerp:d("./slerp"),sqlerp:d("./sqlerp"),squaredLength:d("./squaredLength")}},{"./add":30,"./calculateW":31,"./clone":32,
"./conjugate":33,"./copy":34,"./create":35,"./dot":36,"./fromMat3":37,"./fromValues":38,"./identity":39,"./invert":41,"./length":42,"./lerp":43,"./multiply":44,"./normalize":45,"./rotateX":46,"./rotateY":47,"./rotateZ":48,"./rotationTo":49,"./scale":50,"./set":51,"./setAxes":52,"./setAxisAngle":53,"./slerp":54,"./sqlerp":55,"./squaredLength":56}],41:[function(d,c,f){c.exports=function(a,b){var e=b[0],c=b[1],d=b[2],f=b[3],h=e*e+c*c+d*d+f*f,h=h?1/h:0;a[0]=-e*h;a[1]=-c*h;a[2]=-d*h;a[3]=f*h;return a}},
{}],42:[function(d,c,f){c.exports=d("gl-vec4/length")},{"gl-vec4/length":66}],43:[function(d,c,f){c.exports=d("gl-vec4/lerp")},{"gl-vec4/lerp":67}],44:[function(d,c,f){c.exports=function(a,b,e){var c=b[0],d=b[1],f=b[2];b=b[3];var h=e[0],z=e[1],B=e[2];e=e[3];a[0]=c*e+b*h+d*B-f*z;a[1]=d*e+b*z+f*h-c*B;a[2]=f*e+b*B+c*z-d*h;a[3]=b*e-c*h-d*z-f*B;return a}},{}],45:[function(d,c,f){c.exports=d("gl-vec4/normalize")},{"gl-vec4/normalize":68}],46:[function(d,c,f){c.exports=function(a,b,e){e*=.5;var c=b[0],d=
b[1],f=b[2];b=b[3];var h=Math.sin(e);e=Math.cos(e);a[0]=c*e+b*h;a[1]=d*e+f*h;a[2]=f*e-d*h;a[3]=b*e-c*h;return a}},{}],47:[function(d,c,f){c.exports=function(a,b,e){e*=.5;var c=b[0],d=b[1],f=b[2];b=b[3];var h=Math.sin(e);e=Math.cos(e);a[0]=c*e-f*h;a[1]=d*e+b*h;a[2]=f*e+c*h;a[3]=b*e-d*h;return a}},{}],48:[function(d,c,f){c.exports=function(a,b,e){e*=.5;var c=b[0],d=b[1],f=b[2];b=b[3];var h=Math.sin(e);e=Math.cos(e);a[0]=c*e+d*h;a[1]=d*e-c*h;a[2]=f*e+b*h;a[3]=b*e-f*h;return a}},{}],49:[function(d,c,
f){var a=d("gl-vec3/dot"),b=d("gl-vec3/cross"),e=d("gl-vec3/length"),g=d("gl-vec3/normalize"),k=d("./normalize"),r=d("./setAxisAngle");c.exports=function(c,d,f){var m=a(d,f);if(-.999999>m)return b(h,z,d),1E-6>e(h)&&b(h,B,d),g(h,h),r(c,h,Math.PI),c;if(.999999<m)return c[0]=0,c[1]=0,c[2]=0,c[3]=1,c;b(h,d,f);c[0]=h[0];c[1]=h[1];c[2]=h[2];c[3]=1+m;return k(c,c)};var h=[0,0,0],z=[1,0,0],B=[0,1,0]},{"./normalize":45,"./setAxisAngle":53,"gl-vec3/cross":57,"gl-vec3/dot":58,"gl-vec3/length":59,"gl-vec3/normalize":60}],
50:[function(d,c,f){c.exports=d("gl-vec4/scale")},{"gl-vec4/scale":69}],51:[function(d,c,f){c.exports=d("gl-vec4/set")},{"gl-vec4/set":70}],52:[function(d,c,f){f=d("gl-mat3/create");var a=d("./fromMat3"),b=d("./normalize");c.exports=function(c,d,f,h){e[0]=f[0];e[3]=f[1];e[6]=f[2];e[1]=h[0];e[4]=h[1];e[7]=h[2];e[2]=-d[0];e[5]=-d[1];e[8]=-d[2];return b(c,a(c,e))};var e=f()},{"./fromMat3":37,"./normalize":45,"gl-mat3/create":5}],53:[function(d,c,f){c.exports=function(a,b,e){e*=.5;var c=Math.sin(e);a[0]=
c*b[0];a[1]=c*b[1];a[2]=c*b[2];a[3]=Math.cos(e);return a}},{}],54:[function(d,c,f){c.exports=function(a,b,e,c){var d=b[0],f=b[1],h=b[2];b=b[3];var z=e[0],B=e[1],n=e[2];e=e[3];var u,p,m;p=d*z+f*B+h*n+b*e;0>p&&(p=-p,z=-z,B=-B,n=-n,e=-e);1E-6<1-p?(u=Math.acos(p),m=Math.sin(u),p=Math.sin((1-c)*u)/m,c=Math.sin(c*u)/m):p=1-c;a[0]=p*d+c*z;a[1]=p*f+c*B;a[2]=p*h+c*n;a[3]=p*b+c*e;return a}},{}],55:[function(d,c,f){var a=d("./slerp");c.exports=function(c,d,f,h,z,B){a(b,d,z,B);a(e,f,h,B);a(c,b,e,2*B*(1-B));return c};
var b=[0,0,0,1],e=[0,0,0,1]},{"./slerp":54}],56:[function(d,c,f){c.exports=d("gl-vec4/squaredLength")},{"gl-vec4/squaredLength":71}],57:[function(d,c,f){c.exports=function(a,b,e){var c=b[0],d=b[1];b=b[2];var f=e[0],h=e[1];e=e[2];a[0]=d*e-b*h;a[1]=b*f-c*e;a[2]=c*h-d*f;return a}},{}],58:[function(d,c,f){c.exports=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}},{}],59:[function(d,c,f){c.exports=function(a){var b=a[0],e=a[1];a=a[2];return Math.sqrt(b*b+e*e+a*a)}},{}],60:[function(d,c,f){c.exports=
function(a,b){var e=b[0],c=b[1],d=b[2],e=e*e+c*c+d*d;0<e&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e,a[2]=b[2]*e);return a}},{}],61:[function(d,c,f){c.exports=function(a,b,e){a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];a[3]=b[3]+e[3];return a}},{}],62:[function(d,c,f){c.exports=function(a){var b=new Float32Array(4);b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b}},{}],63:[function(d,c,f){c.exports=function(a,b){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a}},{}],64:[function(d,c,f){c.exports=
function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}},{}],65:[function(d,c,f){c.exports=function(a,b,e,c){var d=new Float32Array(4);d[0]=a;d[1]=b;d[2]=e;d[3]=c;return d}},{}],66:[function(d,c,f){c.exports=function(a){var b=a[0],e=a[1],c=a[2];a=a[3];return Math.sqrt(b*b+e*e+c*c+a*a)}},{}],67:[function(d,c,f){c.exports=function(a,b,e,c){var d=b[0],f=b[1],h=b[2];b=b[3];a[0]=d+c*(e[0]-d);a[1]=f+c*(e[1]-f);a[2]=h+c*(e[2]-h);a[3]=b+c*(e[3]-b);return a}},{}],68:[function(d,c,f){c.exports=function(a,
b){var e=b[0],c=b[1],d=b[2],f=b[3],h=e*e+c*c+d*d+f*f;0<h&&(h=1/Math.sqrt(h),a[0]=e*h,a[1]=c*h,a[2]=d*h,a[3]=f*h);return a}},{}],69:[function(d,c,f){c.exports=function(a,b,c){a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;return a}},{}],70:[function(d,c,f){c.exports=function(a,b,c,d,f){a[0]=b;a[1]=c;a[2]=d;a[3]=f;return a}},{}],71:[function(d,c,f){c.exports=function(a){var b=a[0],c=a[1],d=a[2];a=a[3];return b*b+c*c+d*d+a*a}},{}],72:[function(d,c,f){c.exports=function(b,c){function d(a){var b=!1;"altKey"in
a&&(b=b||a.altKey!==t.alt,t.alt=!!a.altKey);"shiftKey"in a&&(b=b||a.shiftKey!==t.shift,t.shift=!!a.shiftKey);"ctrlKey"in a&&(b=b||a.ctrlKey!==t.control,t.control=!!a.ctrlKey);"metaKey"in a&&(b=b||a.metaKey!==t.meta,t.meta=!!a.metaKey);return b}function f(b,h){var k=a.x(h),p=a.y(h);"buttons"in h&&(b=h.buttons|0);if(b!==m||k!==v||p!==w||d(h))m=b|0,v=k||0,w=p||0,c&&c(m,v,w,t)}function r(a){f(0,a)}function h(){if(m||v||w||t.shift||t.alt||t.meta||t.control)m=v=w=0,t.shift=t.alt=t.control=t.meta=!1,c&&
c(0,0,0,t)}function z(a){d(a)&&c&&c(m,v,w,t)}function B(b){0===a.buttons(b)?f(0,b):f(m,b)}function n(b){f(m|a.buttons(b),b)}function u(b){f(m&~a.buttons(b),b)}function p(){y||(y=!0,b.addEventListener("mousemove",B),b.addEventListener("mousedown",n),b.addEventListener("mouseup",u),b.addEventListener("mouseleave",r),b.addEventListener("mouseenter",r),b.addEventListener("mouseout",r),b.addEventListener("mouseover",r),b.addEventListener("blur",h),b.addEventListener("keyup",z),b.addEventListener("keydown",
z),b.addEventListener("keypress",z),b!==window&&(window.addEventListener("blur",h),window.addEventListener("keyup",z),window.addEventListener("keydown",z),window.addEventListener("keypress",z)))}c||(c=b,b=window);var m=0,v=0,w=0,t={shift:!1,alt:!1,control:!1,meta:!1},y=!1;p();var A={element:b};Object.defineProperties(A,{enabled:{get:function(){return y},set:function(a){a?p():y&&(y=!1,b.removeEventListener("mousemove",B),b.removeEventListener("mousedown",n),b.removeEventListener("mouseup",u),b.removeEventListener("mouseleave",
r),b.removeEventListener("mouseenter",r),b.removeEventListener("mouseout",r),b.removeEventListener("mouseover",r),b.removeEventListener("blur",h),b.removeEventListener("keyup",z),b.removeEventListener("keydown",z),b.removeEventListener("keypress",z),b!==window&&(window.removeEventListener("blur",h),window.removeEventListener("keyup",z),window.removeEventListener("keydown",z),window.removeEventListener("keypress",z)))},enumerable:!0},buttons:{get:function(){return m},enumerable:!0},x:{get:function(){return v},
enumerable:!0},y:{get:function(){return w},enumerable:!0},mods:{get:function(){return t},enumerable:!0}});return A};var a=d("mouse-event")},{"mouse-event":73}],73:[function(d,c,f){function a(a){return a.target||a.srcElement||window}f.buttons=function(a){if("object"===typeof a){if("buttons"in a)return a.buttons;if("which"in a){a=a.which;if(2===a)return 4;if(3===a)return 2;if(0<a)return 1<<a-1}else if("button"in a){a=a.button;if(1===a)return 4;if(2===a)return 2;if(0<=a)return 1<<a}}return 0};f.element=
a;f.x=function(b){if("object"===typeof b){if("offsetX"in b)return b.offsetX;var c=a(b).getBoundingClientRect();return b.clientX-c.left}return 0};f.y=function(b){if("object"===typeof b){if("offsetY"in b)return b.offsetY;var c=a(b).getBoundingClientRect();return b.clientY-c.top}return 0}},{}],74:[function(d,c,f){var a=d("to-px");c.exports=function(b,c,d){"function"===typeof b&&(d=!!c,c=b,b=window);var f=a("ex",b),r=function(a){d&&a.preventDefault();var b=a.deltaX||0,r=a.deltaY||0,n=a.deltaZ||0,u=1;
switch(a.deltaMode){case 1:u=f;break;case 2:u=window.innerHeight}b*=u;r*=u;n*=u;if(b||r||n)return c(b,r,n,a)};b.addEventListener("wheel",r);return r}},{"to-px":80}],75:[function(d,c,f){c.exports=function(a,b){b||(b=[0,""]);a=String(a);var c=parseFloat(a,10);b[0]=c;b[1]=a.match(/[\d.\-\+]*\s*(.*)/)[1]||"";return b}},{}],76:[function(d,c,f){var a=d("mouse-change"),b=d("mouse-wheel"),e=d("gl-mat4/identity"),g=d("gl-mat4/perspective"),k=d("gl-mat4/lookAt");c.exports=function(c,d){function f(a){a*=v;return.1>
Math.abs(a)?0:a}function n(a){Object.keys(a).forEach(function(b){m[b]=a[b]});var b=m.center,c=m.eye,e=m.up,d=m.dtheta,h=m.dphi;m.theta+=d;m.phi=Math.min(Math.max(m.phi+h,-Math.PI/2),Math.PI/2);m.distance=Math.min(Math.max(m.distance+C,y),A);m.dtheta=f(d);m.dphi=f(h);C=f(C);for(var h=m.theta,g=m.phi,p=Math.exp(m.distance),d=p*Math.sin(h)*Math.cos(g),h=p*Math.cos(h)*Math.cos(g),g=p*Math.sin(g),p=0;3>p;++p)c[p]=b[p]+d*t[p]+h*w[p]+g*e[p];k(m.view,c,b,e)}function u(a,b){b||(b=a,a={});n(a);G(b)}var p=d||
{},m={view:e(new Float32Array(16)),projection:e(new Float32Array(16)),center:new Float32Array(p.center||3),theta:p.theta||0,phi:p.phi||0,distance:Math.log(p.distance||10),eye:new Float32Array(3),up:new Float32Array(p.up||[0,1,0]),fovy:p.fovy||Math.PI/4,near:"undefined"!==typeof p.near?p.near:.01,far:"undefined"!==typeof p.far?p.far:1E3,preventDefault:"undefined"!==typeof p.preventDefault?p.preventDefault:!1,flipY:!!p.flipY,dtheta:0,dphi:0};c._gl.canvas.addEventListener("mousewheel",function(a){m.preventDefault&&
a.preventDefault()});var v="undefined"!==typeof p.damping?p.damping:.9,w=new Float32Array([1,0,0]),t=new Float32Array([0,0,1]),y=Math.log("minDistance"in p?p.minDistance:.1),A=Math.log("maxDistance"in p?p.maxDistance:1E3),C=0,x=0,D=0;r&&!1!==p.mouse&&(a(function(a,b,c){if(a&1){a=(c-D)/window.innerHeight;var e=Math.max(m.distance,.5);m.dtheta+=(b-x)/window.innerWidth*e;m.dphi+=e*a}x=b;D=c}),b(function(a,b){C+=b/window.innerHeight}));var G=c({context:Object.assign({},m,{projection:function(a){g(m.projection,
m.fovy,a.viewportWidth/a.viewportHeight,m.near,m.far);m.flipY&&(m.projection[5]*=-1);return m.projection}}),uniforms:Object.keys(m).reduce(function(a,b){a[b]=c.context(b);return a},{})});Object.keys(m).forEach(function(a){u[a]=m[a]});return u};var r="undefined"!==typeof window},{"gl-mat4/identity":14,"gl-mat4/lookAt":17,"gl-mat4/perspective":20,"mouse-change":72,"mouse-wheel":74}],77:[function(d,c,f){(function(a,b){"object"===typeof f&&"undefined"!==typeof c?c.exports=b():"function"===typeof define&&
define.amd?define(b):a.createREGL=b()})(this,function(){function a(a){return"undefined"!==typeof btoa?btoa(a):"base64:"+a}function b(a){a=Error("(regl) "+a);console.error(a);throw a;}function c(a,d){a||b(d)}function d(a){return a?": "+a:""}function f(a,c,e){0>c.indexOf(a)&&b("invalid value"+d(e)+". must be one of: "+c)}function r(a,b){for(a+="";a.length<b;)a=" "+a;return a}function h(){this.name="unknown";this.lines=[];this.index={};this.hasErrors=!1}function z(a,b){this.number=a;this.line=b;this.errors=
[]}function B(a,b,c){this.file=a;this.line=b;this.message=c}function n(){var a=Error(),a=(a.stack||a).toString(),b=/compileProcedure.*\n\s*at.*\((.*)\)/.exec(a);return b?b[1]:(a=/compileProcedure.*\n\s*at\s+(.*)(\n|$)/.exec(a))?a[1]:"unknown"}function u(){var a=Error(),a=(a.stack||a).toString(),b=/at REGLCommand.*\n\s+at.*\((.*)\)/.exec(a);return b?b[1]:(a=/at REGLCommand.*\n\s+at\s+(.*)\n/.exec(a))?a[1]:"unknown"}function p(b,c){var d=b.split("\n"),e=1,l=0,f={unknown:new h,0:new h};f.unknown.name=
f[0].name=c||n();f.unknown.lines.push(new z(0,""));for(var g=0;g<d.length;++g){var k=d[g],m=/^\s*\#\s*(\w+)\s+(.+)\s*$/.exec(k);if(m)switch(m[1]){case "line":if(m=/(\d+)(\s+\d+)?/.exec(m[2]))e=m[1]|0,m[2]&&(l=m[2]|0,l in f||(f[l]=new h));break;case "define":if(m=/SHADER_NAME(_B64)?\s+(.*)$/.exec(m[2]))f[l].name=m[1]?a(m[2]):m[2]}f[l].lines.push(new z(e++,k))}Object.keys(f).forEach(function(a){var b=f[a];b.lines.forEach(function(a){b.index[a.number]=a})});return f}function m(a){var b=[];a.split("\n").forEach(function(a){if(!(5>
a.length)){var c=/^ERROR\:\s+(\d+)\:(\d+)\:\s*(.*)$/.exec(a);c?b.push(new B(c[1]|0,c[2]|0,c[3].trim())):0<a.length&&b.push(new B("unknown",0,a))}});return b}function v(a,b){b.forEach(function(b){var c=a[b.file];if(c){var d=c.index[b.line];if(d){d.errors.push(b);c.hasErrors=!0;return}}a.unknown.hasErrors=!0;a.unknown.lines[0].errors.push(b)})}function w(a){a._commandRef=n()}function t(a,c){var d=u();b(a+" in command "+(c||n())+("unknown"===d?"":" called from "+d))}function y(a,b,c,e){typeof a!==b&&
t("invalid parameter type"+d(c)+". expected "+b+", got "+typeof a,e||n())}function A(a,b){return 32820===a||32819===a||33635===a?2:34042===a?4:aa[a]*b}function C(a,b){this.id=Gb++;this.type=a;this.data=b}function x(a){if(0===a.length)return[];var b=a.charAt(0),c=a.charAt(a.length-1);if(1<a.length&&b===c&&('"'===b||"'"===b))return['"'+a.substr(1,a.length-2).replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];if(b=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a))return x(a.substr(0,b.index)).concat(x(b[1])).concat(x(a.substr(b.index+
b[0].length)));b=a.split(".");if(1===b.length)return['"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];a=[];for(c=0;c<b.length;++c)a=a.concat(x(b[c]));return a}function D(a){return"["+x(a).join("][")+"]"}function G(){var a={"":0},b=[""];return{id:function(c){var d=a[c];if(d)return d;d=a[c]=b.length;b.push(c);return d},str:function(a){return b[a]}}}function J(a,b,c){function d(){var b=window.innerWidth,l=window.innerHeight;a!==document.body&&(l=a.getBoundingClientRect(),b=l.right-l.left,l=l.bottom-
l.top);e.width=c*b;e.height=c*l;N(e.style,{width:b+"px",height:l+"px"})}var e=document.createElement("canvas");N(e.style,{border:0,margin:0,padding:0,top:0,left:0});a.appendChild(e);a===document.body&&(e.style.position="absolute",N(a.style,{margin:0,padding:0}));window.addEventListener("resize",d,!1);d();return{canvas:e,onDestroy:function(){window.removeEventListener("resize",d);a.removeChild(e)}}}function W(a,b){function c(d){try{return a.getContext(d,b)}catch(e){return null}}return c("webgl")||
c("experimental-webgl")||c("webgl-experimental")}function Q(a){if("string"===typeof a)return a.split();l(Array.isArray(a),"invalid extension array");return a}function O(a){return"string"===typeof a?(l("undefined"!==typeof document,"not supported outside of DOM"),document.querySelector(a)):a}function X(a){var b=a||{},c,d,e,f;a={};var h=[],g=[],m="undefined"===typeof window?1:window.devicePixelRatio,k=!1,p=function(a){a&&l.raise(a)},ab=function(){};"string"===typeof b?(l("undefined"!==typeof document,
"selector queries only supported in DOM enviroments"),c=document.querySelector(b),l(c,"invalid query string for element")):"object"===typeof b?"string"===typeof b.nodeName&&"function"===typeof b.appendChild&&"function"===typeof b.getBoundingClientRect?c=b:"function"===typeof b.drawArrays||"function"===typeof b.drawElements?(f=b,e=f.canvas):(l.constructor(b),"gl"in b?f=b.gl:"canvas"in b?e=O(b.canvas):"container"in b&&(d=O(b.container)),"attributes"in b&&(a=b.attributes,l.type(a,"object","invalid context attributes")),
"extensions"in b&&(h=Q(b.extensions)),"optionalExtensions"in b&&(g=Q(b.optionalExtensions)),"onDone"in b&&(l.type(b.onDone,"function","invalid or missing onDone callback"),p=b.onDone),"profile"in b&&(k=!!b.profile),"pixelRatio"in b&&(m=+b.pixelRatio,l(0<m,"invalid pixel ratio"))):l.raise("invalid arguments to regl");c&&("canvas"===c.nodeName.toLowerCase()?e=c:d=c);if(!f){if(!e){l("undefined"!==typeof document,"must manually specify webgl context outside of DOM environments");c=J(d||document.body,
p,m);if(!c)return null;e=c.canvas;ab=c.onDestroy}f=W(e,a)}return f?{gl:f,canvas:e,container:d,extensions:h,optionalExtensions:g,pixelRatio:m,profile:k,onDone:p,onDestroy:ab}:(ab(),p("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function da(a,b){function c(b){l.type(b,"string","extension name must be string");b=b.toLowerCase();var e;try{e=d[b]=a.getExtension(b)}catch(f){}return!!e}for(var d={},e=0;e<b.extensions.length;++e){var f=b.extensions[e];
if(!c(f))return b.onDestroy(),b.onDone('"'+f+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}b.optionalExtensions.forEach(c);return{extensions:d,restore:function(){Object.keys(d).forEach(function(a){if(!c(a))throw Error("(regl): error restoring extension "+a);})}}}function U(a){return!!a&&"object"===typeof a&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&"number"===typeof a.offset&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||
Y(a.data))}function R(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=b(d);return c}function H(a){var b,c;b=(65535<a)<<4;a>>>=b;c=(255<a)<<3;a>>>=c;b|=c;c=(15<a)<<2;a>>>=c;b|=c;c=(3<a)<<1;return b|c|a>>>c>>1}function ma(a){a:{for(var b=16;268435456>=b;b*=16)if(a<=b){a=b;break a}a=0}b=jb[H(a)>>2];return 0<b.length?b.pop():new ArrayBuffer(a)}function kb(a){jb[H(a.byteLength)>>2].push(a)}function ja(a,b,c,d,e,l){for(var f=0;f<b;++f)for(var h=a[f],g=0;g<c;++g)for(var m=h[g],k=0;k<d;++k)e[l++]=m[k]}function lb(a,
b,c,d,e){for(var l=1,f=c+1;f<b.length;++f)l*=b[f];var h=b[c];if(4===b.length-c){var g=b[c+1],m=b[c+2];b=b[c+3];for(f=0;f<h;++f)ja(a[f],g,m,b,d,e),e+=l}else for(f=0;f<h;++f)lb(a[f],b,c+1,d,e),e+=l}function Sa(a){return Ma[Object.prototype.toString.call(a)]|0}function mb(a,b){for(var c=0;c<b.length;++c)a[c]=b[c]}function nb(a,b,c,d,e,l,f){for(var h=0,g=0;g<c;++g)for(var m=0;m<d;++m)a[h++]=b[e*g+l*m+f]}function Hb(a,b,c){function d(b){this.id=g++;this.buffer=a.createBuffer();this.type=b;this.usage=35044;
this.byteLength=0;this.dimension=1;this.dtype=5121;this.persistentData=null;c.profile&&(this.stats={size:0})}function e(b,c,d){b.byteLength=c.byteLength;a.bufferData(b.type,c,d)}function f(a,b,c,d,q,h){a.usage=c;if(Array.isArray(b)){if(a.dtype=d||5126,0<b.length)if(Array.isArray(b[0])){q=ob(b);for(var g=d=1;g<q.length;++g)d*=q[g];a.dimension=d;b=bb(b,q,a.dtype);e(a,b,c);h?a.persistentData=b:T.freeType(b)}else"number"===typeof b[0]?(a.dimension=q,q=T.allocType(a.dtype,b.length),mb(q,b),e(a,q,c),h?
a.persistentData=q:T.freeType(q)):Y(b[0])?(a.dimension=b[0].length,a.dtype=d||Sa(b[0])||5126,b=bb(b,[b.length,b[0].length],a.dtype),e(a,b,c),h?a.persistentData=b:T.freeType(b)):l.raise("invalid buffer data")}else if(Y(b))a.dtype=d||Sa(b),a.dimension=q,e(a,b,c),h&&(a.persistentData=new Uint8Array(new Uint8Array(b.buffer)));else if(U(b)){q=b.shape;var m=b.stride,g=b.offset,S=0,k=0,ya=0,p=0;1===q.length?(S=q[0],k=1,ya=m[0],p=0):2===q.length?(S=q[0],k=q[1],ya=m[0],p=m[1]):l.raise("invalid shape");a.dtype=
d||Sa(b.data)||5126;a.dimension=k;q=T.allocType(a.dtype,S*k);nb(q,b.data,S,k,ya,p,g);e(a,q,c);h?a.persistentData=q:T.freeType(q)}else l.raise("invalid buffer data")}function h(c){b.bufferCount--;var d=c.buffer;l(d,"buffer must not be deleted already");a.deleteBuffer(d);c.buffer=null;delete m[c.id]}var g=0,m={};d.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)};d.prototype.destroy=function(){h(this)};var k=[];c.profile&&(b.getTotalBufferSize=function(){var a=0;Object.keys(m).forEach(function(b){a+=
m[b].stats.size});return a});return{create:function(e,g,k,p){function K(b){var d=35044,e=null,h=0,g=0,m=1;Array.isArray(b)||Y(b)||U(b)?e=b:"number"===typeof b?h=b|0:b&&(l.type(b,"object","buffer arguments must be an object, a number or an array"),"data"in b&&(l(null===e||Array.isArray(e)||Y(e)||U(e),"invalid data for buffer"),e=b.data),"usage"in b&&(l.parameter(b.usage,Ua,"invalid buffer usage"),d=Ua[b.usage]),"type"in b&&(l.parameter(b.type,Na,"invalid buffer type"),g=Na[b.type]),"dimension"in b&&
(l.type(b.dimension,"number","invalid dimension"),m=b.dimension|0),"length"in b&&(l.nni(h,"buffer length must be a nonnegative integer"),h=b.length|0));n.bind();e?f(n,e,d,g,m,p):(a.bufferData(n.type,h,d),n.dtype=g||5121,n.usage=d,n.dimension=m,n.byteLength=h);c.profile&&(n.stats.size=n.byteLength*ea[n.dtype]);return K}function r(b,c){l(c+b.byteLength<=n.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+b.byteLength+" starting from offset "+c+" to a buffer of size "+
n.byteLength);a.bufferSubData(n.type,c,b)}b.bufferCount++;var n=new d(g);m[n.id]=n;k||K(e);K._reglType="buffer";K._buffer=n;K.subdata=function(a,b){var c=(b||0)|0,d;n.bind();if(Array.isArray(a)){if(0<a.length)if("number"===typeof a[0]){var e=T.allocType(n.dtype,a.length);mb(e,a);r(e,c);T.freeType(e)}else Array.isArray(a[0])||Y(a[0])?(d=ob(a),e=bb(a,d,n.dtype),r(e,c),T.freeType(e)):l.raise("invalid buffer data")}else if(Y(a))r(a,c);else if(U(a)){d=a.shape;var q=a.stride,f=e=0,h=0,g=0;1===d.length?
(e=d[0],f=1,h=q[0],g=0):2===d.length?(e=d[0],f=d[1],h=q[0],g=q[1]):l.raise("invalid shape");d=Array.isArray(a.data)?n.dtype:Sa(a.data);d=T.allocType(d,e*f);nb(d,a.data,e,f,h,g,a.offset);r(d,c);T.freeType(d)}else l.raise("invalid data for buffer subdata");return K};c.profile&&(K.stats=n.stats);K.destroy=function(){h(n)};return K},createStream:function(a,b){var c=k.pop();c||(c=new d(a));c.bind();f(c,b,35040,0,1,!1);return c},destroyStream:function(a){k.push(a)},clear:function(){V(m).forEach(h);k.forEach(h)},
getBuffer:function(a){return a&&a._buffer instanceof d?a._buffer:null},restore:function(){V(m).forEach(function(b){b.buffer=a.createBuffer();a.bindBuffer(b.type,b.buffer);a.bufferData(b.type,b.persistentData||b.byteLength,b.usage)})},_initBuffer:f}}function Ib(a,b,c,d){function e(a){this.id=m++;g[this.id]=this;this.buffer=a;this.primType=4;this.type=this.vertCount=0}function f(d,e,h,g,m,k,p){d.buffer.bind();if(e){var n=p;p||Y(e)&&(!U(e)||Y(e.data))||(n=b.oes_element_index_uint?5125:5123);c._initBuffer(d.buffer,
e,h,n,3)}else a.bufferData(34963,k,h),d.buffer.dtype=n||5121,d.buffer.usage=h,d.buffer.dimension=3,d.buffer.byteLength=k;n=p;if(!p){switch(d.buffer.dtype){case 5121:case 5120:n=5121;break;case 5123:case 5122:n=5123;break;case 5125:case 5124:n=5125;break;default:l.raise("unsupported type for element array")}d.buffer.dtype=n}d.type=n;l(5125!==n||!!b.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");e=m;0>e&&(e=d.buffer.byteLength,5123===n?e>>=1:5125===
n&&(e>>=2));d.vertCount=e;e=g;0>g&&(e=4,g=d.buffer.dimension,1===g&&(e=0),2===g&&(e=1),3===g&&(e=4));d.primType=e}function h(a){d.elementsCount--;l(null!==a.buffer,"must not double destroy elements");delete g[a.id];a.buffer.destroy();a.buffer=null}var g={},m=0,k={uint8:5121,uint16:5123};b.oes_element_index_uint&&(k.uint32=5125);e.prototype.bind=function(){this.buffer.bind()};var p=[];return{create:function(a,b){function q(a){if(a)if("number"===typeof a)g(a),m.primType=4,m.vertCount=a|0,m.type=5121;
else{var b=null,c=35044,d=-1,e=-1,h=0,S=0;if(Array.isArray(a)||Y(a)||U(a))b=a;else if(l.type(a,"object","invalid arguments for elements"),"data"in a&&(b=a.data,l(Array.isArray(b)||Y(b)||U(b),"invalid data for element buffer")),"usage"in a&&(l.parameter(a.usage,Ua,"invalid element buffer usage"),c=Ua[a.usage]),"primitive"in a&&(l.parameter(a.primitive,Ca,"invalid element buffer primitive"),d=Ca[a.primitive]),"count"in a&&(l("number"===typeof a.count&&0<=a.count,"invalid vertex count for elements"),
e=a.count|0),"type"in a&&(l.parameter(a.type,k,"invalid buffer type"),S=k[a.type]),"length"in a)h=a.length|0;else if(h=e,5123===S||5122===S)h*=2;else if(5125===S||5124===S)h*=4;f(m,b,c,d,e,h,S)}else g(),m.primType=4,m.vertCount=0,m.type=5121;return q}var g=c.create(null,34963,!0),m=new e(g._buffer);d.elementsCount++;q(a);q._reglType="elements";q._elements=m;q.subdata=function(a,b){g.subdata(a,b);return q};q.destroy=function(){h(m)};return q},createStream:function(a){var b=p.pop();b||(b=new e(c.create(null,
34963,!0,!1)._buffer));f(b,a,35040,-1,-1,0,0);return b},destroyStream:function(a){p.push(a)},getElements:function(a){return"function"===typeof a&&a._elements instanceof e?a._elements:null},clear:function(){V(g).forEach(h)}}}function pb(a){for(var b=T.allocType(5123,a.length),c=0;c<a.length;++c)if(isNaN(a[c]))b[c]=65535;else if(Infinity===a[c])b[c]=31744;else if(-Infinity===a[c])b[c]=64512;else{qb[0]=a[c];var d=Jb[0],e=d>>>31<<15,f=(d<<1>>>24)-127,d=d>>13&1023;b[c]=-24>f?e:-14>f?e+(d+1024>>-14-f):
15<f?e+31744:e+(f+15<<10)+d}return b}function L(a){return Array.isArray(a)||Y(a)}function rb(a){return Array.isArray(a)&&(0===a.length||"number"===typeof a[0])}function sb(a){return Array.isArray(a)&&0!==a.length&&L(a[0])?!0:!1}function sa(a){return Object.prototype.toString.call(a)}function db(a){if(!a)return!1;var b=sa(a);return 0<=Kb.indexOf(b)?!0:rb(a)||sb(a)||U(a)}function tb(a,b){36193===a.type?(a.data=pb(b),T.freeType(b)):a.data=b}function Va(a,b,c,d,e,f){a="undefined"!==typeof I[a]?I[a]:fa[a]*
Da[b];f&&(a*=6);if(e){for(d=0;1<=c;)d+=a*c*c,c/=2;return d}return a*c*d}function Lb(a,b,c,d,e,f,h){function g(){this.format=this.internalformat=6408;this.type=5121;this.flipY=this.premultiplyAlpha=this.compressed=!1;this.unpackAlignment=1;this.channels=this.height=this.width=this.colorSpace=0}function m(a,b){a.internalformat=b.internalformat;a.format=b.format;a.type=b.type;a.compressed=b.compressed;a.premultiplyAlpha=b.premultiplyAlpha;a.flipY=b.flipY;a.unpackAlignment=b.unpackAlignment;a.colorSpace=
b.colorSpace;a.width=b.width;a.height=b.height;a.channels=b.channels}function k(a,d){if("object"===typeof d&&d){"premultiplyAlpha"in d&&(l.type(d.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),a.premultiplyAlpha=d.premultiplyAlpha);"flipY"in d&&(l.type(d.flipY,"boolean","invalid texture flip"),a.flipY=d.flipY);"alignment"in d&&(l.oneOf(d.alignment,[1,2,4,8],"invalid texture unpack alignment"),a.unpackAlignment=d.alignment);"colorSpace"in d&&(l.parameter(d.colorSpace,J,"invalid colorSpace"),
a.colorSpace=J[d.colorSpace]);if("type"in d){var e=d.type;l(b.oes_texture_float||!("float"===e||"float32"===e),"you must enable the OES_texture_float extension in order to use floating point textures.");l(b.oes_texture_half_float||!("half float"===e||"float16"===e),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.");l(b.webgl_depth_texture||!("uint16"===e||"uint32"===e||"depth stencil"===e),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.");
l.parameter(e,na,"invalid texture type");a.type=na[e]}var f=a.width,q=a.height,h=a.channels,e=!1;"shape"in d?(l(Array.isArray(d.shape)&&2<=d.shape.length,"shape must be an array"),f=d.shape[0],q=d.shape[1],3===d.shape.length&&(h=d.shape[2],l(0<h&&4>=h,"invalid number of channels"),e=!0),l(0<=f&&f<=c.maxTextureSize,"invalid width"),l(0<=q&&q<=c.maxTextureSize,"invalid height")):("radius"in d&&(f=q=d.radius,l(0<=f&&f<=c.maxTextureSize,"invalid radius")),"width"in d&&(f=d.width,l(0<=f&&f<=c.maxTextureSize,
"invalid width")),"height"in d&&(q=d.height,l(0<=q&&q<=c.maxTextureSize,"invalid height")),"channels"in d&&(h=d.channels,l(0<h&&4>=h,"invalid number of channels"),e=!0));a.width=f|0;a.height=q|0;a.channels=h|0;f=!1;"format"in d&&(f=d.format,l(b.webgl_depth_texture||!("depth"===f||"depth stencil"===f),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),l.parameter(f,M,"invalid texture format"),q=a.internalformat=M[f],a.format=O[q],f in na&&!("type"in d)&&(a.type=
na[f]),f in X&&(a.compressed=!0),f=!0);!e&&f?a.channels=fa[a.format]:e&&!f?a.channels!==Wa[a.format]&&(a.format=a.internalformat=Wa[a.channels]):f&&e&&l(a.channels===fa[a.format],"number of channels inconsistent with specified format")}}function p(b){a.pixelStorei(37440,b.flipY);a.pixelStorei(37441,b.premultiplyAlpha);a.pixelStorei(37443,b.colorSpace);a.pixelStorei(3317,b.unpackAlignment)}function n(){g.call(this);this.yOffset=this.xOffset=0;this.data=null;this.needsFree=!1;this.element=null;this.needsCopy=
!1}function r(a,b){var d=null;db(b)?d=b:b&&(l.type(b,"object","invalid pixel data type"),k(a,b),"x"in b&&(a.xOffset=b.x|0),"y"in b&&(a.yOffset=b.y|0),db(b.data)&&(d=b.data));l(!a.compressed||d instanceof Uint8Array,"compressed texture data must be stored in a uint8array");if(b.copy){l(!d,"can not specify copy and data field for the same texture");var f=e.viewportWidth,q=e.viewportHeight;a.width=a.width||f-a.xOffset;a.height=a.height||q-a.yOffset;a.needsCopy=!0;l(0<=a.xOffset&&a.xOffset<f&&0<=a.yOffset&&
a.yOffset<q&&0<a.width&&a.width<=f&&0<a.height&&a.height<=q,"copy texture read out of bounds")}else if(!d)a.width=a.width||1,a.height=a.height||1,a.channels=a.channels||4;else if(Y(d))a.channels=a.channels||4,a.data=d,"type"in b||5121!==a.type||(a.type=Ma[Object.prototype.toString.call(d)]|0);else if(rb(d)){a.channels=a.channels||4;f=d;q=f.length;switch(a.type){case 5121:case 5123:case 5125:case 5126:q=T.allocType(a.type,q);q.set(f);a.data=q;break;case 36193:a.data=pb(f);break;default:l.raise("unsupported texture type, must specify a typed array")}a.alignment=
1;a.needsFree=!0}else if(U(d)){f=d.data;Array.isArray(f)||5121!==a.type||(a.type=Ma[Object.prototype.toString.call(f)]|0);var q=d.shape,h=d.stride,g,m,E,ca;3===q.length?(E=q[2],ca=h[2]):(l(2===q.length,"invalid ndarray pixel data, must be 2 or 3D"),ca=E=1);g=q[0];m=q[1];q=h[0];h=h[1];a.alignment=1;a.width=g;a.height=m;a.channels=E;a.format=a.internalformat=Wa[E];a.needsFree=!0;g=ca;d=d.offset;E=a.width;ca=a.height;m=a.channels;for(var ub=T.allocType(36193===a.type?5126:a.type,E*ca*m),S=0,p=0;p<ca;++p)for(var za=
0;za<E;++za)for(var gb=0;gb<m;++gb)ub[S++]=f[q*za+h*p+g*gb+d];tb(a,ub)}else if("[object HTMLCanvasElement]"===sa(d)||"[object CanvasRenderingContext2D]"===sa(d))"[object HTMLCanvasElement]"===sa(d)?a.element=d:a.element=d.canvas,a.width=a.element.width,a.height=a.element.height,a.channels=4;else if("[object HTMLImageElement]"===sa(d))a.element=d,a.width=d.naturalWidth,a.height=d.naturalHeight,a.channels=4;else if("[object HTMLVideoElement]"===sa(d))a.element=d,a.width=d.videoWidth,a.height=d.videoHeight,
a.channels=4;else if(sb(d)){f=a.width||d[0].length;q=a.height||d.length;h=a.channels;h=L(d[0][0])?h||d[0][0].length:h||1;g=Xa.shape(d);E=1;for(ca=0;ca<g.length;++ca)E*=g[ca];E=T.allocType(36193===a.type?5126:a.type,E);Xa.flatten(d,g,"",E);tb(a,E);a.alignment=1;a.width=f;a.height=q;a.channels=h;a.format=a.internalformat=Wa[h];a.needsFree=!0}5126===a.type?l(0<=c.extensions.indexOf("oes_texture_float"),"oes_texture_float extension not enabled"):36193===a.type&&l(0<=c.extensions.indexOf("oes_texture_half_float"),
"oes_texture_half_float extension not enabled")}function t(b,c,e,f,l){var h=b.element,g=b.data,m=b.internalformat,E=b.format,ca=b.type,k=b.width,S=b.height;p(b);h?a.texSubImage2D(c,l,e,f,E,ca,h):b.compressed?a.compressedTexSubImage2D(c,l,e,f,m,k,S,g):b.needsCopy?(d(),a.copyTexSubImage2D(c,l,e,f,b.xOffset,b.yOffset,k,S)):a.texSubImage2D(c,l,e,f,k,S,E,ca,g)}function K(){return vb.pop()||new n}function w(a){a.needsFree&&T.freeType(a.data);n.call(a);vb.push(a)}function D(){g.call(this);this.genMipmaps=
!1;this.mipmapHint=4352;this.mipmask=0;this.images=Array(16)}function v(a,b,c){var d=a.images[0]=K();a.mipmask=1;d.width=a.width=b;d.height=a.height=c;d.channels=a.channels=4}function u(a,b){var c;if(db(b))c=a.images[0]=K(),m(c,a),r(c,b),a.mipmask=1;else if(k(a,b),Array.isArray(b.mipmap))for(var d=b.mipmap,e=0;e<d.length;++e)c=a.images[e]=K(),m(c,a),c.width>>=e,c.height>>=e,r(c,d[e]),a.mipmask|=1<<e;else c=a.images[0]=K(),m(c,a),r(c,b),a.mipmask=1;m(a,a.images[0]);(a.compressed&&33776===a.internalformat||
33777===a.internalformat||33778===a.internalformat||33779===a.internalformat)&&l(0===a.width%4&&0===a.height%4,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function y(b,c){for(var e=b.images,f=0;f<e.length&&e[f];++f){var l=e[f],h=c,g=f,m=l.element,E=l.data,ca=l.internalformat,k=l.format,S=l.type,fb=l.width,za=l.height;p(l);m?a.texImage2D(h,g,k,k,S,m):l.compressed?a.compressedTexImage2D(h,g,ca,fb,za,0,E):l.needsCopy?(d(),a.copyTexImage2D(h,g,
k,l.xOffset,l.yOffset,fb,za,0)):a.texImage2D(h,g,k,fb,za,0,k,S,E)}}function C(){var a=P.pop()||new D;g.call(a);for(var b=a.mipmask=0;16>b;++b)a.images[b]=null;return a}function z(a){for(var b=a.images,c=0;c<b.length;++c)b[c]&&w(b[c]),b[c]=null;P.push(a)}function G(){this.magFilter=this.minFilter=9728;this.wrapT=this.wrapS=33071;this.anisotropic=1;this.genMipmaps=!1;this.mipmapHint=4352}function B(a,b){if("min"in b){var d=b.min;l.parameter(d,Ya);a.minFilter=Ya[d];0<=Nb.indexOf(a.minFilter)&&(a.genMipmaps=
!0)}"mag"in b&&(d=b.mag,l.parameter(d,Qa),a.magFilter=Qa[d]);var d=a.wrapS,e=a.wrapT;if("wrap"in b){var f=b.wrap;"string"===typeof f?(l.parameter(f,x),d=e=x[f]):Array.isArray(f)&&(l.parameter(f[0],x),l.parameter(f[1],x),d=x[f[0]],e=x[f[1]])}else"wrapS"in b&&(d=b.wrapS,l.parameter(d,x),d=x[d]),"wrapT"in b&&(e=b.wrapT,l.parameter(e,x),e=x[e]);a.wrapS=d;a.wrapT=e;"anisotropic"in b&&(d=b.anisotropic,l("number"===typeof d&&1<=d&&d<=c.maxAnisotropic,"aniso samples must be between 1 and "),a.anisotropic=
b.anisotropic);if("mipmap"in b){d=!1;switch(typeof b.mipmap){case "string":l.parameter(b.mipmap,F,"invalid mipmap hint");a.mipmapHint=F[b.mipmap];d=a.genMipmaps=!0;break;case "boolean":d=a.genMipmaps=b.mipmap;break;case "object":l(Array.isArray(b.mipmap),"invalid mipmap type");a.genMipmaps=!1;d=!0;break;default:l.raise("invalid mipmap type")}!d||"min"in b||(a.minFilter=9984)}}function A(c,d){a.texParameteri(d,10241,c.minFilter);a.texParameteri(d,10240,c.magFilter);a.texParameteri(d,10242,c.wrapS);
a.texParameteri(d,10243,c.wrapT);b.ext_texture_filter_anisotropic&&a.texParameteri(d,34046,c.anisotropic);c.genMipmaps&&(a.hint(33170,c.mipmapHint),a.generateMipmap(d))}function cb(b){g.call(this);this.mipmask=0;this.internalformat=6408;this.id=da++;this.refCount=1;this.target=b;this.texture=a.createTexture();this.unit=-1;this.bindCount=0;this.texInfo=new G;h.profile&&(this.stats={size:0})}function Ea(b){a.activeTexture(33984);a.bindTexture(b.target,b.texture)}function Fa(){var b=qa[0];b?a.bindTexture(b.target,
b.texture):a.bindTexture(3553,null)}function wb(b){var c=b.texture;l(c,"must not double destroy texture");var d=b.unit,e=b.target;0<=d&&(a.activeTexture(33984+d),a.bindTexture(e,null),qa[d]=null);a.deleteTexture(c);b.texture=null;b.params=null;b.pixels=null;b.refCount=0;delete ba[b.id];f.textureCount--}var F={"don't care":4352,"dont care":4352,nice:4354,fast:4353},x={repeat:10497,clamp:33071,mirror:33648},Qa={nearest:9728,linear:9729},Ya=N({mipmap:9987,"nearest mipmap nearest":9984,"linear mipmap nearest":9985,
"nearest mipmap linear":9986,"linear mipmap linear":9987},Qa),J={none:0,browser:37444},na={uint8:5121,rgba4:32819,rgb565:33635,"rgb5 a1":32820},M={alpha:6406,luminance:6409,"luminance alpha":6410,rgb:6407,rgba:6408,rgba4:32854,"rgb5 a1":32855,rgb565:36194},X={};b.ext_srgb&&(M.srgb=35904,M.srgba=35906);b.oes_texture_float&&(na.float32=na["float"]=5126);b.oes_texture_half_float&&(na.float16=na["half float"]=36193);b.webgl_depth_texture&&(N(M,{depth:6402,"depth stencil":34041}),N(na,{uint16:5123,uint32:5125,
"depth stencil":34042}));b.webgl_compressed_texture_s3tc&&N(X,{"rgb s3tc dxt1":33776,"rgba s3tc dxt1":33777,"rgba s3tc dxt3":33778,"rgba s3tc dxt5":33779});b.webgl_compressed_texture_atc&&N(X,{"rgb atc":35986,"rgba atc explicit alpha":35987,"rgba atc interpolated alpha":34798});b.webgl_compressed_texture_pvrtc&&N(X,{"rgb pvrtc 4bppv1":35840,"rgb pvrtc 2bppv1":35841,"rgba pvrtc 4bppv1":35842,"rgba pvrtc 2bppv1":35843});b.webgl_compressed_texture_etc1&&(X["rgb etc1"]=36196);var Q=Array.prototype.slice.call(a.getParameter(34467));
Object.keys(X).forEach(function(a){var b=X[a];0<=Q.indexOf(b)&&(M[a]=b)});var R=Object.keys(M);c.textureFormats=R;var W=[];Object.keys(M).forEach(function(a){W[M[a]]=a});var H=[];Object.keys(na).forEach(function(a){H[na[a]]=a});var Ra=[];Object.keys(Qa).forEach(function(a){Ra[Qa[a]]=a});var Aa=[];Object.keys(Ya).forEach(function(a){Aa[Ya[a]]=a});var Ba=[];Object.keys(x).forEach(function(a){Ba[x[a]]=a});var O=R.reduce(function(a,b){var c=M[b];6409===c||6406===c||6409===c||6410===c||6402===c||34041===
c?a[c]=c:32855===c||0<=b.indexOf("rgba")?a[c]=6408:a[c]=6407;return a},{}),vb=[],P=[],da=0,ba={},I=c.maxTextureUnits,qa=Array(I).map(function(){return null});N(cb.prototype,{bind:function(){this.bindCount+=1;var b=this.unit;if(0>b){for(var c=0;c<I;++c){var d=qa[c];if(d){if(0<d.bindCount)continue;d.unit=-1}qa[c]=this;b=c;break}b>=I&&l.raise("insufficient number of texture units");h.profile&&f.maxTextureUnits<b+1&&(f.maxTextureUnits=b+1);this.unit=b;a.activeTexture(33984+b);a.bindTexture(this.target,
this.texture)}return b},unbind:function(){--this.bindCount},decRef:function(){0>=--this.refCount&&wb(this)}});h.profile&&(f.getTotalTextureSize=function(){var a=0;Object.keys(ba).forEach(function(b){a+=ba[b].stats.size});return a});return{create2D:function(b,d){function e(a,b){var d=g.texInfo;G.call(d);var f=C();"number"===typeof a?"number"===typeof b?v(f,a|0,b|0):v(f,a|0,a|0):a?(l.type(a,"object","invalid arguments to regl.texture"),B(d,a),u(f,a)):v(f,1,1);d.genMipmaps&&(f.mipmask=(f.width<<1)-1);
g.mipmask=f.mipmask;m(g,f);l.texture2D(d,f,c);g.internalformat=f.internalformat;e.width=f.width;e.height=f.height;Ea(g);y(f,3553);A(d,3553);Fa();z(f);h.profile&&(g.stats.size=Va(g.internalformat,g.type,f.width,f.height,d.genMipmaps,!1));e.format=W[g.internalformat];e.type=H[g.type];e.mag=Ra[d.magFilter];e.min=Aa[d.minFilter];e.wrapS=Ba[d.wrapS];e.wrapT=Ba[d.wrapT];return e}var g=new cb(3553);ba[g.id]=g;f.textureCount++;e(b,d);e.subimage=function(a,b,c,d){l(!!a,"must specify image data");b|=0;c|=0;
d|=0;var f=K();m(f,g);f.width=0;f.height=0;r(f,a);f.width=f.width||(g.width>>d)-b;f.height=f.height||(g.height>>d)-c;l(g.type===f.type&&g.format===f.format&&g.internalformat===f.internalformat,"incompatible format for texture.subimage");l(0<=b&&0<=c&&b+f.width<=g.width&&c+f.height<=g.height,"texture.subimage write out of bounds");l(g.mipmask&1<<d,"missing mipmap data");l(f.data||f.element||f.needsCopy,"missing image data");Ea(g);t(f,3553,b,c,d);Fa();w(f);return e};e.resize=function(b,c){var d=b|0,
f=c|0||d;if(d===g.width&&f===g.height)return e;e.width=g.width=d;e.height=g.height=f;Ea(g);for(var l=0;g.mipmask>>l;++l)a.texImage2D(3553,l,g.format,d>>l,f>>l,0,g.format,g.type,null);Fa();h.profile&&(g.stats.size=Va(g.internalformat,g.type,d,f,!1,!1));return e};e._reglType="texture2d";e._texture=g;h.profile&&(e.stats=g.stats);e.destroy=function(){g.decRef()};return e},createCube:function(b,d,e,g,S,p){function n(a,b,d,e,f,g){var q,ga=F.texInfo;G.call(ga);for(q=0;6>q;++q)E[q]=C();if("number"!==typeof a&&
a)if("object"===typeof a)if(b)u(E[0],a),u(E[1],b),u(E[2],d),u(E[3],e),u(E[4],f),u(E[5],g);else if(B(ga,a),k(F,a),"faces"in a)for(a=a.faces,l(Array.isArray(a)&&6===a.length,"cube faces must be a length 6 array"),q=0;6>q;++q)l("object"===typeof a[q]&&!!a[q],"invalid input for cube map face"),m(E[q],F),u(E[q],a[q]);else for(q=0;6>q;++q)u(E[q],a);else l.raise("invalid arguments to cube map");else for(a=a|0||1,q=0;6>q;++q)v(E[q],a,a);m(F,E[0]);F.mipmask=ga.genMipmaps?(E[0].width<<1)-1:E[0].mipmask;l.textureCube(F,
ga,E,c);F.internalformat=E[0].internalformat;n.width=E[0].width;n.height=E[0].height;Ea(F);for(q=0;6>q;++q)y(E[q],34069+q);A(ga,34067);Fa();h.profile&&(F.stats.size=Va(F.internalformat,F.type,n.width,n.height,ga.genMipmaps,!0));n.format=W[F.internalformat];n.type=H[F.type];n.mag=Ra[ga.magFilter];n.min=Aa[ga.minFilter];n.wrapS=Ba[ga.wrapS];n.wrapT=Ba[ga.wrapT];for(q=0;6>q;++q)z(E[q]);return n}var F=new cb(34067);ba[F.id]=F;f.cubeCount++;var E=Array(6);n(b,d,e,g,S,p);n.subimage=function(a,b,c,d,e){l(!!b,
"must specify image data");l("number"===typeof a&&a===(a|0)&&0<=a&&6>a,"invalid face");c|=0;d|=0;e|=0;var f=K();m(f,F);f.width=0;f.height=0;r(f,b);f.width=f.width||(F.width>>e)-c;f.height=f.height||(F.height>>e)-d;l(F.type===f.type&&F.format===f.format&&F.internalformat===f.internalformat,"incompatible format for texture.subimage");l(0<=c&&0<=d&&c+f.width<=F.width&&d+f.height<=F.height,"texture.subimage write out of bounds");l(F.mipmask&1<<e,"missing mipmap data");l(f.data||f.element||f.needsCopy,
"missing image data");Ea(F);t(f,34069+a,c,d,e);Fa();w(f);return n};n.resize=function(b){b|=0;if(b!==F.width){n.width=F.width=b;n.height=F.height=b;Ea(F);for(var c=0;6>c;++c)for(var d=0;F.mipmask>>d;++d)a.texImage2D(34069+c,d,F.format,b>>d,b>>d,0,F.format,F.type,null);Fa();h.profile&&(F.stats.size=Va(F.internalformat,F.type,n.width,n.height,!1,!0));return n}};n._reglType="textureCube";n._texture=F;h.profile&&(n.stats=F.stats);n.destroy=function(){F.decRef()};return n},clear:function(){for(var b=0;b<
I;++b)a.activeTexture(33984+b),a.bindTexture(3553,null),qa[b]=null;V(ba).forEach(wb);f.cubeCount=0;f.textureCount=0},getTexture:function(a){return null},restore:function(){V(ba).forEach(function(b){b.texture=a.createTexture();a.bindTexture(b.target,b.texture);for(var c=0;32>c;++c)if(0!==(b.mipmask&1<<c))if(3553===b.target)a.texImage2D(3553,c,b.internalformat,b.width>>c,b.height>>c,0,b.internalformat,b.type,null);else for(var d=0;6>d;++d)a.texImage2D(34069+d,c,b.internalformat,b.width>>c,b.height>>
c,0,b.internalformat,b.type,null);A(b.texInfo,b.target)})}}}function Ob(a,b,c,d,e,f){function g(a,b,c){this.target=a;this.texture=b;this.renderbuffer=c;var d=a=0;b?(a=b.width,d=b.height):c&&(a=c.width,d=c.height);this.width=a;this.height=d}function h(a){a&&(a.texture&&a.texture._texture.decRef(),a.renderbuffer&&a.renderbuffer._renderbuffer.decRef())}function m(a,b,c){if(a){if(a.texture){a=a.texture._texture;var d=Math.max(1,a.height);l(Math.max(1,a.width)===b&&d===c,"inconsistent width/height for supplied texture")}else a=
a.renderbuffer._renderbuffer,l(a.width===b&&a.height===c,"inconsistent width/height for renderbuffer");a.refCount+=1}}function k(b,c){c&&(c.texture?a.framebufferTexture2D(36160,b,c.target,c.texture._texture.texture,0):a.framebufferRenderbuffer(36160,b,36161,c.renderbuffer._renderbuffer.renderbuffer))}function n(a){var b=3553,c=null,d=null,e=a;"object"===typeof a&&(e=a.data,"target"in a&&(b=a.target|0));l.type(e,"function","invalid attachment data");a=e._reglType;"texture2d"===a?(c=e,l(3553===b)):
"textureCube"===a?(c=e,l(34069<=b&&34075>b,"invalid cube map target")):"renderbuffer"===a?(d=e,b=36161):l.raise("invalid regl object for attachment");return new g(b,c,d)}function p(a,b,c,f,l){if(c)return a=d.create2D({width:a,height:b,format:f,type:l}),a._texture.refCount=0,new g(3553,a,null);a=e.create({width:a,height:b,format:f});a._renderbuffer.refCount=0;return new g(36161,null,a)}function r(a){return a&&(a.texture||a.renderbuffer)}function t(a,b,c){a&&(a.texture?a.texture.resize(b,c):a.renderbuffer&&
a.renderbuffer.resize(b,c))}function K(){this.id=B++;x[this.id]=this;this.framebuffer=a.createFramebuffer();this.height=this.width=0;this.colorAttachments=[];this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function u(a){a.colorAttachments.forEach(h);h(a.depthAttachment);h(a.stencilAttachment);h(a.depthStencilAttachment)}function v(b){var c=b.framebuffer;l(c,"must not double destroy framebuffer");a.deleteFramebuffer(c);b.framebuffer=null;f.framebufferCount--;delete x[b.id]}
function w(b){var d;a.bindFramebuffer(36160,b.framebuffer);var e=b.colorAttachments;for(d=0;d<e.length;++d)k(36064+d,e[d]);for(d=e.length;d<c.maxColorAttachments;++d)a.framebufferTexture2D(36160,36064+d,3553,null,0);a.framebufferTexture2D(36160,33306,3553,null,0);a.framebufferTexture2D(36160,36096,3553,null,0);a.framebufferTexture2D(36160,36128,3553,null,0);k(36096,b.depthAttachment);k(36128,b.stencilAttachment);k(33306,b.depthStencilAttachment);b=a.checkFramebufferStatus(36160);36053!==b&&l.raise("framebuffer configuration not supported, status = "+
Pb[b]);a.bindFramebuffer(36160,y.next);y.cur=y.next;a.getError()}function D(a,d){function e(a,d){var f;l(y.next!==g,"can not update framebuffer which is currently in use");var q=b.webgl_draw_buffers,h=0,k=0,K=!0,t=!0;f=null;var v=!0,D="rgba",la="uint8",Ta=1,La=null,Ka=null,x=null,B=!1;if("number"===typeof a)h=a|0,k=d|0||h;else if(a){l.type(a,"object","invalid arguments for framebuffer");"shape"in a?(k=a.shape,l(Array.isArray(k)&&2<=k.length,"invalid shape for framebuffer"),h=k[0],k=k[1]):("radius"in
a&&(h=k=a.radius),"width"in a&&(h=a.width),"height"in a&&(k=a.height));if("color"in a||"colors"in a)f=a.color||a.colors,Array.isArray(f)&&l(1===f.length||q,"multiple render targets not supported");if(!f){"colorCount"in a&&(Ta=a.colorCount|0,l(0<Ta,"invalid color buffer count"));"colorTexture"in a&&(v=!!a.colorTexture,D="rgba4");if("colorType"in a){la=a.colorType;if(v)l(b.oes_texture_float||!("float"===la||"float32"===la),"you must enable OES_texture_float in order to use floating point framebuffer objects"),
l(b.oes_texture_half_float||!("half float"===la||"float16"===la),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects");else if("half float"===la||"float16"===la)l(b.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),D="rgba16f";else if("float"===la||"float32"===la)l(b.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),D="rgba32f";
l.oneOf(la,G,"invalid color type")}if("colorFormat"in a)if(D=a.colorFormat,0<=C.indexOf(D))v=!0;else if(0<=z.indexOf(D))v=!1;else if(v)l.oneOf(a.colorFormat,C,"invalid color format for texture");else l.oneOf(a.colorFormat,z,"invalid color format for renderbuffer")}if("depthTexture"in a||"depthStencilTexture"in a)B=!(!a.depthTexture&&!a.depthStencilTexture),l(!B||b.webgl_depth_texture,"webgl_depth_texture extension not supported");"depth"in a&&("boolean"===typeof a.depth?K=a.depth:(La=a.depth,t=!1));
"stencil"in a&&("boolean"===typeof a.stencil?t=a.stencil:(Ka=a.stencil,K=!1));"depthStencil"in a&&("boolean"===typeof a.depthStencil?K=t=a.depthStencil:(x=a.depthStencil,t=K=!1))}else h=k=1;var Z,A=q=null,pa=null;if(Array.isArray(f))Z=f.map(n);else if(f)Z=[n(f)];else for(Z=Array(Ta),f=0;f<Ta;++f)Z[f]=p(h,k,v,D,la);l(b.webgl_draw_buffers||1>=Z.length,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers.");l(Z.length<=c.maxColorAttachments,"too many color attachments, not supported");
h=h||Z[0].width;k=k||Z[0].height;La?q=n(La):K&&!t&&(q=p(h,k,B,"depth","uint32"));Ka?A=n(Ka):t&&!K&&(A=p(h,k,!1,"stencil","uint8"));x?pa=n(x):!La&&!Ka&&t&&K&&(pa=p(h,k,B,"depth stencil","depth stencil"));l(1>=!!La+!!Ka+!!x,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");K=null;for(f=0;f<Z.length;++f)m(Z[f],h,k),l(!Z[f]||Z[f].texture&&0<=Qb.indexOf(Z[f].texture._texture.format)||Z[f].renderbuffer&&0<=Rb.indexOf(Z[f].renderbuffer._renderbuffer.format),"framebuffer color attachment "+
f+" is invalid"),Z[f]&&Z[f].texture&&(t=xb[Z[f].texture._texture.format]*Za[Z[f].texture._texture.type],null===K?K=t:l(K===t,"all color attachments much have the same number of bits per pixel."));m(q,h,k);l(!q||q.texture&&6402===q.texture._texture.format||q.renderbuffer&&33189===q.renderbuffer._renderbuffer.format,"invalid depth attachment for framebuffer object");m(A,h,k);l(!A||A.renderbuffer&&36168===A.renderbuffer._renderbuffer.format,"invalid stencil attachment for framebuffer object");m(pa,h,
k);l(!pa||pa.texture&&34041===pa.texture._texture.format||pa.renderbuffer&&34041===pa.renderbuffer._renderbuffer.format,"invalid depth-stencil attachment for framebuffer object");u(g);g.width=h;g.height=k;g.colorAttachments=Z;g.depthAttachment=q;g.stencilAttachment=A;g.depthStencilAttachment=pa;e.color=Z.map(r);e.depth=r(q);e.stencil=r(A);e.depthStencil=r(pa);e.width=g.width;e.height=g.height;w(g);return e}var g=new K;f.framebufferCount++;e(a,d);return N(e,{resize:function(a,b){l(y.next!==g,"can not resize a framebuffer which is currently in use");
var c=a|0,d=b|0||c;if(c===g.width&&d===g.height)return e;for(var f=g.colorAttachments,q=0;q<f.length;++q)t(f[q],c,d);t(g.depthAttachment,c,d);t(g.stencilAttachment,c,d);t(g.depthStencilAttachment,c,d);g.width=e.width=c;g.height=e.height=d;w(g);return e},_reglType:"framebuffer",_framebuffer:g,destroy:function(){v(g);u(g)},use:function(a){y.setFBO({framebuffer:e},a)}})}var y={cur:null,next:null,dirty:!1,setFBO:null},C=["rgba"],z=["rgba4","rgb565","rgb5 a1"];b.ext_srgb&&z.push("srgba");b.ext_color_buffer_half_float&&
z.push("rgba16f","rgb16f");b.webgl_color_buffer_float&&z.push("rgba32f");var G=["uint8"];b.oes_texture_half_float&&G.push("half float","float16");b.oes_texture_float&&G.push("float","float32");var B=0,x={};return N(y,{getFramebuffer:function(a){return"function"===typeof a&&"framebuffer"===a._reglType&&(a=a._framebuffer,a instanceof K)?a:null},create:D,createCube:function(a){function e(a){var c;l(0>f.indexOf(y.next),"can not update framebuffer which is currently in use");var g=b.webgl_draw_buffers,
q={color:null},h=0,m=null;c="rgba";var k="uint8",n=1;if("number"===typeof a)h=a|0;else if(a){l.type(a,"object","invalid arguments for framebuffer");"shape"in a?(h=a.shape,l(Array.isArray(h)&&2<=h.length,"invalid shape for framebuffer"),l(h[0]===h[1],"cube framebuffer must be square"),h=h[0]):("radius"in a&&(h=a.radius|0),"width"in a?(h=a.width|0,"height"in a&&l(a.height===h,"must be square")):"height"in a&&(h=a.height|0));if("color"in a||"colors"in a)m=a.color||a.colors,Array.isArray(m)&&l(1===m.length||
g,"multiple render targets not supported");m||("colorCount"in a&&(n=a.colorCount|0,l(0<n,"invalid color buffer count")),"colorType"in a&&(l.oneOf(a.colorType,G,"invalid color type"),k=a.colorType),"colorFormat"in a&&(c=a.colorFormat,l.oneOf(a.colorFormat,C,"invalid color format for texture")));"depth"in a&&(q.depth=a.depth);"stencil"in a&&(q.stencil=a.stencil);"depthStencil"in a&&(q.depthStencil=a.depthStencil)}else h=1;if(m)if(Array.isArray(m))for(a=[],c=0;c<m.length;++c)a[c]=m[c];else a=[m];else for(a=
Array(n),m={radius:h,format:c,type:k},c=0;c<n;++c)a[c]=d.createCube(m);q.color=Array(a.length);for(c=0;c<a.length;++c)n=a[c],l("function"===typeof n&&"textureCube"===n._reglType,"invalid cube map"),h=h||n.width,l(n.width===h&&n.height===h,"invalid cube map shape"),q.color[c]={target:34069,data:a[c]};for(c=0;6>c;++c){for(n=0;n<a.length;++n)q.color[n].target=34069+c;0<c&&(q.depth=f[0].depth,q.stencil=f[0].stencil,q.depthStencil=f[0].depthStencil);if(f[c])f[c](q);else f[c]=D(q)}return N(e,{width:h,height:h,
color:a})}var f=Array(6);e(a);return N(e,{faces:f,resize:function(a){var b=a|0;l(0<b&&b<=c.maxCubeMapSize,"invalid radius for cube fbo");if(b===e.width)return e;var d=e.color;for(a=0;a<d.length;++a)d[a].resize(b);for(a=0;6>a;++a)f[a].resize(b);e.width=e.height=b;return e},_reglType:"framebufferCube",destroy:function(){f.forEach(function(a){a.destroy()})}})},clear:function(){V(x).forEach(v)},restore:function(){V(x).forEach(function(b){b.framebuffer=a.createFramebuffer();w(b)})}})}function yb(){this.w=
this.z=this.y=this.x=this.state=0;this.buffer=null;this.size=0;this.normalized=!1;this.type=5126;this.divisor=this.stride=this.offset=0}function Sb(a,b,c,d,e){a=c.maxAttributes;b=Array(a);for(c=0;c<a;++c)b[c]=new yb;return{Record:yb,scope:{},state:b}}function Tb(a,b,c,d){function e(a,b,c,d){this.name=a;this.id=b;this.location=c;this.info=d}function f(a,b){for(var c=0;c<a.length;++c)if(a[c].id===b.id){a[c].location=b.location;return}a.push(b)}function g(c,d,e){var f=35632===c?k:n,h=f[d];if(!h){var m=
b.str(d),h=a.createShader(c);a.shaderSource(h,m);a.compileShader(h);l.shaderError(a,h,m,c,e);f[d]=h}return h}function h(a,b){this.id=t++;this.fragId=a;this.vertId=b;this.program=null;this.uniforms=[];this.attributes=[];d.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function m(c,h){var k,n;k=g(35632,c.fragId);n=g(35633,c.vertId);var p=c.program=a.createProgram();a.attachShader(p,k);a.attachShader(p,n);a.linkProgram(p);l.linkError(a,p,b.str(c.fragId),b.str(c.vertId),h);var r=a.getProgramParameter(p,
35718);d.profile&&(c.stats.uniformsCount=r);var t=c.uniforms;for(k=0;k<r;++k)if(n=a.getActiveUniform(p,k))if(1<n.size)for(var ya=0;ya<n.size;++ya){var v=n.name.replace("[0]","["+ya+"]");f(t,new e(v,b.id(v),a.getUniformLocation(p,v),n))}else f(t,new e(n.name,b.id(n.name),a.getUniformLocation(p,n.name),n));r=a.getProgramParameter(p,35721);d.profile&&(c.stats.attributesCount=r);t=c.attributes;for(k=0;k<r;++k)(n=a.getActiveAttrib(p,k))&&f(t,new e(n.name,b.id(n.name),a.getAttribLocation(p,n.name),n))}
var k={},n={},p={},r=[],t=0;d.profile&&(c.getMaxUniformsCount=function(){var a=0;r.forEach(function(b){b.stats.uniformsCount>a&&(a=b.stats.uniformsCount)});return a},c.getMaxAttributesCount=function(){var a=0;r.forEach(function(b){b.stats.attributesCount>a&&(a=b.stats.attributesCount)});return a});return{clear:function(){var b=a.deleteShader.bind(a);V(k).forEach(b);k={};V(n).forEach(b);n={};r.forEach(function(b){a.deleteProgram(b.program)});r.length=0;p={};c.shaderCount=0},program:function(a,b,d){l.command(0<=
a,"missing vertex shader",d);l.command(0<=b,"missing fragment shader",d);var e=p[b];e||(e=p[b]={});var f=e[a];f||(f=new h(b,a),c.shaderCount++,m(f,d),e[a]=f,r.push(f));return f},restore:function(){k={};n={};for(var a=0;a<r.length;++a)m(r[a])},shader:g,frag:-1,vert:-1}}function Ub(a,b,c,d,e,f){function h(g){var m;null===b.next?(l(e.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),m=5121):(l(null!==b.next.colorAttachments[0].texture,
"You cannot read from a renderbuffer"),m=b.next.colorAttachments[0].texture._texture.type,f.oes_texture_float?l(5121===m||5126===m,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"):l(5121===m,"Reading from a framebuffer is only allowed for the type 'uint8'"));var k=0,n=0,p=d.framebufferWidth,r=d.framebufferHeight,t=null;Y(g)?t=g:g&&(l.type(g,"object","invalid arguments to regl.read()"),k=g.x|0,n=g.y|0,l(0<=k&&k<d.framebufferWidth,"invalid x offset for regl.read"),l(0<=
n&&n<d.framebufferHeight,"invalid y offset for regl.read"),p=(g.width||d.framebufferWidth-k)|0,r=(g.height||d.framebufferHeight-n)|0,t=g.data||null);t&&(5121===m?l(t instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):5126===m&&l(t instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'"));l(0<p&&p+k<=d.framebufferWidth,"invalid width for read pixels");l(0<r&&r+n<=d.framebufferHeight,"invalid height for read pixels");
c();g=p*r*4;t||(5121===m?t=new Uint8Array(g):5126===m&&(t=t||new Float32Array(g)));l.isTypedArray(t,"data buffer for regl.read() must be a typedarray");l(t.byteLength>=g,"data buffer for regl.read() too small");a.pixelStorei(3333,4);a.readPixels(k,n,p,r,6408,m,t);return t}function g(a){var c;b.setFBO({framebuffer:a.framebuffer},function(){c=h(a)});return c}return function(a){return a&&"framebuffer"in a?g(a):h(a)}}function Ga(a){return Array.prototype.slice.call(a)}function Ha(a){return Ga(a).join("")}
function Vb(){function a(){var b=[],d=[];return N(function(){b.push.apply(b,Ga(arguments))},{def:function(){var a="v"+c++;d.push(a);0<arguments.length&&(b.push(a,"="),b.push.apply(b,Ga(arguments)),b.push(";"));return a},toString:function(){return Ha([0<d.length?"var "+d+";":"",Ha(b)])}})}function b(){function c(a,b){e(a,b,"=",d.def(a,b),";")}var d=a(),e=a(),f=d.toString,g=e.toString;return N(function(){d.apply(d,Ga(arguments))},{def:d.def,entry:d,exit:e,save:c,set:function(a,b,e){c(a,b);d(a,b,"=",
e,";")},toString:function(){return f()+g()}})}var c=0,d=[],e=[],f=a(),g={};return{global:f,link:function(a){for(var b=0;b<e.length;++b)if(e[b]===a)return d[b];b="g"+c++;d.push(b);e.push(a);return b},block:a,proc:function(a,c){function d(){var a="a"+e.length;e.push(a);return a}var e=[];c=c||0;for(var f=0;f<c;++f)d();var f=b(),h=f.toString;return g[a]=N(f,{arg:d,toString:function(){return Ha(["function(",e.join(),"){",h(),"}"])}})},scope:b,cond:function(){var a=Ha(arguments),c=b(),d=b(),e=c.toString,
f=d.toString;return N(c,{then:function(){c.apply(c,Ga(arguments));return this},"else":function(){d.apply(d,Ga(arguments));return this},toString:function(){var b=f();b&&(b="else{"+b+"}");return Ha(["if(",a,"){",e(),"}",b])}})},compile:function(){var a=['"use strict";',f,"return {"];Object.keys(g).forEach(function(b){a.push('"',b,'":',g[b].toString(),",")});a.push("}");var b=Ha(a).replace(/;/g,";\n").replace(/}/g,"}\n").replace(/{/g,"{\n");return Function.apply(null,d.concat(b)).apply(null,e)}}}function $a(a){return Array.isArray(a)||
Y(a)||U(a)}function zb(a){return a.sort(function(a,b){return"viewport"===a?-1:"viewport"===b?1:a<b?-1:1})}function ka(a,b,c,d){this.thisDep=a;this.contextDep=b;this.propDep=c;this.append=d}function wa(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function P(a){return new ka(!1,!1,!1,a)}function ia(a,b){var c=a.type;return 0===c?(c=a.data.length,new ka(!0,1<=c,2<=c,b)):4===c?(c=a.data,new ka(c.thisDep,c.contextDep,c.propDep,b)):new ka(3===c,2===c,1===c,b)}function Wb(a,b,c,d,e,f,g,h,m,k,n,p,r,
t,v){function D(a){return a.replace(".","_")}function w(a,b,c){var d=D(a);Pa.push(a);Oa[d]=ta[d]=!!c;ua[d]=b}function u(a,b,c){var d=D(a);Pa.push(a);Array.isArray(c)?(ta[d]=c.slice(),Oa[d]=c.slice()):ta[d]=Oa[d]=c;va[d]=b}function y(){var a=Vb(),c=a.link,d=a.global;a.id=sa++;a.batchId="0";var e=c(eb),f=a.shared={props:"a0"};Object.keys(eb).forEach(function(a){f[a]=d.def(e,".",a)});l.optional(function(){a.CHECK=c(l);a.commandStr=l.guessCommand();a.command=c(a.commandStr);a.assert=function(a,b,d){a("if(!(",
b,"))",this.CHECK,".commandRaise(",c(d),",",this.command,");")};ea.invalidBlendCombinations=Ab});var g=a.next={},h=a.current={};Object.keys(va).forEach(function(a){Array.isArray(ta[a])&&(g[a]=d.def(f.next,".",a),h[a]=d.def(f.current,".",a))});var q=a.constants={};Object.keys(ea).forEach(function(a){q[a]=d.def(JSON.stringify(ea[a]))});a.invoke=function(b,d){switch(d.type){case 0:var e=["this",f.context,f.props,a.batchId];return b.def(c(d.data),".call(",e.slice(0,Math.max(d.data.length+1,4)),")");case 1:return b.def(f.props,
d.data);case 2:return b.def(f.context,d.data);case 3:return b.def("this",d.data);case 4:return d.data.append(a,b),d.data.ref}};a.attribCache={};var ga={};a.scopeAttrib=function(a){a=b.id(a);if(a in ga)return ga[a];var d=k.scope[a];d||(d=k.scope[a]=new V);return ga[a]=c(d)};return a}function z(a){var b=a["static"];a=a.dynamic;var c;if("profile"in b){var d=!!b.profile;c=P(function(a,b){return d});c.enable=d}else if("profile"in a){var e=a.profile;c=ia(e,function(a,b){return a.invoke(b,e)})}return c}
function x(a,b){var c=a["static"],d=a.dynamic;if("framebuffer"in c){var e=c.framebuffer;return e?(e=h.getFramebuffer(e),l.command(e,"invalid framebuffer object"),P(function(a,b){var c=a.link(e),d=a.shared;b.set(d.framebuffer,".next",c);d=d.context;b.set(d,".framebufferWidth",c+".width");b.set(d,".framebufferHeight",c+".height");return c})):P(function(a,b){var c=a.shared;b.set(c.framebuffer,".next","null");c=c.context;b.set(c,".framebufferWidth",c+".drawingBufferWidth");b.set(c,".framebufferHeight",
c+".drawingBufferHeight");return"null"})}if("framebuffer"in d){var f=d.framebuffer;return ia(f,function(a,b){var c=a.invoke(b,f),d=a.shared,e=d.framebuffer,g=b.def(e,".getFramebuffer(",c,")");l.optional(function(){a.assert(b,"!"+c+"||"+g,"invalid framebuffer object")});b.set(e,".next",g);d=d.context;b.set(d,".framebufferWidth",g+"?"+g+".width:"+d+".drawingBufferWidth");b.set(d,".framebufferHeight",g+"?"+g+".height:"+d+".drawingBufferHeight");return g})}return null}function C(a,b,c){function d(a){if(a in
e){var g=e[a];l.commandType(g,"object","invalid "+a,c.commandStr);var h=!0,q=g.x|0,m=g.y|0,k,E;"width"in g?(k=g.width|0,l.command(0<=k,"invalid "+a,c.commandStr)):h=!1;"height"in g?(E=g.height|0,l.command(0<=E,"invalid "+a,c.commandStr)):h=!1;return new ka(!h&&b&&b.thisDep,!h&&b&&b.contextDep,!h&&b&&b.propDep,function(a,b){var c=a.shared.context,d=k;"width"in g||(d=b.def(c,".","framebufferWidth","-",q));var e=E;"height"in g||(e=b.def(c,".","framebufferHeight","-",m));return[q,m,d,e]})}if(a in f){var n=
f[a],h=ia(n,function(b,c){var d=b.invoke(c,n);l.optional(function(){b.assert(c,d+"&&typeof "+d+'==="object"',"invalid "+a)});var e=b.shared.context,f=c.def(d,".x|0"),g=c.def(d,".y|0"),h=c.def('"width" in ',d,"?",d,".width|0:","(",e,".","framebufferWidth","-",f,")"),q=c.def('"height" in ',d,"?",d,".height|0:","(",e,".","framebufferHeight","-",g,")");l.optional(function(){b.assert(c,h+">=0&&"+q+">=0","invalid "+a)});return[f,g,h,q]});b&&(h.thisDep=h.thisDep||b.thisDep,h.contextDep=h.contextDep||b.contextDep,
h.propDep=h.propDep||b.propDep);return h}return b?new ka(b.thisDep,b.contextDep,b.propDep,function(a,b){var c=a.shared.context;return[0,0,b.def(c,".","framebufferWidth"),b.def(c,".","framebufferHeight")]}):null}var e=a["static"],f=a.dynamic;if(a=d("viewport")){var g=a;a=new ka(a.thisDep,a.contextDep,a.propDep,function(a,b){var c=g.append(a,b),d=a.shared.context;b.set(d,".viewportWidth",c[2]);b.set(d,".viewportHeight",c[3]);return c})}return{viewport:a,scissor_box:d("scissor.box")}}function A(a){function c(a){if(a in
d){var f=b.id(d[a]);l.optional(function(){n.shader(Bb[a],f,l.guessCommand())});var g=P(function(){return f});g.id=f;return g}if(a in e){var h=e[a];return ia(h,function(b,c){var d=b.invoke(c,h),e=c.def(b.shared.strings,".id(",d,")");l.optional(function(){c(b.shared.shader,".shader(",Bb[a],",",e,",",b.command,");")});return e})}return null}var d=a["static"],e=a.dynamic,f=c("frag"),g=c("vert"),h=null;wa(f)&&wa(g)?(h=n.program(g.id,f.id),a=P(function(a,b){return a.link(h)})):a=new ka(f&&f.thisDep||g&&
g.thisDep,f&&f.contextDep||g&&g.contextDep,f&&f.propDep||g&&g.propDep,function(a,b){var c=a.shared.shader,d;d=f?f.append(a,b):b.def(c,".","frag");var e;e=g?g.append(a,b):b.def(c,".","vert");var h=c+".program("+e+","+d;l.optional(function(){h+=","+a.command});return b.def(h+")")});return{frag:f,vert:g,progVar:a,program:h}}function B(a,b){function c(a,f){if(a in d){var h=d[a]|0;l.command(!f||0<=h,"invalid "+a,b.commandStr);return P(function(a,b){f&&(a.OFFSET=h);return h})}if(a in e){var q=e[a];return ia(q,
function(b,c){var d=b.invoke(c,q);f&&(b.OFFSET=d,l.optional(function(){b.assert(c,d+">=0","invalid "+a)}));return d})}return f&&g?P(function(a,b){a.OFFSET="0";return 0}):null}var d=a["static"],e=a.dynamic,g=function(){if("elements"in d){var a=d.elements;$a(a)?a=f.getElements(f.create(a,!0)):a&&(a=f.getElements(a),l.command(a,"invalid elements",b.commandStr));var c=P(function(b,c){if(a){var d=b.link(a);return b.ELEMENTS=d}return b.ELEMENTS=null});c.value=a;return c}if("elements"in e){var g=e.elements;
return ia(g,function(a,b){var c=a.shared,d=c.isBufferArgs,c=c.elements,e=a.invoke(b,g),f=b.def("null"),d=b.def(d,"(",e,")"),h=a.cond(d).then(f,"=",c,".createStream(",e,");")["else"](f,"=",c,".getElements(",e,");");l.optional(function(){a.assert(h["else"],"!"+e+"||"+f,"invalid elements")});b.entry(h);b.exit(a.cond(d).then(c,".destroyStream(",f,");"));return a.ELEMENTS=f})}return null}(),h=c("offset",!0);return{elements:g,primitive:function(){if("primitive"in d){var a=d.primitive;l.commandParameter(a,
Ca,"invalid primitve",b.commandStr);return P(function(b,c){return Ca[a]})}if("primitive"in e){var c=e.primitive;return ia(c,function(a,b){var d=a.constants.primTypes,e=a.invoke(b,c);l.optional(function(){a.assert(b,e+" in "+d,"invalid primitive, must be one of "+Object.keys(Ca))});return b.def(d,"[",e,"]")})}return g?wa(g)?g.value?P(function(a,b){return b.def(a.ELEMENTS,".primType")}):P(function(){return 4}):new ka(g.thisDep,g.contextDep,g.propDep,function(a,b){var c=a.ELEMENTS;return b.def(c,"?",
c,".primType:",4)}):null}(),count:function(){if("count"in d){var a=d.count|0;l.command("number"===typeof a&&0<=a,"invalid vertex count",b.commandStr);return P(function(){return a})}if("count"in e){var c=e.count;return ia(c,function(a,b){var d=a.invoke(b,c);l.optional(function(){a.assert(b,"typeof "+d+'==="number"&&'+d+">=0&&"+d+"===("+d+"|0)","invalid vertex count")});return d})}if(g){if(wa(g)){if(g)return h?new ka(h.thisDep,h.contextDep,h.propDep,function(a,b){var c=b.def(a.ELEMENTS,".vertCount-",
a.OFFSET);l.optional(function(){a.assert(b,c+">=0","invalid vertex offset/element buffer too small")});return c}):P(function(a,b){return b.def(a.ELEMENTS,".vertCount")});var f=P(function(){return-1});l.optional(function(){f.MISSING=!0});return f}var q=new ka(g.thisDep||h.thisDep,g.contextDep||h.contextDep,g.propDep||h.propDep,function(a,b){var c=a.ELEMENTS;return a.OFFSET?b.def(c,"?",c,".vertCount-",a.OFFSET,":-1"):b.def(c,"?",c,".vertCount:-1")});l.optional(function(){q.DYNAMIC=!0});return q}return null}(),
instances:c("instances",!1),offset:h}}function G(a,b){var c=a["static"],e=a.dynamic,f={};Pa.forEach(function(a){function g(b,d){if(a in c){var l=b(c[a]);f[h]=P(function(){return l})}else if(a in e){var q=e[a];f[h]=ia(q,function(a,b){return d(a,b,a.invoke(b,q))})}}var h=D(a);switch(a){case "cull.enable":case "blend.enable":case "dither":case "stencil.enable":case "depth.enable":case "scissor.enable":case "polygonOffset.enable":case "sample.alpha":case "sample.enable":case "depth.mask":return g(function(c){l.commandType(c,
"boolean",a,b.commandStr);return c},function(b,c,d){l.optional(function(){b.assert(c,"typeof "+d+'==="boolean"',"invalid flag "+a,b.commandStr)});return d});case "depth.func":return g(function(c){l.commandParameter(c,Ia,"invalid "+a,b.commandStr);return Ia[c]},function(b,c,d){var e=b.constants.compareFuncs;l.optional(function(){b.assert(c,d+" in "+e,"invalid "+a+", must be one of "+Object.keys(Ia))});return c.def(e,"[",d,"]")});case "depth.range":return g(function(a){l.command(L(a)&&2===a.length&&
"number"===typeof a[0]&&"number"===typeof a[1]&&a[0]<=a[1],"depth range is 2d array",b.commandStr);return a},function(a,b,c){l.optional(function(){a.assert(b,a.shared.isArrayLike+"("+c+")&&"+c+".length===2&&typeof "+c+'[0]==="number"&&typeof '+c+'[1]==="number"&&'+c+"[0]<="+c+"[1]","depth range must be a 2d array")});var d=b.def("+",c,"[0]"),e=b.def("+",c,"[1]");return[d,e]});case "blend.func":return g(function(a){l.commandType(a,"object","blend.func",b.commandStr);var c="srcRGB"in a?a.srcRGB:a.src,
d="srcAlpha"in a?a.srcAlpha:a.src,e="dstRGB"in a?a.dstRGB:a.dst;a="dstAlpha"in a?a.dstAlpha:a.dst;l.commandParameter(c,ra,h+".srcRGB",b.commandStr);l.commandParameter(d,ra,h+".srcAlpha",b.commandStr);l.commandParameter(e,ra,h+".dstRGB",b.commandStr);l.commandParameter(a,ra,h+".dstAlpha",b.commandStr);l.command(-1===Ab.indexOf(c+", "+e),"unallowed blending combination (srcRGB, dstRGB) = ("+c+", "+e+")",b.commandStr);return[ra[c],ra[e],ra[d],ra[a]]},function(b,c,d){function e(g,h){var q=c.def('"',g,
h,'" in ',d,"?",d,".",g,h,":",d,".",g);l.optional(function(){b.assert(c,q+" in "+f,"invalid "+a+"."+g+h+", must be one of "+Object.keys(ra))});return q}var f=b.constants.blendFuncs;l.optional(function(){b.assert(c,d+"&&typeof "+d+'==="object"',"invalid blend func, must be an object")});var g=e("src","RGB"),h=e("dst","RGB");l.optional(function(){b.assert(c,b.constants.invalidBlendCombinations+".indexOf("+g+'+", "+'+h+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var q=c.def(f,
"[",g,"]"),m=c.def(f,"[",e("src","Alpha"),"]"),k=c.def(f,"[",h,"]"),E=c.def(f,"[",e("dst","Alpha"),"]");return[q,k,m,E]});case "blend.equation":return g(function(c){if("string"===typeof c)return l.commandParameter(c,ba,"invalid "+a,b.commandStr),[ba[c],ba[c]];if("object"===typeof c)return l.commandParameter(c.rgb,ba,a+".rgb",b.commandStr),l.commandParameter(c.alpha,ba,a+".alpha",b.commandStr),[ba[c.rgb],ba[c.alpha]];l.commandRaise("invalid blend.equation",b.commandStr)},function(b,c,d){var e=b.constants.blendEquations,
f=c.def(),g=c.def(),h=b.cond("typeof ",d,'==="string"');l.optional(function(){function c(a,d,f){b.assert(a,f+" in "+e,"invalid "+d+", must be one of "+Object.keys(ba))}c(h.then,a,d);b.assert(h["else"],d+"&&typeof "+d+'==="object"',"invalid "+a);c(h["else"],a+".rgb",d+".rgb");c(h["else"],a+".alpha",d+".alpha")});h.then(f,"=",g,"=",e,"[",d,"];");h["else"](f,"=",e,"[",d,".rgb];",g,"=",e,"[",d,".alpha];");c(h);return[f,g]});case "blend.color":return g(function(a){l.command(L(a)&&4===a.length,"blend.color must be a 4d array",
b.commandStr);return R(4,function(b){return+a[b]})},function(a,b,c){l.optional(function(){a.assert(b,a.shared.isArrayLike+"("+c+")&&"+c+".length===4","blend.color must be a 4d array")});return R(4,function(a){return b.def("+",c,"[",a,"]")})});case "stencil.mask":return g(function(a){l.commandType(a,"number",h,b.commandStr);return a|0},function(a,b,c){l.optional(function(){a.assert(b,"typeof "+c+'==="number"',"invalid stencil.mask")});return b.def(c,"|0")});case "stencil.func":return g(function(c){l.commandType(c,
"object",h,b.commandStr);var d=c.cmp||"keep",e=c.ref||0;c="mask"in c?c.mask:-1;l.commandParameter(d,Ia,a+".cmp",b.commandStr);l.commandType(e,"number",a+".ref",b.commandStr);l.commandType(c,"number",a+".mask",b.commandStr);return[Ia[d],e,c]},function(a,b,c){var d=a.constants.compareFuncs;l.optional(function(){function e(){a.assert(b,Array.prototype.join.call(arguments,""),"invalid stencil.func")}e(c+"&&typeof ",c,'==="object"');e('!("cmp" in ',c,")||(",c,".cmp in ",d,")")});var e=b.def('"cmp" in ',
c,"?",d,"[",c,".cmp]",":",7680),f=b.def(c,".ref|0"),g=b.def('"mask" in ',c,"?",c,".mask|0:-1");return[e,f,g]});case "stencil.opFront":case "stencil.opBack":return g(function(c){l.commandType(c,"object",h,b.commandStr);var d=c.fail||"keep",e=c.zfail||"keep";c=c.zpass||"keep";l.commandParameter(d,xa,a+".fail",b.commandStr);l.commandParameter(e,xa,a+".zfail",b.commandStr);l.commandParameter(c,xa,a+".zpass",b.commandStr);return["stencil.opBack"===a?1029:1028,xa[d],xa[e],xa[c]]},function(b,c,d){function e(g){l.optional(function(){b.assert(c,
'!("'+g+'" in '+d+")||("+d+"."+g+" in "+f+")","invalid "+a+"."+g+", must be one of "+Object.keys(xa))});return c.def('"',g,'" in ',d,"?",f,"[",d,".",g,"]:",7680)}var f=b.constants.stencilOps;l.optional(function(){b.assert(c,d+"&&typeof "+d+'==="object"',"invalid "+a)});return["stencil.opBack"===a?1029:1028,e("fail"),e("zfail"),e("zpass")]});case "polygonOffset.offset":return g(function(a){l.commandType(a,"object",h,b.commandStr);var c=a.factor|0;a=a.units|0;l.commandType(c,"number",h+".factor",b.commandStr);
l.commandType(a,"number",h+".units",b.commandStr);return[c,a]},function(b,c,d){l.optional(function(){b.assert(c,d+"&&typeof "+d+'==="object"',"invalid "+a)});var e=c.def(d,".factor|0"),f=c.def(d,".units|0");return[e,f]});case "cull.face":return g(function(a){var c=0;"front"===a?c=1028:"back"===a&&(c=1029);l.command(!!c,h,b.commandStr);return c},function(a,b,c){l.optional(function(){a.assert(b,c+'==="front"||'+c+'==="back"',"invalid cull.face")});return b.def(c,'==="front"?',1028,":",1029)});case "lineWidth":return g(function(a){l.command("number"===
typeof a&&a>=d.lineWidthDims[0]&&a<=d.lineWidthDims[1],"invalid line width, must positive number between "+d.lineWidthDims[0]+" and "+d.lineWidthDims[1],b.commandStr);return a},function(a,b,c){l.optional(function(){a.assert(b,"typeof "+c+'==="number"&&'+c+">="+d.lineWidthDims[0]+"&&"+c+"<="+d.lineWidthDims[1],"invalid line width")});return c});case "frontFace":return g(function(a){l.commandParameter(a,hb,h,b.commandStr);return hb[a]},function(a,b,c){l.optional(function(){a.assert(b,c+'==="cw"||'+
c+'==="ccw"',"invalid frontFace, must be one of cw,ccw")});return b.def(c+'==="cw"?2304:2305')});case "colorMask":return g(function(a){l.command(L(a)&&4===a.length,"color.mask must be length 4 array",b.commandStr);return a.map(function(a){return!!a})},function(a,b,c){l.optional(function(){a.assert(b,a.shared.isArrayLike+"("+c+")&&"+c+".length===4","invalid color.mask")});return R(4,function(a){return"!!"+c+"["+a+"]"})});case "sample.coverage":return g(function(a){l.command("object"===typeof a&&a,
h,b.commandStr);var c="value"in a?a.value:1;a=!!a.invert;l.command("number"===typeof c&&0<=c&&1>=c,"sample.coverage.value must be a number between 0 and 1",b.commandStr);return[c,a]},function(a,b,c){l.optional(function(){a.assert(b,c+"&&typeof "+c+'==="object"',"invalid sample.coverage")});var d=b.def('"value" in ',c,"?+",c,".value:1"),e=b.def("!!",c,".invert");return[d,e]})}});return f}function J(a,b){var c=a["static"],d=a.dynamic,e={};Object.keys(c).forEach(function(a){var d=c[a],f;if("number"===
typeof d||"boolean"===typeof d)f=P(function(){return d});else if("function"===typeof d){var g=d._reglType;"texture2d"===g||"textureCube"===g?f=P(function(a){return a.link(d)}):"framebuffer"===g||"framebufferCube"===g?(l.command(0<d.color.length,'missing color attachment for framebuffer sent to uniform "'+a+'"',b.commandStr),f=P(function(a){return a.link(d.color[0])})):l.commandRaise('invalid data for uniform "'+a+'"',b.commandStr)}else L(d)?f=P(function(b){return b.global.def("[",R(d.length,function(c){l.command("number"===
typeof d[c]||"boolean"===typeof d[c],"invalid uniform "+a,b.commandStr);return d[c]}),"]")}):l.commandRaise('invalid or missing data for uniform "'+a+'"',b.commandStr);f.value=d;e[a]=f});Object.keys(d).forEach(function(a){var b=d[a];e[a]=ia(b,function(a,c){return a.invoke(c,b)})});return e}function X(a,c){var d=a["static"],f=a.dynamic,g={};Object.keys(d).forEach(function(a){var f=d[a],h=b.id(a),q=new V;if($a(f))q.state=1,q.buffer=e.getBuffer(e.create(f,34962,!1,!0)),q.type=0;else{var m=e.getBuffer(f);
if(m)q.state=1,q.buffer=m,q.type=0;else if(l.command("object"===typeof f&&f,"invalid data for attribute "+a,c.commandStr),f.constant){var k=f.constant;q.buffer="null";q.state=2;"number"===typeof k?q.x=k:(l.command(L(k)&&0<k.length&&4>=k.length,"invalid constant for attribute "+a,c.commandStr),Ja.forEach(function(a,b){b<k.length&&(q[a]=k[b])}))}else{m=$a(f.buffer)?e.getBuffer(e.create(f.buffer,34962,!1,!0)):e.getBuffer(f.buffer);l.command(!!m,'missing buffer for attribute "'+a+'"',c.commandStr);var E=
f.offset|0;l.command(0<=E,'invalid offset for attribute "'+a+'"',c.commandStr);var n=f.stride|0;l.command(0<=n&&256>n,'invalid stride for attribute "'+a+'", must be integer betweeen [0, 255]',c.commandStr);var p=f.size|0;l.command(!("size"in f)||0<p&&4>=p,'invalid size for attribute "'+a+'", must be 1,2,3,4',c.commandStr);var r=!!f.normalized,t=0;"type"in f&&(l.commandParameter(f.type,Na,"invalid type for attribute "+a,c.commandStr),t=Na[f.type]);var u=f.divisor|0;"divisor"in f&&(l.command(0===u||
ja,'cannot specify divisor for attribute "'+a+'", instancing not supported',c.commandStr),l.command(0<=u,'invalid divisor for attribute "'+a+'"',c.commandStr));l.optional(function(){var b=c.commandStr,d="buffer offset divisor normalized type size stride".split(" ");Object.keys(f).forEach(function(c){l.command(0<=d.indexOf(c),'unknown parameter "'+c+'" for attribute pointer "'+a+'" (valid parameters are '+d+")",b)})});q.buffer=m;q.state=1;q.size=p;q.normalized=r;q.type=t||m.dtype;q.offset=E;q.stride=
n;q.divisor=u}}g[a]=P(function(a,b){var c=a.attribCache;if(h in c)return c[h];var d={isStream:!1};Object.keys(q).forEach(function(a){d[a]=q[a]});q.buffer&&(d.buffer=a.link(q.buffer),d.type=d.type||d.buffer+".dtype");return c[h]=d})});Object.keys(f).forEach(function(a){var b=f[a];g[a]=ia(b,function(c,d){function e(a){d(m[a],"=",f,".",a,"|0;")}var f=c.invoke(d,b),g=c.shared,h=g.isBufferArgs,q=g.buffer;l.optional(function(){c.assert(d,f+"&&(typeof "+f+'==="object"||typeof '+f+'==="function")&&('+h+"("+
f+")||"+q+".getBuffer("+f+")||"+q+".getBuffer("+f+".buffer)||"+h+"("+f+'.buffer)||("constant" in '+f+"&&(typeof "+f+'.constant==="number"||'+g.isArrayLike+"("+f+".constant))))",'invalid dynamic attribute "'+a+'"')});var m={isStream:d.def(!1)},k=new V;k.state=1;Object.keys(k).forEach(function(a){m[a]=d.def(""+k[a])});var E=m.buffer,n=m.type;d("if(",h,"(",f,")){",m.isStream,"=true;",E,"=",q,".createStream(",34962,",",f,");",n,"=",E,".dtype;","}else{",E,"=",q,".getBuffer(",f,");","if(",E,"){",n,"=",
E,".dtype;",'}else if("constant" in ',f,"){",m.state,"=",2,";","if(typeof "+f+'.constant === "number"){',m[Ja[0]],"=",f,".constant;",Ja.slice(1).map(function(a){return m[a]}).join("="),"=0;","}else{",Ja.map(function(a,b){return m[a]+"="+f+".constant.length>="+b+"?"+f+".constant["+b+"]:0;"}).join(""),"}}else{","if(",h,"(",f,".buffer)){",E,"=",q,".createStream(",34962,",",f,".buffer);","}else{",E,"=",q,".getBuffer(",f,".buffer);","}",n,'="type" in ',f,"?",g.glTypes,"[",f,".type]:",E,".dtype;",m.normalized,
"=!!",f,".normalized;");e("size");e("offset");e("stride");e("divisor");d("}}");d.exit("if(",m.isStream,"){",q,".destroyStream(",E,");","}");return m})});return g}function Q(a){var b=a["static"],c=a.dynamic,d={};Object.keys(b).forEach(function(a){var c=b[a];d[a]=P(function(a,b){return"number"===typeof c||"boolean"===typeof c?""+c:a.link(c)})});Object.keys(c).forEach(function(a){var b=c[a];d[a]=ia(b,function(a,c){return a.invoke(c,b)})});return d}function W(a,b,c,d,e){function f(a){var b=m[a];b&&(n[a]=
b)}var g=a["static"],h=a.dynamic;l.optional(function(){function a(c){Object.keys(c).forEach(function(a){l.command(0<=b.indexOf(a),'unknown parameter "'+a+'"',e.commandStr)})}var b="framebuffer vert frag elements primitive offset count instances profile".split(" ").concat(Pa);a(g);a(h)});var q=x(a,e),m=C(a,q,e),k=B(a,e),n=G(a,e),p=A(a,e);f("viewport");f(D("scissor.box"));var r=0<Object.keys(n).length,q={framebuffer:q,draw:k,shader:p,state:n,dirty:r};q.profile=z(a,e);q.uniforms=J(c,e);q.attributes=
X(b,e);q.context=Q(d,e);return q}function F(a,b,c){var d=a.shared.context,e=a.scope();Object.keys(c).forEach(function(f){b.save(d,"."+f);e(d,".",f,"=",c[f].append(a,b),";")});b(e)}function H(a,b,c,d){var e=a.shared,f=e.gl,g=e.framebuffer,h;qa&&(h=b.def(e.extensions,".webgl_draw_buffers"));var q=a.constants,e=q.drawBuffer,q=q.backBuffer;a=c?c.append(a,b):b.def(g,".next");d||b("if(",a,"!==",g,".cur){");b("if(",a,"){",f,".bindFramebuffer(",36160,",",a,".framebuffer);");qa&&b(h,".drawBuffersWEBGL(",e,
"[",a,".colorAttachments.length]);");b("}else{",f,".bindFramebuffer(",36160,",null);");qa&&b(h,".drawBuffersWEBGL(",q,");");b("}",g,".cur=",a,";");d||b("}")}function U(a,b,c){var d=a.shared,e=d.gl,f=a.current,g=a.next,h=d.current,q=d.next,l=a.cond(h,".dirty");Pa.forEach(function(b){b=D(b);if(!(b in c.state)){var d,m;if(b in g){d=g[b];m=f[b];var k=R(ta[b].length,function(a){return l.def(d,"[",a,"]")});l(a.cond(k.map(function(a,b){return a+"!=="+m+"["+b+"]"}).join("||")).then(e,".",va[b],"(",k,");",
k.map(function(a,b){return m+"["+b+"]="+a}).join(";"),";"))}else d=l.def(q,".",b),k=a.cond(d,"!==",h,".",b),l(k),b in ua?k(a.cond(d).then(e,".enable(",ua[b],");")["else"](e,".disable(",ua[b],");"),h,".",b,"=",d,";"):k(e,".",va[b],"(",d,");",h,".",b,"=",d,";")}});0===Object.keys(c.state).length&&l(h,".dirty=false;");b(l)}function O(a,b,c,d){var e=a.shared,f=a.current,g=e.current,h=e.gl;zb(Object.keys(c)).forEach(function(e){var q=c[e];if(!d||d(q)){var l=q.append(a,b);if(ua[e]){var m=ua[e];wa(q)?l?
b(h,".enable(",m,");"):b(h,".disable(",m,");"):b(a.cond(l).then(h,".enable(",m,");")["else"](h,".disable(",m,");"));b(g,".",e,"=",l,";")}else if(L(l)){var k=f[e];b(h,".",va[e],"(",l,");",l.map(function(a,b){return k+"["+b+"]="+a}).join(";"),";")}else b(h,".",va[e],"(",l,");",g,".",e,"=",l,";")}})}function N(a,b){ja&&(a.instancing=b.def(a.shared.extensions,".angle_instanced_arrays"))}function I(a,b,c,d,e){function f(){return"undefined"===typeof performance?"Date.now()":"performance.now()"}function g(a){p=
b.def();a(p,"=",f(),";");"string"===typeof e?a(m,".count+=",e,";"):a(m,".count++;");t&&(d?(r=b.def(),a(r,"=",n,".getNumPendingQueries();")):a(n,".beginQuery(",m,");"))}function h(a){a(m,".cpuTime+=",f(),"-",p,";");t&&(d?a(n,".pushScopeStats(",r,",",n,".getNumPendingQueries(),",m,");"):a(n,".endQuery();"))}function q(a){var c=b.def(k,".profile");b(k,".profile=",a,";");b.exit(k,".profile=",c,";")}var l=a.shared,m=a.stats,k=l.current,n=l.timer;c=c.profile;var p,r;if(c){if(wa(c)){c.enable?(g(b),h(b.exit),
q("true")):q("false");return}c=c.append(a,b);q(c)}else c=b.def(k,".profile");l=a.block();g(l);b("if(",c,"){",l,"}");a=a.block();h(a);b.exit("if(",c,"){",a,"}")}function M(a,b,c,d,e){function f(a){switch(a){case 35664:case 35667:case 35671:return 2;case 35665:case 35668:case 35672:return 3;case 35666:case 35669:case 35673:return 4;default:return 1}}function g(c,d,e){function f(){b("if(!",k,".buffer){",l,".enableVertexAttribArray(",m,");}");var c=e.type,g;g=e.size?b.def(e.size,"||",d):d;b("if(",k,".type!==",
c,"||",k,".size!==",g,"||",r.map(function(a){return k+"."+a+"!=="+e[a]}).join("||"),"){",l,".bindBuffer(",34962,",",n,".buffer);",l,".vertexAttribPointer(",[m,g,c,e.normalized,e.stride,e.offset],");",k,".type=",c,";",k,".size=",g,";",r.map(function(a){return k+"."+a+"="+e[a]+";"}).join(""),"}");ja&&(c=e.divisor,b("if(",k,".divisor!==",c,"){",a.instancing,".vertexAttribDivisorANGLE(",[m,c],");",k,".divisor=",c,";}"))}function q(){b("if(",k,".buffer){",l,".disableVertexAttribArray(",m,");","}if(",Ja.map(function(a,
b){return k+"."+a+"!=="+p[b]}).join("||"),"){",l,".vertexAttrib4f(",m,",",p,");",Ja.map(function(a,b){return k+"."+a+"="+p[b]+";"}).join(""),"}")}var l=h.gl,m=b.def(c,".location"),k=b.def(h.attributes,"[",m,"]");c=e.state;var n=e.buffer,p=[e.x,e.y,e.z,e.w],r=["buffer","normalized","offset","stride"];1===c?f():2===c?q():(b("if(",c,"===",1,"){"),f(),b("}else{"),q(),b("}"))}var h=a.shared;d.forEach(function(d){var h=d.name,q=c.attributes[h],m;if(q){if(!e(q))return;m=q.append(a,b)}else{if(!e(Cb))return;
var k=a.scopeAttrib(h);l.optional(function(){a.assert(b,k+".state","missing attribute "+h)});m={};Object.keys(new V).forEach(function(a){m[a]=b.def(k,".",a)})}g(a.link(d),f(d.info.type),m)})}function da(a,c,d,e,f){for(var g=a.shared,h=g.gl,q,m=0;m<e.length;++m){var k=e[m],n=k.name,p=k.info.type,r=d.uniforms[n],k=a.link(k)+".location",t;if(r){if(!f(r))continue;if(wa(r)){var u=r.value;l.command(null!==u&&"undefined"!==typeof u,'missing uniform "'+n+'"',a.commandStr);if(35678===p||35680===p)l.command("function"===
typeof u&&(35678===p&&("texture2d"===u._reglType||"framebuffer"===u._reglType)||35680===p&&("textureCube"===u._reglType||"framebufferCube"===u._reglType)),"invalid texture for uniform "+n,a.commandStr),r=a.link(u._texture||u.color[0]._texture),c(h,".uniform1i(",k,",",r+".bind());"),c.exit(r,".unbind();");else if(35674===p||35675===p||35676===p){l.optional(function(){l.command(L(u),"invalid matrix for uniform "+n,a.commandStr);l.command(35674===p&&4===u.length||35675===p&&9===u.length||35676===p&&
16===u.length,"invalid length for matrix uniform "+n,a.commandStr)});var r=a.global.def("new Float32Array(["+Array.prototype.slice.call(u)+"])"),v=2;35675===p?v=3:35676===p&&(v=4);c(h,".uniformMatrix",v,"fv(",k,",false,",r,");")}else{switch(p){case 5126:l.commandType(u,"number","uniform "+n,a.commandStr);q="1f";break;case 35664:l.command(L(u)&&2===u.length,"uniform "+n,a.commandStr);q="2f";break;case 35665:l.command(L(u)&&3===u.length,"uniform "+n,a.commandStr);q="3f";break;case 35666:l.command(L(u)&&
4===u.length,"uniform "+n,a.commandStr);q="4f";break;case 35670:l.commandType(u,"boolean","uniform "+n,a.commandStr);q="1i";break;case 5124:l.commandType(u,"number","uniform "+n,a.commandStr);q="1i";break;case 35671:l.command(L(u)&&2===u.length,"uniform "+n,a.commandStr);q="2i";break;case 35667:l.command(L(u)&&2===u.length,"uniform "+n,a.commandStr);q="2i";break;case 35672:l.command(L(u)&&3===u.length,"uniform "+n,a.commandStr);q="3i";break;case 35668:l.command(L(u)&&3===u.length,"uniform "+n,a.commandStr);
q="3i";break;case 35673:l.command(L(u)&&4===u.length,"uniform "+n,a.commandStr);q="4i";break;case 35669:l.command(L(u)&&4===u.length,"uniform "+n,a.commandStr),q="4i"}c(h,".uniform",q,"(",k,",",L(u)?Array.prototype.slice.call(u):u,");")}continue}else t=r.append(a,c)}else{if(!f(Cb))continue;t=c.def(g.uniforms,"[",b.id(n),"]")}35678===p?c("if(",t,"&&",t,'._reglType==="framebuffer"){',t,"=",t,".color[0];","}"):35680===p&&c("if(",t,"&&",t,'._reglType==="framebufferCube"){',t,"=",t,".color[0];","}");l.optional(function(){function b(d,
e){a.assert(c,d,'bad data or missing for uniform "'+n+'". '+e)}function d(a){b("typeof "+t+'==="'+a+'"',"invalid type, expected "+a)}function e(c,d){b(g.isArrayLike+"("+t+")&&"+t+".length==="+c,"invalid vector, should have length "+c,a.commandStr)}function f(c){b("typeof "+t+'==="function"&&'+t+'._reglType==="texture'+(3553===c?"2d":"Cube")+'"',"invalid texture type",a.commandStr)}switch(p){case 5124:d("number");break;case 35667:e(2,"number");break;case 35668:e(3,"number");break;case 35669:e(4,"number");
break;case 5126:d("number");break;case 35664:e(2,"number");break;case 35665:e(3,"number");break;case 35666:e(4,"number");break;case 35670:d("boolean");break;case 35671:e(2,"boolean");break;case 35672:e(3,"boolean");break;case 35673:e(4,"boolean");break;case 35674:e(4,"number");break;case 35675:e(9,"number");break;case 35676:e(16,"number");break;case 35678:f(3553);break;case 35680:f(34067)}});r=1;switch(p){case 35678:case 35680:r=c.def(t,"._texture");c(h,".uniform1i(",k,",",r,".bind());");c.exit(r,
".unbind();");continue;case 5124:case 35670:q="1i";break;case 35667:case 35671:q="2i";r=2;break;case 35668:case 35672:q="3i";r=3;break;case 35669:case 35673:q="4i";r=4;break;case 5126:q="1f";break;case 35664:q="2f";r=2;break;case 35665:q="3f";r=3;break;case 35666:q="4f";r=4;break;case 35674:q="Matrix2fv";break;case 35675:q="Matrix3fv";break;case 35676:q="Matrix4fv"}c(h,".uniform",q,"(",k,",");if("M"===q.charAt(0)){var k=Math.pow(p-35674+2,2),D=a.global.def("new Float32Array(",k,")");c("false,(Array.isArray(",
t,")||",t," instanceof Float32Array)?",t,":(",R(k,function(a){return D+"["+a+"]="+t+"["+a+"]"}),",",D,")")}else 1<r?c(R(r,function(a){return t+"["+a+"]"})):c(t);c(");")}}function T(a,b,c,d){function e(f){var g=k[f];return g?g.contextDep&&d.contextDynamic||g.propDep?g.append(a,c):g.append(a,b):b.def(m,".",f)}function f(){function a(){c(S,".drawElementsInstancedANGLE(",[p,t,v,r+"<<(("+v+"-5121)>>1)",u],");")}function b(){c(S,".drawArraysInstancedANGLE(",[p,r,t,u],");")}n?D?a():(c("if(",n,"){"),a(),
c("}else{"),b(),c("}")):b()}function g(){function a(){c(q+".drawElements("+[p,t,v,r+"<<(("+v+"-5121)>>1)"]+");")}function b(){c(q+".drawArrays("+[p,r,t]+");")}n?D?a():(c("if(",n,"){"),a(),c("}else{"),b(),c("}")):b()}var h=a.shared,q=h.gl,m=h.draw,k=d.draw,n=function(){var e=k.elements,f=b;if(e){if(e.contextDep&&d.contextDynamic||e.propDep)f=c;e=e.append(a,f)}else e=f.def(m,".","elements");e&&f("if("+e+")"+q+".bindBuffer(34963,"+e+".buffer.buffer);");return e}(),p=e("primitive"),r=e("offset"),t=function(){var e=
k.count,f,g=b;if(e){if(e.contextDep&&d.contextDynamic||e.propDep)g=c;f=e.append(a,g);l.optional(function(){e.MISSING&&a.assert(b,"false","missing vertex count");e.DYNAMIC&&a.assert(g,f+">=0","missing vertex count")})}else f=g.def(m,".","count"),l.optional(function(){a.assert(g,f+">=0","missing vertex count")});return f}();if("number"===typeof t){if(0===t)return}else c("if(",t,"){"),c.exit("}");var u,S;ja&&(u=e("instances"),S=a.instancing);var v=n+".type",D=k.elements&&wa(k.elements);ja&&("number"!==
typeof u||0<=u)?"string"===typeof u?(c("if(",u,">0){"),f(),c("}else if(",u,"<0){"),g(),c("}")):f():g()}function Y(a,b,c,d,e){var f=y();e=f.proc("body",e);l.optional(function(){f.commandStr=b.commandStr;f.command=f.link(b.commandStr)});ja&&(f.instancing=e.def(f.shared.extensions,".angle_instanced_arrays"));a(f,e,c,d);return f.compile().body}function aa(a,b,c,d){N(a,b);M(a,b,c,d.attributes,function(){return!0});da(a,b,c,d.uniforms,function(){return!0});T(a,b,b,c)}function fa(a,b){var c=a.proc("draw",
1);N(a,c);F(a,c,b.context);H(a,c,b.framebuffer);U(a,c,b);O(a,c,b.state);I(a,c,b,!1,!0);var d=b.shader.progVar.append(a,c);c(a.shared.gl,".useProgram(",d,".program);");if(b.shader.program)aa(a,c,b,b.shader.program);else{var e=a.global.def("{}"),f=c.def(d,".id"),g=c.def(e,"[",f,"]");c(a.cond(g).then(g,".call(this,a0);")["else"](g,"=",e,"[",f,"]=",a.link(function(c){return Y(aa,a,b,c,1)}),"(",d,");",g,".call(this,a0);"))}0<Object.keys(b.state).length&&c(a.shared.current,".dirty=true;")}function Ra(a,
b,c,d){function e(){return!0}a.batchId="a1";N(a,b);M(a,b,c,d.attributes,e);da(a,b,c,d.uniforms,e);T(a,b,b,c)}function Aa(a,b,c,d){function e(a){return a.contextDep&&g||a.propDep}function f(a){return!e(a)}N(a,b);var g=c.contextDep,h=b.def(),q=b.def();a.shared.props=q;a.batchId=h;var l=a.scope(),k=a.scope();b(l.entry,"for(",h,"=0;",h,"<","a1",";++",h,"){",q,"=","a0","[",h,"];",k,"}",l.exit);c.needsContext&&F(a,k,c.context);c.needsFramebuffer&&H(a,k,c.framebuffer);O(a,k,c.state,e);c.profile&&e(c.profile)&&
I(a,k,c,!1,!0);d?(M(a,l,c,d.attributes,f),M(a,k,c,d.attributes,e),da(a,l,c,d.uniforms,f),da(a,k,c,d.uniforms,e),T(a,l,k,c)):(b=a.global.def("{}"),d=c.shader.progVar.append(a,k),q=k.def(d,".id"),l=k.def(b,"[",q,"]"),k(a.shared.gl,".useProgram(",d,".program);","if(!",l,"){",l,"=",b,"[",q,"]=",a.link(function(b){return Y(Ra,a,c,b,2)}),"(",d,");}",l,".call(this,a0[",h,"],",h,");"))}function Ba(a,b){function c(a){return a.contextDep&&e||a.propDep}var d=a.proc("batch",2);a.batchId="0";N(a,d);var e=!1,f=
!0;Object.keys(b.context).forEach(function(a){e=e||b.context[a].propDep});e||(F(a,d,b.context),f=!1);var g=b.framebuffer,h=!1;g?(g.propDep?e=h=!0:g.contextDep&&e&&(h=!0),h||H(a,d,g)):H(a,d,null);b.state.viewport&&b.state.viewport.propDep&&(e=!0);U(a,d,b);O(a,d,b.state,function(a){return!c(a)});b.profile&&c(b.profile)||I(a,d,b,!1,"a1");b.contextDep=e;b.needsContext=f;b.needsFramebuffer=h;f=b.shader.progVar;if(f.contextDep&&e||f.propDep)Aa(a,d,b,null);else if(f=f.append(a,d),d(a.shared.gl,".useProgram(",
f,".program);"),b.shader.program)Aa(a,d,b,b.shader.program);else{var g=a.global.def("{}"),h=d.def(f,".id"),q=d.def(g,"[",h,"]");d(a.cond(q).then(q,".call(this,a0,a1);")["else"](q,"=",g,"[",h,"]=",a.link(function(c){return Y(Aa,a,b,c,2)}),"(",f,");",q,".call(this,a0,a1);"))}0<Object.keys(b.state).length&&d(a.shared.current,".dirty=true;")}function Mb(a,c){function d(b){var g=c.shader[b];g&&e.set(f.shader,"."+b,g.append(a,e))}var e=a.proc("scope",3);a.batchId="a2";var f=a.shared,g=f.current;F(a,e,c.context);
c.framebuffer&&c.framebuffer.append(a,e);zb(Object.keys(c.state)).forEach(function(b){var d=c.state[b].append(a,e);L(d)?d.forEach(function(c,d){e.set(a.next[b],"["+d+"]",c)}):e.set(f.next,"."+b,d)});I(a,e,c,!0,!0);["elements","offset","count","instances","primitive"].forEach(function(b){var d=c.draw[b];d&&e.set(f.draw,"."+b,""+d.append(a,e))});Object.keys(c.uniforms).forEach(function(d){e.set(f.uniforms,"["+b.id(d)+"]",c.uniforms[d].append(a,e))});Object.keys(c.attributes).forEach(function(b){var d=
c.attributes[b].append(a,e),f=a.scopeAttrib(b);Object.keys(new V).forEach(function(a){e.set(f,"."+a,d[a])})});d("vert");d("frag");0<Object.keys(c.state).length&&(e(g,".dirty=true;"),e.exit(g,".dirty=true;"));e("a1(",a.shared.context,",a0,",a.batchId,");")}function ha(a){if("object"===typeof a&&!L(a)){for(var b=Object.keys(a),c=0;c<b.length;++c)if(oa.isDynamic(a[b[c]]))return!0;return!1}}function ma(a,b,c){function d(a,b){g.forEach(function(c){var d=e[c];oa.isDynamic(d)&&(d=a.invoke(b,d),b(k,".",c,
"=",d,";"))})}var e=b["static"][c];if(e&&ha(e)){var f=a.global,g=Object.keys(e),h=!1,q=!1,l=!1,k=a.global.def("{}");g.forEach(function(b){var c=e[b];if(oa.isDynamic(c))"function"===typeof c&&(c=e[b]=oa.unbox(c)),b=ia(c,null),h=h||b.thisDep,l=l||b.propDep,q=q||b.contextDep;else{f(k,".",b,"=");switch(typeof c){case "number":f(c);break;case "string":f('"',c,'"');break;case "object":Array.isArray(c)&&f("[",c.join(),"]");break;default:f(a.link(c))}f(";")}});b.dynamic[c]=new oa.DynamicVariable(4,{thisDep:h,
contextDep:q,propDep:l,ref:k,append:d});delete b["static"][c]}}var V=k.Record,ba={add:32774,subtract:32778,"reverse subtract":32779};c.ext_blend_minmax&&(ba.min=32775,ba.max=32776);var ja=c.angle_instanced_arrays,qa=c.webgl_draw_buffers,ta={dirty:!0,profile:v.profile},Oa={},Pa=[],ua={},va={};w("dither",3024);w("blend.enable",3042);u("blend.color","blendColor",[0,0,0,0]);u("blend.equation","blendEquationSeparate",[32774,32774]);u("blend.func","blendFuncSeparate",[1,0,1,0]);w("depth.enable",2929,!0);
u("depth.func","depthFunc",513);u("depth.range","depthRange",[0,1]);u("depth.mask","depthMask",!0);u("colorMask","colorMask",[!0,!0,!0,!0]);w("cull.enable",2884);u("cull.face","cullFace",1029);u("frontFace","frontFace",2305);u("lineWidth","lineWidth",1);w("polygonOffset.enable",32823);u("polygonOffset.offset","polygonOffset",[0,0]);w("sample.alpha",32926);w("sample.enable",32928);u("sample.coverage","sampleCoverage",[1,!1]);w("stencil.enable",2960);u("stencil.mask","stencilMask",-1);u("stencil.func",
"stencilFunc",[519,0,-1]);u("stencil.opFront","stencilOpSeparate",[1028,7680,7680,7680]);u("stencil.opBack","stencilOpSeparate",[1029,7680,7680,7680]);w("scissor.enable",3089);u("scissor.box","scissor",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);u("viewport","viewport",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var eb={gl:a,context:r,strings:b,next:Oa,current:ta,draw:p,elements:f,buffer:e,shader:n,attributes:k.state,uniforms:m,framebuffer:h,extensions:c,timer:t,isBufferArgs:$a},ea={primTypes:Ca,
compareFuncs:Ia,blendFuncs:ra,blendEquations:ba,stencilOps:xa,glTypes:Na,orientationType:hb};l.optional(function(){eb.isArrayLike=L});qa&&(ea.backBuffer=[1029],ea.drawBuffer=R(d.maxDrawbuffers,function(a){return 0===a?[0]:R(a,function(a){return 36064+a})}));var sa=0;return{next:Oa,current:ta,procs:function(){var b=y(),c=b.proc("poll"),e=b.proc("refresh"),f=b.block();c(f);e(f);var g=b.shared,h=g.gl,l=g.next,k=g.current;f(k,".dirty=false;");H(b,c);H(b,e,null,!0);var m=a.getExtension("angle_instanced_arrays"),
n;m&&(n=b.link(m));for(var p=0;p<d.maxAttributes;++p){var r=e.def(g.attributes,"[",p,"]"),t=b.cond(r,".buffer");t.then(h,".enableVertexAttribArray(",p,");",h,".bindBuffer(",34962,",",r,".buffer.buffer);",h,".vertexAttribPointer(",p,",",r,".size,",r,".type,",r,".normalized,",r,".stride,",r,".offset);")["else"](h,".disableVertexAttribArray(",p,");",h,".vertexAttrib4f(",p,",",r,".x,",r,".y,",r,".z,",r,".w);",r,".buffer=null;");e(t);m&&e(n,".vertexAttribDivisorANGLE(",p,",",r,".divisor);")}Object.keys(ua).forEach(function(a){var d=
ua[a],g=f.def(l,".",a),q=b.block();q("if(",g,"){",h,".enable(",d,")}else{",h,".disable(",d,")}",k,".",a,"=",g,";");e(q);c("if(",g,"!==",k,".",a,"){",q,"}")});Object.keys(va).forEach(function(a){var d=va[a],g=ta[a],q,m,n=b.block();n(h,".",d,"(");L(g)?(d=g.length,q=b.global.def(l,".",a),m=b.global.def(k,".",a),n(R(d,function(a){return q+"["+a+"]"}),");",R(d,function(a){return m+"["+a+"]="+q+"["+a+"];"}).join("")),c("if(",R(d,function(a){return q+"["+a+"]!=="+m+"["+a+"]"}).join("||"),"){",n,"}")):(q=
f.def(l,".",a),m=f.def(k,".",a),n(q,");",k,".",a,"=",q,";"),c("if(",q,"!==",m,"){",n,"}"));e(n)});return b.compile()}(),compile:function(a,b,c,d,e){var f=y();f.stats=f.link(e);Object.keys(b["static"]).forEach(function(a){ma(f,b,a)});Xb.forEach(function(b){ma(f,a,b)});c=W(a,b,c,d,f);fa(f,c);Mb(f,c);Ba(f,c);return f.compile()}}}function Db(a,b){for(var c=0;c<a.length;++c)if(a[c]===b)return c;return-1}var Ma={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,
"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},Y=function(a){return Object.prototype.toString.call(a)in Ma},N=function(a,b){for(var c=Object.keys(b),d=0;d<c.length;++d)a[c[d]]=b[c[d]];return a},Eb="gl canvas container attributes pixelRatio extensions optionalExtensions profile onDone".split(" "),aa={};aa[5120]=aa[5121]=1;aa[5122]=aa[5123]=aa[36193]=aa[33635]=aa[32819]=
aa[32820]=2;aa[5124]=aa[5125]=aa[5126]=aa[34042]=4;var l=N(c,{optional:function(a){a()},raise:b,commandRaise:t,command:function(a,b,c){a||t(b,c||n())},parameter:function(a,c,e){a in c||b("unknown parameter ("+a+")"+d(e)+". possible values: "+Object.keys(c).join())},commandParameter:function(a,b,c,e){a in b||t("unknown parameter ("+a+")"+d(c)+". possible values: "+Object.keys(b).join(),e||n())},constructor:function(a){Object.keys(a).forEach(function(a){0>Eb.indexOf(a)&&b('invalid regl constructor argument "'+
a+'". must be one of '+Eb)})},type:function(a,c,e){typeof a!==c&&b("invalid parameter type"+d(e)+". expected "+c+", got "+typeof a)},commandType:y,isTypedArray:function(a,c){Y(a)||b("invalid parameter type"+d(c)+". must be a typed array")},nni:function(a,c){0<=a&&(a|0)===a||b("invalid parameter type, ("+a+")"+d(c)+". must be a nonnegative integer")},oneOf:f,shaderError:function(a,b,d,f,g){if(!a.getShaderParameter(b,a.COMPILE_STATUS)){b=a.getShaderInfoLog(b);a=f===a.FRAGMENT_SHADER?"fragment":"vertex";
y(d,"string",a+" shader source must be a string",g);var h=p(d,g);d=m(b);v(h,d);Object.keys(h).forEach(function(a){function b(a,c){d.push(a);e.push(c||"")}var c=h[a];if(c.hasErrors){var d=[""],e=[""];b("file number "+a+": "+c.name+"\n","color:red;text-decoration:underline;font-weight:bold");c.lines.forEach(function(a){if(0<a.errors.length){b(r(a.number,4)+"| ","background-color:yellow; font-weight:bold");b(a.line+"\n","color:red; background-color:yellow; font-weight:bold");var c=0;a.errors.forEach(function(d){d=
d.message;var e=/^\s*\'(.*)\'\s*\:\s*(.*)$/.exec(d);if(e){var f=e[1];d=e[2];switch(f){case "assign":f="="}c=Math.max(a.line.indexOf(f,c),0)}else c=0;b(r("| ",6));b(r("^^^",c+3)+"\n","font-weight:bold");b(r("| ",6));b(d+"\n","font-weight:bold")});b(r("| ",6)+"\n")}else b(r(a.number,4)+"| "),b(a.line+"\n","color:red")});"undefined"!==typeof document?(e[0]=d.join("%c"),console.log.apply(console,e)):console.log(d.join(""))}});c.raise("Error compiling "+a+" shader, "+h[0].name)}},linkError:function(a,
b,d,f,g){a.getProgramParameter(b,a.LINK_STATUS)||(a=a.getProgramInfoLog(b),d=p(d,g),f='Error linking program with vertex shader, "'+p(f,g)[0].name+'", and fragment shader "'+d[0].name+'"',"undefined"!==typeof document?console.log("%c"+f+"\n%c"+a,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(f+"\n"+a),c.raise(f))},callSite:u,saveCommandRef:w,saveDrawInfo:function(a,b,c,d){function e(a){return a?d.id(a):0}function f(a,b){Object.keys(b).forEach(function(b){a[d.id(b)]=
!0})}w(a);a._fragId=e(a["static"].frag);a._vertId=e(a["static"].vert);var g=a._uniformSet={};f(g,b["static"]);f(g,b.dynamic);b=a._attributeSet={};f(b,c["static"]);f(b,c.dynamic);a._hasCount="count"in a["static"]||"count"in a.dynamic||"elements"in a["static"]||"elements"in a.dynamic},framebufferFormat:function(a,b,c){a.texture?f(a.texture._texture.internalformat,b,"unsupported texture format for attachment"):f(a.renderbuffer._renderbuffer.format,c,"unsupported renderbuffer format for attachment")},
guessCommand:n,texture2D:function(a,b,d){var f=b.width,g=b.height,h=b.channels;c(0<f&&f<=d.maxTextureSize&&0<g&&g<=d.maxTextureSize,"invalid texture shape");33071===a.wrapS&&33071===a.wrapT||c(!(f&f-1)&&!!f&&!(g&g-1)&&!!g,"incompatible wrap mode for texture, both width and height must be power of 2");1===b.mipmask?1!==f&&1!==g&&c(9984!==a.minFilter&&9986!==a.minFilter&&9985!==a.minFilter&&9987!==a.minFilter,"min filter requires mipmap"):(c(!(f&f-1)&&!!f&&!(g&g-1)&&!!g,"texture must be a square power of 2 to support mipmapping"),
c(b.mipmask===(f<<1)-1,"missing or incomplete mipmap data"));5126===b.type&&(0>d.extensions.indexOf("oes_texture_float_linear")&&c(9728===a.minFilter&&9728===a.magFilter,"filter not supported, must enable oes_texture_float_linear"),c(!a.genMipmaps,"mipmap generation not supported with float textures"));var l=b.images;for(d=0;16>d;++d)if(l[d]){var k=f>>d,m=g>>d;c(b.mipmask&1<<d,"missing mipmap data");var n=l[d];c(n.width===k&&n.height===m,"invalid shape for mip images");c(n.format===b.format&&n.internalformat===
b.internalformat&&n.type===b.type,"incompatible type for mip image");!n.compressed&&n.data&&(k=Math.ceil(A(n.type,h)*k/n.unpackAlignment)*n.unpackAlignment,c(n.data.byteLength===k*m,"invalid data for image, buffer size is inconsistent with image format"))}else a.genMipmaps||c(0===(b.mipmask&1<<d),"extra mipmap data");b.compressed&&c(!a.genMipmaps,"mipmap generation for compressed images not supported")},textureCube:function(a,b,d,f){var g=a.width,h=a.height,l=a.channels;c(0<g&&g<=f.maxTextureSize&&
0<h&&h<=f.maxTextureSize,"invalid texture shape");c(g===h,"cube map must be square");c(33071===b.wrapS&&33071===b.wrapT,"wrap mode not supported by cube map");for(f=0;f<d.length;++f){var k=d[f];c(k.width===g&&k.height===h,"inconsistent cube map face shape");b.genMipmaps&&(c(!k.compressed,"can not generate mipmap for compressed textures"),c(1===k.mipmask,"can not specify mipmaps and generate mipmaps"));for(var m=k.images,n=0;16>n;++n){var p=m[n];if(p){var r=g>>n,t=h>>n;c(k.mipmask&1<<n,"missing mipmap data");
c(p.width===r&&p.height===t,"invalid shape for mip images");c(p.format===a.format&&p.internalformat===a.internalformat&&p.type===a.type,"incompatible type for mip image");p.compressed||p.data&&c(p.data.byteLength===r*t*Math.max(A(p.type,l),p.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format")}}}}}),Gb=0,oa={DynamicVariable:C,define:function(a,b){return new C(a,D(b+""))},isDynamic:function(a){return"function"===typeof a&&!a._reglType||a instanceof C},unbox:function(a,
b){return"function"===typeof a?new C(0,a):a},accessor:D},ib={next:"function"===typeof requestAnimationFrame?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,16)},cancel:"function"===typeof cancelAnimationFrame?function(a){return cancelAnimationFrame(a)}:clearTimeout},Fb="undefined"!==typeof performance&&performance.now?function(){return performance.now()}:function(){return+new Date},Yb=function(a,b){var c=1;b.ext_texture_filter_anisotropic&&(c=a.getParameter(34047));var d=
1,e=1;b.webgl_draw_buffers&&(d=a.getParameter(34852),e=a.getParameter(36063));return{colorBits:[a.getParameter(3410),a.getParameter(3411),a.getParameter(3412),a.getParameter(3413)],depthBits:a.getParameter(3414),stencilBits:a.getParameter(3415),subpixelBits:a.getParameter(3408),extensions:Object.keys(b).filter(function(a){return!!b[a]}),maxAnisotropic:c,maxDrawbuffers:d,maxColorAttachments:e,pointSizeDims:a.getParameter(33901),lineWidthDims:a.getParameter(33902),maxViewportDims:a.getParameter(3386),
maxCombinedTextureUnits:a.getParameter(35661),maxCubeMapSize:a.getParameter(34076),maxRenderbufferSize:a.getParameter(34024),maxTextureUnits:a.getParameter(34930),maxTextureSize:a.getParameter(3379),maxAttributes:a.getParameter(34921),maxVertexUniforms:a.getParameter(36347),maxVertexTextureUnits:a.getParameter(35660),maxVaryingVectors:a.getParameter(36348),maxFragmentUniforms:a.getParameter(36349),glsl:a.getParameter(35724),renderer:a.getParameter(7937),vendor:a.getParameter(7936),version:a.getParameter(7938)}},
V=function(a){return Object.keys(a).map(function(b){return a[b]})},jb=R(8,function(){return[]}),T={alloc:ma,free:kb,allocType:function(a,b){var c;switch(a){case 5120:c=new Int8Array(ma(b),0,b);break;case 5121:c=new Uint8Array(ma(b),0,b);break;case 5122:c=new Int16Array(ma(2*b),0,b);break;case 5123:c=new Uint16Array(ma(2*b),0,b);break;case 5124:c=new Int32Array(ma(4*b),0,b);break;case 5125:c=new Uint32Array(ma(4*b),0,b);break;case 5126:c=new Float32Array(ma(4*b),0,b);break;default:return null}return c.length!==
b?c.subarray(0,b):c},freeType:function(a){kb(a.buffer)}},Xa={shape:function(a){for(var b=[];a.length;a=a[0])b.push(a.length);return b},flatten:function(a,b,c,d){var e=1;if(b.length)for(var f=0;f<b.length;++f)e*=b[f];else e=0;c=d||T.allocType(c,e);switch(b.length){case 0:break;case 1:d=b[0];for(b=0;b<d;++b)c[b]=a[b];break;case 2:d=b[0];b=b[1];for(f=e=0;f<d;++f)for(var g=a[f],h=0;h<b;++h)c[e++]=g[h];break;case 3:ja(a,b[0],b[1],b[2],c,0);break;default:lb(a,b,0,c,0)}return c}},Na={int8:5120,int16:5122,
int32:5124,uint8:5121,uint16:5123,uint32:5125,"float":5126,float32:5126},Ua={dynamic:35048,stream:35040,"static":35044},bb=Xa.flatten,ob=Xa.shape,ea=[];ea[5120]=1;ea[5122]=2;ea[5124]=4;ea[5121]=1;ea[5123]=2;ea[5125]=4;ea[5126]=4;var Ca={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},qb=new Float32Array(1),Jb=new Uint32Array(qb.buffer),Nb=[9984,9986,9985,9987],Wa=[0,6409,6410,6407,6408],fa={};fa[6409]=fa[6406]=fa[6402]=1;fa[34041]=
fa[6410]=2;fa[6407]=fa[35904]=3;fa[6408]=fa[35906]=4;var Kb=Object.keys(Ma).concat(["[object HTMLCanvasElement]","[object CanvasRenderingContext2D]","[object HTMLImageElement]","[object HTMLVideoElement]"]),Da=[];Da[5121]=1;Da[5126]=4;Da[36193]=2;Da[5123]=2;Da[5125]=4;var I=[];I[32854]=2;I[32855]=2;I[36194]=2;I[34041]=4;I[33776]=.5;I[33777]=.5;I[33778]=1;I[33779]=1;I[35986]=.5;I[35987]=1;I[34798]=1;I[35840]=.5;I[35841]=.25;I[35842]=.5;I[35843]=.25;I[36196]=.5;var ha=[];ha[32854]=2;ha[32855]=2;ha[36194]=
2;ha[33189]=2;ha[36168]=1;ha[34041]=4;ha[35907]=4;ha[34836]=16;ha[34842]=8;ha[34843]=6;var Zb=function(a,b,c,d,e){function f(a){this.id=m++;this.refCount=1;this.renderbuffer=a;this.format=32854;this.height=this.width=0;e.profile&&(this.stats={size:0})}function g(b){var c=b.renderbuffer;l(c,"must not double destroy renderbuffer");a.bindRenderbuffer(36161,null);a.deleteRenderbuffer(c);b.renderbuffer=null;b.refCount=0;delete n[b.id];d.renderbufferCount--}var h={rgba4:32854,rgb565:36194,"rgb5 a1":32855,
depth:33189,stencil:36168,"depth stencil":34041};b.ext_srgb&&(h.srgba=35907);b.ext_color_buffer_half_float&&(h.rgba16f=34842,h.rgb16f=34843);b.webgl_color_buffer_float&&(h.rgba32f=34836);var k=[];Object.keys(h).forEach(function(a){k[h[a]]=a});var m=0,n={};f.prototype.decRef=function(){0>=--this.refCount&&g(this)};e.profile&&(d.getTotalRenderbufferSize=function(){var a=0;Object.keys(n).forEach(function(b){a+=n[b].stats.size});return a});return{create:function(b,g){function m(b,d){var f=0,g=0,n=32854;
"object"===typeof b&&b?("shape"in b?(g=b.shape,l(Array.isArray(g)&&2<=g.length,"invalid renderbuffer shape"),f=g[0]|0,g=g[1]|0):("radius"in b&&(f=g=b.radius|0),"width"in b&&(f=b.width|0),"height"in b&&(g=b.height|0)),"format"in b&&(l.parameter(b.format,h,"invalid renderbuffer format"),n=h[b.format])):"number"===typeof b?(f=b|0,g="number"===typeof d?d|0:f):b?l.raise("invalid arguments to renderbuffer constructor"):f=g=1;l(0<f&&0<g&&f<=c.maxRenderbufferSize&&g<=c.maxRenderbufferSize,"invalid renderbuffer size");
if(f!==p.width||g!==p.height||n!==p.format)return m.width=p.width=f,m.height=p.height=g,p.format=n,a.bindRenderbuffer(36161,p.renderbuffer),a.renderbufferStorage(36161,n,f,g),e.profile&&(p.stats.size=ha[p.format]*p.width*p.height),m.format=k[p.format],m}var p=new f(a.createRenderbuffer());n[p.id]=p;d.renderbufferCount++;m(b,g);m.resize=function(b,d){var f=b|0,g=d|0||f;if(f===p.width&&g===p.height)return m;l(0<f&&0<g&&f<=c.maxRenderbufferSize&&g<=c.maxRenderbufferSize,"invalid renderbuffer size");
m.width=p.width=f;m.height=p.height=g;a.bindRenderbuffer(36161,p.renderbuffer);a.renderbufferStorage(36161,p.format,f,g);e.profile&&(p.stats.size=ha[p.format]*p.width*p.height);return m};m._reglType="renderbuffer";m._renderbuffer=p;e.profile&&(m.stats=p.stats);m.destroy=function(){p.decRef()};return m},clear:function(){V(n).forEach(g)},restore:function(){V(n).forEach(function(b){b.renderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,b.renderbuffer);a.renderbufferStorage(36161,b.format,b.width,
b.height)});a.bindRenderbuffer(36161,null)}}},Qb=[6408],xb=[];xb[6408]=4;var Za=[];Za[5121]=1;Za[5126]=4;Za[36193]=2;var Rb=[32854,32855,36194,35907,34842,34843,34836],Pb={36053:"complete",36054:"incomplete attachment",36057:"incomplete dimensions",36055:"incomplete, missing attachment",36061:"unsupported"},Ja=["x","y","z","w"],Xb="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),ra={0:0,1:1,zero:0,one:1,"src color":768,
"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Ab="constant color, constant alpha;one minus constant color, constant alpha;constant color, one minus constant alpha;one minus constant color, one minus constant alpha;constant alpha, constant color;constant alpha, one minus constant color;one minus constant alpha, constant color;one minus constant alpha, one minus constant color".split(";"),
Ia={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},xa={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Bb={frag:35632,vert:35633},hb={cw:2304,ccw:2305},Cb=new ka(!1,!1,!1,function(){}),$b=function(a,b){function c(){this.endQueryIndex=this.startQueryIndex=-1;this.sum=0;this.stats=null}function d(a,b,e){var f=
h.pop()||new c;f.startQueryIndex=a;f.endQueryIndex=b;f.sum=0;f.stats=e;l.push(f)}var e=b.ext_disjoint_timer_query;if(!e)return null;var f=[],g=[],h=[],l=[],k=[],m=[];return{beginQuery:function(a){var b=f.pop()||e.createQueryEXT();e.beginQueryEXT(35007,b);g.push(b);d(g.length-1,g.length,a)},endQuery:function(){e.endQueryEXT(35007)},pushScopeStats:d,update:function(){var a,b;a=g.length;if(0!==a){m.length=Math.max(m.length,a+1);k.length=Math.max(k.length,a+1);k[0]=0;var c=m[0]=0;for(b=a=0;b<g.length;++b){var d=
g[b];e.getQueryObjectEXT(d,34919)?(c+=e.getQueryObjectEXT(d,34918),f.push(d)):g[a++]=d;k[b+1]=c;m[b+1]=a}g.length=a;for(b=a=0;b<l.length;++b){var c=l[b],n=c.startQueryIndex,d=c.endQueryIndex;c.sum+=k[d]-k[n];n=m[n];d=m[d];d===n?(c.stats.gpuTime+=c.sum/1E6,h.push(c)):(c.startQueryIndex=n,c.endQueryIndex=d,l[a++]=c)}l.length=a}},getNumPendingQueries:function(){return g.length},clear:function(){f.push.apply(f,g);for(var a=0;a<f.length;a++)e.deleteQueryEXT(f[a]);g.length=0;f.length=0},restore:function(){g.length=
0;f.length=0}}};return function(a){function b(){if(0===M.length)x&&x.update(),V=null;else{V=ib.next(b);n();for(var a=M.length-1;0<=a;--a){var c=M[a];c&&c(J,null,0)}t.flush();x&&x.update()}}function c(){!V&&0<M.length&&(V=ib.next(b))}function d(){V&&(ib.cancel(b),V=null)}function e(a){a.preventDefault();v=!0;d();T.forEach(function(a){a()})}function f(a){t.getError();v=!1;D.restore();W.restore();H.restore();F.restore();U.restore();O.restore();x&&x.restore();I.procs.refresh();c();Y.forEach(function(a){a()})}
function g(a){function b(a){var c={},d={};Object.keys(a).forEach(function(b){var e=a[b];oa.isDynamic(e)?d[b]=oa.unbox(e,b):c[b]=e});return{dynamic:d,"static":c}}function c(a){for(;p.length<a;)p.push(null);return p}l(!!a,"invalid args to regl({...})");l.type(a,"object","invalid args to regl({...})");var d=b(a.context||{}),e=b(a.uniforms||{}),f=b(a.attributes||{}),h=b(function(a){function b(a){if(a in c){var d=c[a];delete c[a];Object.keys(d).forEach(function(b){c[a+"."+b]=d[b]})}}var c=N({},a);delete c.uniforms;
delete c.attributes;delete c.context;"stencil"in c&&c.stencil.op&&(c.stencil.opBack=c.stencil.opFront=c.stencil.op,delete c.stencil.op);b("blend");b("depth");b("cull");b("stencil");b("polygonOffset");b("scissor");b("sample");return c}(a));a={gpuTime:0,cpuTime:0,count:0};var d=I.compile(h,f,e,d,a),k=d.draw,m=d.batch,n=d.scope,p=[];return N(function(a,b){var d;v&&l.raise("context lost");if("function"===typeof a)return n.call(this,null,a,0);if("function"===typeof b)if("number"===typeof a)for(d=0;d<a;++d)n.call(this,
null,b,d);else if(Array.isArray(a))for(d=0;d<a.length;++d)n.call(this,a[d],b,d);else return n.call(this,a,b,0);else if("number"===typeof a){if(0<a)return m.call(this,c(a|0),a|0)}else if(Array.isArray(a)){if(a.length)return m.call(this,a,a.length)}else return k.call(this,a)},{stats:a})}function h(a,b){var c=0;I.procs.poll();var d=b.color;d&&(t.clearColor(+d[0]||0,+d[1]||0,+d[2]||0,+d[3]||0),c|=16384);"depth"in b&&(t.clearDepth(+b.depth),c|=256);"stencil"in b&&(t.clearStencil(b.stencil|0),c|=1024);
l(!!c,"called regl.clear with no buffer specified");t.clear(c)}function k(a){l.type(a,"function","regl.frame() callback must be a function");M.push(a);c();return{cancel:function(){function b(){var a=Db(M,b);M[a]=M[M.length-1];--M.length;0>=M.length&&d()}var c=Db(M,a);l(0<=c,"cannot cancel a frame twice");M[c]=b}}}function m(){var a=P.viewport,b=P.scissor_box;a[0]=a[1]=b[0]=b[1]=0;J.viewportWidth=J.framebufferWidth=J.drawingBufferWidth=a[2]=b[2]=t.drawingBufferWidth;J.viewportHeight=J.framebufferHeight=
J.drawingBufferHeight=a[3]=b[3]=t.drawingBufferHeight}function n(){J.tick+=1;J.time=r();m();I.procs.poll()}function p(){m();I.procs.refresh();x&&x.update()}function r(){return(Fb()-C)/1E3}a=X(a);if(!a)return null;var t=a.gl,u=t.getContextAttributes(),v=t.isContextLost(),D=da(t,a);if(!D)return null;var w=G(),y={bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0},z=D.extensions,x=$b(t,z),C=Fb(),A=t.drawingBufferWidth,B=t.drawingBufferHeight,
J={tick:0,time:0,viewportWidth:A,viewportHeight:B,framebufferWidth:A,framebufferHeight:B,drawingBufferWidth:A,drawingBufferHeight:B,pixelRatio:a.pixelRatio},Q=Yb(t,z),H=Hb(t,y,a),R=Ib(t,z,H,y),A=Sb(t,z,Q,H,w),W=Tb(t,w,y,a),F=Lb(t,z,Q,function(){I.procs.poll()},J,y,a),U=Zb(t,z,Q,y,a),O=Ob(t,z,Q,F,U,y),I=Wb(t,w,z,Q,H,R,F,O,{},A,W,{elements:null,primitive:4,count:-1,offset:0,instances:-1},J,x,a),w=Ub(t,O,I.procs.poll,J,u,z),P=I.next,L=t.canvas,M=[],T=[],Y=[],ja=[a.onDestroy],V=null;L&&(L.addEventListener("webglcontextlost",
e,!1),L.addEventListener("webglcontextrestored",f,!1));var aa=O.setFBO=g({framebuffer:oa.define.call(null,1,"framebuffer")});p();u=N(g,{clear:function(a){l("object"===typeof a&&a,"regl.clear() takes an object as input");if("framebuffer"in a)if(a.framebuffer&&"framebufferCube"===a.framebuffer_reglType)for(var b=0;6>b;++b)aa(N({framebuffer:a.framebuffer.faces[b]},a),h);else aa(a,h);else h(null,a)},prop:oa.define.bind(null,1),context:oa.define.bind(null,2),"this":oa.define.bind(null,3),draw:g({}),buffer:function(a){return H.create(a,
34962,!1,!1)},elements:function(a){return R.create(a,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:O.create,framebufferCube:O.createCube,attributes:u,frame:k,on:function(a,b){l.type(b,"function","listener callback must be a function");var c;switch(a){case "frame":return k(b);case "lost":c=T;break;case "restore":c=Y;break;case "destroy":c=ja;break;default:l.raise("invalid event, must be one of frame,lost,restore,destroy")}c.push(b);return{cancel:function(){for(var a=0;a<
c.length;++a)if(c[a]===b){c[a]=c[c.length-1];c.pop();break}}}},limits:Q,hasExtension:function(a){return 0<=Q.extensions.indexOf(a.toLowerCase())},read:w,destroy:function(){M.length=0;d();L&&(L.removeEventListener("webglcontextlost",e),L.removeEventListener("webglcontextrestored",f));W.clear();O.clear();U.clear();F.clear();R.clear();H.clear();x&&x.clear();ja.forEach(function(a){a()})},_gl:t,_refresh:p,poll:function(){n();x&&x.update()},now:r,stats:y});a.onDone(null,u);return u}})},{}],78:[function(d,
c,f){function a(a){throw Error("resl: "+a);}function b(b,c,d){Object.keys(b).forEach(function(b){0>c.indexOf(b)&&a('invalid parameter "'+b+'" in '+d)})}function e(a,b){this.state=0;this.ready=!1;this.progress=0;this.name=a;this.cancel=b}var g=["manifest","onDone","onProgress","onError"],k=["type","src","stream","credentials","parser"],r=["onData","onDone"];c.exports=function(c){function d(b,e){if(b in c){var f=c[b];"function"!==typeof f&&a('invalid callback "'+b+'"');return f}return null}function f(a){function b(){if(!(2>
k.readyState||1===n.state||-1===n.state)){if(200!==k.status)return u('error loading resource "'+a.name+'"');if(2<k.readyState&&0===n.state){var d;d="binary"===a.type?k.response:k.responseText;if(h.data)try{m=h.data(d)}catch(e){return u(e)}else m=d}if(3<k.readyState&&0===n.state){if(h.done)try{m=h.done()}catch(e){return u(e)}n.state=1}y[c]=m;n.progress=.75*n.progress+.25;n.ready=a.stream&&!!m||1===n.state;p()}}var c=a.name,d=a.stream,g="binary"===a.type,h=a.parser,k=new XMLHttpRequest,m=null,n=new e(c,
function(){1!==n.state&&-1!==n.state&&(k.onreadystatechange=null,k.abort(),n.state=-1)});k.onreadystatechange=d?b:function(){4===k.readyState&&b()};g&&(k.responseType="arraybuffer");a.credentials&&(k.withCredentials=!0);k.open("GET",a.src,!0);k.send();return n}function n(a,b){function c(){if(0===n.state)if(m.data)try{r=m.data(b)}catch(a){return u(a)}else r=b}function d(a){c();y[k]=r;n.progress=a.lengthComputable?Math.max(n.progress,a.loaded/a.total):.75*n.progress+.25;p(k)}function f(){c();if(0===
n.state){if(m.done)try{r=m.done()}catch(a){return u(a)}n.state=1}n.progress=1;n.ready=!0;y[k]=r;h();p("finish "+k)}function g(){u('error loading asset "'+k+'"')}function h(){a.stream&&b.removeEventListener("progress",d);"image"===a.type?b.addEventListener("load",f):b.addEventListener("canplay",f);b.removeEventListener("error",g)}var k=a.name,m=a.parser,n=new e(k,function(){1!==n.state&&-1!==n.state&&(n.state=-1,h(),b.src="")}),r=b;a.stream&&b.addEventListener("progress",d);if("image"===a.type)b.addEventListener("load",
f);else{var t=!1,v=!1;b.addEventListener("loadedmetadata",function(){v=!0;t&&f()});b.addEventListener("canplay",function(){t=!0;v&&f()})}b.addEventListener("error",g);b.crossOrigin=a.credentials?"use-credentials":"anonymous";b.src=a.src;return n}function u(a){-1!==A&&1!==A&&(A=-1,x.forEach(function(a){a.cancel()}),t?"string"===typeof a?t(Error("resl: "+a)):t(a):console.error("resl error:",a))}function p(a){if(-1!==A&&1!==A){var b=0,c=0;x.forEach(function(a){a.ready&&(c+=1);b+=a.progress});c===x.length?
(A=1,v(y)):w&&w(b/x.length,a)}}"object"===typeof c&&c||a("invalid or missing configuration");b(c,g,"config");var m=c.manifest;"object"===typeof m&&m||a("missing manifest");var v=d("onDone");v||a("missing onDone() callback");var w=d("onProgress"),t=d("onError"),y={},A=0,C={text:f,binary:function(a){return f(a)},image:function(a){return n(a,document.createElement("img"))},video:function(a){return n(a,document.createElement("video"))},audio:function(a){return n(a,document.createElement("audio"))}},x=
Object.keys(m).map(function(c){function d(b,c){if(b in e.parser){var f=e.parser[b];"function"!==typeof f&&a("invalid parser callback "+b+' for asset "'+b+'"');return f}return c}var e=m[c];"string"===typeof e?e={src:e}:"object"===typeof e&&e||a('invalid asset definition "'+c+'"');b(e,k,'asset "'+c+'"');var f={};"parser"in e&&("function"===typeof e.parser?f={data:e.parser}:"object"===typeof e.parser&&e.parser?(b(f,r,'parser for asset "'+c+'"'),"onData"in f||a('missing onData callback for parser in asset "'+
c+'"'),f={data:d("onData"),done:d("onDone")}):a('invalid parser for asset "'+c+'"'));return{name:c,type:function(b,d,f){b in e&&(f=e[b]);0>d.indexOf(f)&&a("invalid "+b+' "'+f+'" for asset "'+c+'", possible values: '+d);return f}("type",Object.keys(C),"text"),stream:!!e.stream,credentials:!!e.credentials,src:function(b,d,f){b in e?f=e[b]:d&&a("missing "+b+' for asset "'+c+'"');"string"!==typeof f&&a("invalid "+b+' for asset "'+c+'", must be a string');return f}("src",!0,""),parser:f}}).map(function(a){return C[a.type](a)});
0===x.length&&setTimeout(function(){p("done")},1)}},{}],79:[function(d,c,f){(function(a){function b(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);256>e;)g[e]=e++;for(e=0;256>e;e++)g[e]=g[f=255&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=255&e+1],c=256*c+g[255&(g[e]=g[f=255&f+b])+(g[f]=b)];d.i=e;d.j=f;return c})(256)}function d(a,b){var c=[],f=(typeof a)[0],g;if(b&&"o"==f)for(g in a)try{c.push(d(a[g],b-1))}catch(h){}return c.length?c:
"s"==f?a:a+"\x00"}function f(a,b){for(var c=a+"",d,e=0;e<c.length;)b[255&e]=255&(d^=19*b[255&e])+c.charCodeAt(e++);return r(b)}function k(a){try{return z.crypto.getRandomValues(a=new Uint8Array(256)),r(a)}catch(b){return[+new Date,z,z.navigator&&z.navigator.plugins,z.screen,r(h)]}}function r(a){return String.fromCharCode.apply(0,a)}var h=[],z="undefined"===typeof a?window:a,B=Math.pow(256,6),n=Math.pow(2,52),u=2*n,p=Math.random;c.exports=function(a,p){if(p&&!0===p.global)return p.global=!1,Math.random=
c.exports(a,p),p.global=!0,Math.random;var w=[];f(d(p&&p.entropy?[a,r(h)]:0 in arguments?a:k(),3),w);var t=new b(w);f(r(t.S),h);return function(){for(var a=t.g(6),b=B,c=0;a<n;)a=256*(a+c),b*=256,c=t.g(1);for(;a>=u;)a/=2,b/=2,c>>>=1;return(a+c)/b}};c.exports.resetGlobal=function(){Math.random=p};f(Math.random(),h)}).call(this,"undefined"!==typeof global?global:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],80:[function(d,c,f){function a(a,c){var d=e(getComputedStyle(a).getPropertyValue(c));
return d[0]*b(d[1],a)}function b(b,c){c=c||document.body;b=(b||"px").trim().toLowerCase();if(c===window||c===document)c=document.body;switch(b){case "%":return c.clientHeight/100;case "ch":case "ex":var d=b,e=c,f=document.createElement("div");f.style["font-size"]="128"+d;e.appendChild(f);d=a(f,"font-size")/128;e.removeChild(f);return d;case "em":return a(c,"font-size");case "rem":return a(document.body,"font-size");case "vw":return window.innerWidth/100;case "vh":return window.innerHeight/100;case "vmin":return Math.min(window.innerWidth,
window.innerHeight)/100;case "vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case "in":return g;case "cm":return g/2.54;case "mm":return g/25.4;case "pt":return g/72;case "pc":return g/6}return 1}var e=d("parse-unit");c.exports=b;var g=96},{"parse-unit":75}]},{},[1]);