@vertexvis/viewer 1.0.0-testing.2 → 1.0.0-testing.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/dist/cjs/{config-CBFIZ5gy.js → config-C1xbl3Qa.js} +3 -3
  2. package/dist/cjs/{config-CBFIZ5gy.js.map → config-C1xbl3Qa.js.map} +1 -1
  3. package/dist/cjs/{entities-CAphDi6v.js → entities-D6AUMclh.js} +4 -4
  4. package/dist/cjs/{entities-CAphDi6v.js.map → entities-D6AUMclh.js.map} +1 -1
  5. package/dist/cjs/{geometry_pb-DW53co_-.js → geometry_pb-Ctp-Gcjm.js} +3 -3
  6. package/dist/cjs/{geometry_pb-DW53co_-.js.map → geometry_pb-Ctp-Gcjm.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +5 -5
  8. package/dist/cjs/{queries-uJfbbPWV.js → queries-CZmukyhu.js} +4 -4
  9. package/dist/cjs/{queries-uJfbbPWV.js.map → queries-CZmukyhu.js.map} +1 -1
  10. package/dist/cjs/{regl-component-CF41rUUv.js → regl-component-DOa8eHGy.js} +3 -3
  11. package/dist/cjs/{regl-component-CF41rUUv.js.map → regl-component-DOa8eHGy.js.map} +1 -1
  12. package/dist/cjs/{representation_pb-u7t5FI12.js → representation_pb-BrMsFavQ.js} +3 -3
  13. package/dist/cjs/{representation_pb-u7t5FI12.js.map → representation_pb-BrMsFavQ.js.map} +1 -1
  14. package/dist/cjs/{streamAttributes-BX291dI6.js → streamAttributes-DQm8yx7F.js} +6 -4
  15. package/dist/cjs/streamAttributes-DQm8yx7F.js.map +1 -0
  16. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  17. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  18. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  19. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +2 -2
  20. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +1 -1
  21. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +2 -2
  22. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  23. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +4 -4
  24. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +3 -3
  25. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +2 -2
  26. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  27. package/dist/cjs/vertex-viewer.cjs.entry.js +27 -7
  28. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  29. package/dist/collection/lib/meters.js +15 -1
  30. package/dist/collection/lib/meters.js.map +1 -1
  31. package/dist/collection/lib/storage.js +8 -2
  32. package/dist/collection/lib/storage.js.map +1 -1
  33. package/dist/collection/workers/png-decoder-pool.js +4 -2
  34. package/dist/collection/workers/png-decoder-pool.js.map +1 -1
  35. package/dist/components/index.js +1 -1
  36. package/dist/components/{p-BhgrvpJL.js → p-BLSuslo8.js} +2 -2
  37. package/dist/components/{p-D7rQku5u.js → p-Bmj32MLp.js} +2 -2
  38. package/dist/components/{p-MYlndA6B.js → p-Bo49wgwt.js} +2 -2
  39. package/dist/components/{p-BjcO9U8D.js → p-BvOB1WAv.js} +2 -2
  40. package/dist/components/{p-DSeOWYJ_.js → p-BygjJ1WP.js} +2 -2
  41. package/dist/components/{p-CJuOe1O1.js → p-CGpWfqFr.js} +2 -2
  42. package/dist/components/{p-uwvTj3Cw.js → p-CHQ7ZKZd.js} +2 -2
  43. package/dist/components/{p-Lx4iaHhY.js → p-CYhNWr6k.js} +2 -2
  44. package/dist/components/{p-JSB7V_jW.js → p-DLV-gg65.js} +2 -2
  45. package/dist/components/{p-JSB7V_jW.js.map → p-DLV-gg65.js.map} +1 -1
  46. package/dist/components/{p-DyPaZtSF.js → p-gFMW2KYT.js} +2 -2
  47. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  48. package/dist/components/vertex-scene-tree.js +1 -1
  49. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  50. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  51. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  52. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  53. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  54. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  55. package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
  56. package/dist/components/vertex-viewer-pin-group.js +1 -1
  57. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  58. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  59. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  60. package/dist/components/vertex-viewer-view-cube.js +1 -1
  61. package/dist/components/vertex-viewer.js +1 -1
  62. package/dist/components/vertex-viewer.js.map +1 -1
  63. package/dist/esm/{config-_vT0BdS-.js → config-BrYuY-7v.js} +3 -3
  64. package/dist/esm/{config-_vT0BdS-.js.map → config-BrYuY-7v.js.map} +1 -1
  65. package/dist/esm/{entities-8QCEsVRy.js → entities-DxpPFj9w.js} +4 -4
  66. package/dist/esm/{entities-8QCEsVRy.js.map → entities-DxpPFj9w.js.map} +1 -1
  67. package/dist/esm/{geometry_pb-Dj0yGTFi.js → geometry_pb-BLGp5Nq8.js} +3 -3
  68. package/dist/esm/{geometry_pb-Dj0yGTFi.js.map → geometry_pb-BLGp5Nq8.js.map} +1 -1
  69. package/dist/esm/index.js +5 -5
  70. package/dist/esm/index.mjs +5 -5
  71. package/dist/esm/{queries-W4aeN1vv.js → queries-Coo1RH5H.js} +4 -4
  72. package/dist/esm/{queries-W4aeN1vv.js.map → queries-Coo1RH5H.js.map} +1 -1
  73. package/dist/esm/{regl-component-Rio5LpoO.js → regl-component-B30675op.js} +3 -3
  74. package/dist/esm/{regl-component-Rio5LpoO.js.map → regl-component-B30675op.js.map} +1 -1
  75. package/dist/esm/{representation_pb-CCDsiQtg.js → representation_pb-DYkJtHQo.js} +3 -3
  76. package/dist/esm/{representation_pb-CCDsiQtg.js.map → representation_pb-DYkJtHQo.js.map} +1 -1
  77. package/dist/esm/{streamAttributes-DhQVsxJf.js → streamAttributes-Cfp9UX5m.js} +6 -4
  78. package/dist/esm/streamAttributes-Cfp9UX5m.js.map +1 -0
  79. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  80. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  81. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  82. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +2 -2
  83. package/dist/esm/vertex-viewer-measurement-details.entry.js +1 -1
  84. package/dist/esm/vertex-viewer-measurement-distance.entry.js +2 -2
  85. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  86. package/dist/esm/vertex-viewer-measurement-precise.entry.js +4 -4
  87. package/dist/esm/vertex-viewer-pin-group.entry.js +3 -3
  88. package/dist/esm/vertex-viewer-transform-widget.entry.js +2 -2
  89. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  90. package/dist/esm/vertex-viewer.entry.js +27 -7
  91. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  92. package/dist/viewer/index.esm.js +1 -1
  93. package/dist/viewer/{p-baec8489.entry.js → p-0287e1ba.entry.js} +2 -2
  94. package/dist/viewer/{p-2bd6cd13.entry.js → p-380e0112.entry.js} +2 -2
  95. package/dist/viewer/{p-101825c2.entry.js → p-40d90c6e.entry.js} +2 -2
  96. package/dist/viewer/{p-317da1b6.entry.js → p-6a546084.entry.js} +2 -2
  97. package/dist/viewer/p-7189eb18.entry.js +5 -0
  98. package/dist/viewer/p-7189eb18.entry.js.map +1 -0
  99. package/dist/viewer/{p-807aa9d0.entry.js → p-72fa9fba.entry.js} +2 -2
  100. package/dist/viewer/{p-0bf39fff.entry.js → p-81391d86.entry.js} +2 -2
  101. package/dist/viewer/{p-5VxzXVFc.js → p-B7mOY-Vi.js} +2 -2
  102. package/dist/viewer/{p-5VxzXVFc.js.map → p-B7mOY-Vi.js.map} +1 -1
  103. package/dist/viewer/{p-B9AGwrOP.js → p-CVRW2Plt.js} +2 -2
  104. package/dist/viewer/{p-B9AGwrOP.js.map → p-CVRW2Plt.js.map} +1 -1
  105. package/dist/viewer/{p-C0bm56qJ.js → p-CrcoZmKt.js} +2 -2
  106. package/dist/viewer/p-CrcoZmKt.js.map +1 -0
  107. package/dist/viewer/{p-BNiP3SE7.js → p-DKKHW33X.js} +2 -2
  108. package/dist/viewer/{p-BNiP3SE7.js.map → p-DKKHW33X.js.map} +1 -1
  109. package/dist/viewer/p-F9YPK1I7.js +5 -0
  110. package/dist/viewer/{p-DOMCeSTr.js.map → p-F9YPK1I7.js.map} +1 -1
  111. package/dist/viewer/p-Nk8SgPHE.js +5 -0
  112. package/dist/viewer/{p-CrwKMz5f.js.map → p-Nk8SgPHE.js.map} +1 -1
  113. package/dist/viewer/{p-BoFi-Uyu.js → p-_19YlCN5.js} +2 -2
  114. package/dist/viewer/{p-BoFi-Uyu.js.map → p-_19YlCN5.js.map} +1 -1
  115. package/dist/viewer/{p-dd2f92e3.entry.js → p-c7eb05ec.entry.js} +2 -2
  116. package/dist/viewer/{p-fade0dba.entry.js → p-c9d71f1e.entry.js} +2 -2
  117. package/dist/viewer/{p-49b9bba2.entry.js → p-d50b2449.entry.js} +2 -2
  118. package/dist/viewer/{p-0fa89933.entry.js → p-e80260d3.entry.js} +2 -2
  119. package/dist/viewer/{p-71c08a04.entry.js → p-fc082185.entry.js} +2 -2
  120. package/dist/viewer/viewer.esm.js +1 -1
  121. package/package.json +8 -7
  122. package/dist/cjs/streamAttributes-BX291dI6.js.map +0 -1
  123. package/dist/esm/streamAttributes-DhQVsxJf.js.map +0 -1
  124. package/dist/viewer/p-C0bm56qJ.js.map +0 -1
  125. package/dist/viewer/p-CrwKMz5f.js +0 -5
  126. package/dist/viewer/p-DOMCeSTr.js +0 -5
  127. package/dist/viewer/p-ea736bd1.entry.js +0 -5
  128. package/dist/viewer/p-ea736bd1.entry.js.map +0 -1
  129. /package/dist/components/{p-BhgrvpJL.js.map → p-BLSuslo8.js.map} +0 -0
  130. /package/dist/components/{p-D7rQku5u.js.map → p-Bmj32MLp.js.map} +0 -0
  131. /package/dist/components/{p-MYlndA6B.js.map → p-Bo49wgwt.js.map} +0 -0
  132. /package/dist/components/{p-BjcO9U8D.js.map → p-BvOB1WAv.js.map} +0 -0
  133. /package/dist/components/{p-DSeOWYJ_.js.map → p-BygjJ1WP.js.map} +0 -0
  134. /package/dist/components/{p-CJuOe1O1.js.map → p-CGpWfqFr.js.map} +0 -0
  135. /package/dist/components/{p-uwvTj3Cw.js.map → p-CHQ7ZKZd.js.map} +0 -0
  136. /package/dist/components/{p-Lx4iaHhY.js.map → p-CYhNWr6k.js.map} +0 -0
  137. /package/dist/components/{p-DyPaZtSF.js.map → p-gFMW2KYT.js.map} +0 -0
  138. /package/dist/viewer/{p-baec8489.entry.js.map → p-0287e1ba.entry.js.map} +0 -0
  139. /package/dist/viewer/{p-2bd6cd13.entry.js.map → p-380e0112.entry.js.map} +0 -0
  140. /package/dist/viewer/{p-101825c2.entry.js.map → p-40d90c6e.entry.js.map} +0 -0
  141. /package/dist/viewer/{p-317da1b6.entry.js.map → p-6a546084.entry.js.map} +0 -0
  142. /package/dist/viewer/{p-807aa9d0.entry.js.map → p-72fa9fba.entry.js.map} +0 -0
  143. /package/dist/viewer/{p-0bf39fff.entry.js.map → p-81391d86.entry.js.map} +0 -0
  144. /package/dist/viewer/{p-dd2f92e3.entry.js.map → p-c7eb05ec.entry.js.map} +0 -0
  145. /package/dist/viewer/{p-fade0dba.entry.js.map → p-c9d71f1e.entry.js.map} +0 -0
  146. /package/dist/viewer/{p-49b9bba2.entry.js.map → p-d50b2449.entry.js.map} +0 -0
  147. /package/dist/viewer/{p-0fa89933.entry.js.map → p-e80260d3.entry.js.map} +0 -0
  148. /package/dist/viewer/{p-71c08a04.entry.js.map → p-fc082185.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{g as r,a as e}from"./p-CG9AChtV.js";import{p as t,g as n,v as a,r as i,m as o,q as f,a as u}from"./p-Tvs4yxd5.js";import{c as s}from"./p-BZtylp5V.js";import{f as l}from"./p-B2SMWIov.js";import"./p-JSB7V_jW.js";import{V as c}from"./p-Dpyl9pSp.js";var v={exports:{}};var d=v.exports;var p;function b(){if(p)return v.exports;p=1;(function(r,e){(function(e,t){r.exports=t()})(d,(function(){var r=function(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array||r instanceof Uint8ClampedArray};var e=function(r,e){var t=Object.keys(e);for(var n=0;n<t.length;++n){r[t[n]]=e[t[n]]}return r};var t="\n";function n(r){if(typeof atob!=="undefined"){return atob(r)}return"base64:"+r}function a(r){var e=new Error("(regl) "+r);console.error(e);throw e}function i(r,e){if(!r){a(e)}}function o(r){if(r){return": "+r}return""}function f(r,e,t){if(!(r in e)){a("unknown parameter ("+r+")"+o(t)+". possible values: "+Object.keys(e).join())}}function u(e,t){if(!r(e)){a("invalid parameter type"+o(t)+". must be a typed array")}}function s(r,e){switch(e){case"number":return typeof r==="number";case"object":return typeof r==="object";case"string":return typeof r==="string";case"boolean":return typeof r==="boolean";case"function":return typeof r==="function";case"undefined":return typeof r==="undefined";case"symbol":return typeof r==="symbol"}}function l(r,e,t){if(!s(r,e)){a("invalid parameter type"+o(t)+". expected "+e+", got "+typeof r)}}function c(r,e){if(!(r>=0&&(r|0)===r)){a("invalid parameter type, ("+r+")"+o(e)+". must be a nonnegative integer")}}function v(r,e,t){if(e.indexOf(r)<0){a("invalid value"+o(t)+". must be one of: "+e)}}var d=["gl","canvas","container","attributes","pixelRatio","extensions","optionalExtensions","profile","onDone"];function p(r){Object.keys(r).forEach((function(r){if(d.indexOf(r)<0){a('invalid regl constructor argument "'+r+'". must be one of '+d)}}))}function b(r,e){r=r+"";while(r.length<e){r=" "+r}return r}function m(){this.name="unknown";this.lines=[];this.index={};this.hasErrors=false}function h(r,e){this.number=r;this.line=e;this.errors=[]}function y(r,e,t){this.file=r;this.line=e;this.message=t}function g(){var r=new Error;var e=(r.stack||r).toString();var t=/compileProcedure.*\n\s*at.*\((.*)\)/.exec(e);if(t){return t[1]}var n=/compileProcedure.*\n\s*at\s+(.*)(\n|$)/.exec(e);if(n){return n[1]}return"unknown"}function w(){var r=new Error;var e=(r.stack||r).toString();var t=/at REGLCommand.*\n\s+at.*\((.*)\)/.exec(e);if(t){return t[1]}var n=/at REGLCommand.*\n\s+at\s+(.*)\n/.exec(e);if(n){return n[1]}return"unknown"}function x(r,e){var t=r.split("\n");var a=1;var i=0;var o={unknown:new m,0:new m};o.unknown.name=o[0].name=e||g();o.unknown.lines.push(new h(0,""));for(var f=0;f<t.length;++f){var u=t[f];var s=/^\s*#\s*(\w+)\s+(.+)\s*$/.exec(u);if(s){switch(s[1]){case"line":var l=/(\d+)(\s+\d+)?/.exec(s[2]);if(l){a=l[1]|0;if(l[2]){i=l[2]|0;if(!(i in o)){o[i]=new m}}}break;case"define":var c=/SHADER_NAME(_B64)?\s+(.*)$/.exec(s[2]);if(c){o[i].name=c[1]?n(c[2]):c[2]}break}}o[i].lines.push(new h(a++,u))}Object.keys(o).forEach((function(r){var e=o[r];e.lines.forEach((function(r){e.index[r.number]=r}))}));return o}function A(r){var e=[];r.split("\n").forEach((function(r){if(r.length<5){return}var t=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(r);if(t){e.push(new y(t[1]|0,t[2]|0,t[3].trim()))}else if(r.length>0){e.push(new y("unknown",0,r))}}));return e}function C(r,e){e.forEach((function(e){var t=r[e.file];if(t){var n=t.index[e.line];if(n){n.errors.push(e);t.hasErrors=true;return}}r.unknown.hasErrors=true;r.unknown.lines[0].errors.push(e)}))}function j(r,e,n,a,o){if(!r.getShaderParameter(e,r.COMPILE_STATUS)){var f=r.getShaderInfoLog(e);var u=a===r.FRAGMENT_SHADER?"fragment":"vertex";D(n,"string",u+" shader source must be a string",o);var s=x(n,o);var l=A(f);C(s,l);Object.keys(s).forEach((function(r){var e=s[r];if(!e.hasErrors){return}var n=[""];var a=[""];function i(r,e){n.push(r);a.push(e||"")}i("file number "+r+": "+e.name+"\n","color:red;text-decoration:underline;font-weight:bold");e.lines.forEach((function(r){if(r.errors.length>0){i(b(r.number,4)+"| ","background-color:yellow; font-weight:bold");i(r.line+t,"color:red; background-color:yellow; font-weight:bold");var e=0;r.errors.forEach((function(n){var a=n.message;var o=/^\s*'(.*)'\s*:\s*(.*)$/.exec(a);if(o){var f=o[1];a=o[2];switch(f){case"assign":f="=";break}e=Math.max(r.line.indexOf(f,e),0)}else{e=0}i(b("| ",6));i(b("^^^",e+3)+t,"font-weight:bold");i(b("| ",6));i(a+t,"font-weight:bold")}));i(b("| ",6)+t)}else{i(b(r.number,4)+"| ");i(r.line+t,"color:red")}}));if(typeof document!=="undefined"&&!window.chrome){a[0]=n.join("%c");console.log.apply(console,a)}else{console.log(n.join(""))}}));i.raise("Error compiling "+u+" shader, "+s[0].name)}}function k(r,e,n,a,o){if(!r.getProgramParameter(e,r.LINK_STATUS)){var f=r.getProgramInfoLog(e);var u=x(n,o);var s=x(a,o);var l='Error linking program with vertex shader, "'+s[0].name+'", and fragment shader "'+u[0].name+'"';if(typeof document!=="undefined"){console.log("%c"+l+t+"%c"+f,"color:red;text-decoration:underline;font-weight:bold","color:red")}else{console.log(l+t+f)}i.raise(l)}}function O(r){r._commandRef=g()}function _(r,e,t,n){O(r);function a(r){if(r){return n.id(r)}return 0}r._fragId=a(r.static.frag);r._vertId=a(r.static.vert);function i(r,e){Object.keys(e).forEach((function(e){r[n.id(e)]=true}))}var o=r._uniformSet={};i(o,e.static);i(o,e.dynamic);var f=r._attributeSet={};i(f,t.static);i(f,t.dynamic);r._hasCount="count"in r.static||"count"in r.dynamic||"elements"in r.static||"elements"in r.dynamic}function T(r,e){var t=w();a(r+" in command "+(e||g())+(t==="unknown"?"":" called from "+t))}function F(r,e,t){if(!r){T(e,t||g())}}function M(r,e,t,n){if(!(r in e)){T("unknown parameter ("+r+")"+o(t)+". possible values: "+Object.keys(e).join(),n||g())}}function D(r,e,t,n){if(!s(r,e)){T("invalid parameter type"+o(t)+". expected "+e+", got "+typeof r,n||g())}}function S(r){r()}function z(r,e,t){if(r.texture){v(r.texture._texture.internalformat,e,"unsupported texture format for attachment")}else{v(r.renderbuffer._renderbuffer.format,t,"unsupported renderbuffer format for attachment")}}var B=33071;var E=9728;var R=9984;var J=9985;var V=9986;var N=9987;var I=5120;var W=5121;var L=5122;var U=5123;var q=5124;var P=5125;var G=5126;var H=32819;var $=32820;var Q=33635;var X=34042;var Y=36193;var Z={};Z[I]=Z[W]=1;Z[L]=Z[U]=Z[Y]=Z[Q]=Z[H]=Z[$]=2;Z[q]=Z[P]=Z[G]=Z[X]=4;function K(r,e){if(r===$||r===H||r===Q){return 2}else if(r===X){return 4}else{return Z[r]*e}}function rr(r){return!(r&r-1)&&!!r}function er(r,e,t){var n;var a=e.width;var o=e.height;var f=e.channels;i(a>0&&a<=t.maxTextureSize&&o>0&&o<=t.maxTextureSize,"invalid texture shape");if(r.wrapS!==B||r.wrapT!==B){i(rr(a)&&rr(o),"incompatible wrap mode for texture, both width and height must be power of 2")}if(e.mipmask===1){if(a!==1&&o!==1){i(r.minFilter!==R&&r.minFilter!==V&&r.minFilter!==J&&r.minFilter!==N,"min filter requires mipmap")}}else{i(rr(a)&&rr(o),"texture must be a square power of 2 to support mipmapping");i(e.mipmask===(a<<1)-1,"missing or incomplete mipmap data")}if(e.type===G){if(t.extensions.indexOf("oes_texture_float_linear")<0){i(r.minFilter===E&&r.magFilter===E,"filter not supported, must enable oes_texture_float_linear")}i(!r.genMipmaps,"mipmap generation not supported with float textures")}var u=e.images;for(n=0;n<16;++n){if(u[n]){var s=a>>n;var l=o>>n;i(e.mipmask&1<<n,"missing mipmap data");var c=u[n];i(c.width===s&&c.height===l,"invalid shape for mip images");i(c.format===e.format&&c.internalformat===e.internalformat&&c.type===e.type,"incompatible type for mip image");if(c.compressed);else if(c.data){var v=Math.ceil(K(c.type,f)*s/c.unpackAlignment)*c.unpackAlignment;i(c.data.byteLength===v*l,"invalid data for image, buffer size is inconsistent with image format")}else;}else if(!r.genMipmaps){i((e.mipmask&1<<n)===0,"extra mipmap data")}}if(e.compressed){i(!r.genMipmaps,"mipmap generation for compressed images not supported")}}function tr(r,e,t,n){var a=r.width;var o=r.height;var f=r.channels;i(a>0&&a<=n.maxTextureSize&&o>0&&o<=n.maxTextureSize,"invalid texture shape");i(a===o,"cube map must be square");i(e.wrapS===B&&e.wrapT===B,"wrap mode not supported by cube map");for(var u=0;u<t.length;++u){var s=t[u];i(s.width===a&&s.height===o,"inconsistent cube map face shape");if(e.genMipmaps){i(!s.compressed,"can not generate mipmap for compressed textures");i(s.mipmask===1,"can not specify mipmaps and generate mipmaps")}var l=s.images;for(var c=0;c<16;++c){var v=l[c];if(v){var d=a>>c;var p=o>>c;i(s.mipmask&1<<c,"missing mipmap data");i(v.width===d&&v.height===p,"invalid shape for mip images");i(v.format===r.format&&v.internalformat===r.internalformat&&v.type===r.type,"incompatible type for mip image");if(v.compressed);else if(v.data){i(v.data.byteLength===d*p*Math.max(K(v.type,f),v.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format")}else;}}}}var nr=e(i,{optional:S,raise:a,commandRaise:T,command:F,parameter:f,commandParameter:M,constructor:p,type:l,commandType:D,isTypedArray:u,nni:c,oneOf:v,shaderError:j,linkError:k,callSite:w,saveCommandRef:O,saveDrawInfo:_,framebufferFormat:z,guessCommand:g,texture2D:er,textureCube:tr});var ar=0;var ir=0;var or=5;var fr=6;function ur(r,e){this.id=ar++;this.type=r;this.data=e}function sr(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function lr(r){if(r.length===0){return[]}var e=r.charAt(0);var t=r.charAt(r.length-1);if(r.length>1&&e===t&&(e==='"'||e==="'")){return['"'+sr(r.substr(1,r.length-2))+'"']}var n=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(r);if(n){return lr(r.substr(0,n.index)).concat(lr(n[1])).concat(lr(r.substr(n.index+n[0].length)))}var a=r.split(".");if(a.length===1){return['"'+sr(r)+'"']}var i=[];for(var o=0;o<a.length;++o){i=i.concat(lr(a[o]))}return i}function cr(r){return"["+lr(r).join("][")+"]"}function vr(r,e){return new ur(r,cr(e+""))}function dr(r){return typeof r==="function"&&!r._reglType||r instanceof ur}function pr(r,e){if(typeof r==="function"){return new ur(ir,r)}else if(typeof r==="number"||typeof r==="boolean"){return new ur(or,r)}else if(Array.isArray(r)){return new ur(fr,r.map((function(r,t){return pr(r,e+"["+t+"]")})))}else if(r instanceof ur){return r}nr(false,"invalid option type in uniform "+e)}var br={DynamicVariable:ur,define:vr,isDynamic:dr,unbox:pr,accessor:cr};var mr={next:typeof requestAnimationFrame==="function"?function(r){return requestAnimationFrame(r)}:function(r){return setTimeout(r,16)},cancel:typeof cancelAnimationFrame==="function"?function(r){return cancelAnimationFrame(r)}:clearTimeout};var hr=typeof performance!=="undefined"&&performance.now?function(){return performance.now()}:function(){return+new Date};function yr(){var r={"":0};var e=[""];return{id:function(t){var n=r[t];if(n){return n}n=r[t]=e.length;e.push(t);return n},str:function(r){return e[r]}}}function gr(r,t,n){var a=document.createElement("canvas");e(a.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"});r.appendChild(a);if(r===document.body){a.style.position="absolute";e(r.style,{margin:0,padding:0})}function i(){var e=window.innerWidth;var t=window.innerHeight;if(r!==document.body){var i=a.getBoundingClientRect();e=i.right-i.left;t=i.bottom-i.top}a.width=n*e;a.height=n*t}var o;if(r!==document.body&&typeof ResizeObserver==="function"){o=new ResizeObserver((function(){setTimeout(i)}));o.observe(r)}else{window.addEventListener("resize",i,false)}function f(){if(o){o.disconnect()}else{window.removeEventListener("resize",i)}r.removeChild(a)}i();return{canvas:a,onDestroy:f}}function wr(r,e){function t(t){try{return r.getContext(t,e)}catch(r){return null}}return t("webgl")||t("experimental-webgl")||t("webgl-experimental")}function xr(r){return typeof r.nodeName==="string"&&typeof r.appendChild==="function"&&typeof r.getBoundingClientRect==="function"}function Ar(r){return typeof r.drawArrays==="function"||typeof r.drawElements==="function"}function Cr(r){if(typeof r==="string"){return r.split()}nr(Array.isArray(r),"invalid extension array");return r}function jr(r){if(typeof r==="string"){nr(typeof document!=="undefined","not supported outside of DOM");return document.querySelector(r)}return r}function kr(r){var e=r||{};var t,n,a,i;var o={};var f=[];var u=[];var s=typeof window==="undefined"?1:window.devicePixelRatio;var l=false;var c=function(r){if(r){nr.raise(r)}};var v=function(){};if(typeof e==="string"){nr(typeof document!=="undefined","selector queries only supported in DOM environments");t=document.querySelector(e);nr(t,"invalid query string for element")}else if(typeof e==="object"){if(xr(e)){t=e}else if(Ar(e)){i=e;a=i.canvas}else{nr.constructor(e);if("gl"in e){i=e.gl}else if("canvas"in e){a=jr(e.canvas)}else if("container"in e){n=jr(e.container)}if("attributes"in e){o=e.attributes;nr.type(o,"object","invalid context attributes")}if("extensions"in e){f=Cr(e.extensions)}if("optionalExtensions"in e){u=Cr(e.optionalExtensions)}if("onDone"in e){nr.type(e.onDone,"function","invalid or missing onDone callback");c=e.onDone}if("profile"in e){l=!!e.profile}if("pixelRatio"in e){s=+e.pixelRatio;nr(s>0,"invalid pixel ratio")}}}else{nr.raise("invalid arguments to regl")}if(t){if(t.nodeName.toLowerCase()==="canvas"){a=t}else{n=t}}if(!i){if(!a){nr(typeof document!=="undefined","must manually specify webgl context outside of DOM environments");var d=gr(n||document.body,c,s);if(!d){return null}a=d.canvas;v=d.onDestroy}if(o.premultipliedAlpha===undefined)o.premultipliedAlpha=true;i=wr(a,o)}if(!i){v();c("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org");return null}return{gl:i,canvas:a,container:n,extensions:f,optionalExtensions:u,pixelRatio:s,profile:l,onDone:c,onDestroy:v}}function Or(r,e){var t={};function n(e){nr.type(e,"string","extension name must be string");var n=e.toLowerCase();var a;try{a=t[n]=r.getExtension(n)}catch(r){}return!!a}for(var a=0;a<e.extensions.length;++a){var i=e.extensions[a];if(!n(i)){e.onDestroy();e.onDone('"'+i+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser');return null}}e.optionalExtensions.forEach(n);return{extensions:t,restore:function(){Object.keys(t).forEach((function(r){if(t[r]&&!n(r)){throw new Error("(regl): error restoring extension "+r)}}))}}}function _r(r,e){var t=Array(r);for(var n=0;n<r;++n){t[n]=e(n)}return t}var Tr=5120;var Fr=5121;var Mr=5122;var Dr=5123;var Sr=5124;var zr=5125;var Br=5126;function Er(r){for(var e=16;e<=1<<28;e*=16){if(r<=e){return e}}return 0}function Rr(r){var e,t;e=(r>65535)<<4;r>>>=e;t=(r>255)<<3;r>>>=t;e|=t;t=(r>15)<<2;r>>>=t;e|=t;t=(r>3)<<1;r>>>=t;e|=t;return e|r>>1}function Jr(){var r=_r(8,(function(){return[]}));function e(e){var t=Er(e);var n=r[Rr(t)>>2];if(n.length>0){return n.pop()}return new ArrayBuffer(t)}function t(e){r[Rr(e.byteLength)>>2].push(e)}function n(r,t){var n=null;switch(r){case Tr:n=new Int8Array(e(t),0,t);break;case Fr:n=new Uint8Array(e(t),0,t);break;case Mr:n=new Int16Array(e(2*t),0,t);break;case Dr:n=new Uint16Array(e(2*t),0,t);break;case Sr:n=new Int32Array(e(4*t),0,t);break;case zr:n=new Uint32Array(e(4*t),0,t);break;case Br:n=new Float32Array(e(4*t),0,t);break;default:return null}if(n.length!==t){return n.subarray(0,t)}return n}function a(r){t(r.buffer)}return{alloc:e,free:t,allocType:n,freeType:a}}var Vr=Jr();Vr.zero=Jr();var Nr=3408;var Ir=3410;var Wr=3411;var Lr=3412;var Ur=3413;var qr=3414;var Pr=3415;var Gr=33901;var Hr=33902;var $r=3379;var Qr=3386;var Xr=34921;var Yr=36347;var Zr=36348;var Kr=35661;var re=35660;var ee=34930;var te=36349;var ne=34076;var ae=34024;var ie=7936;var oe=7937;var fe=7938;var ue=35724;var se=34047;var le=36063;var ce=34852;var ve=3553;var de=34067;var pe=34069;var be=33984;var me=6408;var he=5126;var ye=5121;var ge=36160;var we=36053;var xe=36064;var Ae=16384;var Ce=function(r,e){var t=1;if(e.ext_texture_filter_anisotropic){t=r.getParameter(se)}var n=1;var a=1;if(e.webgl_draw_buffers){n=r.getParameter(ce);a=r.getParameter(le)}var i=!!e.oes_texture_float;if(i){var o=r.createTexture();r.bindTexture(ve,o);r.texImage2D(ve,0,me,1,1,0,me,he,null);var f=r.createFramebuffer();r.bindFramebuffer(ge,f);r.framebufferTexture2D(ge,xe,ve,o,0);r.bindTexture(ve,null);if(r.checkFramebufferStatus(ge)!==we)i=false;else{r.viewport(0,0,1,1);r.clearColor(1,0,0,1);r.clear(Ae);var u=Vr.allocType(he,4);r.readPixels(0,0,1,1,me,he,u);if(r.getError())i=false;else{r.deleteFramebuffer(f);r.deleteTexture(o);i=u[0]===1}Vr.freeType(u)}}var s=typeof navigator!=="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent));var l=true;if(!s){var c=r.createTexture();var v=Vr.allocType(ye,36);r.activeTexture(be);r.bindTexture(de,c);r.texImage2D(pe,0,me,3,3,0,me,ye,v);Vr.freeType(v);r.bindTexture(de,null);r.deleteTexture(c);l=!r.getError()}return{colorBits:[r.getParameter(Ir),r.getParameter(Wr),r.getParameter(Lr),r.getParameter(Ur)],depthBits:r.getParameter(qr),stencilBits:r.getParameter(Pr),subpixelBits:r.getParameter(Nr),extensions:Object.keys(e).filter((function(r){return!!e[r]})),maxAnisotropic:t,maxDrawbuffers:n,maxColorAttachments:a,pointSizeDims:r.getParameter(Gr),lineWidthDims:r.getParameter(Hr),maxViewportDims:r.getParameter(Qr),maxCombinedTextureUnits:r.getParameter(Kr),maxCubeMapSize:r.getParameter(ne),maxRenderbufferSize:r.getParameter(ae),maxTextureUnits:r.getParameter(ee),maxTextureSize:r.getParameter($r),maxAttributes:r.getParameter(Xr),maxVertexUniforms:r.getParameter(Yr),maxVertexTextureUnits:r.getParameter(re),maxVaryingVectors:r.getParameter(Zr),maxFragmentUniforms:r.getParameter(te),glsl:r.getParameter(ue),renderer:r.getParameter(oe),vendor:r.getParameter(ie),version:r.getParameter(fe),readFloat:i,npotTextureCube:l}};function je(e){return!!e&&typeof e==="object"&&Array.isArray(e.shape)&&Array.isArray(e.stride)&&typeof e.offset==="number"&&e.shape.length===e.stride.length&&(Array.isArray(e.data)||r(e.data))}var ke=function(r){return Object.keys(r).map((function(e){return r[e]}))};var Oe={shape:Se,flatten:De};function _e(r,e,t){for(var n=0;n<e;++n){t[n]=r[n]}}function Te(r,e,t,n){var a=0;for(var i=0;i<e;++i){var o=r[i];for(var f=0;f<t;++f){n[a++]=o[f]}}}function Fe(r,e,t,n,a,i){var o=i;for(var f=0;f<e;++f){var u=r[f];for(var s=0;s<t;++s){var l=u[s];for(var c=0;c<n;++c){a[o++]=l[c]}}}}function Me(r,e,t,n,a){var i=1;for(var o=t+1;o<e.length;++o){i*=e[o]}var f=e[t];if(e.length-t===4){var u=e[t+1];var s=e[t+2];var l=e[t+3];for(o=0;o<f;++o){Fe(r[o],u,s,l,n,a);a+=i}}else{for(o=0;o<f;++o){Me(r[o],e,t+1,n,a);a+=i}}}function De(r,e,t,n){var a=1;if(e.length){for(var i=0;i<e.length;++i){a*=e[i]}}else{a=0}var o=n||Vr.allocType(t,a);switch(e.length){case 0:break;case 1:_e(r,e[0],o);break;case 2:Te(r,e[0],e[1],o);break;case 3:Fe(r,e[0],e[1],e[2],o,0);break;default:Me(r,e,0,o,0)}return o}function Se(r){var e=[];for(var t=r;t.length;t=t[0]){e.push(t.length)}return e}var ze={"[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};var Be=5120;var Ee=5122;var Re=5124;var Je=5121;var Ve=5123;var Ne=5125;var Ie=5126;var We=5126;var Le={int8:Be,int16:Ee,int32:Re,uint8:Je,uint16:Ve,uint32:Ne,float:Ie,float32:We};var Ue=35048;var qe=35040;var Pe={dynamic:Ue,stream:qe,static:35044};var Ge=Oe.flatten;var He=Oe.shape;var $e=35044;var Qe=35040;var Xe=5121;var Ye=5126;var Ze=[];Ze[5120]=1;Ze[5122]=2;Ze[5124]=4;Ze[5121]=1;Ze[5123]=2;Ze[5125]=4;Ze[5126]=4;function Ke(r){return ze[Object.prototype.toString.call(r)]|0}function rt(r,e){for(var t=0;t<e.length;++t){r[t]=e[t]}}function et(r,e,t,n,a,i,o){var f=0;for(var u=0;u<t;++u){for(var s=0;s<n;++s){r[f++]=e[a*u+i*s+o]}}}function tt(e,t,n,a){var i=0;var o={};function f(r){this.id=i++;this.buffer=e.createBuffer();this.type=r;this.usage=$e;this.byteLength=0;this.dimension=1;this.dtype=Xe;this.persistentData=null;if(n.profile){this.stats={size:0}}}f.prototype.bind=function(){e.bindBuffer(this.type,this.buffer)};f.prototype.destroy=function(){d(this)};var u=[];function s(r,e){var t=u.pop();if(!t){t=new f(r)}t.bind();v(t,e,Qe,0,1,false);return t}function l(r){u.push(r)}function c(r,t,n){r.byteLength=t.byteLength;e.bufferData(r.type,t,n)}function v(e,t,n,a,i,o){var f;e.usage=n;if(Array.isArray(t)){e.dtype=a||Ye;if(t.length>0){var u;if(Array.isArray(t[0])){f=He(t);var s=1;for(var l=1;l<f.length;++l){s*=f[l]}e.dimension=s;u=Ge(t,f,e.dtype);c(e,u,n);if(o){e.persistentData=u}else{Vr.freeType(u)}}else if(typeof t[0]==="number"){e.dimension=i;var v=Vr.allocType(e.dtype,t.length);rt(v,t);c(e,v,n);if(o){e.persistentData=v}else{Vr.freeType(v)}}else if(r(t[0])){e.dimension=t[0].length;e.dtype=a||Ke(t[0])||Ye;u=Ge(t,[t.length,t[0].length],e.dtype);c(e,u,n);if(o){e.persistentData=u}else{Vr.freeType(u)}}else{nr.raise("invalid buffer data")}}}else if(r(t)){e.dtype=a||Ke(t);e.dimension=i;c(e,t,n);if(o){e.persistentData=new Uint8Array(new Uint8Array(t.buffer))}}else if(je(t)){f=t.shape;var d=t.stride;var p=t.offset;var b=0;var m=0;var h=0;var y=0;if(f.length===1){b=f[0];m=1;h=d[0];y=0}else if(f.length===2){b=f[0];m=f[1];h=d[0];y=d[1]}else{nr.raise("invalid shape")}e.dtype=a||Ke(t.data)||Ye;e.dimension=m;var g=Vr.allocType(e.dtype,b*m);et(g,t.data,b,m,h,y,p);c(e,g,n);if(o){e.persistentData=g}else{Vr.freeType(g)}}else if(t instanceof ArrayBuffer){e.dtype=Xe;e.dimension=i;c(e,t,n);if(o){e.persistentData=new Uint8Array(new Uint8Array(t))}}else{nr.raise("invalid buffer data")}}function d(r){t.bufferCount--;a(r);var n=r.buffer;nr(n,"buffer must not be deleted already");e.deleteBuffer(n);r.buffer=null;delete o[r.id]}function p(a,i,u,s){t.bufferCount++;var l=new f(i);o[l.id]=l;function c(t){var a=$e;var i=null;var o=0;var f=0;var u=1;if(Array.isArray(t)||r(t)||je(t)||t instanceof ArrayBuffer){i=t}else if(typeof t==="number"){o=t|0}else if(t){nr.type(t,"object","buffer arguments must be an object, a number or an array");if("data"in t){nr(i===null||Array.isArray(i)||r(i)||je(i),"invalid data for buffer");i=t.data}if("usage"in t){nr.parameter(t.usage,Pe,"invalid buffer usage");a=Pe[t.usage]}if("type"in t){nr.parameter(t.type,Le,"invalid buffer type");f=Le[t.type]}if("dimension"in t){nr.type(t.dimension,"number","invalid dimension");u=t.dimension|0}if("length"in t){nr.nni(o,"buffer length must be a nonnegative integer");o=t.length|0}}l.bind();if(!i){if(o)e.bufferData(l.type,o,a);l.dtype=f||Xe;l.usage=a;l.dimension=u;l.byteLength=o}else{v(l,i,a,f,u,s)}if(n.profile){l.stats.size=l.byteLength*Ze[l.dtype]}return c}function p(r,t){nr(t+r.byteLength<=l.byteLength,"invalid buffer subdata call, buffer is too small. "+" Can't write data of size "+r.byteLength+" starting from offset "+t+" to a buffer of size "+l.byteLength);e.bufferSubData(l.type,t,r)}function b(e,t){var n=(t||0)|0;var a;l.bind();if(r(e)||e instanceof ArrayBuffer){p(e,n)}else if(Array.isArray(e)){if(e.length>0){if(typeof e[0]==="number"){var i=Vr.allocType(l.dtype,e.length);rt(i,e);p(i,n);Vr.freeType(i)}else if(Array.isArray(e[0])||r(e[0])){a=He(e);var o=Ge(e,a,l.dtype);p(o,n);Vr.freeType(o)}else{nr.raise("invalid buffer data")}}}else if(je(e)){a=e.shape;var f=e.stride;var u=0;var s=0;var v=0;var d=0;if(a.length===1){u=a[0];s=1;v=f[0];d=0}else if(a.length===2){u=a[0];s=a[1];v=f[0];d=f[1]}else{nr.raise("invalid shape")}var b=Array.isArray(e.data)?l.dtype:Ke(e.data);var m=Vr.allocType(b,u*s);et(m,e.data,u,s,v,d,e.offset);p(m,n);Vr.freeType(m)}else{nr.raise("invalid data for buffer subdata")}return c}if(!u){c(a)}c._reglType="buffer";c._buffer=l;c.subdata=b;if(n.profile){c.stats=l.stats}c.destroy=function(){d(l)};return c}function b(){ke(o).forEach((function(r){r.buffer=e.createBuffer();e.bindBuffer(r.type,r.buffer);e.bufferData(r.type,r.persistentData||r.byteLength,r.usage)}))}if(n.profile){t.getTotalBufferSize=function(){var r=0;Object.keys(o).forEach((function(e){r+=o[e].stats.size}));return r}}return{create:p,createStream:s,destroyStream:l,clear:function(){ke(o).forEach(d);u.forEach(d)},getBuffer:function(r){if(r&&r._buffer instanceof f){return r._buffer}return null},restore:b,_initBuffer:v}}var nt=0;var at=0;var it=1;var ot=1;var ft=4;var ut=4;var st={points:nt,point:at,lines:it,line:ot,triangles:ft,triangle:ut,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6};var lt=0;var ct=1;var vt=4;var dt=5120;var pt=5121;var bt=5122;var mt=5123;var ht=5124;var yt=5125;var gt=34963;var wt=35040;var xt=35044;function At(e,t,n,a){var i={};var o=0;var f={uint8:pt,uint16:mt};if(t.oes_element_index_uint){f.uint32=yt}function u(r){this.id=o++;i[this.id]=this;this.buffer=r;this.primType=vt;this.vertCount=0;this.type=0}u.prototype.bind=function(){this.buffer.bind()};var s=[];function l(r){var e=s.pop();if(!e){e=new u(n.create(null,gt,true,false)._buffer)}v(e,r,wt,-1,-1,0,0);return e}function c(r){s.push(r)}function v(a,i,o,f,u,s,l){a.buffer.bind();var c;if(i){var v=l;if(!l&&(!r(i)||je(i)&&!r(i.data))){v=t.oes_element_index_uint?yt:mt}n._initBuffer(a.buffer,i,o,v,3)}else{e.bufferData(gt,s,o);a.buffer.dtype=c||pt;a.buffer.usage=o;a.buffer.dimension=3;a.buffer.byteLength=s}c=l;if(!l){switch(a.buffer.dtype){case pt:case dt:c=pt;break;case mt:case bt:c=mt;break;case yt:case ht:c=yt;break;default:nr.raise("unsupported type for element array")}a.buffer.dtype=c}a.type=c;nr(c!==yt||!!t.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var d=u;if(d<0){d=a.buffer.byteLength;if(c===mt){d>>=1}else if(c===yt){d>>=2}}a.vertCount=d;var p=f;if(f<0){p=vt;var b=a.buffer.dimension;if(b===1)p=lt;if(b===2)p=ct;if(b===3)p=vt}a.primType=p}function d(r){a.elementsCount--;nr(r.buffer!==null,"must not double destroy elements");delete i[r.id];r.buffer.destroy();r.buffer=null}function p(e,t){var i=n.create(null,gt,true);var o=new u(i._buffer);a.elementsCount++;function s(e){if(!e){i();o.primType=vt;o.vertCount=0;o.type=pt}else if(typeof e==="number"){i(e);o.primType=vt;o.vertCount=e|0;o.type=pt}else{var t=null;var n=xt;var a=-1;var u=-1;var l=0;var c=0;if(Array.isArray(e)||r(e)||je(e)){t=e}else{nr.type(e,"object","invalid arguments for elements");if("data"in e){t=e.data;nr(Array.isArray(t)||r(t)||je(t),"invalid data for element buffer")}if("usage"in e){nr.parameter(e.usage,Pe,"invalid element buffer usage");n=Pe[e.usage]}if("primitive"in e){nr.parameter(e.primitive,st,"invalid element buffer primitive");a=st[e.primitive]}if("count"in e){nr(typeof e.count==="number"&&e.count>=0,"invalid vertex count for elements");u=e.count|0}if("type"in e){nr.parameter(e.type,f,"invalid buffer type");c=f[e.type]}if("length"in e){l=e.length|0}else{l=u;if(c===mt||c===bt){l*=2}else if(c===yt||c===ht){l*=4}}}v(o,t,n,a,u,l,c)}return s}s(e);s._reglType="elements";s._elements=o;s.subdata=function(r,e){i.subdata(r,e);return s};s.destroy=function(){d(o)};return s}return{create:p,createStream:l,destroyStream:c,getElements:function(r){if(typeof r==="function"&&r._elements instanceof u){return r._elements}return null},clear:function(){ke(i).forEach(d)}}}var Ct=new Float32Array(1);var jt=new Uint32Array(Ct.buffer);var kt=5123;function Ot(r){var e=Vr.allocType(kt,r.length);for(var t=0;t<r.length;++t){if(isNaN(r[t])){e[t]=65535}else if(r[t]===Infinity){e[t]=31744}else if(r[t]===-Infinity){e[t]=64512}else{Ct[0]=r[t];var n=jt[0];var a=n>>>31<<15;var i=(n<<1>>>24)-127;var o=n>>13&(1<<10)-1;if(i<-24){e[t]=a}else if(i<-14){var f=-14-i;e[t]=a+(o+(1<<10)>>f)}else if(i>15){e[t]=a+31744}else{e[t]=a+(i+15<<10)+o}}}return e}function _t(e){return Array.isArray(e)||r(e)}var Tt=function(r){return!(r&r-1)&&!!r};var Ft=34467;var Mt=3553;var Dt=34067;var St=34069;var zt=6408;var Bt=6406;var Et=6407;var Rt=6409;var Jt=6410;var Vt=32854;var Nt=32855;var It=36194;var Wt=32819;var Lt=32820;var Ut=33635;var qt=34042;var Pt=6402;var Gt=34041;var Ht=35904;var $t=35906;var Qt=36193;var Xt=33776;var Yt=33777;var Zt=33778;var Kt=33779;var rn=35986;var en=35987;var tn=34798;var nn=35840;var an=35841;var on=35842;var fn=35843;var un=36196;var sn=5121;var ln=5123;var cn=5125;var vn=5126;var dn=10242;var pn=10243;var bn=10497;var mn=33071;var hn=33648;var yn=10240;var gn=10241;var wn=9728;var xn=9729;var An=9984;var Cn=9985;var jn=9986;var kn=9987;var On=33170;var _n=4352;var Tn=4353;var Fn=4354;var Mn=34046;var Dn=3317;var Sn=37440;var zn=37441;var Bn=37443;var En=37444;var Rn=33984;var Jn=[An,jn,Cn,kn];var Vn=[0,Rt,Jt,Et,zt];var Nn={};Nn[Rt]=Nn[Bt]=Nn[Pt]=1;Nn[Gt]=Nn[Jt]=2;Nn[Et]=Nn[Ht]=3;Nn[zt]=Nn[$t]=4;function In(r){return"[object "+r+"]"}var Wn=In("HTMLCanvasElement");var Ln=In("OffscreenCanvas");var Un=In("CanvasRenderingContext2D");var qn=In("ImageBitmap");var Pn=In("HTMLImageElement");var Gn=In("HTMLVideoElement");var Hn=Object.keys(ze).concat([Wn,Ln,Un,qn,Pn,Gn]);var $n=[];$n[sn]=1;$n[vn]=4;$n[Qt]=2;$n[ln]=2;$n[cn]=4;var Qn=[];Qn[Vt]=2;Qn[Nt]=2;Qn[It]=2;Qn[Gt]=4;Qn[Xt]=.5;Qn[Yt]=.5;Qn[Zt]=1;Qn[Kt]=1;Qn[rn]=.5;Qn[en]=1;Qn[tn]=1;Qn[nn]=.5;Qn[an]=.25;Qn[on]=.5;Qn[fn]=.25;Qn[un]=.5;function Xn(r){return Array.isArray(r)&&(r.length===0||typeof r[0]==="number")}function Yn(r){if(!Array.isArray(r)){return false}var e=r.length;if(e===0||!_t(r[0])){return false}return true}function Zn(r){return Object.prototype.toString.call(r)}function Kn(r){return Zn(r)===Wn}function ra(r){return Zn(r)===Ln}function ea(r){return Zn(r)===Un}function ta(r){return Zn(r)===qn}function na(r){return Zn(r)===Pn}function aa(r){return Zn(r)===Gn}function ia(r){if(!r){return false}var e=Zn(r);if(Hn.indexOf(e)>=0){return true}return Xn(r)||Yn(r)||je(r)}function oa(r){return ze[Object.prototype.toString.call(r)]|0}function fa(r,e){var t=e.length;switch(r.type){case sn:case ln:case cn:case vn:var n=Vr.allocType(r.type,t);n.set(e);r.data=n;break;case Qt:r.data=Ot(e);break;default:nr.raise("unsupported texture type, must specify a typed array")}}function ua(r,e){return Vr.allocType(r.type===Qt?vn:r.type,e)}function sa(r,e){if(r.type===Qt){r.data=Ot(e);Vr.freeType(e)}else{r.data=e}}function la(r,e,t,n,a,i){var o=r.width;var f=r.height;var u=r.channels;var s=o*f*u;var l=ua(r,s);var c=0;for(var v=0;v<f;++v){for(var d=0;d<o;++d){for(var p=0;p<u;++p){l[c++]=e[t*d+n*v+a*p+i]}}}sa(r,l)}function ca(r,e,t,n,a,i){var o;if(typeof Qn[r]!=="undefined"){o=Qn[r]}else{o=Nn[r]*$n[e]}if(i){o*=6}if(a){var f=0;var u=t;while(u>=1){f+=o*u*u;u/=2}return f}else{return o*t*n}}function va(t,n,a,i,o,f,u){var s={"don't care":_n,"dont care":_n,nice:Fn,fast:Tn};var l={repeat:bn,clamp:mn,mirror:hn};var c={nearest:wn,linear:xn};var v=e({mipmap:kn,"nearest mipmap nearest":An,"linear mipmap nearest":Cn,"nearest mipmap linear":jn,"linear mipmap linear":kn},c);var d={none:0,browser:En};var p={uint8:sn,rgba4:Wt,rgb565:Ut,"rgb5 a1":Lt};var b={alpha:Bt,luminance:Rt,"luminance alpha":Jt,rgb:Et,rgba:zt,rgba4:Vt,"rgb5 a1":Nt,rgb565:It};var m={};if(n.ext_srgb){b.srgb=Ht;b.srgba=$t}if(n.oes_texture_float){p.float32=p.float=vn}if(n.oes_texture_half_float){p["float16"]=p["half float"]=Qt}if(n.webgl_depth_texture){e(b,{depth:Pt,"depth stencil":Gt});e(p,{uint16:ln,uint32:cn,"depth stencil":qt})}if(n.webgl_compressed_texture_s3tc){e(m,{"rgb s3tc dxt1":Xt,"rgba s3tc dxt1":Yt,"rgba s3tc dxt3":Zt,"rgba s3tc dxt5":Kt})}if(n.webgl_compressed_texture_atc){e(m,{"rgb atc":rn,"rgba atc explicit alpha":en,"rgba atc interpolated alpha":tn})}if(n.webgl_compressed_texture_pvrtc){e(m,{"rgb pvrtc 4bppv1":nn,"rgb pvrtc 2bppv1":an,"rgba pvrtc 4bppv1":on,"rgba pvrtc 2bppv1":fn})}if(n.webgl_compressed_texture_etc1){m["rgb etc1"]=un}var h=Array.prototype.slice.call(t.getParameter(Ft));Object.keys(m).forEach((function(r){var e=m[r];if(h.indexOf(e)>=0){b[r]=e}}));var y=Object.keys(b);a.textureFormats=y;var g=[];Object.keys(b).forEach((function(r){var e=b[r];g[e]=r}));var w=[];Object.keys(p).forEach((function(r){var e=p[r];w[e]=r}));var x=[];Object.keys(c).forEach((function(r){var e=c[r];x[e]=r}));var A=[];Object.keys(v).forEach((function(r){var e=v[r];A[e]=r}));var C=[];Object.keys(l).forEach((function(r){var e=l[r];C[e]=r}));var j=y.reduce((function(r,e){var t=b[e];if(t===Rt||t===Bt||t===Rt||t===Jt||t===Pt||t===Gt||n.ext_srgb&&(t===Ht||t===$t)){r[t]=t}else if(t===Nt||e.indexOf("rgba")>=0){r[t]=zt}else{r[t]=Et}return r}),{});function k(){this.internalformat=zt;this.format=zt;this.type=sn;this.compressed=false;this.premultiplyAlpha=false;this.flipY=false;this.unpackAlignment=1;this.colorSpace=En;this.width=0;this.height=0;this.channels=0}function O(r,e){r.internalformat=e.internalformat;r.format=e.format;r.type=e.type;r.compressed=e.compressed;r.premultiplyAlpha=e.premultiplyAlpha;r.flipY=e.flipY;r.unpackAlignment=e.unpackAlignment;r.colorSpace=e.colorSpace;r.width=e.width;r.height=e.height;r.channels=e.channels}function _(r,e){if(typeof e!=="object"||!e){return}if("premultiplyAlpha"in e){nr.type(e.premultiplyAlpha,"boolean","invalid premultiplyAlpha");r.premultiplyAlpha=e.premultiplyAlpha}if("flipY"in e){nr.type(e.flipY,"boolean","invalid texture flip");r.flipY=e.flipY}if("alignment"in e){nr.oneOf(e.alignment,[1,2,4,8],"invalid texture unpack alignment");r.unpackAlignment=e.alignment}if("colorSpace"in e){nr.parameter(e.colorSpace,d,"invalid colorSpace");r.colorSpace=d[e.colorSpace]}if("type"in e){var t=e.type;nr(n.oes_texture_float||!(t==="float"||t==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures.");nr(n.oes_texture_half_float||!(t==="half float"||t==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.");nr(n.webgl_depth_texture||!(t==="uint16"||t==="uint32"||t==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.");nr.parameter(t,p,"invalid texture type");r.type=p[t]}var i=r.width;var o=r.height;var f=r.channels;var u=false;if("shape"in e){nr(Array.isArray(e.shape)&&e.shape.length>=2,"shape must be an array");i=e.shape[0];o=e.shape[1];if(e.shape.length===3){f=e.shape[2];nr(f>0&&f<=4,"invalid number of channels");u=true}nr(i>=0&&i<=a.maxTextureSize,"invalid width");nr(o>=0&&o<=a.maxTextureSize,"invalid height")}else{if("radius"in e){i=o=e.radius;nr(i>=0&&i<=a.maxTextureSize,"invalid radius")}if("width"in e){i=e.width;nr(i>=0&&i<=a.maxTextureSize,"invalid width")}if("height"in e){o=e.height;nr(o>=0&&o<=a.maxTextureSize,"invalid height")}if("channels"in e){f=e.channels;nr(f>0&&f<=4,"invalid number of channels");u=true}}r.width=i|0;r.height=o|0;r.channels=f|0;var s=false;if("format"in e){var l=e.format;nr(n.webgl_depth_texture||!(l==="depth"||l==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.");nr.parameter(l,b,"invalid texture format");var c=r.internalformat=b[l];r.format=j[c];if(l in p){if(!("type"in e)){r.type=p[l]}}if(l in m){r.compressed=true}s=true}if(!u&&s){r.channels=Nn[r.format]}else if(u&&!s){if(r.channels!==Vn[r.format]){r.format=r.internalformat=Vn[r.channels]}}else if(s&&u){nr(r.channels===Nn[r.format],"number of channels inconsistent with specified format")}}function T(r){t.pixelStorei(Sn,r.flipY);t.pixelStorei(zn,r.premultiplyAlpha);t.pixelStorei(Bn,r.colorSpace);t.pixelStorei(Dn,r.unpackAlignment)}function F(){k.call(this);this.xOffset=0;this.yOffset=0;this.data=null;this.needsFree=false;this.element=null;this.needsCopy=false}function M(e,t){var n=null;if(ia(t)){n=t}else if(t){nr.type(t,"object","invalid pixel data type");_(e,t);if("x"in t){e.xOffset=t.x|0}if("y"in t){e.yOffset=t.y|0}if(ia(t.data)){n=t.data}}nr(!e.compressed||n instanceof Uint8Array,"compressed texture data must be stored in a uint8array");if(t.copy){nr(!n,"can not specify copy and data field for the same texture");var i=o.viewportWidth;var f=o.viewportHeight;e.width=e.width||i-e.xOffset;e.height=e.height||f-e.yOffset;e.needsCopy=true;nr(e.xOffset>=0&&e.xOffset<i&&e.yOffset>=0&&e.yOffset<f&&e.width>0&&e.width<=i&&e.height>0&&e.height<=f,"copy texture read out of bounds")}else if(!n){e.width=e.width||1;e.height=e.height||1;e.channels=e.channels||4}else if(r(n)){e.channels=e.channels||4;e.data=n;if(!("type"in t)&&e.type===sn){e.type=oa(n)}}else if(Xn(n)){e.channels=e.channels||4;fa(e,n);e.alignment=1;e.needsFree=true}else if(je(n)){var u=n.data;if(!Array.isArray(u)&&e.type===sn){e.type=oa(u)}var s=n.shape;var l=n.stride;var c,v,d,p,b,m;if(s.length===3){d=s[2];m=l[2]}else{nr(s.length===2,"invalid ndarray pixel data, must be 2 or 3D");d=1;m=1}c=s[0];v=s[1];p=l[0];b=l[1];e.alignment=1;e.width=c;e.height=v;e.channels=d;e.format=e.internalformat=Vn[d];e.needsFree=true;la(e,u,p,b,m,n.offset)}else if(Kn(n)||ra(n)||ea(n)){if(Kn(n)||ra(n)){e.element=n}else{e.element=n.canvas}e.width=e.element.width;e.height=e.element.height;e.channels=4}else if(ta(n)){e.element=n;e.width=n.width;e.height=n.height;e.channels=4}else if(na(n)){e.element=n;e.width=n.naturalWidth;e.height=n.naturalHeight;e.channels=4}else if(aa(n)){e.element=n;e.width=n.videoWidth;e.height=n.videoHeight;e.channels=4}else if(Yn(n)){var h=e.width||n[0].length;var y=e.height||n.length;var g=e.channels;if(_t(n[0][0])){g=g||n[0][0].length}else{g=g||1}var w=Oe.shape(n);var x=1;for(var A=0;A<w.length;++A){x*=w[A]}var C=ua(e,x);Oe.flatten(n,w,"",C);sa(e,C);e.alignment=1;e.width=h;e.height=y;e.channels=g;e.format=e.internalformat=Vn[g];e.needsFree=true}if(e.type===vn){nr(a.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled")}else if(e.type===Qt){nr(a.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}}function D(r,e,n){var a=r.element;var o=r.data;var f=r.internalformat;var u=r.format;var s=r.type;var l=r.width;var c=r.height;T(r);if(a){t.texImage2D(e,n,u,u,s,a)}else if(r.compressed){t.compressedTexImage2D(e,n,f,l,c,0,o)}else if(r.needsCopy){i();t.copyTexImage2D(e,n,u,r.xOffset,r.yOffset,l,c,0)}else{t.texImage2D(e,n,u,l,c,0,u,s,o||null)}}function S(r,e,n,a,o){var f=r.element;var u=r.data;var s=r.internalformat;var l=r.format;var c=r.type;var v=r.width;var d=r.height;T(r);if(f){t.texSubImage2D(e,o,n,a,l,c,f)}else if(r.compressed){t.compressedTexSubImage2D(e,o,n,a,s,v,d,u)}else if(r.needsCopy){i();t.copyTexSubImage2D(e,o,n,a,r.xOffset,r.yOffset,v,d)}else{t.texSubImage2D(e,o,n,a,v,d,l,c,u)}}var z=[];function B(){return z.pop()||new F}function E(r){if(r.needsFree){Vr.freeType(r.data)}F.call(r);z.push(r)}function R(){k.call(this);this.genMipmaps=false;this.mipmapHint=_n;this.mipmask=0;this.images=Array(16)}function J(r,e,t){var n=r.images[0]=B();r.mipmask=1;n.width=r.width=e;n.height=r.height=t;n.channels=r.channels=4}function V(r,e){var t=null;if(ia(e)){t=r.images[0]=B();O(t,r);M(t,e);r.mipmask=1}else{_(r,e);if(Array.isArray(e.mipmap)){var n=e.mipmap;for(var a=0;a<n.length;++a){t=r.images[a]=B();O(t,r);t.width>>=a;t.height>>=a;M(t,n[a]);r.mipmask|=1<<a}}else{t=r.images[0]=B();O(t,r);M(t,e);r.mipmask=1}}O(r,r.images[0]);if(r.compressed&&(r.internalformat===Xt||r.internalformat===Yt||r.internalformat===Zt||r.internalformat===Kt)){nr(r.width%4===0&&r.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}}function N(r,e){var t=r.images;for(var n=0;n<t.length;++n){if(!t[n]){return}D(t[n],e,n)}}var I=[];function W(){var r=I.pop()||new R;k.call(r);r.mipmask=0;for(var e=0;e<16;++e){r.images[e]=null}return r}function L(r){var e=r.images;for(var t=0;t<e.length;++t){if(e[t]){E(e[t])}e[t]=null}I.push(r)}function U(){this.minFilter=wn;this.magFilter=wn;this.wrapS=mn;this.wrapT=mn;this.anisotropic=1;this.genMipmaps=false;this.mipmapHint=_n}function q(r,e){if("min"in e){var t=e.min;nr.parameter(t,v);r.minFilter=v[t];if(Jn.indexOf(r.minFilter)>=0&&!("faces"in e)){r.genMipmaps=true}}if("mag"in e){var n=e.mag;nr.parameter(n,c);r.magFilter=c[n]}var i=r.wrapS;var o=r.wrapT;if("wrap"in e){var f=e.wrap;if(typeof f==="string"){nr.parameter(f,l);i=o=l[f]}else if(Array.isArray(f)){nr.parameter(f[0],l);nr.parameter(f[1],l);i=l[f[0]];o=l[f[1]]}}else{if("wrapS"in e){var u=e.wrapS;nr.parameter(u,l);i=l[u]}if("wrapT"in e){var d=e.wrapT;nr.parameter(d,l);o=l[d]}}r.wrapS=i;r.wrapT=o;if("anisotropic"in e){var p=e.anisotropic;nr(typeof p==="number"&&p>=1&&p<=a.maxAnisotropic,"aniso samples must be between 1 and ");r.anisotropic=e.anisotropic}if("mipmap"in e){var b=false;switch(typeof e.mipmap){case"string":nr.parameter(e.mipmap,s,"invalid mipmap hint");r.mipmapHint=s[e.mipmap];r.genMipmaps=true;b=true;break;case"boolean":b=r.genMipmaps=e.mipmap;break;case"object":nr(Array.isArray(e.mipmap),"invalid mipmap type");r.genMipmaps=false;b=true;break;default:nr.raise("invalid mipmap type")}if(b&&!("min"in e)){r.minFilter=An}}}function P(r,e){t.texParameteri(e,gn,r.minFilter);t.texParameteri(e,yn,r.magFilter);t.texParameteri(e,dn,r.wrapS);t.texParameteri(e,pn,r.wrapT);if(n.ext_texture_filter_anisotropic){t.texParameteri(e,Mn,r.anisotropic)}if(r.genMipmaps){t.hint(On,r.mipmapHint);t.generateMipmap(e)}}var G=0;var H={};var $=a.maxTextureUnits;var Q=Array($).map((function(){return null}));function X(r){k.call(this);this.mipmask=0;this.internalformat=zt;this.id=G++;this.refCount=1;this.target=r;this.texture=t.createTexture();this.unit=-1;this.bindCount=0;this.texInfo=new U;if(u.profile){this.stats={size:0}}}function Y(r){t.activeTexture(Rn);t.bindTexture(r.target,r.texture)}function Z(){var r=Q[0];if(r){t.bindTexture(r.target,r.texture)}else{t.bindTexture(Mt,null)}}function K(r){var e=r.texture;nr(e,"must not double destroy texture");var n=r.unit;var a=r.target;if(n>=0){t.activeTexture(Rn+n);t.bindTexture(a,null);Q[n]=null}t.deleteTexture(e);r.texture=null;r.params=null;r.pixels=null;r.refCount=0;delete H[r.id];f.textureCount--}e(X.prototype,{bind:function(){var r=this;r.bindCount+=1;var e=r.unit;if(e<0){for(var n=0;n<$;++n){var a=Q[n];if(a){if(a.bindCount>0){continue}a.unit=-1}Q[n]=r;e=n;break}if(e>=$){nr.raise("insufficient number of texture units")}if(u.profile&&f.maxTextureUnits<e+1){f.maxTextureUnits=e+1}r.unit=e;t.activeTexture(Rn+e);t.bindTexture(r.target,r.texture)}return e},unbind:function(){this.bindCount-=1},decRef:function(){if(--this.refCount<=0){K(this)}}});function rr(r,e){var n=new X(Mt);H[n.id]=n;f.textureCount++;function i(r,e){var t=n.texInfo;U.call(t);var o=W();if(typeof r==="number"){if(typeof e==="number"){J(o,r|0,e|0)}else{J(o,r|0,r|0)}}else if(r){nr.type(r,"object","invalid arguments to regl.texture");q(t,r);V(o,r)}else{J(o,1,1)}if(t.genMipmaps){o.mipmask=(o.width<<1)-1}n.mipmask=o.mipmask;O(n,o);nr.texture2D(t,o,a);n.internalformat=o.internalformat;i.width=o.width;i.height=o.height;Y(n);N(o,Mt);P(t,Mt);Z();L(o);if(u.profile){n.stats.size=ca(n.internalformat,n.type,o.width,o.height,t.genMipmaps,false)}i.format=g[n.internalformat];i.type=w[n.type];i.mag=x[t.magFilter];i.min=A[t.minFilter];i.wrapS=C[t.wrapS];i.wrapT=C[t.wrapT];return i}function o(r,e,t,a){nr(!!r,"must specify image data");var o=e|0;var f=t|0;var u=a|0;var s=B();O(s,n);s.width=0;s.height=0;M(s,r);s.width=s.width||(n.width>>u)-o;s.height=s.height||(n.height>>u)-f;nr(n.type===s.type&&n.format===s.format&&n.internalformat===s.internalformat,"incompatible format for texture.subimage");nr(o>=0&&f>=0&&o+s.width<=n.width&&f+s.height<=n.height,"texture.subimage write out of bounds");nr(n.mipmask&1<<u,"missing mipmap data");nr(s.data||s.element||s.needsCopy,"missing image data");Y(n);S(s,Mt,o,f,u);Z();E(s);return i}function s(r,e){var a=r|0;var o=e|0||a;if(a===n.width&&o===n.height){return i}i.width=n.width=a;i.height=n.height=o;Y(n);for(var f=0;n.mipmask>>f;++f){var s=a>>f;var l=o>>f;if(!s||!l)break;t.texImage2D(Mt,f,n.format,s,l,0,n.format,n.type,null)}Z();if(u.profile){n.stats.size=ca(n.internalformat,n.type,a,o,false,false)}return i}i(r,e);i.subimage=o;i.resize=s;i._reglType="texture2d";i._texture=n;if(u.profile){i.stats=n.stats}i.destroy=function(){n.decRef()};return i}function er(r,e,n,i,o,s){var l=new X(Dt);H[l.id]=l;f.cubeCount++;var c=new Array(6);function v(r,e,t,n,i,o){var f;var s=l.texInfo;U.call(s);for(f=0;f<6;++f){c[f]=W()}if(typeof r==="number"||!r){var d=r|0||1;for(f=0;f<6;++f){J(c[f],d,d)}}else if(typeof r==="object"){if(e){V(c[0],r);V(c[1],e);V(c[2],t);V(c[3],n);V(c[4],i);V(c[5],o)}else{q(s,r);_(l,r);if("faces"in r){var p=r.faces;nr(Array.isArray(p)&&p.length===6,"cube faces must be a length 6 array");for(f=0;f<6;++f){nr(typeof p[f]==="object"&&!!p[f],"invalid input for cube map face");O(c[f],l);V(c[f],p[f])}}else{for(f=0;f<6;++f){V(c[f],r)}}}}else{nr.raise("invalid arguments to cube map")}O(l,c[0]);nr.optional((function(){if(!a.npotTextureCube){nr(Tt(l.width)&&Tt(l.height),"your browser does not support non power or two texture dimensions")}}));if(s.genMipmaps){l.mipmask=(c[0].width<<1)-1}else{l.mipmask=c[0].mipmask}nr.textureCube(l,s,c,a);l.internalformat=c[0].internalformat;v.width=c[0].width;v.height=c[0].height;Y(l);for(f=0;f<6;++f){N(c[f],St+f)}P(s,Dt);Z();if(u.profile){l.stats.size=ca(l.internalformat,l.type,v.width,v.height,s.genMipmaps,true)}v.format=g[l.internalformat];v.type=w[l.type];v.mag=x[s.magFilter];v.min=A[s.minFilter];v.wrapS=C[s.wrapS];v.wrapT=C[s.wrapT];for(f=0;f<6;++f){L(c[f])}return v}function d(r,e,t,n,a){nr(!!e,"must specify image data");nr(typeof r==="number"&&r===(r|0)&&r>=0&&r<6,"invalid face");var i=t|0;var o=n|0;var f=a|0;var u=B();O(u,l);u.width=0;u.height=0;M(u,e);u.width=u.width||(l.width>>f)-i;u.height=u.height||(l.height>>f)-o;nr(l.type===u.type&&l.format===u.format&&l.internalformat===u.internalformat,"incompatible format for texture.subimage");nr(i>=0&&o>=0&&i+u.width<=l.width&&o+u.height<=l.height,"texture.subimage write out of bounds");nr(l.mipmask&1<<f,"missing mipmap data");nr(u.data||u.element||u.needsCopy,"missing image data");Y(l);S(u,St+r,i,o,f);Z();E(u);return v}function p(r){var e=r|0;if(e===l.width){return}v.width=l.width=e;v.height=l.height=e;Y(l);for(var n=0;n<6;++n){for(var a=0;l.mipmask>>a;++a){t.texImage2D(St+n,a,l.format,e>>a,e>>a,0,l.format,l.type,null)}}Z();if(u.profile){l.stats.size=ca(l.internalformat,l.type,v.width,v.height,false,true)}return v}v(r,e,n,i,o,s);v.subimage=d;v.resize=p;v._reglType="textureCube";v._texture=l;if(u.profile){v.stats=l.stats}v.destroy=function(){l.decRef()};return v}function tr(){for(var r=0;r<$;++r){t.activeTexture(Rn+r);t.bindTexture(Mt,null);Q[r]=null}ke(H).forEach(K);f.cubeCount=0;f.textureCount=0}if(u.profile){f.getTotalTextureSize=function(){var r=0;Object.keys(H).forEach((function(e){r+=H[e].stats.size}));return r}}function ar(){for(var r=0;r<$;++r){var e=Q[r];if(e){e.bindCount=0;e.unit=-1;Q[r]=null}}ke(H).forEach((function(r){r.texture=t.createTexture();t.bindTexture(r.target,r.texture);for(var e=0;e<32;++e){if((r.mipmask&1<<e)===0){continue}if(r.target===Mt){t.texImage2D(Mt,e,r.internalformat,r.width>>e,r.height>>e,0,r.internalformat,r.type,null)}else{for(var n=0;n<6;++n){t.texImage2D(St+n,e,r.internalformat,r.width>>e,r.height>>e,0,r.internalformat,r.type,null)}}}P(r.texInfo,r.target)}))}function ir(){for(var r=0;r<$;++r){var e=Q[r];if(e){e.bindCount=0;e.unit=-1;Q[r]=null}t.activeTexture(Rn+r);t.bindTexture(Mt,null);t.bindTexture(Dt,null)}}return{create2D:rr,createCube:er,clear:tr,getTexture:function(r){return null},restore:ar,refresh:ir}}var da=36161;var pa=32854;var ba=32855;var ma=36194;var ha=33189;var ya=36168;var ga=34041;var wa=35907;var xa=34836;var Aa=34842;var Ca=34843;var ja=[];ja[pa]=2;ja[ba]=2;ja[ma]=2;ja[ha]=2;ja[ya]=1;ja[ga]=4;ja[wa]=4;ja[xa]=16;ja[Aa]=8;ja[Ca]=6;function ka(r,e,t){return ja[r]*e*t}var Oa=function(r,e,t,n,a){var i={rgba4:pa,rgb565:ma,"rgb5 a1":ba,depth:ha,stencil:ya,"depth stencil":ga};if(e.ext_srgb){i["srgba"]=wa}if(e.ext_color_buffer_half_float){i["rgba16f"]=Aa;i["rgb16f"]=Ca}if(e.webgl_color_buffer_float){i["rgba32f"]=xa}var o=[];Object.keys(i).forEach((function(r){var e=i[r];o[e]=r}));var f=0;var u={};function s(r){this.id=f++;this.refCount=1;this.renderbuffer=r;this.format=pa;this.width=0;this.height=0;if(a.profile){this.stats={size:0}}}s.prototype.decRef=function(){if(--this.refCount<=0){l(this)}};function l(e){var t=e.renderbuffer;nr(t,"must not double destroy renderbuffer");r.bindRenderbuffer(da,null);r.deleteRenderbuffer(t);e.renderbuffer=null;e.refCount=0;delete u[e.id];n.renderbufferCount--}function c(e,f){var l=new s(r.createRenderbuffer());u[l.id]=l;n.renderbufferCount++;function c(e,n){var f=0;var u=0;var s=pa;if(typeof e==="object"&&e){var v=e;if("shape"in v){var d=v.shape;nr(Array.isArray(d)&&d.length>=2,"invalid renderbuffer shape");f=d[0]|0;u=d[1]|0}else{if("radius"in v){f=u=v.radius|0}if("width"in v){f=v.width|0}if("height"in v){u=v.height|0}}if("format"in v){nr.parameter(v.format,i,"invalid renderbuffer format");s=i[v.format]}}else if(typeof e==="number"){f=e|0;if(typeof n==="number"){u=n|0}else{u=f}}else if(!e){f=u=1}else{nr.raise("invalid arguments to renderbuffer constructor")}nr(f>0&&u>0&&f<=t.maxRenderbufferSize&&u<=t.maxRenderbufferSize,"invalid renderbuffer size");if(f===l.width&&u===l.height&&s===l.format){return}c.width=l.width=f;c.height=l.height=u;l.format=s;r.bindRenderbuffer(da,l.renderbuffer);r.renderbufferStorage(da,s,f,u);nr(r.getError()===0,"invalid render buffer format");if(a.profile){l.stats.size=ka(l.format,l.width,l.height)}c.format=o[l.format];return c}function v(e,n){var i=e|0;var o=n|0||i;if(i===l.width&&o===l.height){return c}nr(i>0&&o>0&&i<=t.maxRenderbufferSize&&o<=t.maxRenderbufferSize,"invalid renderbuffer size");c.width=l.width=i;c.height=l.height=o;r.bindRenderbuffer(da,l.renderbuffer);r.renderbufferStorage(da,l.format,i,o);nr(r.getError()===0,"invalid render buffer format");if(a.profile){l.stats.size=ka(l.format,l.width,l.height)}return c}c(e,f);c.resize=v;c._reglType="renderbuffer";c._renderbuffer=l;if(a.profile){c.stats=l.stats}c.destroy=function(){l.decRef()};return c}if(a.profile){n.getTotalRenderbufferSize=function(){var r=0;Object.keys(u).forEach((function(e){r+=u[e].stats.size}));return r}}function v(){ke(u).forEach((function(e){e.renderbuffer=r.createRenderbuffer();r.bindRenderbuffer(da,e.renderbuffer);r.renderbufferStorage(da,e.format,e.width,e.height)}));r.bindRenderbuffer(da,null)}return{create:c,clear:function(){ke(u).forEach(l)},restore:v}};var _a=36160;var Ta=36161;var Fa=3553;var Ma=34069;var Da=36064;var Sa=36096;var za=36128;var Ba=33306;var Ea=36053;var Ra=36054;var Ja=36055;var Va=36057;var Na=36061;var Ia=36193;var Wa=5121;var La=5126;var Ua=6407;var qa=6408;var Pa=6402;var Ga=[Ua,qa];var Ha=[];Ha[qa]=4;Ha[Ua]=3;var $a=[];$a[Wa]=1;$a[La]=4;$a[Ia]=2;var Qa=32854;var Xa=32855;var Ya=36194;var Za=33189;var Ka=36168;var ri=34041;var ei=35907;var ti=34836;var ni=34842;var ai=34843;var ii=[Qa,Xa,Ya,ei,ni,ai,ti];var oi={};oi[Ea]="complete";oi[Ra]="incomplete attachment";oi[Va]="incomplete dimensions";oi[Ja]="incomplete, missing attachment";oi[Na]="unsupported";function fi(r,t,n,a,i,o){var f={cur:null,next:null,dirty:false,setFBO:null};var u=["rgba"];var s=["rgba4","rgb565","rgb5 a1"];if(t.ext_srgb){s.push("srgba")}if(t.ext_color_buffer_half_float){s.push("rgba16f","rgb16f")}if(t.webgl_color_buffer_float){s.push("rgba32f")}var l=["uint8"];if(t.oes_texture_half_float){l.push("half float","float16")}if(t.oes_texture_float){l.push("float","float32")}function c(r,e,t){this.target=r;this.texture=e;this.renderbuffer=t;var n=0;var a=0;if(e){n=e.width;a=e.height}else if(t){n=t.width;a=t.height}this.width=n;this.height=a}function v(r){if(r){if(r.texture){r.texture._texture.decRef()}if(r.renderbuffer){r.renderbuffer._renderbuffer.decRef()}}}function d(r,e,t){if(!r){return}if(r.texture){var n=r.texture._texture;var a=Math.max(1,n.width);var i=Math.max(1,n.height);nr(a===e&&i===t,"inconsistent width/height for supplied texture");n.refCount+=1}else{var o=r.renderbuffer._renderbuffer;nr(o.width===e&&o.height===t,"inconsistent width/height for renderbuffer");o.refCount+=1}}function p(e,t){if(t){if(t.texture){r.framebufferTexture2D(_a,e,t.target,t.texture._texture.texture,0)}else{r.framebufferRenderbuffer(_a,e,Ta,t.renderbuffer._renderbuffer.renderbuffer)}}}function b(r){var e=Fa;var t=null;var n=null;var a=r;if(typeof r==="object"){a=r.data;if("target"in r){e=r.target|0}}nr.type(a,"function","invalid attachment data");var i=a._reglType;if(i==="texture2d"){t=a;nr(e===Fa)}else if(i==="textureCube"){t=a;nr(e>=Ma&&e<Ma+6,"invalid cube map target")}else if(i==="renderbuffer"){n=a;e=Ta}else{nr.raise("invalid regl object for attachment")}return new c(e,t,n)}function m(r,e,t,n,o){if(t){var f=a.create2D({width:r,height:e,format:n,type:o});f._texture.refCount=0;return new c(Fa,f,null)}else{var u=i.create({width:r,height:e,format:n});u._renderbuffer.refCount=0;return new c(Ta,null,u)}}function h(r){return r&&(r.texture||r.renderbuffer)}function y(r,e,t){if(r){if(r.texture){r.texture.resize(e,t)}else if(r.renderbuffer){r.renderbuffer.resize(e,t)}r.width=e;r.height=t}}var g=0;var w={};function x(){this.id=g++;w[this.id]=this;this.framebuffer=r.createFramebuffer();this.width=0;this.height=0;this.colorAttachments=[];this.depthAttachment=null;this.stencilAttachment=null;this.depthStencilAttachment=null}function A(r){r.colorAttachments.forEach(v);v(r.depthAttachment);v(r.stencilAttachment);v(r.depthStencilAttachment)}function C(e){var t=e.framebuffer;nr(t,"must not double destroy framebuffer");r.deleteFramebuffer(t);e.framebuffer=null;o.framebufferCount--;delete w[e.id]}function j(e){var t;r.bindFramebuffer(_a,e.framebuffer);var a=e.colorAttachments;for(t=0;t<a.length;++t){p(Da+t,a[t])}for(t=a.length;t<n.maxColorAttachments;++t){r.framebufferTexture2D(_a,Da+t,Fa,null,0)}r.framebufferTexture2D(_a,Ba,Fa,null,0);r.framebufferTexture2D(_a,Sa,Fa,null,0);r.framebufferTexture2D(_a,za,Fa,null,0);p(Sa,e.depthAttachment);p(za,e.stencilAttachment);p(Ba,e.depthStencilAttachment);var i=r.checkFramebufferStatus(_a);if(!r.isContextLost()&&i!==Ea){nr.raise("framebuffer configuration not supported, status = "+oi[i])}r.bindFramebuffer(_a,f.next?f.next.framebuffer:null);f.cur=f.next;r.getError()}function k(r,a){var i=new x;o.framebufferCount++;function c(r,e){var a;nr(f.next!==i,"can not update framebuffer which is currently in use");var o=0;var v=0;var p=true;var y=true;var g=null;var w=true;var x="rgba";var C="uint8";var k=1;var O=null;var _=null;var T=null;var F=false;if(typeof r==="number"){o=r|0;v=e|0||o}else if(!r){o=v=1}else{nr.type(r,"object","invalid arguments for framebuffer");var M=r;if("shape"in M){var D=M.shape;nr(Array.isArray(D)&&D.length>=2,"invalid shape for framebuffer");o=D[0];v=D[1]}else{if("radius"in M){o=v=M.radius}if("width"in M){o=M.width}if("height"in M){v=M.height}}if("color"in M||"colors"in M){g=M.color||M.colors;if(Array.isArray(g)){nr(g.length===1||t.webgl_draw_buffers,"multiple render targets not supported")}}if(!g){if("colorCount"in M){k=M.colorCount|0;nr(k>0,"invalid color buffer count")}if("colorTexture"in M){w=!!M.colorTexture;x="rgba4"}if("colorType"in M){C=M.colorType;if(!w){if(C==="half float"||C==="float16"){nr(t.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers");x="rgba16f"}else if(C==="float"||C==="float32"){nr(t.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers");x="rgba32f"}}else{nr(t.oes_texture_float||!(C==="float"||C==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects");nr(t.oes_texture_half_float||!(C==="half float"||C==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")}nr.oneOf(C,l,"invalid color type")}if("colorFormat"in M){x=M.colorFormat;if(u.indexOf(x)>=0){w=true}else if(s.indexOf(x)>=0){w=false}else{nr.optional((function(){if(w){nr.oneOf(M.colorFormat,u,"invalid color format for texture")}else{nr.oneOf(M.colorFormat,s,"invalid color format for renderbuffer")}}))}}}if("depthTexture"in M||"depthStencilTexture"in M){F=!!(M.depthTexture||M.depthStencilTexture);nr(!F||t.webgl_depth_texture,"webgl_depth_texture extension not supported")}if("depth"in M){if(typeof M.depth==="boolean"){p=M.depth}else{O=M.depth;y=false}}if("stencil"in M){if(typeof M.stencil==="boolean"){y=M.stencil}else{_=M.stencil;p=false}}if("depthStencil"in M){if(typeof M.depthStencil==="boolean"){p=y=M.depthStencil}else{T=M.depthStencil;p=false;y=false}}}var S=null;var z=null;var B=null;var E=null;if(Array.isArray(g)){S=g.map(b)}else if(g){S=[b(g)]}else{S=new Array(k);for(a=0;a<k;++a){S[a]=m(o,v,w,x,C)}}nr(t.webgl_draw_buffers||S.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers.");nr(S.length<=n.maxColorAttachments,"too many color attachments, not supported");o=o||S[0].width;v=v||S[0].height;if(O){z=b(O)}else if(p&&!y){z=m(o,v,F,"depth","uint32")}if(_){B=b(_)}else if(y&&!p){B=m(o,v,false,"stencil","uint8")}if(T){E=b(T)}else if(!O&&!_&&y&&p){E=m(o,v,F,"depth stencil","depth stencil")}nr(!!O+!!_+!!T<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var R=null;for(a=0;a<S.length;++a){d(S[a],o,v);nr(!S[a]||S[a].texture&&Ga.indexOf(S[a].texture._texture.format)>=0||S[a].renderbuffer&&ii.indexOf(S[a].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+a+" is invalid");if(S[a]&&S[a].texture){var J=Ha[S[a].texture._texture.format]*$a[S[a].texture._texture.type];if(R===null){R=J}else{nr(R===J,"all color attachments much have the same number of bits per pixel.")}}}d(z,o,v);nr(!z||z.texture&&z.texture._texture.format===Pa||z.renderbuffer&&z.renderbuffer._renderbuffer.format===Za,"invalid depth attachment for framebuffer object");d(B,o,v);nr(!B||B.renderbuffer&&B.renderbuffer._renderbuffer.format===Ka,"invalid stencil attachment for framebuffer object");d(E,o,v);nr(!E||E.texture&&E.texture._texture.format===ri||E.renderbuffer&&E.renderbuffer._renderbuffer.format===ri,"invalid depth-stencil attachment for framebuffer object");A(i);i.width=o;i.height=v;i.colorAttachments=S;i.depthAttachment=z;i.stencilAttachment=B;i.depthStencilAttachment=E;c.color=S.map(h);c.depth=h(z);c.stencil=h(B);c.depthStencil=h(E);c.width=i.width;c.height=i.height;j(i);return c}function v(r,e){nr(f.next!==i,"can not resize a framebuffer which is currently in use");var t=Math.max(r|0,1);var n=Math.max(e|0||t,1);if(t===i.width&&n===i.height){return c}var a=i.colorAttachments;for(var o=0;o<a.length;++o){y(a[o],t,n)}y(i.depthAttachment,t,n);y(i.stencilAttachment,t,n);y(i.depthStencilAttachment,t,n);i.width=c.width=t;i.height=c.height=n;j(i);return c}c(r,a);return e(c,{resize:v,_reglType:"framebuffer",_framebuffer:i,destroy:function(){C(i);A(i)},use:function(r){f.setFBO({framebuffer:c},r)}})}function O(r){var i=Array(6);function o(r){var n;nr(i.indexOf(f.next)<0,"can not update framebuffer which is currently in use");var s={color:null};var c=0;var v=null;var d="rgba";var p="uint8";var b=1;if(typeof r==="number"){c=r|0}else if(!r){c=1}else{nr.type(r,"object","invalid arguments for framebuffer");var m=r;if("shape"in m){var h=m.shape;nr(Array.isArray(h)&&h.length>=2,"invalid shape for framebuffer");nr(h[0]===h[1],"cube framebuffer must be square");c=h[0]}else{if("radius"in m){c=m.radius|0}if("width"in m){c=m.width|0;if("height"in m){nr(m.height===c,"must be square")}}else if("height"in m){c=m.height|0}}if("color"in m||"colors"in m){v=m.color||m.colors;if(Array.isArray(v)){nr(v.length===1||t.webgl_draw_buffers,"multiple render targets not supported")}}if(!v){if("colorCount"in m){b=m.colorCount|0;nr(b>0,"invalid color buffer count")}if("colorType"in m){nr.oneOf(m.colorType,l,"invalid color type");p=m.colorType}if("colorFormat"in m){d=m.colorFormat;nr.oneOf(m.colorFormat,u,"invalid color format for texture")}}if("depth"in m){s.depth=m.depth}if("stencil"in m){s.stencil=m.stencil}if("depthStencil"in m){s.depthStencil=m.depthStencil}}var y;if(v){if(Array.isArray(v)){y=[];for(n=0;n<v.length;++n){y[n]=v[n]}}else{y=[v]}}else{y=Array(b);var g={radius:c,format:d,type:p};for(n=0;n<b;++n){y[n]=a.createCube(g)}}s.color=Array(y.length);for(n=0;n<y.length;++n){var w=y[n];nr(typeof w==="function"&&w._reglType==="textureCube","invalid cube map");c=c||w.width;nr(w.width===c&&w.height===c,"invalid cube map shape");s.color[n]={target:Ma,data:y[n]}}for(n=0;n<6;++n){for(var x=0;x<y.length;++x){s.color[x].target=Ma+n}if(n>0){s.depth=i[0].depth;s.stencil=i[0].stencil;s.depthStencil=i[0].depthStencil}if(i[n]){i[n](s)}else{i[n]=k(s)}}return e(o,{width:c,height:c,color:y})}function s(r){var e;var t=r|0;nr(t>0&&t<=n.maxCubeMapSize,"invalid radius for cube fbo");if(t===o.width){return o}var a=o.color;for(e=0;e<a.length;++e){a[e].resize(t)}for(e=0;e<6;++e){i[e].resize(t)}o.width=o.height=t;return o}o(r);return e(o,{faces:i,resize:s,_reglType:"framebufferCube",destroy:function(){i.forEach((function(r){r.destroy()}))}})}function _(){f.cur=null;f.next=null;f.dirty=true;ke(w).forEach((function(e){e.framebuffer=r.createFramebuffer();j(e)}))}return e(f,{getFramebuffer:function(r){if(typeof r==="function"&&r._reglType==="framebuffer"){var e=r._framebuffer;if(e instanceof x){return e}}return null},create:k,createCube:O,clear:function(){ke(w).forEach(C)},restore:_})}var ui=5126;var si=34962;var li=34963;var ci=["attributes","elements","offset","count","primitive","instances"];function vi(){this.state=0;this.x=0;this.y=0;this.z=0;this.w=0;this.buffer=null;this.size=0;this.normalized=false;this.type=ui;this.offset=0;this.stride=0;this.divisor=0}function di(e,t,n,a,i,o,f){var u=n.maxAttributes;var s=new Array(u);for(var l=0;l<u;++l){s[l]=new vi}var c=0;var v={};var d={Record:vi,scope:{},state:s,currentVAO:null,targetVAO:null,restore:b()?A:function(){},createVAO:C,getVAO:h,destroyBuffer:p,setVAO:b()?y:g,clear:b()?w:function(){}};function p(r){for(var t=0;t<s.length;++t){var n=s[t];if(n.buffer===r){e.disableVertexAttribArray(t);n.buffer=null}}}function b(){return t.oes_vertex_array_object}function m(){return t.angle_instanced_arrays}function h(r){if(typeof r==="function"&&r._vao){return r._vao}return null}function y(r){if(r===d.currentVAO){return}var e=b();if(r){e.bindVertexArrayOES(r.vao)}else{e.bindVertexArrayOES(null)}d.currentVAO=r}function g(r){if(r===d.currentVAO){return}if(r){r.bindAttrs()}else{var t=m();for(var n=0;n<s.length;++n){var a=s[n];if(a.buffer){e.enableVertexAttribArray(n);a.buffer.bind();e.vertexAttribPointer(n,a.size,a.type,a.normalized,a.stride,a.offfset);if(t&&a.divisor){t.vertexAttribDivisorANGLE(n,a.divisor)}}else{e.disableVertexAttribArray(n);e.vertexAttrib4f(n,a.x,a.y,a.z,a.w)}}if(f.elements){e.bindBuffer(li,f.elements.buffer.buffer)}else{e.bindBuffer(li,null)}}d.currentVAO=r}function w(){ke(v).forEach((function(r){r.destroy()}))}function x(){this.id=++c;this.attributes=[];this.elements=null;this.ownsElements=false;this.count=0;this.offset=0;this.instances=-1;this.primitive=4;var r=b();if(r){this.vao=r.createVertexArrayOES()}else{this.vao=null}v[this.id]=this;this.buffers=[]}x.prototype.bindAttrs=function(){var r=m();var t=this.attributes;for(var n=0;n<t.length;++n){var a=t[n];if(a.buffer){e.enableVertexAttribArray(n);e.bindBuffer(si,a.buffer.buffer);e.vertexAttribPointer(n,a.size,a.type,a.normalized,a.stride,a.offset);if(r&&a.divisor){r.vertexAttribDivisorANGLE(n,a.divisor)}}else{e.disableVertexAttribArray(n);e.vertexAttrib4f(n,a.x,a.y,a.z,a.w)}}for(var i=t.length;i<u;++i){e.disableVertexAttribArray(i)}var f=o.getElements(this.elements);if(f){e.bindBuffer(li,f.buffer.buffer)}else{e.bindBuffer(li,null)}};x.prototype.refresh=function(){var r=b();if(r){r.bindVertexArrayOES(this.vao);this.bindAttrs();d.currentVAO=null;r.bindVertexArrayOES(null)}};x.prototype.destroy=function(){if(this.vao){var r=b();if(this===d.currentVAO){d.currentVAO=null;r.bindVertexArrayOES(null)}r.deleteVertexArrayOES(this.vao);this.vao=null}if(this.ownsElements){this.elements.destroy();this.elements=null;this.ownsElements=false}if(v[this.id]){delete v[this.id];a.vaoCount-=1}};function A(){var r=b();if(r){ke(v).forEach((function(r){r.refresh()}))}}function C(e){var n=new x;a.vaoCount+=1;function f(e){var a;if(Array.isArray(e)){a=e;if(n.elements&&n.ownsElements){n.elements.destroy()}n.elements=null;n.ownsElements=false;n.offset=0;n.count=0;n.instances=-1;n.primitive=4}else{nr(typeof e==="object","invalid arguments for create vao");nr("attributes"in e,"must specify attributes for vao");if(e.elements){var s=e.elements;if(n.ownsElements){if(typeof s==="function"&&s._reglType==="elements"){n.elements.destroy();n.ownsElements=false}else{n.elements(s);n.ownsElements=false}}else if(o.getElements(e.elements)){n.elements=e.elements;n.ownsElements=false}else{n.elements=o.create(e.elements);n.ownsElements=true}}else{n.elements=null;n.ownsElements=false}a=e.attributes;n.offset=0;n.count=-1;n.instances=-1;n.primitive=4;if(n.elements){n.count=n.elements._elements.vertCount;n.primitive=n.elements._elements.primType}if("offset"in e){n.offset=e.offset|0}if("count"in e){n.count=e.count|0}if("instances"in e){n.instances=e.instances|0}if("primitive"in e){nr(e.primitive in st,"bad primitive type: "+e.primitive);n.primitive=st[e.primitive]}nr.optional((()=>{var r=Object.keys(e);for(var t=0;t<r.length;++t){nr(ci.indexOf(r[t])>=0,'invalid option for vao: "'+r[t]+'" valid options are '+ci)}}));nr(Array.isArray(a),"attributes must be an array")}nr(a.length<u,"too many attributes");nr(a.length>0,"must specify at least one attribute");var l={};var c=n.attributes;c.length=a.length;for(var v=0;v<a.length;++v){var d=a[v];var p=c[v]=new vi;var b=d.data||d;if(Array.isArray(b)||r(b)||je(b)){var m;if(n.buffers[v]){m=n.buffers[v];if(r(b)&&m._buffer.byteLength>=b.byteLength){m.subdata(b)}else{m.destroy();n.buffers[v]=null}}if(!n.buffers[v]){m=n.buffers[v]=i.create(d,si,false,true)}p.buffer=i.getBuffer(m);p.size=p.buffer.dimension|0;p.normalized=false;p.type=p.buffer.dtype;p.offset=0;p.stride=0;p.divisor=0;p.state=1;l[v]=1}else if(i.getBuffer(d)){p.buffer=i.getBuffer(d);p.size=p.buffer.dimension|0;p.normalized=false;p.type=p.buffer.dtype;p.offset=0;p.stride=0;p.divisor=0;p.state=1}else if(i.getBuffer(d.buffer)){p.buffer=i.getBuffer(d.buffer);p.size=(+d.size||p.buffer.dimension)|0;p.normalized=!!d.normalized||false;if("type"in d){nr.parameter(d.type,Le,"invalid buffer type");p.type=Le[d.type]}else{p.type=p.buffer.dtype}p.offset=(d.offset||0)|0;p.stride=(d.stride||0)|0;p.divisor=(d.divisor||0)|0;p.state=1;nr(p.size>=1&&p.size<=4,"size must be between 1 and 4");nr(p.offset>=0,"invalid offset");nr(p.stride>=0&&p.stride<=255,"stride must be between 0 and 255");nr(p.divisor>=0,"divisor must be positive");nr(!p.divisor||!!t.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")}else if("x"in d){nr(v>0,"first attribute must not be a constant");p.x=+d.x||0;p.y=+d.y||0;p.z=+d.z||0;p.w=+d.w||0;p.state=2}else{nr(false,"invalid attribute spec for location "+v)}}for(var h=0;h<n.buffers.length;++h){if(!l[h]&&n.buffers[h]){n.buffers[h].destroy();n.buffers[h]=null}}n.refresh();return f}f.destroy=function(){for(var r=0;r<n.buffers.length;++r){if(n.buffers[r]){n.buffers[r].destroy()}}n.buffers.length=0;if(n.ownsElements){n.elements.destroy();n.elements=null;n.ownsElements=false}n.destroy()};f._vao=n;f._reglType="vao";return f(e)}return d}var pi=35632;var bi=35633;var mi=35718;var hi=35721;function yi(r,t,n,a){var i={};var o={};function f(r,e,t,n){this.name=r;this.id=e;this.location=t;this.info=n}function u(r,e){for(var t=0;t<r.length;++t){if(r[t].id===e.id){r[t].location=e.location;return}}r.push(e)}function s(e,n,a){var f=e===pi?i:o;var u=f[n];if(!u){var s=t.str(n);u=r.createShader(e);r.shaderSource(u,s);r.compileShader(u);nr.shaderError(r,u,s,e,a);f[n]=u}return u}var l={};var c=[];var v=0;function d(r,e){this.id=v++;this.fragId=r;this.vertId=e;this.program=null;this.uniforms=[];this.attributes=[];this.refCount=1;if(a.profile){this.stats={uniformsCount:0,attributesCount:0}}}function p(e,n,i){var o,l;var c=s(pi,e.fragId);var v=s(bi,e.vertId);var d=e.program=r.createProgram();r.attachShader(d,c);r.attachShader(d,v);if(i){for(o=0;o<i.length;++o){var p=i[o];r.bindAttribLocation(d,p[0],p[1])}}r.linkProgram(d);nr.linkError(r,d,t.str(e.fragId),t.str(e.vertId),n);var b=r.getProgramParameter(d,mi);if(a.profile){e.stats.uniformsCount=b}var m=e.uniforms;for(o=0;o<b;++o){l=r.getActiveUniform(d,o);if(l){if(l.size>1){for(var h=0;h<l.size;++h){var y=l.name.replace("[0]","["+h+"]");u(m,new f(y,t.id(y),r.getUniformLocation(d,y),l))}}else{u(m,new f(l.name,t.id(l.name),r.getUniformLocation(d,l.name),l))}}}var g=r.getProgramParameter(d,hi);if(a.profile){e.stats.attributesCount=g}var w=e.attributes;for(o=0;o<g;++o){l=r.getActiveAttrib(d,o);if(l){u(w,new f(l.name,t.id(l.name),r.getAttribLocation(d,l.name),l))}}}if(a.profile){n.getMaxUniformsCount=function(){var r=0;c.forEach((function(e){if(e.stats.uniformsCount>r){r=e.stats.uniformsCount}}));return r};n.getMaxAttributesCount=function(){var r=0;c.forEach((function(e){if(e.stats.attributesCount>r){r=e.stats.attributesCount}}));return r}}function b(){i={};o={};for(var r=0;r<c.length;++r){p(c[r],null,c[r].attributes.map((function(r){return[r.location,r.name]})))}}return{clear:function(){var e=r.deleteShader.bind(r);ke(i).forEach(e);i={};ke(o).forEach(e);o={};c.forEach((function(e){r.deleteProgram(e.program)}));c.length=0;l={};n.shaderCount=0},program:function(t,a,f,u){nr.command(t>=0,"missing vertex shader",f);nr.command(a>=0,"missing fragment shader",f);var s=l[a];if(!s){s=l[a]={}}var v=s[t];if(v){v.refCount++;if(!u){return v}}var b=new d(a,t);n.shaderCount++;p(b,f,u);if(!v){s[t]=b}c.push(b);return e(b,{destroy:function(){b.refCount--;if(b.refCount<=0){r.deleteProgram(b.program);var e=c.indexOf(b);c.splice(e,1);n.shaderCount--}if(s[b.vertId].refCount<=0){r.deleteShader(o[b.vertId]);delete o[b.vertId];delete l[b.fragId][b.vertId]}if(!Object.keys(l[b.fragId]).length){r.deleteShader(i[b.fragId]);delete i[b.fragId];delete l[b.fragId]}}})},restore:b,shader:s,frag:-1,vert:-1}}var gi=6408;var wi=5121;var xi=3333;var Ai=5126;function Ci(e,t,n,a,i,o,f){function u(u){var s;if(t.next===null){nr(i.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer');s=wi}else{nr(t.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer");s=t.next.colorAttachments[0].texture._texture.type;nr.optional((function(){if(o.oes_texture_float){nr(s===wi||s===Ai,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'");if(s===Ai){nr(f.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")}}else{nr(s===wi,"Reading from a framebuffer is only allowed for the type 'uint8'")}}))}var l=0;var c=0;var v=a.framebufferWidth;var d=a.framebufferHeight;var p=null;if(r(u)){p=u}else if(u){nr.type(u,"object","invalid arguments to regl.read()");l=u.x|0;c=u.y|0;nr(l>=0&&l<a.framebufferWidth,"invalid x offset for regl.read");nr(c>=0&&c<a.framebufferHeight,"invalid y offset for regl.read");v=(u.width||a.framebufferWidth-l)|0;d=(u.height||a.framebufferHeight-c)|0;p=u.data||null}if(p){if(s===wi){nr(p instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'")}else if(s===Ai){nr(p instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")}}nr(v>0&&v+l<=a.framebufferWidth,"invalid width for read pixels");nr(d>0&&d+c<=a.framebufferHeight,"invalid height for read pixels");n();var b=v*d*4;if(!p){if(s===wi){p=new Uint8Array(b)}else if(s===Ai){p=p||new Float32Array(b)}}nr.isTypedArray(p,"data buffer for regl.read() must be a typedarray");nr(p.byteLength>=b,"data buffer for regl.read() too small");e.pixelStorei(xi,4);e.readPixels(l,c,v,d,gi,s,p);return p}function s(r){var e;t.setFBO({framebuffer:r.framebuffer},(function(){e=u(r)}));return e}function l(r){if(!r||!("framebuffer"in r)){return u(r)}else{return s(r)}}return l}function ji(r){return Array.prototype.slice.call(r)}function ki(r){return ji(r).join("")}function Oi(){var r=0;var t=[];var n=[];function a(e){for(var a=0;a<n.length;++a){if(n[a]===e){return t[a]}}var i="g"+r++;t.push(i);n.push(e);return i}function i(){var t=[];function n(){t.push.apply(t,ji(arguments))}var a=[];function i(){var e="v"+r++;a.push(e);if(arguments.length>0){t.push(e,"=");t.push.apply(t,ji(arguments));t.push(";")}return e}return e(n,{def:i,toString:function(){return ki([a.length>0?"var "+a.join(",")+";":"",ki(t)])}})}function o(){var r=i();var t=i();var n=r.toString;var a=t.toString;function o(e,n){t(e,n,"=",r.def(e,n),";")}return e((function(){r.apply(r,ji(arguments))}),{def:r.def,entry:r,exit:t,save:o,set:function(e,t,n){o(e,t);r(e,t,"=",n,";")},toString:function(){return n()+a()}})}function f(){var r=ki(arguments);var t=o();var n=o();var a=t.toString;var i=n.toString;return e(t,{then:function(){t.apply(t,ji(arguments));return this},else:function(){n.apply(n,ji(arguments));return this},toString:function(){var e=i();if(e){e="else{"+e+"}"}return ki(["if(",r,"){",a(),"}",e])}})}var u=i();var s={};function l(r,t){var n=[];function a(){var r="a"+n.length;n.push(r);return r}t=t||0;for(var i=0;i<t;++i){a()}var f=o();var u=f.toString;var l=s[r]=e(f,{arg:a,toString:function(){return ki(["function(",n.join(),"){",u(),"}"])}});return l}function c(){var r=['"use strict";',u,"return {"];Object.keys(s).forEach((function(e){r.push('"',e,'":',s[e].toString(),",")}));r.push("}");var e=ki(r).replace(/;/g,";\n").replace(/}/g,"}\n").replace(/{/g,"{\n");var a=Function.apply(null,t.concat(e));return a.apply(null,n)}return{global:u,link:a,block:i,proc:l,scope:o,cond:f,compile:c}}var _i="xyzw".split("");var Ti=5121;var Fi=1;var Mi=2;var Di=0;var Si=1;var zi=2;var Bi=3;var Ei=4;var Ri=5;var Ji=6;var Vi="dither";var Ni="blend.enable";var Ii="blend.color";var Wi="blend.equation";var Li="blend.func";var Ui="depth.enable";var qi="depth.func";var Pi="depth.range";var Gi="depth.mask";var Hi="colorMask";var $i="cull.enable";var Qi="cull.face";var Xi="frontFace";var Yi="lineWidth";var Zi="polygonOffset.enable";var Ki="polygonOffset.offset";var ro="sample.alpha";var eo="sample.enable";var to="sample.coverage";var no="stencil.enable";var ao="stencil.mask";var io="stencil.func";var oo="stencil.opFront";var fo="stencil.opBack";var uo="scissor.enable";var so="scissor.box";var lo="viewport";var co="profile";var vo="framebuffer";var po="vert";var bo="frag";var mo="elements";var ho="primitive";var yo="count";var go="offset";var wo="instances";var xo="vao";var Ao="Width";var Co="Height";var jo=vo+Ao;var ko=vo+Co;var Oo=lo+Ao;var _o=lo+Co;var To="drawingBuffer";var Fo=To+Ao;var Mo=To+Co;var Do=[Li,Wi,io,oo,fo,to,lo,so,Ki];var So=34962;var zo=34963;var Bo=35632;var Eo=35633;var Ro=3553;var Jo=34067;var Vo=2884;var No=3042;var Io=3024;var Wo=2960;var Lo=2929;var Uo=3089;var qo=32823;var Po=32926;var Go=32928;var Ho=5126;var $o=35664;var Qo=35665;var Xo=35666;var Yo=5124;var Zo=35667;var Ko=35668;var rf=35669;var ef=35670;var tf=35671;var nf=35672;var af=35673;var of=35674;var ff=35675;var uf=35676;var sf=35678;var lf=35680;var cf=4;var vf=1028;var df=1029;var pf=2304;var bf=2305;var mf=32775;var hf=32776;var yf=519;var gf=7680;var wf=0;var xf=1;var Af=32774;var Cf=513;var jf=36160;var kf=36064;var Of={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};var _f=["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"];var Tf={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};var Ff={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386};var Mf={frag:Bo,vert:Eo};var Df={cw:pf,ccw:bf};function Sf(e){return Array.isArray(e)||r(e)||je(e)}function zf(r){return r.sort((function(r,e){if(r===lo){return-1}else if(e===lo){return 1}return r<e?-1:1}))}function Bf(r,e,t,n){this.thisDep=r;this.contextDep=e;this.propDep=t;this.append=n}function Ef(r){return r&&!(r.thisDep||r.contextDep||r.propDep)}function Rf(r){return new Bf(false,false,false,r)}function Jf(r,e){var t=r.type;if(t===Di){var n=r.data.length;return new Bf(true,n>=1,n>=2,e)}else if(t===Ei){var a=r.data;return new Bf(a.thisDep,a.contextDep,a.propDep,e)}else if(t===Ri){return new Bf(false,false,false,e)}else if(t===Ji){var i=false;var o=false;var f=false;for(var u=0;u<r.data.length;++u){var s=r.data[u];if(s.type===Si){f=true}else if(s.type===zi){o=true}else if(s.type===Bi){i=true}else if(s.type===Di){i=true;var l=s.data;if(l>=1){o=true}if(l>=2){f=true}}else if(s.type===Ei){i=i||s.data.thisDep;o=o||s.data.contextDep;f=f||s.data.propDep}}return new Bf(i,o,f,e)}else{return new Bf(t===Bi,t===zi,t===Si,e)}}var Vf=new Bf(false,false,false,(function(){}));function Nf(r,t,n,a,i,o,f,u,s,l,c,v,d,p,b){var m=l.Record;var h={add:32774,subtract:32778,"reverse subtract":32779};if(n.ext_blend_minmax){h.min=mf;h.max=hf}var y=n.angle_instanced_arrays;var g=n.webgl_draw_buffers;var w=n.oes_vertex_array_object;var x={dirty:true,profile:b.profile};var A={};var C=[];var j={};var k={};function O(r){return r.replace(".","_")}function _(r,e,t){var n=O(r);C.push(r);A[n]=x[n]=!!t;j[n]=e}function T(r,e,t){var n=O(r);C.push(r);if(Array.isArray(t)){x[n]=t.slice();A[n]=t.slice()}else{x[n]=A[n]=t}k[n]=e}_(Vi,Io);_(Ni,No);T(Ii,"blendColor",[0,0,0,0]);T(Wi,"blendEquationSeparate",[Af,Af]);T(Li,"blendFuncSeparate",[xf,wf,xf,wf]);_(Ui,Lo,true);T(qi,"depthFunc",Cf);T(Pi,"depthRange",[0,1]);T(Gi,"depthMask",true);T(Hi,Hi,[true,true,true,true]);_($i,Vo);T(Qi,"cullFace",df);T(Xi,Xi,bf);T(Yi,Yi,1);_(Zi,qo);T(Ki,"polygonOffset",[0,0]);_(ro,Po);_(eo,Go);T(to,"sampleCoverage",[1,false]);_(no,Wo);T(ao,"stencilMask",-1);T(io,"stencilFunc",[yf,0,-1]);T(oo,"stencilOpSeparate",[vf,gf,gf,gf]);T(fo,"stencilOpSeparate",[df,gf,gf,gf]);_(uo,Uo);T(so,"scissor",[0,0,r.drawingBufferWidth,r.drawingBufferHeight]);T(lo,lo,[0,0,r.drawingBufferWidth,r.drawingBufferHeight]);var F={gl:r,context:d,strings:t,next:A,current:x,draw:v,elements:o,buffer:i,shader:c,attributes:l.state,vao:l,uniforms:s,framebuffer:u,extensions:n,timer:p,isBufferArgs:Sf};var M={primTypes:st,compareFuncs:Tf,blendFuncs:Of,blendEquations:h,stencilOps:Ff,glTypes:Le,orientationType:Df};nr.optional((function(){F.isArrayLike=_t}));if(g){M.backBuffer=[df];M.drawBuffer=_r(a.maxDrawbuffers,(function(r){if(r===0){return[0]}return _r(r,(function(r){return kf+r}))}))}var D=0;function S(){var r=Oi();var e=r.link;var n=r.global;r.id=D++;r.batchId="0";var a=e(F);var i=r.shared={props:"a0"};Object.keys(F).forEach((function(r){i[r]=n.def(a,".",r)}));nr.optional((function(){r.CHECK=e(nr);r.commandStr=nr.guessCommand();r.command=e(r.commandStr);r.assert=function(r,t,n){r("if(!(",t,"))",this.CHECK,".commandRaise(",e(n),",",this.command,");")};M.invalidBlendCombinations=_f}));var o=r.next={};var f=r.current={};Object.keys(k).forEach((function(r){if(Array.isArray(x[r])){o[r]=n.def(i.next,".",r);f[r]=n.def(i.current,".",r)}}));var u=r.constants={};Object.keys(M).forEach((function(r){u[r]=n.def(JSON.stringify(M[r]))}));r.invoke=function(t,n){switch(n.type){case Di:var a=["this",i.context,i.props,r.batchId];return t.def(e(n.data),".call(",a.slice(0,Math.max(n.data.length+1,4)),")");case Si:return t.def(i.props,n.data);case zi:return t.def(i.context,n.data);case Bi:return t.def("this",n.data);case Ei:n.data.append(r,t);return n.data.ref;case Ri:return n.data.toString();case Ji:return n.data.map((function(e){return r.invoke(t,e)}))}};r.attribCache={};var s={};r.scopeAttrib=function(r){var n=t.id(r);if(n in s){return s[n]}var a=l.scope[n];if(!a){a=l.scope[n]=new m}var i=s[n]=e(a);return i};return r}function z(r){var e=r.static;var t=r.dynamic;var n;if(co in e){var a=!!e[co];n=Rf((function(r,e){return a}));n.enable=a}else if(co in t){var i=t[co];n=Jf(i,(function(r,e){return r.invoke(e,i)}))}return n}function B(r,e){var t=r.static;var n=r.dynamic;if(vo in t){var a=t[vo];if(a){a=u.getFramebuffer(a);nr.command(a,"invalid framebuffer object");return Rf((function(r,e){var t=r.link(a);var n=r.shared;e.set(n.framebuffer,".next",t);var i=n.context;e.set(i,"."+jo,t+".width");e.set(i,"."+ko,t+".height");return t}))}else{return Rf((function(r,e){var t=r.shared;e.set(t.framebuffer,".next","null");var n=t.context;e.set(n,"."+jo,n+"."+Fo);e.set(n,"."+ko,n+"."+Mo);return"null"}))}}else if(vo in n){var i=n[vo];return Jf(i,(function(r,e){var t=r.invoke(e,i);var n=r.shared;var a=n.framebuffer;var o=e.def(a,".getFramebuffer(",t,")");nr.optional((function(){r.assert(e,"!"+t+"||"+o,"invalid framebuffer object")}));e.set(a,".next",o);var f=n.context;e.set(f,"."+jo,o+"?"+o+".width:"+f+"."+Fo);e.set(f,"."+ko,o+"?"+o+".height:"+f+"."+Mo);return o}))}else{return null}}function E(r,e,t){var n=r.static;var a=r.dynamic;function i(r){if(r in n){var i=n[r];nr.commandType(i,"object","invalid "+r,t.commandStr);var o=true;var f=i.x|0;var u=i.y|0;var s,l;if("width"in i){s=i.width|0;nr.command(s>=0,"invalid "+r,t.commandStr)}else{o=false}if("height"in i){l=i.height|0;nr.command(l>=0,"invalid "+r,t.commandStr)}else{o=false}return new Bf(!o&&e&&e.thisDep,!o&&e&&e.contextDep,!o&&e&&e.propDep,(function(r,e){var t=r.shared.context;var n=s;if(!("width"in i)){n=e.def(t,".",jo,"-",f)}var a=l;if(!("height"in i)){a=e.def(t,".",ko,"-",u)}return[f,u,n,a]}))}else if(r in a){var c=a[r];var v=Jf(c,(function(e,t){var n=e.invoke(t,c);nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));var a=e.shared.context;var i=t.def(n,".x|0");var o=t.def(n,".y|0");var f=t.def('"width" in ',n,"?",n,".width|0:","(",a,".",jo,"-",i,")");var u=t.def('"height" in ',n,"?",n,".height|0:","(",a,".",ko,"-",o,")");nr.optional((function(){e.assert(t,f+">=0&&"+u+">=0","invalid "+r)}));return[i,o,f,u]}));if(e){v.thisDep=v.thisDep||e.thisDep;v.contextDep=v.contextDep||e.contextDep;v.propDep=v.propDep||e.propDep}return v}else if(e){return new Bf(e.thisDep,e.contextDep,e.propDep,(function(r,e){var t=r.shared.context;return[0,0,e.def(t,".",jo),e.def(t,".",ko)]}))}else{return null}}var o=i(lo);if(o){var f=o;o=new Bf(o.thisDep,o.contextDep,o.propDep,(function(r,e){var t=f.append(r,e);var n=r.shared.context;e.set(n,"."+Oo,t[2]);e.set(n,"."+_o,t[3]);return t}))}return{viewport:o,scissor_box:i(so)}}function R(r,e){var t=r.static;var n=typeof t[bo]==="string"&&typeof t[po]==="string";if(n){if(Object.keys(e.dynamic).length>0){return null}var a=e.static;var i=Object.keys(a);if(i.length>0&&typeof a[i[0]]==="number"){var o=[];for(var f=0;f<i.length;++f){nr(typeof a[i[f]]==="number","must specify all vertex attribute locations when using vaos");o.push([a[i[f]]|0,i[f]])}return o}}return null}function J(r,e,n){var a=r.static;var i=r.dynamic;function o(r){if(r in a){var e=t.id(a[r]);nr.optional((function(){c.shader(Mf[r],e,nr.guessCommand())}));var n=Rf((function(){return e}));n.id=e;return n}else if(r in i){var o=i[r];return Jf(o,(function(e,t){var n=e.invoke(t,o);var a=t.def(e.shared.strings,".id(",n,")");nr.optional((function(){t(e.shared.shader,".shader(",Mf[r],",",a,",",e.command,");")}));return a}))}return null}var f=o(bo);var u=o(po);var s=null;var l;if(Ef(f)&&Ef(u)){s=c.program(u.id,f.id,null,n);l=Rf((function(r,e){return r.link(s)}))}else{l=new Bf(f&&f.thisDep||u&&u.thisDep,f&&f.contextDep||u&&u.contextDep,f&&f.propDep||u&&u.propDep,(function(r,e){var t=r.shared.shader;var n;if(f){n=f.append(r,e)}else{n=e.def(t,".",bo)}var a;if(u){a=u.append(r,e)}else{a=e.def(t,".",po)}var i=t+".program("+a+","+n;nr.optional((function(){i+=","+r.command}));return e.def(i+")")}))}return{frag:f,vert:u,progVar:l,program:s}}function V(r,e){var t=r.static;var n=r.dynamic;var a={};var i=false;function f(){if(xo in t){var r=t[xo];if(r!==null&&l.getVAO(r)===null){r=l.createVAO(r)}i=true;a.vao=r;return Rf((function(e){var t=l.getVAO(r);if(t){return e.link(t)}else{return"null"}}))}else if(xo in n){i=true;var e=n[xo];return Jf(e,(function(r,t){var n=r.invoke(t,e);return t.def(r.shared.vao+".getVAO("+n+")")}))}return null}var u=f();var s=false;function c(){if(mo in t){var r=t[mo];a.elements=r;if(Sf(r)){var f=a.elements=o.create(r,true);r=o.getElements(f);s=true}else if(r){r=o.getElements(r);s=true;nr.command(r,"invalid elements",e.commandStr)}var l=Rf((function(e,t){if(r){var n=e.link(r);e.ELEMENTS=n;return n}e.ELEMENTS=null;return null}));l.value=r;return l}else if(mo in n){s=true;var c=n[mo];return Jf(c,(function(r,e){var t=r.shared;var n=t.isBufferArgs;var a=t.elements;var i=r.invoke(e,c);var o=e.def("null");var f=e.def(n,"(",i,")");var u=r.cond(f).then(o,"=",a,".createStream(",i,");").else(o,"=",a,".getElements(",i,");");nr.optional((function(){r.assert(u.else,"!"+i+"||"+o,"invalid elements")}));e.entry(u);e.exit(r.cond(f).then(a,".destroyStream(",o,");"));r.ELEMENTS=o;return o}))}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.elements+".getElements("+r.shared.vao+".currentVAO.elements):null")}))}return null}var v=c();function d(){if(ho in t){var r=t[ho];a.primitive=r;nr.commandParameter(r,st,"invalid primitve",e.commandStr);return Rf((function(e,t){return st[r]}))}else if(ho in n){var o=n[ho];return Jf(o,(function(r,e){var t=r.constants.primTypes;var n=r.invoke(e,o);nr.optional((function(){r.assert(e,n+" in "+t,"invalid primitive, must be one of "+Object.keys(st))}));return e.def(t,"[",n,"]")}))}else if(s){if(Ef(v)){if(v.value){return Rf((function(r,e){return e.def(r.ELEMENTS,".primType")}))}else{return Rf((function(){return cf}))}}else{return new Bf(v.thisDep,v.contextDep,v.propDep,(function(r,e){var t=r.ELEMENTS;return e.def(t,"?",t,".primType:",cf)}))}}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.primitive:"+cf)}))}return null}function p(r,o){if(r in t){var f=t[r]|0;if(o){a.offset=f}else{a.instances=f}nr.command(!o||f>=0,"invalid "+r,e.commandStr);return Rf((function(r,e){if(o){r.OFFSET=f}return f}))}else if(r in n){var l=n[r];return Jf(l,(function(e,t){var n=e.invoke(t,l);if(o){e.OFFSET=n;nr.optional((function(){e.assert(t,n+">=0","invalid "+r)}))}return n}))}else if(o){if(s){return Rf((function(r,e){r.OFFSET=0;return 0}))}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.offset:0")}))}}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.instances:-1")}))}return null}var b=p(go,true);function m(){if(yo in t){var r=t[yo]|0;a.count=r;nr.command(typeof r==="number"&&r>=0,"invalid vertex count",e.commandStr);return Rf((function(){return r}))}else if(yo in n){var o=n[yo];return Jf(o,(function(r,e){var t=r.invoke(e,o);nr.optional((function(){r.assert(e,"typeof "+t+'==="number"&&'+t+">=0&&"+t+"===("+t+"|0)","invalid vertex count")}));return t}))}else if(s){if(Ef(v)){if(v){if(b){return new Bf(b.thisDep,b.contextDep,b.propDep,(function(r,e){var t=e.def(r.ELEMENTS,".vertCount-",r.OFFSET);nr.optional((function(){r.assert(e,t+">=0","invalid vertex offset/element buffer too small")}));return t}))}else{return Rf((function(r,e){return e.def(r.ELEMENTS,".vertCount")}))}}else{var f=Rf((function(){return-1}));nr.optional((function(){f.MISSING=true}));return f}}else{var l=new Bf(v.thisDep||b.thisDep,v.contextDep||b.contextDep,v.propDep||b.propDep,(function(r,e){var t=r.ELEMENTS;if(r.OFFSET){return e.def(t,"?",t,".vertCount-",r.OFFSET,":-1")}return e.def(t,"?",t,".vertCount:-1")}));nr.optional((function(){l.DYNAMIC=true}));return l}}else if(i){var c=new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao,".currentVAO?",r.shared.vao,".currentVAO.count:-1")}));return c}return null}var h=d();var y=m();var g=p(wo,false);return{elements:v,primitive:h,count:y,instances:g,offset:b,vao:u,vaoActive:i,elementsActive:s,static:a}}function N(r,e){var t=r.static;var n=r.dynamic;var i={};C.forEach((function(r){var o=O(r);function f(e,a){if(r in t){var f=e(t[r]);i[o]=Rf((function(){return f}))}else if(r in n){var u=n[r];i[o]=Jf(u,(function(r,e){return a(r,e,r.invoke(e,u))}))}}switch(r){case $i:case Ni:case Vi:case no:case Ui:case uo:case Zi:case ro:case eo:case Gi:return f((function(t){nr.commandType(t,"boolean",r,e.commandStr);return t}),(function(e,t,n){nr.optional((function(){e.assert(t,"typeof "+n+'==="boolean"',"invalid flag "+r,e.commandStr)}));return n}));case qi:return f((function(t){nr.commandParameter(t,Tf,"invalid "+r,e.commandStr);return Tf[t]}),(function(e,t,n){var a=e.constants.compareFuncs;nr.optional((function(){e.assert(t,n+" in "+a,"invalid "+r+", must be one of "+Object.keys(Tf))}));return t.def(a,"[",n,"]")}));case Pi:return f((function(r){nr.command(_t(r)&&r.length===2&&typeof r[0]==="number"&&typeof r[1]==="number"&&r[0]<=r[1],"depth range is 2d array",e.commandStr);return r}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===2&&"+"typeof "+t+'[0]==="number"&&'+"typeof "+t+'[1]==="number"&&'+t+"[0]<="+t+"[1]","depth range must be a 2d array")}));var n=e.def("+",t,"[0]");var a=e.def("+",t,"[1]");return[n,a]}));case Li:return f((function(r){nr.commandType(r,"object","blend.func",e.commandStr);var t="srcRGB"in r?r.srcRGB:r.src;var n="srcAlpha"in r?r.srcAlpha:r.src;var a="dstRGB"in r?r.dstRGB:r.dst;var i="dstAlpha"in r?r.dstAlpha:r.dst;nr.commandParameter(t,Of,o+".srcRGB",e.commandStr);nr.commandParameter(n,Of,o+".srcAlpha",e.commandStr);nr.commandParameter(a,Of,o+".dstRGB",e.commandStr);nr.commandParameter(i,Of,o+".dstAlpha",e.commandStr);nr.command(_f.indexOf(t+", "+a)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+t+", "+a+")",e.commandStr);return[Of[t],Of[a],Of[n],Of[i]]}),(function(e,t,n){var a=e.constants.blendFuncs;nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid blend func, must be an object")}));function i(i,o){var f=t.def('"',i,o,'" in ',n,"?",n,".",i,o,":",n,".",i);nr.optional((function(){e.assert(t,f+" in "+a,"invalid "+r+"."+i+o+", must be one of "+Object.keys(Of))}));return f}var o=i("src","RGB");var f=i("dst","RGB");nr.optional((function(){var r=e.constants.invalidBlendCombinations;e.assert(t,r+".indexOf("+o+'+", "+'+f+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")}));var u=t.def(a,"[",o,"]");var s=t.def(a,"[",i("src","Alpha"),"]");var l=t.def(a,"[",f,"]");var c=t.def(a,"[",i("dst","Alpha"),"]");return[u,l,s,c]}));case Wi:return f((function(t){if(typeof t==="string"){nr.commandParameter(t,h,"invalid "+r,e.commandStr);return[h[t],h[t]]}else if(typeof t==="object"){nr.commandParameter(t.rgb,h,r+".rgb",e.commandStr);nr.commandParameter(t.alpha,h,r+".alpha",e.commandStr);return[h[t.rgb],h[t.alpha]]}else{nr.commandRaise("invalid blend.equation",e.commandStr)}}),(function(e,t,n){var a=e.constants.blendEquations;var i=t.def();var o=t.def();var f=e.cond("typeof ",n,'==="string"');nr.optional((function(){function t(r,t,n){e.assert(r,n+" in "+a,"invalid "+t+", must be one of "+Object.keys(h))}t(f.then,r,n);e.assert(f.else,n+"&&typeof "+n+'==="object"',"invalid "+r);t(f.else,r+".rgb",n+".rgb");t(f.else,r+".alpha",n+".alpha")}));f.then(i,"=",o,"=",a,"[",n,"];");f.else(i,"=",a,"[",n,".rgb];",o,"=",a,"[",n,".alpha];");t(f);return[i,o]}));case Ii:return f((function(r){nr.command(_t(r)&&r.length===4,"blend.color must be a 4d array",e.commandStr);return _r(4,(function(e){return+r[e]}))}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===4","blend.color must be a 4d array")}));return _r(4,(function(r){return e.def("+",t,"[",r,"]")}))}));case ao:return f((function(r){nr.commandType(r,"number",o,e.commandStr);return r|0}),(function(r,e,t){nr.optional((function(){r.assert(e,"typeof "+t+'==="number"',"invalid stencil.mask")}));return e.def(t,"|0")}));case io:return f((function(t){nr.commandType(t,"object",o,e.commandStr);var n=t.cmp||"keep";var a=t.ref||0;var i="mask"in t?t.mask:-1;nr.commandParameter(n,Tf,r+".cmp",e.commandStr);nr.commandType(a,"number",r+".ref",e.commandStr);nr.commandType(i,"number",r+".mask",e.commandStr);return[Tf[n],a,i]}),(function(r,e,t){var n=r.constants.compareFuncs;nr.optional((function(){function a(){r.assert(e,Array.prototype.join.call(arguments,""),"invalid stencil.func")}a(t+"&&typeof ",t,'==="object"');a('!("cmp" in ',t,")||(",t,".cmp in ",n,")")}));var a=e.def('"cmp" in ',t,"?",n,"[",t,".cmp]",":",gf);var i=e.def(t,".ref|0");var o=e.def('"mask" in ',t,"?",t,".mask|0:-1");return[a,i,o]}));case oo:case fo:return f((function(t){nr.commandType(t,"object",o,e.commandStr);var n=t.fail||"keep";var a=t.zfail||"keep";var i=t.zpass||"keep";nr.commandParameter(n,Ff,r+".fail",e.commandStr);nr.commandParameter(a,Ff,r+".zfail",e.commandStr);nr.commandParameter(i,Ff,r+".zpass",e.commandStr);return[r===fo?df:vf,Ff[n],Ff[a],Ff[i]]}),(function(e,t,n){var a=e.constants.stencilOps;nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));function i(i){nr.optional((function(){e.assert(t,'!("'+i+'" in '+n+")||"+"("+n+"."+i+" in "+a+")","invalid "+r+"."+i+", must be one of "+Object.keys(Ff))}));return t.def('"',i,'" in ',n,"?",a,"[",n,".",i,"]:",gf)}return[r===fo?df:vf,i("fail"),i("zfail"),i("zpass")]}));case Ki:return f((function(r){nr.commandType(r,"object",o,e.commandStr);var t=r.factor|0;var n=r.units|0;nr.commandType(t,"number",o+".factor",e.commandStr);nr.commandType(n,"number",o+".units",e.commandStr);return[t,n]}),(function(e,t,n){nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));var a=t.def(n,".factor|0");var i=t.def(n,".units|0");return[a,i]}));case Qi:return f((function(r){var t=0;if(r==="front"){t=vf}else if(r==="back"){t=df}nr.command(!!t,o,e.commandStr);return t}),(function(r,e,t){nr.optional((function(){r.assert(e,t+'==="front"||'+t+'==="back"',"invalid cull.face")}));return e.def(t,'==="front"?',vf,":",df)}));case Yi:return f((function(r){nr.command(typeof r==="number"&&r>=a.lineWidthDims[0]&&r<=a.lineWidthDims[1],"invalid line width, must be a positive number between "+a.lineWidthDims[0]+" and "+a.lineWidthDims[1],e.commandStr);return r}),(function(r,e,t){nr.optional((function(){r.assert(e,"typeof "+t+'==="number"&&'+t+">="+a.lineWidthDims[0]+"&&"+t+"<="+a.lineWidthDims[1],"invalid line width")}));return t}));case Xi:return f((function(r){nr.commandParameter(r,Df,o,e.commandStr);return Df[r]}),(function(r,e,t){nr.optional((function(){r.assert(e,t+'==="cw"||'+t+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}));return e.def(t+'==="cw"?'+pf+":"+bf)}));case Hi:return f((function(r){nr.command(_t(r)&&r.length===4,"color.mask must be length 4 array",e.commandStr);return r.map((function(r){return!!r}))}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===4","invalid color.mask")}));return _r(4,(function(r){return"!!"+t+"["+r+"]"}))}));case to:return f((function(r){nr.command(typeof r==="object"&&r,o,e.commandStr);var t="value"in r?r.value:1;var n=!!r.invert;nr.command(typeof t==="number"&&t>=0&&t<=1,"sample.coverage.value must be a number between 0 and 1",e.commandStr);return[t,n]}),(function(r,e,t){nr.optional((function(){r.assert(e,t+"&&typeof "+t+'==="object"',"invalid sample.coverage")}));var n=e.def('"value" in ',t,"?+",t,".value:1");var a=e.def("!!",t,".invert");return[n,a]}))}}));return i}function I(r,e){var t=r.static;var n=r.dynamic;var a={};Object.keys(t).forEach((function(r){var n=t[r];var i;if(typeof n==="number"||typeof n==="boolean"){i=Rf((function(){return n}))}else if(typeof n==="function"){var o=n._reglType;if(o==="texture2d"||o==="textureCube"){i=Rf((function(r){return r.link(n)}))}else if(o==="framebuffer"||o==="framebufferCube"){nr.command(n.color.length>0,'missing color attachment for framebuffer sent to uniform "'+r+'"',e.commandStr);i=Rf((function(r){return r.link(n.color[0])}))}else{nr.commandRaise('invalid data for uniform "'+r+'"',e.commandStr)}}else if(_t(n)){i=Rf((function(e){var t=e.global.def("[",_r(n.length,(function(t){nr.command(typeof n[t]==="number"||typeof n[t]==="boolean","invalid uniform "+r,e.commandStr);return n[t]})),"]");return t}))}else{nr.commandRaise('invalid or missing data for uniform "'+r+'"',e.commandStr)}i.value=n;a[r]=i}));Object.keys(n).forEach((function(r){var e=n[r];a[r]=Jf(e,(function(r,t){return r.invoke(t,e)}))}));return a}function W(r,e){var n=r.static;var a=r.dynamic;var o={};Object.keys(n).forEach((function(r){var a=n[r];var f=t.id(r);var u=new m;if(Sf(a)){u.state=Fi;u.buffer=i.getBuffer(i.create(a,So,false,true));u.type=0}else{var s=i.getBuffer(a);if(s){u.state=Fi;u.buffer=s;u.type=0}else{nr.command(typeof a==="object"&&a,"invalid data for attribute "+r,e.commandStr);if("constant"in a){var l=a.constant;u.buffer="null";u.state=Mi;if(typeof l==="number"){u.x=l}else{nr.command(_t(l)&&l.length>0&&l.length<=4,"invalid constant for attribute "+r,e.commandStr);_i.forEach((function(r,e){if(e<l.length){u[r]=l[e]}}))}}else{if(Sf(a.buffer)){s=i.getBuffer(i.create(a.buffer,So,false,true))}else{s=i.getBuffer(a.buffer)}nr.command(!!s,'missing buffer for attribute "'+r+'"',e.commandStr);var c=a.offset|0;nr.command(c>=0,'invalid offset for attribute "'+r+'"',e.commandStr);var v=a.stride|0;nr.command(v>=0&&v<256,'invalid stride for attribute "'+r+'", must be integer betweeen [0, 255]',e.commandStr);var d=a.size|0;nr.command(!("size"in a)||d>0&&d<=4,'invalid size for attribute "'+r+'", must be 1,2,3,4',e.commandStr);var p=!!a.normalized;var b=0;if("type"in a){nr.commandParameter(a.type,Le,"invalid type for attribute "+r,e.commandStr);b=Le[a.type]}var h=a.divisor|0;nr.optional((function(){if("divisor"in a){nr.command(h===0||y,'cannot specify divisor for attribute "'+r+'", instancing not supported',e.commandStr);nr.command(h>=0,'invalid divisor for attribute "'+r+'"',e.commandStr)}var t=e.commandStr;var n=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(a).forEach((function(e){nr.command(n.indexOf(e)>=0,'unknown parameter "'+e+'" for attribute pointer "'+r+'" (valid parameters are '+n+")",t)}))}));u.buffer=s;u.state=Fi;u.size=d;u.normalized=p;u.type=b||s.dtype;u.offset=c;u.stride=v;u.divisor=h}}}o[r]=Rf((function(r,e){var t=r.attribCache;if(f in t){return t[f]}var n={isStream:false};Object.keys(u).forEach((function(r){n[r]=u[r]}));if(u.buffer){n.buffer=r.link(u.buffer);n.type=n.type||n.buffer+".dtype"}t[f]=n;return n}))}));Object.keys(a).forEach((function(r){var e=a[r];function t(t,n){var a=t.invoke(n,e);var i=t.shared;var o=t.constants;var f=i.isBufferArgs;var u=i.buffer;nr.optional((function(){t.assert(n,a+"&&(typeof "+a+'==="object"||typeof '+a+'==="function")&&('+f+"("+a+")||"+u+".getBuffer("+a+")||"+u+".getBuffer("+a+".buffer)||"+f+"("+a+".buffer)||"+'("constant" in '+a+"&&(typeof "+a+'.constant==="number"||'+i.isArrayLike+"("+a+".constant))))",'invalid dynamic attribute "'+r+'"')}));var s={isStream:n.def(false)};var l=new m;l.state=Fi;Object.keys(l).forEach((function(r){s[r]=n.def(""+l[r])}));var c=s.buffer;var v=s.type;n("if(",f,"(",a,")){",s.isStream,"=true;",c,"=",u,".createStream(",So,",",a,");",v,"=",c,".dtype;","}else{",c,"=",u,".getBuffer(",a,");","if(",c,"){",v,"=",c,".dtype;",'}else if("constant" in ',a,"){",s.state,"=",Mi,";","if(typeof "+a+'.constant === "number"){',s[_i[0]],"=",a,".constant;",_i.slice(1).map((function(r){return s[r]})).join("="),"=0;","}else{",_i.map((function(r,e){return s[r]+"="+a+".constant.length>"+e+"?"+a+".constant["+e+"]:0;"})).join(""),"}}else{","if(",f,"(",a,".buffer)){",c,"=",u,".createStream(",So,",",a,".buffer);","}else{",c,"=",u,".getBuffer(",a,".buffer);","}",v,'="type" in ',a,"?",o.glTypes,"[",a,".type]:",c,".dtype;",s.normalized,"=!!",a,".normalized;");function d(r){n(s[r],"=",a,".",r,"|0;")}d("size");d("offset");d("stride");d("divisor");n("}}");n.exit("if(",s.isStream,"){",u,".destroyStream(",c,");","}");return s}o[r]=Jf(e,t)}));return o}function L(r){var e=r.static;var t=r.dynamic;var n={};Object.keys(e).forEach((function(r){var t=e[r];n[r]=Rf((function(r,e){if(typeof t==="number"||typeof t==="boolean"){return""+t}else{return r.link(t)}}))}));Object.keys(t).forEach((function(r){var e=t[r];n[r]=Jf(e,(function(r,t){return r.invoke(t,e)}))}));return n}function U(r,e,t,a,i){var o=r.static;var f=r.dynamic;nr.optional((function(){var r=[vo,po,bo,mo,ho,go,yo,wo,co,xo].concat(C);function e(e){Object.keys(e).forEach((function(e){nr.command(r.indexOf(e)>=0,'unknown parameter "'+e+'"',i.commandStr)}))}e(o);e(f)}));var u=R(r,e);var s=B(r);var c=E(r,s,i);var v=V(r,i);var d=N(r,i);var p=J(r,i,u);function b(r){var e=c[r];if(e){d[r]=e}}b(lo);b(O(so));var m=Object.keys(d).length>0;var h={framebuffer:s,draw:v,shader:p,state:d,dirty:m,scopeVAO:null,drawVAO:null,useVAO:false,attributes:{}};h.profile=z(r);h.uniforms=I(t,i);h.drawVAO=h.scopeVAO=v.vao;if(!h.drawVAO&&p.program&&!u&&n.angle_instanced_arrays&&v.static.elements){var y=true;var g=p.program.attributes.map((function(r){var t=e.static[r];y=y&&!!t;return t}));if(y&&g.length>0){var w=l.getVAO(l.createVAO({attributes:g,elements:v.static.elements}));h.drawVAO=new Bf(null,null,null,(function(r,e){return r.link(w)}));h.useVAO=true}}if(u){h.useVAO=true}else{h.attributes=W(e,i)}h.context=L(a);return h}function q(r,e,t){var n=r.shared;var a=n.context;var i=r.scope();Object.keys(t).forEach((function(n){e.save(a,"."+n);var o=t[n];var f=o.append(r,e);if(Array.isArray(f)){i(a,".",n,"=[",f.join(),"];")}else{i(a,".",n,"=",f,";")}}));e(i)}function P(r,e,t,n){var a=r.shared;var i=a.gl;var o=a.framebuffer;var f;if(g){f=e.def(a.extensions,".webgl_draw_buffers")}var u=r.constants;var s=u.drawBuffer;var l=u.backBuffer;var c;if(t){c=t.append(r,e)}else{c=e.def(o,".next")}if(!n){e("if(",c,"!==",o,".cur){")}e("if(",c,"){",i,".bindFramebuffer(",jf,",",c,".framebuffer);");if(g){e(f,".drawBuffersWEBGL(",s,"[",c,".colorAttachments.length]);")}e("}else{",i,".bindFramebuffer(",jf,",null);");if(g){e(f,".drawBuffersWEBGL(",l,");")}e("}",o,".cur=",c,";");if(!n){e("}")}}function G(r,e,t){var n=r.shared;var a=n.gl;var i=r.current;var o=r.next;var f=n.current;var u=n.next;var s=r.cond(f,".dirty");C.forEach((function(e){var n=O(e);if(n in t.state){return}var l,c;if(n in o){l=o[n];c=i[n];var v=_r(x[n].length,(function(r){return s.def(l,"[",r,"]")}));s(r.cond(v.map((function(r,e){return r+"!=="+c+"["+e+"]"})).join("||")).then(a,".",k[n],"(",v,");",v.map((function(r,e){return c+"["+e+"]="+r})).join(";"),";"))}else{l=s.def(u,".",n);var d=r.cond(l,"!==",f,".",n);s(d);if(n in j){d(r.cond(l).then(a,".enable(",j[n],");").else(a,".disable(",j[n],");"),f,".",n,"=",l,";")}else{d(a,".",k[n],"(",l,");",f,".",n,"=",l,";")}}}));if(Object.keys(t.state).length===0){s(f,".dirty=false;")}e(s)}function H(r,e,t,n){var a=r.shared;var i=r.current;var o=a.current;var f=a.gl;zf(Object.keys(t)).forEach((function(a){var u=t[a];if(n&&!n(u)){return}var s=u.append(r,e);if(j[a]){var l=j[a];if(Ef(u)){if(s){e(f,".enable(",l,");")}else{e(f,".disable(",l,");")}}else{e(r.cond(s).then(f,".enable(",l,");").else(f,".disable(",l,");"))}e(o,".",a,"=",s,";")}else if(_t(s)){var c=i[a];e(f,".",k[a],"(",s,");",s.map((function(r,e){return c+"["+e+"]="+r})).join(";"),";")}else{e(f,".",k[a],"(",s,");",o,".",a,"=",s,";")}}))}function $(r,e){if(y){r.instancing=e.def(r.shared.extensions,".angle_instanced_arrays")}}function Q(r,e,t,n,a){var i=r.shared;var o=r.stats;var f=i.current;var u=i.timer;var s=t.profile;function l(){if(typeof performance==="undefined"){return"Date.now()"}else{return"performance.now()"}}var c,v;function d(r){c=e.def();r(c,"=",l(),";");if(typeof a==="string"){r(o,".count+=",a,";")}else{r(o,".count++;")}if(p){if(n){v=e.def();r(v,"=",u,".getNumPendingQueries();")}else{r(u,".beginQuery(",o,");")}}}function b(r){r(o,".cpuTime+=",l(),"-",c,";");if(p){if(n){r(u,".pushScopeStats(",v,",",u,".getNumPendingQueries(),",o,");")}else{r(u,".endQuery();")}}}function m(r){var t=e.def(f,".profile");e(f,".profile=",r,";");e.exit(f,".profile=",t,";")}var h;if(s){if(Ef(s)){if(s.enable){d(e);b(e.exit);m("true")}else{m("false")}return}h=s.append(r,e);m(h)}else{h=e.def(f,".profile")}var y=r.block();d(y);e("if(",h,"){",y,"}");var g=r.block();b(g);e.exit("if(",h,"){",g,"}")}function X(r,e,t,n,a){var i=r.shared;function o(r){switch(r){case $o:case Zo:case tf:return 2;case Qo:case Ko:case nf:return 3;case Xo:case rf:case af:return 4;default:return 1}}function f(t,n,a){var o=i.gl;var f=e.def(t,".location");var u=e.def(i.attributes,"[",f,"]");var s=a.state;var l=a.buffer;var c=[a.x,a.y,a.z,a.w];var v=["buffer","normalized","offset","stride"];function d(){e("if(!",u,".buffer){",o,".enableVertexAttribArray(",f,");}");var t=a.type;var i;if(!a.size){i=n}else{i=e.def(a.size,"||",n)}e("if(",u,".type!==",t,"||",u,".size!==",i,"||",v.map((function(r){return u+"."+r+"!=="+a[r]})).join("||"),"){",o,".bindBuffer(",So,",",l,".buffer);",o,".vertexAttribPointer(",[f,i,t,a.normalized,a.stride,a.offset],");",u,".type=",t,";",u,".size=",i,";",v.map((function(r){return u+"."+r+"="+a[r]+";"})).join(""),"}");if(y){var s=a.divisor;e("if(",u,".divisor!==",s,"){",r.instancing,".vertexAttribDivisorANGLE(",[f,s],");",u,".divisor=",s,";}")}}function p(){e("if(",u,".buffer){",o,".disableVertexAttribArray(",f,");",u,".buffer=null;","}if(",_i.map((function(r,e){return u+"."+r+"!=="+c[e]})).join("||"),"){",o,".vertexAttrib4f(",f,",",c,");",_i.map((function(r,e){return u+"."+r+"="+c[e]+";"})).join(""),"}")}if(s===Fi){d()}else if(s===Mi){p()}else{e("if(",s,"===",Fi,"){");d();e("}else{");p();e("}")}}n.forEach((function(n){var i=n.name;var u=t.attributes[i];var s;if(u){if(!a(u)){return}s=u.append(r,e)}else{if(!a(Vf)){return}var l=r.scopeAttrib(i);nr.optional((function(){r.assert(e,l+".state","missing attribute "+i)}));s={};Object.keys(new m).forEach((function(r){s[r]=e.def(l,".",r)}))}f(r.link(n),o(n.info.type),s)}))}function Y(r,e,n,a,i,o){var f=r.shared;var u=f.gl;var s;for(var l=0;l<a.length;++l){var c=a[l];var v=c.name;var d=c.info.type;var p=n.uniforms[v];var b=r.link(c);var m=b+".location";var h;if(p){if(!i(p)){continue}if(Ef(p)){var y=p.value;nr.command(y!==null&&typeof y!=="undefined",'missing uniform "'+v+'"',r.commandStr);if(d===sf||d===lf){nr.command(typeof y==="function"&&(d===sf&&(y._reglType==="texture2d"||y._reglType==="framebuffer")||d===lf&&(y._reglType==="textureCube"||y._reglType==="framebufferCube")),"invalid texture for uniform "+v,r.commandStr);var g=r.link(y._texture||y.color[0]._texture);e(u,".uniform1i(",m,",",g+".bind());");e.exit(g,".unbind();")}else if(d===of||d===ff||d===uf){nr.optional((function(){nr.command(_t(y),"invalid matrix for uniform "+v,r.commandStr);nr.command(d===of&&y.length===4||d===ff&&y.length===9||d===uf&&y.length===16,"invalid length for matrix uniform "+v,r.commandStr)}));var w=r.global.def("new Float32Array(["+Array.prototype.slice.call(y)+"])");var x=2;if(d===ff){x=3}else if(d===uf){x=4}e(u,".uniformMatrix",x,"fv(",m,",false,",w,");")}else{switch(d){case Ho:nr.commandType(y,"number","uniform "+v,r.commandStr);s="1f";break;case $o:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2f";break;case Qo:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3f";break;case Xo:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4f";break;case ef:nr.commandType(y,"boolean","uniform "+v,r.commandStr);s="1i";break;case Yo:nr.commandType(y,"number","uniform "+v,r.commandStr);s="1i";break;case tf:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2i";break;case Zo:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2i";break;case nf:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3i";break;case Ko:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3i";break;case af:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4i";break;case rf:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4i";break}e(u,".uniform",s,"(",m,",",_t(y)?Array.prototype.slice.call(y):y,");")}continue}else{h=p.append(r,e)}}else{if(!i(Vf)){continue}h=e.def(f.uniforms,"[",t.id(v),"]")}if(d===sf){nr(!Array.isArray(h),"must specify a scalar prop for textures");e("if(",h,"&&",h,'._reglType==="framebuffer"){',h,"=",h,".color[0];","}")}else if(d===lf){nr(!Array.isArray(h),"must specify a scalar prop for cube maps");e("if(",h,"&&",h,'._reglType==="framebufferCube"){',h,"=",h,".color[0];","}")}nr.optional((function(){function t(t,n){r.assert(e,t,'bad data or missing for uniform "'+v+'". '+n)}function n(r){nr(!Array.isArray(h),"must not specify an array type for uniform");t("typeof "+h+'==="'+r+'"',"invalid type, expected "+r)}function a(r,e){if(Array.isArray(h)){nr(h.length===r,"must have length "+r)}else{t(f.isArrayLike+"("+h+")&&"+h+".length==="+r,"invalid vector, should have length "+r)}}function i(r){nr(!Array.isArray(h),"must not specify a value type");t("typeof "+h+'==="function"&&'+h+'._reglType==="texture'+(r===Ro?"2d":"Cube")+'"',"invalid texture type")}switch(d){case Yo:n("number");break;case Zo:a(2);break;case Ko:a(3);break;case rf:a(4);break;case Ho:n("number");break;case $o:a(2);break;case Qo:a(3);break;case Xo:a(4);break;case ef:n("boolean");break;case tf:a(2);break;case nf:a(3);break;case af:a(4);break;case of:a(4);break;case ff:a(9);break;case uf:a(16);break;case sf:i(Ro);break;case lf:i(Jo);break}}));var A=1;switch(d){case sf:case lf:var C=e.def(h,"._texture");e(u,".uniform1i(",m,",",C,".bind());");e.exit(C,".unbind();");continue;case Yo:case ef:s="1i";break;case Zo:case tf:s="2i";A=2;break;case Ko:case nf:s="3i";A=3;break;case rf:case af:s="4i";A=4;break;case Ho:s="1f";break;case $o:s="2f";A=2;break;case Qo:s="3f";A=3;break;case Xo:s="4f";A=4;break;case of:s="Matrix2fv";break;case ff:s="Matrix3fv";break;case uf:s="Matrix4fv";break}if(s.charAt(0)==="M"){e(u,".uniform",s,"(",m,",");var j=Math.pow(d-of+2,2);var k=r.global.def("new Float32Array(",j,")");if(Array.isArray(h)){e("false,(",_r(j,(function(r){return k+"["+r+"]="+h[r]})),",",k,")")}else{e("false,(Array.isArray(",h,")||",h," instanceof Float32Array)?",h,":(",_r(j,(function(r){return k+"["+r+"]="+h+"["+r+"]"})),",",k,")")}e(");")}else if(A>1){var O=[];var _=[];for(var T=0;T<A;++T){if(Array.isArray(h)){_.push(h[T])}else{_.push(e.def(h+"["+T+"]"))}if(o){O.push(e.def())}}if(o){e("if(!",r.batchId,"||",O.map((function(r,e){return r+"!=="+_[e]})).join("||"),"){",O.map((function(r,e){return r+"="+_[e]+";"})).join(""))}e(u,".uniform",s,"(",m,",",_.join(","),");");if(o){e("}")}}else{nr(!Array.isArray(h),"uniform value must not be an array");if(o){var F=e.def();e("if(!",r.batchId,"||",F,"!==",h,"){",F,"=",h,";")}e(u,".uniform",s,"(",m,",",h,");");if(o){e("}")}}}}function Z(r,e,t,n){var a=r.shared;var i=a.gl;var o=a.draw;var f=n.draw;function u(){var u=f.elements;var s;var l=e;if(u){if(u.contextDep&&n.contextDynamic||u.propDep){l=t}s=u.append(r,l);if(f.elementsActive){l("if("+s+")"+i+".bindBuffer("+zo+","+s+".buffer.buffer);")}}else{s=l.def();l(s,"=",o,".",mo,";","if(",s,"){",i,".bindBuffer(",zo,",",s,".buffer.buffer);}","else if(",a.vao,".currentVAO){",s,"=",r.shared.elements+".getElements("+a.vao,".currentVAO.elements);",!w?"if("+s+")"+i+".bindBuffer("+zo+","+s+".buffer.buffer);":"","}")}return s}function s(){var a=f.count;var i;var u=e;if(a){if(a.contextDep&&n.contextDynamic||a.propDep){u=t}i=a.append(r,u);nr.optional((function(){if(a.MISSING){r.assert(e,"false","missing vertex count")}if(a.DYNAMIC){r.assert(u,i+">=0","missing vertex count")}}))}else{i=u.def(o,".",yo);nr.optional((function(){r.assert(u,i+">=0","missing vertex count")}))}return i}var l=u();function c(a){var i=f[a];if(i){if(i.contextDep&&n.contextDynamic||i.propDep){return i.append(r,t)}else{return i.append(r,e)}}else{return e.def(o,".",a)}}var v=c(ho);var d=c(go);var p=s();if(typeof p==="number"){if(p===0){return}}else{t("if(",p,"){");t.exit("}")}var b,m;if(y){b=c(wo);m=r.instancing}var h=l+".type";var g=f.elements&&Ef(f.elements)&&!f.vaoActive;function x(){function r(){t(m,".drawElementsInstancedANGLE(",[v,p,h,d+"<<(("+h+"-"+Ti+")>>1)",b],");")}function e(){t(m,".drawArraysInstancedANGLE(",[v,d,p,b],");")}if(l&&l!=="null"){if(!g){t("if(",l,"){");r();t("}else{");e();t("}")}else{r()}}else{e()}}function A(){function r(){t(i+".drawElements("+[v,p,h,d+"<<(("+h+"-"+Ti+")>>1)"]+");")}function e(){t(i+".drawArrays("+[v,d,p]+");")}if(l&&l!=="null"){if(!g){t("if(",l,"){");r();t("}else{");e();t("}")}else{r()}}else{e()}}if(y&&(typeof b!=="number"||b>=0)){if(typeof b==="string"){t("if(",b,">0){");x();t("}else if(",b,"<0){");A();t("}")}else{x()}}else{A()}}function K(r,e,t,n,a){var i=S();var o=i.proc("body",a);nr.optional((function(){i.commandStr=e.commandStr;i.command=i.link(e.commandStr)}));if(y){i.instancing=o.def(i.shared.extensions,".angle_instanced_arrays")}r(i,o,t,n);return i.compile().body}function rr(r,e,t,n){$(r,e);if(t.useVAO){if(t.drawVAO){e(r.shared.vao,".setVAO(",t.drawVAO.append(r,e),");")}else{e(r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);")}}else{e(r.shared.vao,".setVAO(null);");X(r,e,t,n.attributes,(function(){return true}))}Y(r,e,t,n.uniforms,(function(){return true}),false);Z(r,e,e,t)}function er(r,e){var t=r.proc("draw",1);$(r,t);q(r,t,e.context);P(r,t,e.framebuffer);G(r,t,e);H(r,t,e.state);Q(r,t,e,false,true);var n=e.shader.progVar.append(r,t);t(r.shared.gl,".useProgram(",n,".program);");if(e.shader.program){rr(r,t,e,e.shader.program)}else{t(r.shared.vao,".setVAO(null);");var a=r.global.def("{}");var i=t.def(n,".id");var o=t.def(a,"[",i,"]");t(r.cond(o).then(o,".call(this,a0);").else(o,"=",a,"[",i,"]=",r.link((function(t){return K(rr,r,e,t,1)})),"(",n,");",o,".call(this,a0);"))}if(Object.keys(e.state).length>0){t(r.shared.current,".dirty=true;")}if(r.shared.vao){t(r.shared.vao,".setVAO(null);")}}function tr(r,e,t,n){r.batchId="a1";$(r,e);function a(){return true}X(r,e,t,n.attributes,a);Y(r,e,t,n.uniforms,a,false);Z(r,e,e,t)}function ar(r,e,t,n){$(r,e);var a=t.contextDep;var i=e.def();var o="a0";var f="a1";var u=e.def();r.shared.props=u;r.batchId=i;var s=r.scope();var l=r.scope();e(s.entry,"for(",i,"=0;",i,"<",f,";++",i,"){",u,"=",o,"[",i,"];",l,"}",s.exit);function c(r){return r.contextDep&&a||r.propDep}function v(r){return!c(r)}if(t.needsContext){q(r,l,t.context)}if(t.needsFramebuffer){P(r,l,t.framebuffer)}H(r,l,t.state,c);if(t.profile&&c(t.profile)){Q(r,l,t,false,true)}if(!n){var d=r.global.def("{}");var p=t.shader.progVar.append(r,l);var b=l.def(p,".id");var m=l.def(d,"[",b,"]");l(r.shared.gl,".useProgram(",p,".program);","if(!",m,"){",m,"=",d,"[",b,"]=",r.link((function(e){return K(tr,r,t,e,2)})),"(",p,");}",m,".call(this,a0[",i,"],",i,");")}else{if(t.useVAO){if(t.drawVAO){if(c(t.drawVAO)){l(r.shared.vao,".setVAO(",t.drawVAO.append(r,l),");")}else{s(r.shared.vao,".setVAO(",t.drawVAO.append(r,s),");")}}else{s(r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);")}}else{s(r.shared.vao,".setVAO(null);");X(r,s,t,n.attributes,v);X(r,l,t,n.attributes,c)}Y(r,s,t,n.uniforms,v,false);Y(r,l,t,n.uniforms,c,true);Z(r,s,l,t)}}function ir(r,e){var t=r.proc("batch",2);r.batchId="0";$(r,t);var n=false;var a=true;Object.keys(e.context).forEach((function(r){n=n||e.context[r].propDep}));if(!n){q(r,t,e.context);a=false}var i=e.framebuffer;var o=false;if(i){if(i.propDep){n=o=true}else if(i.contextDep&&n){o=true}if(!o){P(r,t,i)}}else{P(r,t,null)}if(e.state.viewport&&e.state.viewport.propDep){n=true}function f(r){return r.contextDep&&n||r.propDep}G(r,t,e);H(r,t,e.state,(function(r){return!f(r)}));if(!e.profile||!f(e.profile)){Q(r,t,e,false,"a1")}e.contextDep=n;e.needsContext=a;e.needsFramebuffer=o;var u=e.shader.progVar;if(u.contextDep&&n||u.propDep){ar(r,t,e,null)}else{var s=u.append(r,t);t(r.shared.gl,".useProgram(",s,".program);");if(e.shader.program){ar(r,t,e,e.shader.program)}else{t(r.shared.vao,".setVAO(null);");var l=r.global.def("{}");var c=t.def(s,".id");var v=t.def(l,"[",c,"]");t(r.cond(v).then(v,".call(this,a0,a1);").else(v,"=",l,"[",c,"]=",r.link((function(t){return K(ar,r,e,t,2)})),"(",s,");",v,".call(this,a0,a1);"))}}if(Object.keys(e.state).length>0){t(r.shared.current,".dirty=true;")}if(r.shared.vao){t(r.shared.vao,".setVAO(null);")}}function or(r,e){var n=r.proc("scope",3);r.batchId="a2";var a=r.shared;var i=a.current;q(r,n,e.context);if(e.framebuffer){e.framebuffer.append(r,n)}zf(Object.keys(e.state)).forEach((function(t){var i=e.state[t];var o=i.append(r,n);if(_t(o)){o.forEach((function(e,a){n.set(r.next[t],"["+a+"]",e)}))}else{n.set(a.next,"."+t,o)}}));Q(r,n,e,true,true);[mo,go,yo,wo,ho].forEach((function(t){var i=e.draw[t];if(!i){return}n.set(a.draw,"."+t,""+i.append(r,n))}));Object.keys(e.uniforms).forEach((function(i){var o=e.uniforms[i].append(r,n);if(Array.isArray(o)){o="["+o.join()+"]"}n.set(a.uniforms,"["+t.id(i)+"]",o)}));Object.keys(e.attributes).forEach((function(t){var a=e.attributes[t].append(r,n);var i=r.scopeAttrib(t);Object.keys(new m).forEach((function(r){n.set(i,"."+r,a[r])}))}));if(e.scopeVAO){n.set(a.vao,".targetVAO",e.scopeVAO.append(r,n))}function o(t){var i=e.shader[t];if(i){n.set(a.shader,"."+t,i.append(r,n))}}o(po);o(bo);if(Object.keys(e.state).length>0){n(i,".dirty=true;");n.exit(i,".dirty=true;")}n("a1(",r.shared.context,",a0,",r.batchId,");")}function fr(r){if(typeof r!=="object"||_t(r)){return}var e=Object.keys(r);for(var t=0;t<e.length;++t){if(br.isDynamic(r[e[t]])){return true}}return false}function ur(r,e,t){var n=e.static[t];if(!n||!fr(n)){return}var a=r.global;var i=Object.keys(n);var o=false;var f=false;var u=false;var s=r.global.def("{}");i.forEach((function(e){var t=n[e];if(br.isDynamic(t)){if(typeof t==="function"){t=n[e]=br.unbox(t)}var i=Jf(t,null);o=o||i.thisDep;u=u||i.propDep;f=f||i.contextDep}else{a(s,".",e,"=");switch(typeof t){case"number":a(t);break;case"string":a('"',t,'"');break;case"object":if(Array.isArray(t)){a("[",t.join(),"]")}break;default:a(r.link(t));break}a(";")}}));function l(r,e){i.forEach((function(t){var a=n[t];if(!br.isDynamic(a)){return}var i=r.invoke(e,a);e(s,".",t,"=",i,";")}))}e.dynamic[t]=new br.DynamicVariable(Ei,{thisDep:o,contextDep:f,propDep:u,ref:s,append:l});delete e.static[t]}function sr(r,t,n,a,i){var o=S();o.stats=o.link(i);Object.keys(t.static).forEach((function(r){ur(o,t,r)}));Do.forEach((function(e){ur(o,r,e)}));var f=U(r,t,n,a,o);er(o,f);or(o,f);ir(o,f);return e(o.compile(),{destroy:function(){f.shader.program.destroy()}})}return{next:A,current:x,procs:function(){var r=S();var e=r.proc("poll");var t=r.proc("refresh");var i=r.block();e(i);t(i);var o=r.shared;var f=o.gl;var u=o.next;var s=o.current;i(s,".dirty=false;");P(r,e);P(r,t,null,true);var l;if(y){l=r.link(y)}if(n.oes_vertex_array_object){t(r.link(n.oes_vertex_array_object),".bindVertexArrayOES(null);")}for(var c=0;c<a.maxAttributes;++c){var v=t.def(o.attributes,"[",c,"]");var d=r.cond(v,".buffer");d.then(f,".enableVertexAttribArray(",c,");",f,".bindBuffer(",So,",",v,".buffer.buffer);",f,".vertexAttribPointer(",c,",",v,".size,",v,".type,",v,".normalized,",v,".stride,",v,".offset);").else(f,".disableVertexAttribArray(",c,");",f,".vertexAttrib4f(",c,",",v,".x,",v,".y,",v,".z,",v,".w);",v,".buffer=null;");t(d);if(y){t(l,".vertexAttribDivisorANGLE(",c,",",v,".divisor);")}}t(r.shared.vao,".currentVAO=null;",r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);");Object.keys(j).forEach((function(n){var a=j[n];var o=i.def(u,".",n);var l=r.block();l("if(",o,"){",f,".enable(",a,")}else{",f,".disable(",a,")}",s,".",n,"=",o,";");t(l);e("if(",o,"!==",s,".",n,"){",l,"}")}));Object.keys(k).forEach((function(n){var a=k[n];var o=x[n];var l,c;var v=r.block();v(f,".",a,"(");if(_t(o)){var d=o.length;l=r.global.def(u,".",n);c=r.global.def(s,".",n);v(_r(d,(function(r){return l+"["+r+"]"})),");",_r(d,(function(r){return c+"["+r+"]="+l+"["+r+"];"})).join(""));e("if(",_r(d,(function(r){return l+"["+r+"]!=="+c+"["+r+"]"})).join("||"),"){",v,"}")}else{l=i.def(u,".",n);c=i.def(s,".",n);v(l,");",s,".",n,"=",l,";");e("if(",l,"!==",c,"){",v,"}")}t(v)}));return r.compile()}(),compile:sr}}function If(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var Wf=34918;var Lf=34919;var Uf=35007;var qf=function(r,e){if(!e.ext_disjoint_timer_query){return null}var t=[];function n(){return t.pop()||e.ext_disjoint_timer_query.createQueryEXT()}function a(r){t.push(r)}var i=[];function o(r){var t=n();e.ext_disjoint_timer_query.beginQueryEXT(Uf,t);i.push(t);d(i.length-1,i.length,r)}function f(){e.ext_disjoint_timer_query.endQueryEXT(Uf)}function u(){this.startQueryIndex=-1;this.endQueryIndex=-1;this.sum=0;this.stats=null}var s=[];function l(){return s.pop()||new u}function c(r){s.push(r)}var v=[];function d(r,e,t){var n=l();n.startQueryIndex=r;n.endQueryIndex=e;n.sum=0;n.stats=t;v.push(n)}var p=[];var b=[];function m(){var r,t;var n=i.length;if(n===0){return}b.length=Math.max(b.length,n+1);p.length=Math.max(p.length,n+1);p[0]=0;b[0]=0;var o=0;r=0;for(t=0;t<i.length;++t){var f=i[t];if(e.ext_disjoint_timer_query.getQueryObjectEXT(f,Lf)){o+=e.ext_disjoint_timer_query.getQueryObjectEXT(f,Wf);a(f)}else{i[r++]=f}p[t+1]=o;b[t+1]=r}i.length=r;r=0;for(t=0;t<v.length;++t){var u=v[t];var s=u.startQueryIndex;var l=u.endQueryIndex;u.sum+=p[l]-p[s];var d=b[s];var m=b[l];if(m===d){u.stats.gpuTime+=u.sum/1e6;c(u)}else{u.startQueryIndex=d;u.endQueryIndex=m;v[r++]=u}}v.length=r}return{beginQuery:o,endQuery:f,pushScopeStats:d,update:m,getNumPendingQueries:function(){return i.length},clear:function(){t.push.apply(t,i);for(var r=0;r<t.length;r++){e.ext_disjoint_timer_query.deleteQueryEXT(t[r])}i.length=0;t.length=0},restore:function(){i.length=0;t.length=0}}};var Pf=16384;var Gf=256;var Hf=1024;var $f=34962;var Qf="webglcontextlost";var Xf="webglcontextrestored";var Yf=1;var Zf=2;var Kf=3;function ru(r,e){for(var t=0;t<r.length;++t){if(r[t]===e){return t}}return-1}function eu(r){var t=kr(r);if(!t){return null}var n=t.gl;var a=n.getContextAttributes();var i=n.isContextLost();var o=Or(n,t);if(!o){return null}var f=yr();var u=If();var s=o.extensions;var l=qf(n,s);var c=hr();var v=n.drawingBufferWidth;var d=n.drawingBufferHeight;var p={tick:0,time:0,viewportWidth:v,viewportHeight:d,framebufferWidth:v,framebufferHeight:d,drawingBufferWidth:v,drawingBufferHeight:d,pixelRatio:t.pixelRatio};var b={};var m={elements:null,primitive:4,count:-1,offset:0,instances:-1};var h=Ce(n,s);var y=tt(n,u,t,x);var g=At(n,s,y,u);var w=di(n,s,h,u,y,g,m);function x(r){return w.destroyBuffer(r)}var A=yi(n,f,u,t);var C=va(n,s,h,(function(){O.procs.poll()}),p,u,t);var j=Oa(n,s,h,u,t);var k=fi(n,s,h,C,j,u);var O=Nf(n,f,s,h,y,g,C,k,b,w,A,m,p,l,t);var _=Ci(n,k,O.procs.poll,p,a,s,h);var T=O.next;var F=n.canvas;var M=[];var D=[];var S=[];var z=[t.onDestroy];var B=null;function E(){if(M.length===0){if(l){l.update()}B=null;return}B=mr.next(E);H();for(var r=M.length-1;r>=0;--r){var e=M[r];if(e){e(p,null,0)}}n.flush();if(l){l.update()}}function R(){if(!B&&M.length>0){B=mr.next(E)}}function J(){if(B){mr.cancel(E);B=null}}function V(r){r.preventDefault();i=true;J();D.forEach((function(r){r()}))}function N(r){n.getError();i=false;o.restore();A.restore();y.restore();C.restore();j.restore();k.restore();w.restore();if(l){l.restore()}O.procs.refresh();R();S.forEach((function(r){r()}))}if(F){F.addEventListener(Qf,V,false);F.addEventListener(Xf,N,false)}function I(){M.length=0;J();if(F){F.removeEventListener(Qf,V);F.removeEventListener(Xf,N)}A.clear();k.clear();j.clear();w.clear();C.clear();g.clear();y.clear();if(l){l.clear()}z.forEach((function(r){r()}))}function W(r){nr(!!r,"invalid args to regl({...})");nr.type(r,"object","invalid args to regl({...})");function t(r){var t=e({},r);delete t.uniforms;delete t.attributes;delete t.context;delete t.vao;if("stencil"in t&&t.stencil.op){t.stencil.opBack=t.stencil.opFront=t.stencil.op;delete t.stencil.op}function n(r){if(r in t){var e=t[r];delete t[r];Object.keys(e).forEach((function(n){t[r+"."+n]=e[n]}))}}n("blend");n("depth");n("cull");n("stencil");n("polygonOffset");n("scissor");n("sample");if("vao"in r){t.vao=r.vao}return t}function n(r,e){var t={};var n={};Object.keys(r).forEach((function(a){var i=r[a];if(br.isDynamic(i)){n[a]=br.unbox(i,a);return}else if(e&&Array.isArray(i)){for(var o=0;o<i.length;++o){if(br.isDynamic(i[o])){n[a]=br.unbox(i,a);return}}}t[a]=i}));return{dynamic:n,static:t}}var a=n(r.context||{},true);var o=n(r.uniforms||{},true);var f=n(r.attributes||{},false);var u=n(t(r),false);var s={gpuTime:0,cpuTime:0,count:0};var l=O.compile(u,f,o,a,s);var c=l.draw;var v=l.batch;var d=l.scope;var p=[];function b(r){while(p.length<r){p.push(null)}return p}function m(r,e){var t;if(i){nr.raise("context lost")}if(typeof r==="function"){return d.call(this,null,r,0)}else if(typeof e==="function"){if(typeof r==="number"){for(t=0;t<r;++t){d.call(this,null,e,t)}}else if(Array.isArray(r)){for(t=0;t<r.length;++t){d.call(this,r[t],e,t)}}else{return d.call(this,r,e,0)}}else if(typeof r==="number"){if(r>0){return v.call(this,b(r|0),r|0)}}else if(Array.isArray(r)){if(r.length){return v.call(this,r,r.length)}}else{return c.call(this,r)}}return e(m,{stats:s,destroy:function(){l.destroy()}})}var L=k.setFBO=W({framebuffer:br.define.call(null,Yf,"framebuffer")});function U(r,e){var t=0;O.procs.poll();var a=e.color;if(a){n.clearColor(+a[0]||0,+a[1]||0,+a[2]||0,+a[3]||0);t|=Pf}if("depth"in e){n.clearDepth(+e.depth);t|=Gf}if("stencil"in e){n.clearStencil(e.stencil|0);t|=Hf}nr(!!t,"called regl.clear with no buffer specified");n.clear(t)}function q(r){nr(typeof r==="object"&&r,"regl.clear() takes an object as input");if("framebuffer"in r){if(r.framebuffer&&r.framebuffer_reglType==="framebufferCube"){for(var t=0;t<6;++t){L(e({framebuffer:r.framebuffer.faces[t]},r),U)}}else{L(r,U)}}else{U(null,r)}}function P(r){nr.type(r,"function","regl.frame() callback must be a function");M.push(r);function e(){var e=ru(M,r);nr(e>=0,"cannot cancel a frame twice");function t(){var r=ru(M,t);M[r]=M[M.length-1];M.length-=1;if(M.length<=0){J()}}M[e]=t}R();return{cancel:e}}function G(){var r=T.viewport;var e=T.scissor_box;r[0]=r[1]=e[0]=e[1]=0;p.viewportWidth=p.framebufferWidth=p.drawingBufferWidth=r[2]=e[2]=n.drawingBufferWidth;p.viewportHeight=p.framebufferHeight=p.drawingBufferHeight=r[3]=e[3]=n.drawingBufferHeight}function H(){p.tick+=1;p.time=Q();G();O.procs.poll()}function $(){C.refresh();G();O.procs.refresh();if(l){l.update()}}function Q(){return(hr()-c)/1e3}$();function X(r,e){nr.type(e,"function","listener callback must be a function");var t;switch(r){case"frame":return P(e);case"lost":t=D;break;case"restore":t=S;break;case"destroy":t=z;break;default:nr.raise("invalid event, must be one of frame,lost,restore,destroy")}t.push(e);return{cancel:function(){for(var r=0;r<t.length;++r){if(t[r]===e){t[r]=t[t.length-1];t.pop();return}}}}}var Y=e(W,{clear:q,prop:br.define.bind(null,Yf),context:br.define.bind(null,Zf),this:br.define.bind(null,Kf),draw:W({}),buffer:function(r){return y.create(r,$f,false,false)},elements:function(r){return g.create(r,false)},texture:C.create2D,cube:C.createCube,renderbuffer:j.create,framebuffer:k.create,framebufferCube:k.createCube,vao:w.createVAO,attributes:a,frame:P,on:X,limits:h,hasExtension:function(r){return h.extensions.indexOf(r.toLowerCase())>=0},read:_,destroy:I,_gl:n,_refresh:$,poll:function(){H();if(l){l.update()}},now:Q,stats:u});t.onDone(null,Y);return Y}return eu}))})(v);return v.exports}var m=b();var h=r(m);var y={};var g;var w;function x(){if(w)return g;w=1;g=r;function r(r,e){if(!r||r.length==null)throw Error("Argument should be an array");if(e==null)e=1;else e=Math.floor(e);var t=Array(e*2);for(var n=0;n<e;n++){var a=-Infinity,i=Infinity,o=n,f=r.length;for(;o<f;o+=e){if(r[o]>a)a=r[o];if(r[o]<i)i=r[o]}t[n]=i;t[e+n]=a}return t}return g}var A;var C;function j(){if(C)return A;C=1;var r=x();A=e;function e(e,t,n){if(!e||e.length==null)throw Error("Argument should be an array");if(t==null)t=1;if(n==null)n=r(e,t);for(var a=0;a<t;a++){var i=n[t+a],o=n[a],f=a,u=e.length;if(i===Infinity&&o===-Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===i?1:e[f]===o?0:.5}}else if(i===Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===i?1:0}}else if(o===-Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===o?0:1}}else{var s=i-o;for(f=a;f<u;f+=t){if(!isNaN(e[f])){e[f]=s===0?.5:(e[f]-o)/s}}}}return e}return A}var k;var O;function _(){if(O)return k;O=1;k={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};return k}var T;var F;function M(){if(F)return T;F=1;var r=_();T=t;var e={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function t(t){var n,a=[],i=1,o;if(typeof t==="string"){t=t.toLowerCase();if(r[t]){a=r[t].slice();o="rgb"}else if(t==="transparent"){i=0;o="rgb";a=[0,0,0]}else if(/^#[A-Fa-f0-9]+$/.test(t)){var f=t.slice(1);var u=f.length;var s=u<=4;i=1;if(s){a=[parseInt(f[0]+f[0],16),parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16)];if(u===4){i=parseInt(f[3]+f[3],16)/255}}else{a=[parseInt(f[0]+f[1],16),parseInt(f[2]+f[3],16),parseInt(f[4]+f[5],16)];if(u===8){i=parseInt(f[6]+f[7],16)/255}}if(!a[0])a[0]=0;if(!a[1])a[1]=0;if(!a[2])a[2]=0;o="rgb"}else if(n=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var l=n[1];var c=l==="rgb";var f=l.replace(/a$/,"");o=f;var u=f==="cmyk"?4:f==="gray"?1:3;a=n[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(r,t){if(/%$/.test(r)){if(t===u)return parseFloat(r)/100;if(f==="rgb")return parseFloat(r)*255/100;return parseFloat(r)}else if(f[t]==="h"){if(/deg$/.test(r)){return parseFloat(r)}else if(e[r]!==undefined){return e[r]}}return parseFloat(r)}));if(l===f)a.push(1);i=c?1:a[u]===undefined?1:a[u];a=a.slice(0,u)}else if(t.length>10&&/[0-9](?:\s|\/)/.test(t)){a=t.match(/([0-9]+)/g).map((function(r){return parseFloat(r)}));o=t.match(/([a-z])/gi).join("").toLowerCase()}}else if(!isNaN(t)){o="rgb";a=[t>>>16,(t&65280)>>>8,t&255]}else if(Array.isArray(t)||t.length){a=[t[0],t[1],t[2]];o="rgb";i=t.length===4?t[3]:1}else if(t instanceof Object){if(t.r!=null||t.red!=null||t.R!=null){o="rgb";a=[t.r||t.red||t.R||0,t.g||t.green||t.G||0,t.b||t.blue||t.B||0]}else{o="hsl";a=[t.h||t.hue||t.H||0,t.s||t.saturation||t.S||0,t.l||t.lightness||t.L||t.b||t.brightness]}i=t.a||t.alpha||t.opacity||1;if(t.opacity!=null)i/=100}return{space:o,values:a,alpha:i}}return T}var D=M();var S=r(D);const z={min:[0,0,0],max:[255,255,255]};var B={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(r){var e=r[0]/360,t=r[1]/100,n=r[2]/100,a,i,o,f,u,s=0;if(t===0)return u=n*255,[u,u,u];i=n<.5?n*(1+t):n+t-n*t;a=2*n-i;f=[0,0,0];for(;s<3;){o=e+1/3*-(s-1);o<0?o++:o>1&&o--;u=6*o<1?a+(i-a)*6*o:2*o<1?i:3*o<2?a+(i-a)*(2/3-o)*6:a;f[s++]=u*255}return f}};z.hsl=function(r){var e=r[0]/255,t=r[1]/255,n=r[2]/255,a=Math.min(e,t,n),i=Math.max(e,t,n),o=i-a,f,u,s;if(i===a){f=0}else if(e===i){f=(t-n)/o}else if(t===i){f=2+(n-e)/o}else if(n===i){f=4+(e-t)/o}f=Math.min(f*60,360);if(f<0){f+=360}s=(a+i)/2;if(i===a){u=0}else if(s<=.5){u=o/(i+a)}else{u=o/(2-i-a)}return[f,u*100,s*100]};function E(r){if(Array.isArray(r)&&r.raw)r=String.raw(...arguments);var e;var t=S(r);if(!t.space)return[];const n=t.space[0]==="h"?B.min:z.min;const a=t.space[0]==="h"?B.max:z.max;e=Array(3);e[0]=Math.min(Math.max(t.values[0],n[0]),a[0]);e[1]=Math.min(Math.max(t.values[1],n[1]),a[1]);e[2]=Math.min(Math.max(t.values[2],n[2]),a[2]);if(t.space[0]==="h"){e=B.rgb(e)}e.push(Math.min(Math.max(t.alpha,0),1));return e}var R;var J;function V(){if(J)return R;J=1;R=function(r){switch(r){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}};return R}var N=V();var I=r(N);function W(r,e){if(e==="float"||!e)e="array";if(e==="uint")e="uint8";if(e==="uint_clamped")e="uint8_clamped";var t=I(e);var n=new t(4);var a=e!=="uint8"&&e!=="uint8_clamped";if(!r.length||typeof r==="string"){r=E(r);r[0]/=255;r[1]/=255;r[2]/=255}if(L(r)){n[0]=r[0];n[1]=r[1];n[2]=r[2];n[3]=r[3]!=null?r[3]:255;if(a){n[0]/=255;n[1]/=255;n[2]/=255;n[3]/=255}return n}if(!a){n[0]=Math.min(Math.max(Math.floor(r[0]*255),0),255);n[1]=Math.min(Math.max(Math.floor(r[1]*255),0),255);n[2]=Math.min(Math.max(Math.floor(r[2]*255),0),255);n[3]=r[3]==null?255:Math.min(Math.max(Math.floor(r[3]*255),0),255)}else{n[0]=r[0];n[1]=r[1];n[2]=r[2];n[3]=r[3]!=null?r[3]:1}return n}function L(r){if(r instanceof Uint8Array||r instanceof Uint8ClampedArray)return true;if(Array.isArray(r)&&(r[0]>1||r[0]===0)&&(r[1]>1||r[1]===0)&&(r[2]>1||r[2]===0)&&(!r[3]||r[3]>1))return true;return false}var U=Object.freeze({__proto__:null,default:W});var q=e(U);var P={exports:{}};var G;function H(){if(G)return P.exports;G=1;P.exports=r;P.exports.default=r;function r(r,t,a){a=a||2;var i=t&&t.length,o=i?t[0]*a:r.length,f=e(r,0,o,a,true),s=[];if(!f||f.next===f.prev)return s;var l,c,v,d,p,b,m;if(i)f=u(r,t,f,a);if(r.length>80*a){l=v=r[0];c=d=r[1];for(var h=a;h<o;h+=a){p=r[h];b=r[h+1];if(p<l)l=p;if(b<c)c=b;if(p>v)v=p;if(b>d)d=b}m=Math.max(v-l,d-c);m=m!==0?32767/m:0}n(f,s,a,l,c,m,0);return s}function e(r,e,t,n,a){var i,o;if(a===D(r,e,t,n)>0){for(i=e;i<t;i+=n)o=T(i,r[i],r[i+1],o)}else{for(i=t-n;i>=e;i-=n)o=T(i,r[i],r[i+1],o)}if(o&&w(o,o.next)){F(o);o=o.next}return o}function t(r,e){if(!r)return r;if(!e)e=r;var t=r,n;do{n=false;if(!t.steiner&&(w(t,t.next)||g(t.prev,t,t.next)===0)){F(t);t=e=t.prev;if(t===t.next)break;n=true}else{t=t.next}}while(n||t!==e);return e}function n(r,e,u,s,l,c,v){if(!r)return;if(!v&&c)d(r,s,l,c);var p=r,b,m;while(r.prev!==r.next){b=r.prev;m=r.next;if(c?i(r,s,l,c):a(r)){e.push(b.i/u|0);e.push(r.i/u|0);e.push(m.i/u|0);F(r);r=m.next;p=m.next;continue}r=m;if(r===p){if(!v){n(t(r),e,u,s,l,c,1)}else if(v===1){r=o(t(r),e,u);n(r,e,u,s,l,c,2)}else if(v===2){f(r,e,u,s,l,c)}break}}}function a(r){var e=r.prev,t=r,n=r.next;if(g(e,t,n)>=0)return false;var a=e.x,i=t.x,o=n.x,f=e.y,u=t.y,s=n.y;var l=a<i?a<o?a:o:i<o?i:o,c=f<u?f<s?f:s:u<s?u:s,v=a>i?a>o?a:o:i>o?i:o,d=f>u?f>s?f:s:u>s?u:s;var p=n.next;while(p!==e){if(p.x>=l&&p.x<=v&&p.y>=c&&p.y<=d&&h(a,f,i,u,o,s,p.x,p.y)&&g(p.prev,p,p.next)>=0)return false;p=p.next}return true}function i(r,e,t,n){var a=r.prev,i=r,o=r.next;if(g(a,i,o)>=0)return false;var f=a.x,u=i.x,s=o.x,l=a.y,c=i.y,v=o.y;var d=f<u?f<s?f:s:u<s?u:s,p=l<c?l<v?l:v:c<v?c:v,m=f>u?f>s?f:s:u>s?u:s,y=l>c?l>v?l:v:c>v?c:v;var w=b(d,p,e,t,n),x=b(m,y,e,t,n);var A=r.prevZ,C=r.nextZ;while(A&&A.z>=w&&C&&C.z<=x){if(A.x>=d&&A.x<=m&&A.y>=p&&A.y<=y&&A!==a&&A!==o&&h(f,l,u,c,s,v,A.x,A.y)&&g(A.prev,A,A.next)>=0)return false;A=A.prevZ;if(C.x>=d&&C.x<=m&&C.y>=p&&C.y<=y&&C!==a&&C!==o&&h(f,l,u,c,s,v,C.x,C.y)&&g(C.prev,C,C.next)>=0)return false;C=C.nextZ}while(A&&A.z>=w){if(A.x>=d&&A.x<=m&&A.y>=p&&A.y<=y&&A!==a&&A!==o&&h(f,l,u,c,s,v,A.x,A.y)&&g(A.prev,A,A.next)>=0)return false;A=A.prevZ}while(C&&C.z<=x){if(C.x>=d&&C.x<=m&&C.y>=p&&C.y<=y&&C!==a&&C!==o&&h(f,l,u,c,s,v,C.x,C.y)&&g(C.prev,C,C.next)>=0)return false;C=C.nextZ}return true}function o(r,e,n){var a=r;do{var i=a.prev,o=a.next.next;if(!w(i,o)&&x(i,a,a.next,o)&&k(i,o)&&k(o,i)){e.push(i.i/n|0);e.push(a.i/n|0);e.push(o.i/n|0);F(a);F(a.next);a=r=o}a=a.next}while(a!==r);return t(a)}function f(r,e,a,i,o,f){var u=r;do{var s=u.next.next;while(s!==u.prev){if(u.i!==s.i&&y(u,s)){var l=_(u,s);u=t(u,u.next);l=t(l,l.next);n(u,e,a,i,o,f,0);n(l,e,a,i,o,f,0);return}s=s.next}u=u.next}while(u!==r)}function u(r,t,n,a){var i=[],o,f,u,c,v;for(o=0,f=t.length;o<f;o++){u=t[o]*a;c=o<f-1?t[o+1]*a:r.length;v=e(r,u,c,a,false);if(v===v.next)v.steiner=true;i.push(m(v))}i.sort(s);for(o=0;o<i.length;o++){n=l(i[o],n)}return n}function s(r,e){return r.x-e.x}function l(r,e){var n=c(r,e);if(!n){return e}var a=_(n,r);t(a,a.next);return t(n,n.next)}function c(r,e){var t=e,n=r.x,a=r.y,i=-Infinity,o;do{if(a<=t.y&&a>=t.next.y&&t.next.y!==t.y){var f=t.x+(a-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(f<=n&&f>i){i=f;o=t.x<t.next.x?t:t.next;if(f===n)return o}}t=t.next}while(t!==e);if(!o)return null;var u=o,s=o.x,l=o.y,c=Infinity,d;t=o;do{if(n>=t.x&&t.x>=s&&n!==t.x&&h(a<l?n:i,a,s,l,a<l?i:n,a,t.x,t.y)){d=Math.abs(a-t.y)/(n-t.x);if(k(t,r)&&(d<c||d===c&&(t.x>o.x||t.x===o.x&&v(o,t)))){o=t;c=d}}t=t.next}while(t!==u);return o}function v(r,e){return g(r.prev,r,e.prev)<0&&g(e.next,r,r.next)<0}function d(r,e,t,n){var a=r;do{if(a.z===0)a.z=b(a.x,a.y,e,t,n);a.prevZ=a.prev;a.nextZ=a.next;a=a.next}while(a!==r);a.prevZ.nextZ=null;a.prevZ=null;p(a)}function p(r){var e,t,n,a,i,o,f,u,s=1;do{t=r;r=null;i=null;o=0;while(t){o++;n=t;f=0;for(e=0;e<s;e++){f++;n=n.nextZ;if(!n)break}u=s;while(f>0||u>0&&n){if(f!==0&&(u===0||!n||t.z<=n.z)){a=t;t=t.nextZ;f--}else{a=n;n=n.nextZ;u--}if(i)i.nextZ=a;else r=a;a.prevZ=i;i=a}t=n}i.nextZ=null;s*=2}while(o>1);return r}function b(r,e,t,n,a){r=(r-t)*a|0;e=(e-n)*a|0;r=(r|r<<8)&16711935;r=(r|r<<4)&252645135;r=(r|r<<2)&858993459;r=(r|r<<1)&1431655765;e=(e|e<<8)&16711935;e=(e|e<<4)&252645135;e=(e|e<<2)&858993459;e=(e|e<<1)&1431655765;return r|e<<1}function m(r){var e=r,t=r;do{if(e.x<t.x||e.x===t.x&&e.y<t.y)t=e;e=e.next}while(e!==r);return t}function h(r,e,t,n,a,i,o,f){return(a-o)*(e-f)>=(r-o)*(i-f)&&(r-o)*(n-f)>=(t-o)*(e-f)&&(t-o)*(i-f)>=(a-o)*(n-f)}function y(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!j(r,e)&&(k(r,e)&&k(e,r)&&O(r,e)&&(g(r.prev,r,e.prev)||g(r,e.prev,e))||w(r,e)&&g(r.prev,r,r.next)>0&&g(e.prev,e,e.next)>0)}function g(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function w(r,e){return r.x===e.x&&r.y===e.y}function x(r,e,t,n){var a=C(g(r,e,t));var i=C(g(r,e,n));var o=C(g(t,n,r));var f=C(g(t,n,e));if(a!==i&&o!==f)return true;if(a===0&&A(r,t,e))return true;if(i===0&&A(r,n,e))return true;if(o===0&&A(t,r,n))return true;if(f===0&&A(t,e,n))return true;return false}function A(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function C(r){return r>0?1:r<0?-1:0}function j(r,e){var t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&x(t,t.next,r,e))return true;t=t.next}while(t!==r);return false}function k(r,e){return g(r.prev,r,r.next)<0?g(r,e,r.next)>=0&&g(r,r.prev,e)>=0:g(r,e,r.prev)<0||g(r,r.next,e)<0}function O(r,e){var t=r,n=false,a=(r.x+e.x)/2,i=(r.y+e.y)/2;do{if(t.y>i!==t.next.y>i&&t.next.y!==t.y&&a<(t.next.x-t.x)*(i-t.y)/(t.next.y-t.y)+t.x)n=!n;t=t.next}while(t!==r);return n}function _(r,e){var t=new M(r.i,r.x,r.y),n=new M(e.i,e.x,e.y),a=r.next,i=e.prev;r.next=e;e.prev=r;t.next=a;a.prev=t;n.next=t;t.prev=n;i.next=n;n.prev=i;return n}function T(r,e,t,n){var a=new M(r,e,t);if(!n){a.prev=a;a.next=a}else{a.next=n.next;a.prev=n;n.next.prev=a;n.next=a}return a}function F(r){r.next.prev=r.prev;r.prev.next=r.next;if(r.prevZ)r.prevZ.nextZ=r.nextZ;if(r.nextZ)r.nextZ.prevZ=r.prevZ}function M(r,e,t){this.i=r;this.x=e;this.y=t;this.prev=null;this.next=null;this.z=0;this.prevZ=null;this.nextZ=null;this.steiner=false}r.deviation=function(r,e,t,n){var a=e&&e.length;var i=a?e[0]*t:r.length;var o=Math.abs(D(r,0,i,t));if(a){for(var f=0,u=e.length;f<u;f++){var s=e[f]*t;var l=f<u-1?e[f+1]*t:r.length;o-=Math.abs(D(r,s,l,t))}}var c=0;for(f=0;f<n.length;f+=3){var v=n[f]*t;var d=n[f+1]*t;var p=n[f+2]*t;c+=Math.abs((r[v]-r[p])*(r[d+1]-r[v+1])-(r[v]-r[d])*(r[p+1]-r[v+1]))}return o===0&&c===0?0:Math.abs((c-o)/o)};function D(r,e,t,n){var a=0;for(var i=e,o=t-n;i<t;i+=n){a+=(r[o]-r[i])*(r[i+1]+r[o+1]);o=i}return a}r.flatten=function(r){var e=r[0][0].length,t={vertices:[],holes:[],dimensions:e},n=0;for(var a=0;a<r.length;a++){for(var i=0;i<r[a].length;i++){for(var o=0;o<e;o++)t.vertices.push(r[a][i][o])}if(a>0){n+=r[a-1].length;t.holes.push(n)}}return t};return P.exports}var $={};var Q={};const X="precision highp float;\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}";var Y=Object.freeze({__proto__:null,default:X});var Z=e(Y);const K="precision highp float;\n\nuniform sampler2D dashPattern;\n\nuniform float dashSize, pixelRatio, thickness, opacity;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}";var rr=Object.freeze({__proto__:null,default:K});var er=e(rr);var tr;function nr(){if(tr)return Q;tr=1;var r=Q&&Q.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Q,"__esModule",{value:true});Q.createRectShader=void 0;const e=r(Z);const t=r(er);function n(r,n,a){const i=Object.assign(Object.assign({},a),{vert:e.default,frag:t.default,attributes:{lineEnd:{buffer:n,divisor:0,stride:8,offset:0},lineTop:{buffer:n,divisor:0,stride:8,offset:4},aCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8,divisor:1},bCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:16,divisor:1},aCoordFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:8,divisor:1},bCoordFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:16,divisor:1},color:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:0,divisor:1}}});return r(i)}Q.createRectShader=n;return Q}var ar={};const ir="precision highp float;\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}";var or=Object.freeze({__proto__:null,default:ir});var fr=e(or);const ur="precision highp float;\n\nuniform sampler2D dashPattern;\nuniform float dashSize, pixelRatio, thickness, opacity, miterMode;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}";var sr=Object.freeze({__proto__:null,default:ur});var lr=e(sr);var cr;function vr(){if(cr)return ar;cr=1;var r=ar&&ar.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ar,"__esModule",{value:true});ar.createMiterShader=void 0;const e=r(fr);const t=r(lr);function n(r,n,a){const i=Object.assign(Object.assign({},a),{cull:{enable:true,face:"back"},vert:e.default,frag:t.default,attributes:{lineEnd:{buffer:n,divisor:0,stride:8,offset:0},lineTop:{buffer:n,divisor:0,stride:8,offset:4},aColor:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:0,divisor:1},bColor:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:4,divisor:1},prevCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:0,divisor:1},aCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8,divisor:1},bCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:16,divisor:1},nextCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:24,divisor:1}}});return r(i)}ar.createMiterShader=n;return ar}var dr={};const pr="precision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio;\nuniform vec4 viewport;\nuniform float opacity;\nuniform float depth;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}";var br=Object.freeze({__proto__:null,default:pr});var mr=e(br);const hr="precision highp float;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}";var yr=Object.freeze({__proto__:null,default:hr});var gr=e(yr);var wr;function xr(){if(wr)return dr;wr=1;var r=dr&&dr.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(dr,"__esModule",{value:true});dr.createFillShader=void 0;const e=r(mr);const t=r(gr);function n(r,{blend:n,scissor:a,stencil:i,viewport:o,uniforms:f}){const u={blend:n,scissor:a,stencil:i,viewport:o,primitive:"triangles",elements:(r,e)=>e.triangles,offset:0,vert:e.default,frag:t.default,uniforms:Object.assign(Object.assign({},f),{color:(r,e)=>e.fillColor}),attributes:{position:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8},positionFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:8}},depth:{enable:false}};return r(u)}dr.createFillShader=n;return dr}var Ar;function Cr(){if(Ar)return $;Ar=1;Object.defineProperty($,"__esModule",{value:true});$.createShaders=void 0;const r=Dr();const e=nr();const t=vr();const n=xr();function a(e){return{primitive:"triangle strip",instances:(r,e)=>e.count,count:4,offset:0,uniforms:{miterMode:(e,t)=>t.join===r.JoinStyle.Round?2:1,miterLimit:(r,e)=>e.miterLimit,scale:(r,e)=>e.scale,scaleFract:(r,e)=>e.scaleFract,translateFract:(r,e)=>e.translateFract,translate:(r,e)=>e.translate,thickness:(r,e)=>e.thickness,dashPattern:(r,e)=>e.dashTexture,opacity:(r,e)=>e.opacity,pixelRatio:r=>r.pixelRatio,dashSize:(r,e)=>e.dashLength,viewport:({viewportWidth:r,viewportHeight:e},{viewport:{x:t,y:n}})=>[t||0,n||0,r,e],depth:(r,e)=>e.depth},blend:{enable:true,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:(r,e)=>({enable:!e.overlay}),stencil:{enable:false},scissor:{enable:true,box:(r,e)=>e.viewport},viewport:(r,e)=>e.viewport}}function i(r){const i=r.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]});const o=a();const f=e.createRectShader(r,i,o);let u=null;try{u=t.createMiterShader(r,i,o)}catch(r){u=f;console.log("No support for miter lines.")}const s=n.createFillShader(r,o);return{rect:f,miter:u,fill:s}}$.createShaders=i;return $}var jr={};var kr;function Or(){if(kr)return jr;kr=1;Object.defineProperty(jr,"__esModule",{value:true});jr.updateDashTextureAndGetLength=void 0;const r=2;const e=new Uint8Array(8).fill(255);function t(t,n){let a=0;let i=null;if(n.length<2){a=1;i=e}else{a=0;for(let r=0;r<n.length;++r){a+=n[r]}i=new Uint8Array(a*r);let e=0;let t=255;for(let a=0;a<2;a++){for(let a=0;a<n.length;++a){for(let o=0,f=n[a]*r*.5;o<f;++o){i[e++]=t}t^=255}}}t({channels:1,data:i,width:i.length,height:1,mag:"linear",min:"linear"});return a}jr.updateDashTextureAndGetLength=t;return jr}var _r={};var Tr;function Fr(){if(Tr)return _r;Tr=1;var r=_r&&_r.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_r,"__esModule",{value:true});_r.updateColorBuffer=void 0;const e=r(q);function t(r){return!Array.isArray(r)||!Array.isArray(r[0])}function n(r,n,a,i){if(t(a)){let r=e.default(a,"uint8");for(let e=0;e<i+1;e++){n.set(r,e*4)}}else{for(let r=0;r<i;r++){let t=e.default(a[r],"uint8");n.set(t,r*4)}n.set(e.default(a[0],"uint8"),i*4)}r.subdata(n)}_r.updateColorBuffer=n;return _r}var Mr;function Dr(){if(Mr)return y;Mr=1;(function(r){var e=y&&y.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(r,"__esModule",{value:true});r.JoinStyle=void 0;const t=e(x());const n=e(j());const a=e(q);const i=e(H());const o=Cr();const f=Or();const u=Fr();var s;(function(r){r["Bevel"]="bevel";r["Round"]="round";r["Rect"]="rect"})(s=r.JoinStyle||(r.JoinStyle={}));function l(r){const e=o.createShaders(r);let l=0;return{createShape(o,c){const v=l;l++;const d=new Float64Array(o.length);const p=new Float64Array(o.length+6);const b=new Float32Array(p.length);const m=new Float32Array(p.length);const h=new Uint8Array(2*o.length+4);const y=r.buffer({usage:"dynamic",type:"uint8",data:h});const g=r.buffer({usage:"dynamic",type:"float",data:b});const w=r.buffer({usage:"dynamic",type:"float",data:m});const x=r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"});return l=>{const A=Object.assign(Object.assign({count:Math.floor(o.length/2),color:"white",fill:null,thickness:1,dashes:null,join:s.Bevel,miterLimit:1,close:false,opacity:1,overlay:false,range:[-1,-1,1,1],viewport:{x:0,y:0,width:r._gl.drawingBufferWidth,height:r._gl.drawingBufferHeight},depth:-.01*v},c),l);let{count:C,color:j,close:k,join:O,range:_,dashes:T,fill:F}=A;const M=2*C;const D=t.default(o.length>M?o.slice(0,M):o,2);d.set(o);n.default(d,2,D);const S=o[0]===o[M-2]&&o[1]===o[M-1];if(k){if(S){p[0]=d[M-4];p[1]=d[M-3]}else{p[0]=d[M-2];p[1]=d[M-1]}}else{p[0]=d[0];p[1]=d[1]}p.set(d,2);if(k){if(S){p[M+2]=d[2];p[M+3]=d[3];C--}else{p[M+2]=d[0];p[M+3]=d[1];p[M+4]=d[2];p[M+5]=d[3]}}else{p[M+2]=d[M-2];p[M+3]=d[M-1];p[M+4]=d[M-2];p[M+5]=d[M-1]}b.set(p);for(let r=0;r<M;r++)m[r]=p[r]-b[r];g.subdata(b);w.subdata(m);const z=D[2]-D[0];const B=D[3]-D[1];const E=_[2]-_[0];const R=_[3]-_[1];const J=[z/E,B/R];const V=[-_[0]/E+D[0]/E||0,-_[1]/R+D[1]/R||0];const N=new Float32Array(J);const I=[J[0]-N[0],J[1]-N[1]];const W=new Float32Array(V);const L=[V[0]-W[0],V[1]-W[1]];const U=T?f.updateDashTextureAndGetLength(x,T):1;if(j)u.updateColorBuffer(y,h,j,C);const q=Object.assign(Object.assign({},A),{translate:V,translateFract:L,scale:J,scaleFract:I,colorBuffer:y,positionBuffer:g,positionFractBuffer:w,dashLength:U,dashTexture:x,triangles:F?i.default(o):null,fillColor:F?a.default(F,"uint8"):null});r._refresh();if(F)e.fill(q);if(O===s.Rect)e.rect(q);else e.miter(q)}}}}r.default=l})(y);return y}var Sr=Dr();var zr=r(Sr);class Br{constructor(r,e,t,n,a,i={},o=false){this.createShape=r;this.identifier=e;this.points=t;this.outlineColor=n;this.fillColor=a;this.shapeProps=i;this.disabled=o;const f=t.toArray();this.pointsArray=new Float64Array(f.length*2+4);l(f).forEach(((r,e)=>this.pointsArray[e]=r));this.initialFillColor=a;this.draw=r(this.pointsArray,{count:f.length,thickness:2,join:"rect",fill:this.fillColor,color:this.outlineColor,...i})}updateFillColor(r,e=false){if(r!=null){this.fillColor=typeof r==="string"?r:s.toHexString(r);this.initialFillColor=e?this.fillColor:this.initialFillColor}}updateOutlineColor(r){if(r!=null){this.outlineColor=typeof r==="string"?r:s.toHexString(r)}}updatePoints(r){if(r!=null){this.points=r;l(r.toArray()).forEach(((r,e)=>this.pointsArray[e]=r))}}}function Er(r,...e){let a=t.create(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let i=t.create();e.filter((r=>r.points.valid)).forEach((e=>{e.points.toArray().map((e=>r.transformNdcPointToViewport(e))).forEach((r=>{a=t.create(Math.min(r.x,a.x),Math.min(r.y,a.y));i=t.create(Math.max(r.x,i.x),Math.max(r.y,i.y))}))}));return n.fromPoints(a,i)}class Rr{constructor(r,e,t,n,a){this.valid=r;this.worldOrigin=e;this.worldEnd=t;this.origin=n;this.end=a}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[this.worldOrigin,this.worldEnd]}toArray(){return[this.origin,this.end]}}class Jr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={thickness:3}){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i)}}class Vr{constructor(r,e,t){this.valid=r;this.world=e;this.ndc=t}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return this.world}toArray(){return this.ndc}}class Nr extends Br{constructor(r,e,t,n="#000000",a={join:"round"},i=false){super(r,e,t,typeof n==="string"?n:s.toHexString(n),undefined,a);this.disabled=i}setDisabled(r){this.disabled=r}}function Ir(r,e,t){const n=a.fromMatrixPosition(r);return new Rr(t.points.valid,n,t.points.worldBase,a.transformMatrix(n,e.projectionViewMatrix),t.points.base)}function Wr(r,e,t,n=3){if(e!=null&&t!=null){const o=a.distance(e.points.worldBase,t);const f=a.distance(e.points.worldTip,t);const u=o<f?e.points.worldBase:e.points.worldTip;const s=a.scale(.5,a.add(u,t));const l=i.create({origin:s,direction:a.normalize(a.subtract(e.points.worldRight,e.points.worldLeft))});const c=[0,.05,.1,.15].map((r=>Lr(u,i.at(l,n*2),t,r)));return new Vr(e.points.valid,c,c.map((e=>a.transformMatrix(e,r.projectionViewMatrix))))}return undefined}function Lr(r,e,t,n){const i=1-n;const o=i*i;const f=2*i*n;const u=n*n;return a.create(o*r.x+f*e.x+u*t.x,o*r.y+f*e.y+u*t.y,o*r.z+f*e.z+u*t.z)}class Ur{constructor(r,e,t,n){this.valid=r;this.world=e;this.screen=t;this.computeShortestDistance=n}shortestDistanceFrom(r){return this.computeShortestDistance!=null?this.computeShortestDistance(r):this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[...this.world,this.world[0]]}toArray(){return[...this.screen,this.screen[0]]}}class qr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={}){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i)}}class Pr{constructor(r,e,t,n,a,i,o,f,u){this.valid=r;this.worldBase=e;this.worldLeft=t;this.worldRight=n;this.worldTip=a;this.base=i;this.left=o;this.right=f;this.tip=u}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[this.worldBase,this.worldLeft,this.worldRight,this.worldTip]}toArray(){return[this.base,this.left,this.tip,this.right,this.base]}}class Gr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={},o=false){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i);this.disabled=o}setDisabled(r){this.disabled=r}isDisabled(){return!!this.disabled}}function Hr(r,e,t=3,n=1){return Xr(r,e,a.right(),t,n)}function $r(r,e,t=3,n=1){return Xr(r,e,a.up(),t,n)}function Qr(r,e,t=3,n=1){return Xr(r,e,a.back(),t,n)}function Xr(r,e,t,n,u=1){const s=a.transformMatrix(t,o.makeRotation(f.fromMatrixRotation(r)));const l=a.fromMatrixPosition(r);const c=a.add(l,a.scale(n*9,s));const v=a.normalize(a.cross(s,a.normalize(e.viewVector)));const d=i.create({origin:c,direction:v});const p=i.create({origin:c,direction:s});const b=i.at(d,-(n*u*1.25));const m=i.at(d,n*u*1.25);const h=i.at(p,n*u*3);return new Pr(!isNaN(v.x),c,b,m,h,a.transformMatrix(c,e.projectionViewMatrix),a.transformMatrix(b,e.projectionViewMatrix),a.transformMatrix(m,e.projectionViewMatrix),a.transformMatrix(h,e.projectionViewMatrix))}function Yr(r,e,t=3,n=1){return re(r,e,a.right(),a.up(),t,n)}function Zr(r,e,t=3,n=1){return re(r,e,a.right(),a.back(),t,n)}function Kr(r,e,t=3,n=1){return re(r,e,a.back(),a.up(),t,n)}function re(r,e,t,n,s,l=1){const c=a.transformMatrix(a.add(t,n),o.makeRotation(f.fromMatrixRotation(r)));const v=a.transformMatrix(t,o.makeRotation(f.fromMatrixRotation(r)));const d=a.transformMatrix(n,o.makeRotation(f.fromMatrixRotation(r)));const p=a.fromMatrixPosition(r);const b=a.add(p,a.scale(s*2.5,c));const m=i.create({origin:b,direction:v});const h=i.create({origin:b,direction:d});const y=a.cross(v,d);const g=a.rotateAboutAxis(u.toRadians(45),i.at(h,-(s*l)),y,b);const w=a.rotateAboutAxis(u.toRadians(45),i.at(m,s*l),y,b);const x=a.rotateAboutAxis(u.toRadians(45),i.at(h,s*l),y,b);const A=a.rotateAboutAxis(u.toRadians(45),i.at(m,-(s*l)),y,b);return new Pr(a.dot(v,e.direction)!==-1&&a.dot(d,e.direction)!==-1,g,A,w,x,a.transformMatrix(g,e.projectionViewMatrix),a.transformMatrix(A,e.projectionViewMatrix),a.transformMatrix(w,e.projectionViewMatrix),a.transformMatrix(x,e.projectionViewMatrix))}const ee=.005;const te=.00625;const ne=158e4;const ae=52e4;const ie=950;const oe=45;class fe{constructor(r){this.canvasElement=r;this.availableElements=[];this.drawableElements=[];this.viewport=new c(r.width,r.height)}dispose(){var r;(r=this.reglFrameDisposable)===null||r===void 0?void 0:r.cancel()}updateFrame(r,e=true){this.frame=r;if(e){this.updateAndDraw()}}updateDimensions(r){this.viewport=new c(r.width,r.height);this.createOrUpdateElements()}updateAndDraw(){if(this.frame!=null&&this.hasData()){this.createOrUpdateElements();this.sortMeshes(this.frame,...this.availableElements);this.draw()}}getDrawableElements(){return this.drawableElements}draw(){var r;if(this.reglFrameDisposable==null){this.reglFrameDisposable=(r=this.reglCommand)===null||r===void 0?void 0:r.frame((()=>{this.drawableElements.forEach((r=>r===null||r===void 0?void 0:r.draw({fill:r.fillColor,opacity:!!r.disabled?.2:1})))}))}}clear(){var r;(r=this.reglCommand)===null||r===void 0?void 0:r.clear({color:[0,0,0,0]})}sortMeshes(r,...e){const t=(e,t)=>e.points.shortestDistanceFrom(r.scene.camera.position)-t.points.shortestDistanceFrom(r.scene.camera.position);this.drawableElements=e.filter((r=>r!=null)).filter((r=>r.points.valid)).sort(t).reverse()}computeTriangleSize(r,e){const t=e.scene.camera.isOrthographic()?e.scene.camera.fovHeight*te:a.magnitude(a.subtract(r,e.scene.camera.position))*ee;const n=this.canvasElement.height*this.canvasElement.width;const i=ne/(n+ae);const o=this.canvasElement.height<650?ie/(this.canvasElement.height+oe):1;const f=Math.max(i,o,1);return t*f}}export{Jr as A,Ur as M,fe as R,Gr as T,qr as a,Ir as b,Xr as c,Pr as d,Er as e,Yr as f,Zr as g,Kr as h,Wr as i,Nr as j,h as r,zr as s,Hr as x,$r as y,Qr as z};
5
- //# sourceMappingURL=p-BhgrvpJL.js.map
4
+ import{g as r,a as e}from"./p-CG9AChtV.js";import{p as t,g as n,v as a,r as i,m as o,q as f,a as u}from"./p-Tvs4yxd5.js";import{c as s}from"./p-BZtylp5V.js";import{f as l}from"./p-B2SMWIov.js";import"./p-DLV-gg65.js";import{V as c}from"./p-Dpyl9pSp.js";var v={exports:{}};var d=v.exports;var p;function b(){if(p)return v.exports;p=1;(function(r,e){(function(e,t){r.exports=t()})(d,(function(){var r=function(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array||r instanceof Uint8ClampedArray};var e=function(r,e){var t=Object.keys(e);for(var n=0;n<t.length;++n){r[t[n]]=e[t[n]]}return r};var t="\n";function n(r){if(typeof atob!=="undefined"){return atob(r)}return"base64:"+r}function a(r){var e=new Error("(regl) "+r);console.error(e);throw e}function i(r,e){if(!r){a(e)}}function o(r){if(r){return": "+r}return""}function f(r,e,t){if(!(r in e)){a("unknown parameter ("+r+")"+o(t)+". possible values: "+Object.keys(e).join())}}function u(e,t){if(!r(e)){a("invalid parameter type"+o(t)+". must be a typed array")}}function s(r,e){switch(e){case"number":return typeof r==="number";case"object":return typeof r==="object";case"string":return typeof r==="string";case"boolean":return typeof r==="boolean";case"function":return typeof r==="function";case"undefined":return typeof r==="undefined";case"symbol":return typeof r==="symbol"}}function l(r,e,t){if(!s(r,e)){a("invalid parameter type"+o(t)+". expected "+e+", got "+typeof r)}}function c(r,e){if(!(r>=0&&(r|0)===r)){a("invalid parameter type, ("+r+")"+o(e)+". must be a nonnegative integer")}}function v(r,e,t){if(e.indexOf(r)<0){a("invalid value"+o(t)+". must be one of: "+e)}}var d=["gl","canvas","container","attributes","pixelRatio","extensions","optionalExtensions","profile","onDone"];function p(r){Object.keys(r).forEach((function(r){if(d.indexOf(r)<0){a('invalid regl constructor argument "'+r+'". must be one of '+d)}}))}function b(r,e){r=r+"";while(r.length<e){r=" "+r}return r}function m(){this.name="unknown";this.lines=[];this.index={};this.hasErrors=false}function h(r,e){this.number=r;this.line=e;this.errors=[]}function y(r,e,t){this.file=r;this.line=e;this.message=t}function g(){var r=new Error;var e=(r.stack||r).toString();var t=/compileProcedure.*\n\s*at.*\((.*)\)/.exec(e);if(t){return t[1]}var n=/compileProcedure.*\n\s*at\s+(.*)(\n|$)/.exec(e);if(n){return n[1]}return"unknown"}function w(){var r=new Error;var e=(r.stack||r).toString();var t=/at REGLCommand.*\n\s+at.*\((.*)\)/.exec(e);if(t){return t[1]}var n=/at REGLCommand.*\n\s+at\s+(.*)\n/.exec(e);if(n){return n[1]}return"unknown"}function x(r,e){var t=r.split("\n");var a=1;var i=0;var o={unknown:new m,0:new m};o.unknown.name=o[0].name=e||g();o.unknown.lines.push(new h(0,""));for(var f=0;f<t.length;++f){var u=t[f];var s=/^\s*#\s*(\w+)\s+(.+)\s*$/.exec(u);if(s){switch(s[1]){case"line":var l=/(\d+)(\s+\d+)?/.exec(s[2]);if(l){a=l[1]|0;if(l[2]){i=l[2]|0;if(!(i in o)){o[i]=new m}}}break;case"define":var c=/SHADER_NAME(_B64)?\s+(.*)$/.exec(s[2]);if(c){o[i].name=c[1]?n(c[2]):c[2]}break}}o[i].lines.push(new h(a++,u))}Object.keys(o).forEach((function(r){var e=o[r];e.lines.forEach((function(r){e.index[r.number]=r}))}));return o}function A(r){var e=[];r.split("\n").forEach((function(r){if(r.length<5){return}var t=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(r);if(t){e.push(new y(t[1]|0,t[2]|0,t[3].trim()))}else if(r.length>0){e.push(new y("unknown",0,r))}}));return e}function C(r,e){e.forEach((function(e){var t=r[e.file];if(t){var n=t.index[e.line];if(n){n.errors.push(e);t.hasErrors=true;return}}r.unknown.hasErrors=true;r.unknown.lines[0].errors.push(e)}))}function j(r,e,n,a,o){if(!r.getShaderParameter(e,r.COMPILE_STATUS)){var f=r.getShaderInfoLog(e);var u=a===r.FRAGMENT_SHADER?"fragment":"vertex";D(n,"string",u+" shader source must be a string",o);var s=x(n,o);var l=A(f);C(s,l);Object.keys(s).forEach((function(r){var e=s[r];if(!e.hasErrors){return}var n=[""];var a=[""];function i(r,e){n.push(r);a.push(e||"")}i("file number "+r+": "+e.name+"\n","color:red;text-decoration:underline;font-weight:bold");e.lines.forEach((function(r){if(r.errors.length>0){i(b(r.number,4)+"| ","background-color:yellow; font-weight:bold");i(r.line+t,"color:red; background-color:yellow; font-weight:bold");var e=0;r.errors.forEach((function(n){var a=n.message;var o=/^\s*'(.*)'\s*:\s*(.*)$/.exec(a);if(o){var f=o[1];a=o[2];switch(f){case"assign":f="=";break}e=Math.max(r.line.indexOf(f,e),0)}else{e=0}i(b("| ",6));i(b("^^^",e+3)+t,"font-weight:bold");i(b("| ",6));i(a+t,"font-weight:bold")}));i(b("| ",6)+t)}else{i(b(r.number,4)+"| ");i(r.line+t,"color:red")}}));if(typeof document!=="undefined"&&!window.chrome){a[0]=n.join("%c");console.log.apply(console,a)}else{console.log(n.join(""))}}));i.raise("Error compiling "+u+" shader, "+s[0].name)}}function k(r,e,n,a,o){if(!r.getProgramParameter(e,r.LINK_STATUS)){var f=r.getProgramInfoLog(e);var u=x(n,o);var s=x(a,o);var l='Error linking program with vertex shader, "'+s[0].name+'", and fragment shader "'+u[0].name+'"';if(typeof document!=="undefined"){console.log("%c"+l+t+"%c"+f,"color:red;text-decoration:underline;font-weight:bold","color:red")}else{console.log(l+t+f)}i.raise(l)}}function O(r){r._commandRef=g()}function _(r,e,t,n){O(r);function a(r){if(r){return n.id(r)}return 0}r._fragId=a(r.static.frag);r._vertId=a(r.static.vert);function i(r,e){Object.keys(e).forEach((function(e){r[n.id(e)]=true}))}var o=r._uniformSet={};i(o,e.static);i(o,e.dynamic);var f=r._attributeSet={};i(f,t.static);i(f,t.dynamic);r._hasCount="count"in r.static||"count"in r.dynamic||"elements"in r.static||"elements"in r.dynamic}function T(r,e){var t=w();a(r+" in command "+(e||g())+(t==="unknown"?"":" called from "+t))}function F(r,e,t){if(!r){T(e,t||g())}}function M(r,e,t,n){if(!(r in e)){T("unknown parameter ("+r+")"+o(t)+". possible values: "+Object.keys(e).join(),n||g())}}function D(r,e,t,n){if(!s(r,e)){T("invalid parameter type"+o(t)+". expected "+e+", got "+typeof r,n||g())}}function S(r){r()}function z(r,e,t){if(r.texture){v(r.texture._texture.internalformat,e,"unsupported texture format for attachment")}else{v(r.renderbuffer._renderbuffer.format,t,"unsupported renderbuffer format for attachment")}}var B=33071;var E=9728;var R=9984;var J=9985;var V=9986;var N=9987;var I=5120;var W=5121;var L=5122;var U=5123;var q=5124;var P=5125;var G=5126;var H=32819;var $=32820;var Q=33635;var X=34042;var Y=36193;var Z={};Z[I]=Z[W]=1;Z[L]=Z[U]=Z[Y]=Z[Q]=Z[H]=Z[$]=2;Z[q]=Z[P]=Z[G]=Z[X]=4;function K(r,e){if(r===$||r===H||r===Q){return 2}else if(r===X){return 4}else{return Z[r]*e}}function rr(r){return!(r&r-1)&&!!r}function er(r,e,t){var n;var a=e.width;var o=e.height;var f=e.channels;i(a>0&&a<=t.maxTextureSize&&o>0&&o<=t.maxTextureSize,"invalid texture shape");if(r.wrapS!==B||r.wrapT!==B){i(rr(a)&&rr(o),"incompatible wrap mode for texture, both width and height must be power of 2")}if(e.mipmask===1){if(a!==1&&o!==1){i(r.minFilter!==R&&r.minFilter!==V&&r.minFilter!==J&&r.minFilter!==N,"min filter requires mipmap")}}else{i(rr(a)&&rr(o),"texture must be a square power of 2 to support mipmapping");i(e.mipmask===(a<<1)-1,"missing or incomplete mipmap data")}if(e.type===G){if(t.extensions.indexOf("oes_texture_float_linear")<0){i(r.minFilter===E&&r.magFilter===E,"filter not supported, must enable oes_texture_float_linear")}i(!r.genMipmaps,"mipmap generation not supported with float textures")}var u=e.images;for(n=0;n<16;++n){if(u[n]){var s=a>>n;var l=o>>n;i(e.mipmask&1<<n,"missing mipmap data");var c=u[n];i(c.width===s&&c.height===l,"invalid shape for mip images");i(c.format===e.format&&c.internalformat===e.internalformat&&c.type===e.type,"incompatible type for mip image");if(c.compressed);else if(c.data){var v=Math.ceil(K(c.type,f)*s/c.unpackAlignment)*c.unpackAlignment;i(c.data.byteLength===v*l,"invalid data for image, buffer size is inconsistent with image format")}else;}else if(!r.genMipmaps){i((e.mipmask&1<<n)===0,"extra mipmap data")}}if(e.compressed){i(!r.genMipmaps,"mipmap generation for compressed images not supported")}}function tr(r,e,t,n){var a=r.width;var o=r.height;var f=r.channels;i(a>0&&a<=n.maxTextureSize&&o>0&&o<=n.maxTextureSize,"invalid texture shape");i(a===o,"cube map must be square");i(e.wrapS===B&&e.wrapT===B,"wrap mode not supported by cube map");for(var u=0;u<t.length;++u){var s=t[u];i(s.width===a&&s.height===o,"inconsistent cube map face shape");if(e.genMipmaps){i(!s.compressed,"can not generate mipmap for compressed textures");i(s.mipmask===1,"can not specify mipmaps and generate mipmaps")}var l=s.images;for(var c=0;c<16;++c){var v=l[c];if(v){var d=a>>c;var p=o>>c;i(s.mipmask&1<<c,"missing mipmap data");i(v.width===d&&v.height===p,"invalid shape for mip images");i(v.format===r.format&&v.internalformat===r.internalformat&&v.type===r.type,"incompatible type for mip image");if(v.compressed);else if(v.data){i(v.data.byteLength===d*p*Math.max(K(v.type,f),v.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format")}else;}}}}var nr=e(i,{optional:S,raise:a,commandRaise:T,command:F,parameter:f,commandParameter:M,constructor:p,type:l,commandType:D,isTypedArray:u,nni:c,oneOf:v,shaderError:j,linkError:k,callSite:w,saveCommandRef:O,saveDrawInfo:_,framebufferFormat:z,guessCommand:g,texture2D:er,textureCube:tr});var ar=0;var ir=0;var or=5;var fr=6;function ur(r,e){this.id=ar++;this.type=r;this.data=e}function sr(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function lr(r){if(r.length===0){return[]}var e=r.charAt(0);var t=r.charAt(r.length-1);if(r.length>1&&e===t&&(e==='"'||e==="'")){return['"'+sr(r.substr(1,r.length-2))+'"']}var n=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(r);if(n){return lr(r.substr(0,n.index)).concat(lr(n[1])).concat(lr(r.substr(n.index+n[0].length)))}var a=r.split(".");if(a.length===1){return['"'+sr(r)+'"']}var i=[];for(var o=0;o<a.length;++o){i=i.concat(lr(a[o]))}return i}function cr(r){return"["+lr(r).join("][")+"]"}function vr(r,e){return new ur(r,cr(e+""))}function dr(r){return typeof r==="function"&&!r._reglType||r instanceof ur}function pr(r,e){if(typeof r==="function"){return new ur(ir,r)}else if(typeof r==="number"||typeof r==="boolean"){return new ur(or,r)}else if(Array.isArray(r)){return new ur(fr,r.map((function(r,t){return pr(r,e+"["+t+"]")})))}else if(r instanceof ur){return r}nr(false,"invalid option type in uniform "+e)}var br={DynamicVariable:ur,define:vr,isDynamic:dr,unbox:pr,accessor:cr};var mr={next:typeof requestAnimationFrame==="function"?function(r){return requestAnimationFrame(r)}:function(r){return setTimeout(r,16)},cancel:typeof cancelAnimationFrame==="function"?function(r){return cancelAnimationFrame(r)}:clearTimeout};var hr=typeof performance!=="undefined"&&performance.now?function(){return performance.now()}:function(){return+new Date};function yr(){var r={"":0};var e=[""];return{id:function(t){var n=r[t];if(n){return n}n=r[t]=e.length;e.push(t);return n},str:function(r){return e[r]}}}function gr(r,t,n){var a=document.createElement("canvas");e(a.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"});r.appendChild(a);if(r===document.body){a.style.position="absolute";e(r.style,{margin:0,padding:0})}function i(){var e=window.innerWidth;var t=window.innerHeight;if(r!==document.body){var i=a.getBoundingClientRect();e=i.right-i.left;t=i.bottom-i.top}a.width=n*e;a.height=n*t}var o;if(r!==document.body&&typeof ResizeObserver==="function"){o=new ResizeObserver((function(){setTimeout(i)}));o.observe(r)}else{window.addEventListener("resize",i,false)}function f(){if(o){o.disconnect()}else{window.removeEventListener("resize",i)}r.removeChild(a)}i();return{canvas:a,onDestroy:f}}function wr(r,e){function t(t){try{return r.getContext(t,e)}catch(r){return null}}return t("webgl")||t("experimental-webgl")||t("webgl-experimental")}function xr(r){return typeof r.nodeName==="string"&&typeof r.appendChild==="function"&&typeof r.getBoundingClientRect==="function"}function Ar(r){return typeof r.drawArrays==="function"||typeof r.drawElements==="function"}function Cr(r){if(typeof r==="string"){return r.split()}nr(Array.isArray(r),"invalid extension array");return r}function jr(r){if(typeof r==="string"){nr(typeof document!=="undefined","not supported outside of DOM");return document.querySelector(r)}return r}function kr(r){var e=r||{};var t,n,a,i;var o={};var f=[];var u=[];var s=typeof window==="undefined"?1:window.devicePixelRatio;var l=false;var c=function(r){if(r){nr.raise(r)}};var v=function(){};if(typeof e==="string"){nr(typeof document!=="undefined","selector queries only supported in DOM environments");t=document.querySelector(e);nr(t,"invalid query string for element")}else if(typeof e==="object"){if(xr(e)){t=e}else if(Ar(e)){i=e;a=i.canvas}else{nr.constructor(e);if("gl"in e){i=e.gl}else if("canvas"in e){a=jr(e.canvas)}else if("container"in e){n=jr(e.container)}if("attributes"in e){o=e.attributes;nr.type(o,"object","invalid context attributes")}if("extensions"in e){f=Cr(e.extensions)}if("optionalExtensions"in e){u=Cr(e.optionalExtensions)}if("onDone"in e){nr.type(e.onDone,"function","invalid or missing onDone callback");c=e.onDone}if("profile"in e){l=!!e.profile}if("pixelRatio"in e){s=+e.pixelRatio;nr(s>0,"invalid pixel ratio")}}}else{nr.raise("invalid arguments to regl")}if(t){if(t.nodeName.toLowerCase()==="canvas"){a=t}else{n=t}}if(!i){if(!a){nr(typeof document!=="undefined","must manually specify webgl context outside of DOM environments");var d=gr(n||document.body,c,s);if(!d){return null}a=d.canvas;v=d.onDestroy}if(o.premultipliedAlpha===undefined)o.premultipliedAlpha=true;i=wr(a,o)}if(!i){v();c("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org");return null}return{gl:i,canvas:a,container:n,extensions:f,optionalExtensions:u,pixelRatio:s,profile:l,onDone:c,onDestroy:v}}function Or(r,e){var t={};function n(e){nr.type(e,"string","extension name must be string");var n=e.toLowerCase();var a;try{a=t[n]=r.getExtension(n)}catch(r){}return!!a}for(var a=0;a<e.extensions.length;++a){var i=e.extensions[a];if(!n(i)){e.onDestroy();e.onDone('"'+i+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser');return null}}e.optionalExtensions.forEach(n);return{extensions:t,restore:function(){Object.keys(t).forEach((function(r){if(t[r]&&!n(r)){throw new Error("(regl): error restoring extension "+r)}}))}}}function _r(r,e){var t=Array(r);for(var n=0;n<r;++n){t[n]=e(n)}return t}var Tr=5120;var Fr=5121;var Mr=5122;var Dr=5123;var Sr=5124;var zr=5125;var Br=5126;function Er(r){for(var e=16;e<=1<<28;e*=16){if(r<=e){return e}}return 0}function Rr(r){var e,t;e=(r>65535)<<4;r>>>=e;t=(r>255)<<3;r>>>=t;e|=t;t=(r>15)<<2;r>>>=t;e|=t;t=(r>3)<<1;r>>>=t;e|=t;return e|r>>1}function Jr(){var r=_r(8,(function(){return[]}));function e(e){var t=Er(e);var n=r[Rr(t)>>2];if(n.length>0){return n.pop()}return new ArrayBuffer(t)}function t(e){r[Rr(e.byteLength)>>2].push(e)}function n(r,t){var n=null;switch(r){case Tr:n=new Int8Array(e(t),0,t);break;case Fr:n=new Uint8Array(e(t),0,t);break;case Mr:n=new Int16Array(e(2*t),0,t);break;case Dr:n=new Uint16Array(e(2*t),0,t);break;case Sr:n=new Int32Array(e(4*t),0,t);break;case zr:n=new Uint32Array(e(4*t),0,t);break;case Br:n=new Float32Array(e(4*t),0,t);break;default:return null}if(n.length!==t){return n.subarray(0,t)}return n}function a(r){t(r.buffer)}return{alloc:e,free:t,allocType:n,freeType:a}}var Vr=Jr();Vr.zero=Jr();var Nr=3408;var Ir=3410;var Wr=3411;var Lr=3412;var Ur=3413;var qr=3414;var Pr=3415;var Gr=33901;var Hr=33902;var $r=3379;var Qr=3386;var Xr=34921;var Yr=36347;var Zr=36348;var Kr=35661;var re=35660;var ee=34930;var te=36349;var ne=34076;var ae=34024;var ie=7936;var oe=7937;var fe=7938;var ue=35724;var se=34047;var le=36063;var ce=34852;var ve=3553;var de=34067;var pe=34069;var be=33984;var me=6408;var he=5126;var ye=5121;var ge=36160;var we=36053;var xe=36064;var Ae=16384;var Ce=function(r,e){var t=1;if(e.ext_texture_filter_anisotropic){t=r.getParameter(se)}var n=1;var a=1;if(e.webgl_draw_buffers){n=r.getParameter(ce);a=r.getParameter(le)}var i=!!e.oes_texture_float;if(i){var o=r.createTexture();r.bindTexture(ve,o);r.texImage2D(ve,0,me,1,1,0,me,he,null);var f=r.createFramebuffer();r.bindFramebuffer(ge,f);r.framebufferTexture2D(ge,xe,ve,o,0);r.bindTexture(ve,null);if(r.checkFramebufferStatus(ge)!==we)i=false;else{r.viewport(0,0,1,1);r.clearColor(1,0,0,1);r.clear(Ae);var u=Vr.allocType(he,4);r.readPixels(0,0,1,1,me,he,u);if(r.getError())i=false;else{r.deleteFramebuffer(f);r.deleteTexture(o);i=u[0]===1}Vr.freeType(u)}}var s=typeof navigator!=="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent));var l=true;if(!s){var c=r.createTexture();var v=Vr.allocType(ye,36);r.activeTexture(be);r.bindTexture(de,c);r.texImage2D(pe,0,me,3,3,0,me,ye,v);Vr.freeType(v);r.bindTexture(de,null);r.deleteTexture(c);l=!r.getError()}return{colorBits:[r.getParameter(Ir),r.getParameter(Wr),r.getParameter(Lr),r.getParameter(Ur)],depthBits:r.getParameter(qr),stencilBits:r.getParameter(Pr),subpixelBits:r.getParameter(Nr),extensions:Object.keys(e).filter((function(r){return!!e[r]})),maxAnisotropic:t,maxDrawbuffers:n,maxColorAttachments:a,pointSizeDims:r.getParameter(Gr),lineWidthDims:r.getParameter(Hr),maxViewportDims:r.getParameter(Qr),maxCombinedTextureUnits:r.getParameter(Kr),maxCubeMapSize:r.getParameter(ne),maxRenderbufferSize:r.getParameter(ae),maxTextureUnits:r.getParameter(ee),maxTextureSize:r.getParameter($r),maxAttributes:r.getParameter(Xr),maxVertexUniforms:r.getParameter(Yr),maxVertexTextureUnits:r.getParameter(re),maxVaryingVectors:r.getParameter(Zr),maxFragmentUniforms:r.getParameter(te),glsl:r.getParameter(ue),renderer:r.getParameter(oe),vendor:r.getParameter(ie),version:r.getParameter(fe),readFloat:i,npotTextureCube:l}};function je(e){return!!e&&typeof e==="object"&&Array.isArray(e.shape)&&Array.isArray(e.stride)&&typeof e.offset==="number"&&e.shape.length===e.stride.length&&(Array.isArray(e.data)||r(e.data))}var ke=function(r){return Object.keys(r).map((function(e){return r[e]}))};var Oe={shape:Se,flatten:De};function _e(r,e,t){for(var n=0;n<e;++n){t[n]=r[n]}}function Te(r,e,t,n){var a=0;for(var i=0;i<e;++i){var o=r[i];for(var f=0;f<t;++f){n[a++]=o[f]}}}function Fe(r,e,t,n,a,i){var o=i;for(var f=0;f<e;++f){var u=r[f];for(var s=0;s<t;++s){var l=u[s];for(var c=0;c<n;++c){a[o++]=l[c]}}}}function Me(r,e,t,n,a){var i=1;for(var o=t+1;o<e.length;++o){i*=e[o]}var f=e[t];if(e.length-t===4){var u=e[t+1];var s=e[t+2];var l=e[t+3];for(o=0;o<f;++o){Fe(r[o],u,s,l,n,a);a+=i}}else{for(o=0;o<f;++o){Me(r[o],e,t+1,n,a);a+=i}}}function De(r,e,t,n){var a=1;if(e.length){for(var i=0;i<e.length;++i){a*=e[i]}}else{a=0}var o=n||Vr.allocType(t,a);switch(e.length){case 0:break;case 1:_e(r,e[0],o);break;case 2:Te(r,e[0],e[1],o);break;case 3:Fe(r,e[0],e[1],e[2],o,0);break;default:Me(r,e,0,o,0)}return o}function Se(r){var e=[];for(var t=r;t.length;t=t[0]){e.push(t.length)}return e}var ze={"[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};var Be=5120;var Ee=5122;var Re=5124;var Je=5121;var Ve=5123;var Ne=5125;var Ie=5126;var We=5126;var Le={int8:Be,int16:Ee,int32:Re,uint8:Je,uint16:Ve,uint32:Ne,float:Ie,float32:We};var Ue=35048;var qe=35040;var Pe={dynamic:Ue,stream:qe,static:35044};var Ge=Oe.flatten;var He=Oe.shape;var $e=35044;var Qe=35040;var Xe=5121;var Ye=5126;var Ze=[];Ze[5120]=1;Ze[5122]=2;Ze[5124]=4;Ze[5121]=1;Ze[5123]=2;Ze[5125]=4;Ze[5126]=4;function Ke(r){return ze[Object.prototype.toString.call(r)]|0}function rt(r,e){for(var t=0;t<e.length;++t){r[t]=e[t]}}function et(r,e,t,n,a,i,o){var f=0;for(var u=0;u<t;++u){for(var s=0;s<n;++s){r[f++]=e[a*u+i*s+o]}}}function tt(e,t,n,a){var i=0;var o={};function f(r){this.id=i++;this.buffer=e.createBuffer();this.type=r;this.usage=$e;this.byteLength=0;this.dimension=1;this.dtype=Xe;this.persistentData=null;if(n.profile){this.stats={size:0}}}f.prototype.bind=function(){e.bindBuffer(this.type,this.buffer)};f.prototype.destroy=function(){d(this)};var u=[];function s(r,e){var t=u.pop();if(!t){t=new f(r)}t.bind();v(t,e,Qe,0,1,false);return t}function l(r){u.push(r)}function c(r,t,n){r.byteLength=t.byteLength;e.bufferData(r.type,t,n)}function v(e,t,n,a,i,o){var f;e.usage=n;if(Array.isArray(t)){e.dtype=a||Ye;if(t.length>0){var u;if(Array.isArray(t[0])){f=He(t);var s=1;for(var l=1;l<f.length;++l){s*=f[l]}e.dimension=s;u=Ge(t,f,e.dtype);c(e,u,n);if(o){e.persistentData=u}else{Vr.freeType(u)}}else if(typeof t[0]==="number"){e.dimension=i;var v=Vr.allocType(e.dtype,t.length);rt(v,t);c(e,v,n);if(o){e.persistentData=v}else{Vr.freeType(v)}}else if(r(t[0])){e.dimension=t[0].length;e.dtype=a||Ke(t[0])||Ye;u=Ge(t,[t.length,t[0].length],e.dtype);c(e,u,n);if(o){e.persistentData=u}else{Vr.freeType(u)}}else{nr.raise("invalid buffer data")}}}else if(r(t)){e.dtype=a||Ke(t);e.dimension=i;c(e,t,n);if(o){e.persistentData=new Uint8Array(new Uint8Array(t.buffer))}}else if(je(t)){f=t.shape;var d=t.stride;var p=t.offset;var b=0;var m=0;var h=0;var y=0;if(f.length===1){b=f[0];m=1;h=d[0];y=0}else if(f.length===2){b=f[0];m=f[1];h=d[0];y=d[1]}else{nr.raise("invalid shape")}e.dtype=a||Ke(t.data)||Ye;e.dimension=m;var g=Vr.allocType(e.dtype,b*m);et(g,t.data,b,m,h,y,p);c(e,g,n);if(o){e.persistentData=g}else{Vr.freeType(g)}}else if(t instanceof ArrayBuffer){e.dtype=Xe;e.dimension=i;c(e,t,n);if(o){e.persistentData=new Uint8Array(new Uint8Array(t))}}else{nr.raise("invalid buffer data")}}function d(r){t.bufferCount--;a(r);var n=r.buffer;nr(n,"buffer must not be deleted already");e.deleteBuffer(n);r.buffer=null;delete o[r.id]}function p(a,i,u,s){t.bufferCount++;var l=new f(i);o[l.id]=l;function c(t){var a=$e;var i=null;var o=0;var f=0;var u=1;if(Array.isArray(t)||r(t)||je(t)||t instanceof ArrayBuffer){i=t}else if(typeof t==="number"){o=t|0}else if(t){nr.type(t,"object","buffer arguments must be an object, a number or an array");if("data"in t){nr(i===null||Array.isArray(i)||r(i)||je(i),"invalid data for buffer");i=t.data}if("usage"in t){nr.parameter(t.usage,Pe,"invalid buffer usage");a=Pe[t.usage]}if("type"in t){nr.parameter(t.type,Le,"invalid buffer type");f=Le[t.type]}if("dimension"in t){nr.type(t.dimension,"number","invalid dimension");u=t.dimension|0}if("length"in t){nr.nni(o,"buffer length must be a nonnegative integer");o=t.length|0}}l.bind();if(!i){if(o)e.bufferData(l.type,o,a);l.dtype=f||Xe;l.usage=a;l.dimension=u;l.byteLength=o}else{v(l,i,a,f,u,s)}if(n.profile){l.stats.size=l.byteLength*Ze[l.dtype]}return c}function p(r,t){nr(t+r.byteLength<=l.byteLength,"invalid buffer subdata call, buffer is too small. "+" Can't write data of size "+r.byteLength+" starting from offset "+t+" to a buffer of size "+l.byteLength);e.bufferSubData(l.type,t,r)}function b(e,t){var n=(t||0)|0;var a;l.bind();if(r(e)||e instanceof ArrayBuffer){p(e,n)}else if(Array.isArray(e)){if(e.length>0){if(typeof e[0]==="number"){var i=Vr.allocType(l.dtype,e.length);rt(i,e);p(i,n);Vr.freeType(i)}else if(Array.isArray(e[0])||r(e[0])){a=He(e);var o=Ge(e,a,l.dtype);p(o,n);Vr.freeType(o)}else{nr.raise("invalid buffer data")}}}else if(je(e)){a=e.shape;var f=e.stride;var u=0;var s=0;var v=0;var d=0;if(a.length===1){u=a[0];s=1;v=f[0];d=0}else if(a.length===2){u=a[0];s=a[1];v=f[0];d=f[1]}else{nr.raise("invalid shape")}var b=Array.isArray(e.data)?l.dtype:Ke(e.data);var m=Vr.allocType(b,u*s);et(m,e.data,u,s,v,d,e.offset);p(m,n);Vr.freeType(m)}else{nr.raise("invalid data for buffer subdata")}return c}if(!u){c(a)}c._reglType="buffer";c._buffer=l;c.subdata=b;if(n.profile){c.stats=l.stats}c.destroy=function(){d(l)};return c}function b(){ke(o).forEach((function(r){r.buffer=e.createBuffer();e.bindBuffer(r.type,r.buffer);e.bufferData(r.type,r.persistentData||r.byteLength,r.usage)}))}if(n.profile){t.getTotalBufferSize=function(){var r=0;Object.keys(o).forEach((function(e){r+=o[e].stats.size}));return r}}return{create:p,createStream:s,destroyStream:l,clear:function(){ke(o).forEach(d);u.forEach(d)},getBuffer:function(r){if(r&&r._buffer instanceof f){return r._buffer}return null},restore:b,_initBuffer:v}}var nt=0;var at=0;var it=1;var ot=1;var ft=4;var ut=4;var st={points:nt,point:at,lines:it,line:ot,triangles:ft,triangle:ut,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6};var lt=0;var ct=1;var vt=4;var dt=5120;var pt=5121;var bt=5122;var mt=5123;var ht=5124;var yt=5125;var gt=34963;var wt=35040;var xt=35044;function At(e,t,n,a){var i={};var o=0;var f={uint8:pt,uint16:mt};if(t.oes_element_index_uint){f.uint32=yt}function u(r){this.id=o++;i[this.id]=this;this.buffer=r;this.primType=vt;this.vertCount=0;this.type=0}u.prototype.bind=function(){this.buffer.bind()};var s=[];function l(r){var e=s.pop();if(!e){e=new u(n.create(null,gt,true,false)._buffer)}v(e,r,wt,-1,-1,0,0);return e}function c(r){s.push(r)}function v(a,i,o,f,u,s,l){a.buffer.bind();var c;if(i){var v=l;if(!l&&(!r(i)||je(i)&&!r(i.data))){v=t.oes_element_index_uint?yt:mt}n._initBuffer(a.buffer,i,o,v,3)}else{e.bufferData(gt,s,o);a.buffer.dtype=c||pt;a.buffer.usage=o;a.buffer.dimension=3;a.buffer.byteLength=s}c=l;if(!l){switch(a.buffer.dtype){case pt:case dt:c=pt;break;case mt:case bt:c=mt;break;case yt:case ht:c=yt;break;default:nr.raise("unsupported type for element array")}a.buffer.dtype=c}a.type=c;nr(c!==yt||!!t.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var d=u;if(d<0){d=a.buffer.byteLength;if(c===mt){d>>=1}else if(c===yt){d>>=2}}a.vertCount=d;var p=f;if(f<0){p=vt;var b=a.buffer.dimension;if(b===1)p=lt;if(b===2)p=ct;if(b===3)p=vt}a.primType=p}function d(r){a.elementsCount--;nr(r.buffer!==null,"must not double destroy elements");delete i[r.id];r.buffer.destroy();r.buffer=null}function p(e,t){var i=n.create(null,gt,true);var o=new u(i._buffer);a.elementsCount++;function s(e){if(!e){i();o.primType=vt;o.vertCount=0;o.type=pt}else if(typeof e==="number"){i(e);o.primType=vt;o.vertCount=e|0;o.type=pt}else{var t=null;var n=xt;var a=-1;var u=-1;var l=0;var c=0;if(Array.isArray(e)||r(e)||je(e)){t=e}else{nr.type(e,"object","invalid arguments for elements");if("data"in e){t=e.data;nr(Array.isArray(t)||r(t)||je(t),"invalid data for element buffer")}if("usage"in e){nr.parameter(e.usage,Pe,"invalid element buffer usage");n=Pe[e.usage]}if("primitive"in e){nr.parameter(e.primitive,st,"invalid element buffer primitive");a=st[e.primitive]}if("count"in e){nr(typeof e.count==="number"&&e.count>=0,"invalid vertex count for elements");u=e.count|0}if("type"in e){nr.parameter(e.type,f,"invalid buffer type");c=f[e.type]}if("length"in e){l=e.length|0}else{l=u;if(c===mt||c===bt){l*=2}else if(c===yt||c===ht){l*=4}}}v(o,t,n,a,u,l,c)}return s}s(e);s._reglType="elements";s._elements=o;s.subdata=function(r,e){i.subdata(r,e);return s};s.destroy=function(){d(o)};return s}return{create:p,createStream:l,destroyStream:c,getElements:function(r){if(typeof r==="function"&&r._elements instanceof u){return r._elements}return null},clear:function(){ke(i).forEach(d)}}}var Ct=new Float32Array(1);var jt=new Uint32Array(Ct.buffer);var kt=5123;function Ot(r){var e=Vr.allocType(kt,r.length);for(var t=0;t<r.length;++t){if(isNaN(r[t])){e[t]=65535}else if(r[t]===Infinity){e[t]=31744}else if(r[t]===-Infinity){e[t]=64512}else{Ct[0]=r[t];var n=jt[0];var a=n>>>31<<15;var i=(n<<1>>>24)-127;var o=n>>13&(1<<10)-1;if(i<-24){e[t]=a}else if(i<-14){var f=-14-i;e[t]=a+(o+(1<<10)>>f)}else if(i>15){e[t]=a+31744}else{e[t]=a+(i+15<<10)+o}}}return e}function _t(e){return Array.isArray(e)||r(e)}var Tt=function(r){return!(r&r-1)&&!!r};var Ft=34467;var Mt=3553;var Dt=34067;var St=34069;var zt=6408;var Bt=6406;var Et=6407;var Rt=6409;var Jt=6410;var Vt=32854;var Nt=32855;var It=36194;var Wt=32819;var Lt=32820;var Ut=33635;var qt=34042;var Pt=6402;var Gt=34041;var Ht=35904;var $t=35906;var Qt=36193;var Xt=33776;var Yt=33777;var Zt=33778;var Kt=33779;var rn=35986;var en=35987;var tn=34798;var nn=35840;var an=35841;var on=35842;var fn=35843;var un=36196;var sn=5121;var ln=5123;var cn=5125;var vn=5126;var dn=10242;var pn=10243;var bn=10497;var mn=33071;var hn=33648;var yn=10240;var gn=10241;var wn=9728;var xn=9729;var An=9984;var Cn=9985;var jn=9986;var kn=9987;var On=33170;var _n=4352;var Tn=4353;var Fn=4354;var Mn=34046;var Dn=3317;var Sn=37440;var zn=37441;var Bn=37443;var En=37444;var Rn=33984;var Jn=[An,jn,Cn,kn];var Vn=[0,Rt,Jt,Et,zt];var Nn={};Nn[Rt]=Nn[Bt]=Nn[Pt]=1;Nn[Gt]=Nn[Jt]=2;Nn[Et]=Nn[Ht]=3;Nn[zt]=Nn[$t]=4;function In(r){return"[object "+r+"]"}var Wn=In("HTMLCanvasElement");var Ln=In("OffscreenCanvas");var Un=In("CanvasRenderingContext2D");var qn=In("ImageBitmap");var Pn=In("HTMLImageElement");var Gn=In("HTMLVideoElement");var Hn=Object.keys(ze).concat([Wn,Ln,Un,qn,Pn,Gn]);var $n=[];$n[sn]=1;$n[vn]=4;$n[Qt]=2;$n[ln]=2;$n[cn]=4;var Qn=[];Qn[Vt]=2;Qn[Nt]=2;Qn[It]=2;Qn[Gt]=4;Qn[Xt]=.5;Qn[Yt]=.5;Qn[Zt]=1;Qn[Kt]=1;Qn[rn]=.5;Qn[en]=1;Qn[tn]=1;Qn[nn]=.5;Qn[an]=.25;Qn[on]=.5;Qn[fn]=.25;Qn[un]=.5;function Xn(r){return Array.isArray(r)&&(r.length===0||typeof r[0]==="number")}function Yn(r){if(!Array.isArray(r)){return false}var e=r.length;if(e===0||!_t(r[0])){return false}return true}function Zn(r){return Object.prototype.toString.call(r)}function Kn(r){return Zn(r)===Wn}function ra(r){return Zn(r)===Ln}function ea(r){return Zn(r)===Un}function ta(r){return Zn(r)===qn}function na(r){return Zn(r)===Pn}function aa(r){return Zn(r)===Gn}function ia(r){if(!r){return false}var e=Zn(r);if(Hn.indexOf(e)>=0){return true}return Xn(r)||Yn(r)||je(r)}function oa(r){return ze[Object.prototype.toString.call(r)]|0}function fa(r,e){var t=e.length;switch(r.type){case sn:case ln:case cn:case vn:var n=Vr.allocType(r.type,t);n.set(e);r.data=n;break;case Qt:r.data=Ot(e);break;default:nr.raise("unsupported texture type, must specify a typed array")}}function ua(r,e){return Vr.allocType(r.type===Qt?vn:r.type,e)}function sa(r,e){if(r.type===Qt){r.data=Ot(e);Vr.freeType(e)}else{r.data=e}}function la(r,e,t,n,a,i){var o=r.width;var f=r.height;var u=r.channels;var s=o*f*u;var l=ua(r,s);var c=0;for(var v=0;v<f;++v){for(var d=0;d<o;++d){for(var p=0;p<u;++p){l[c++]=e[t*d+n*v+a*p+i]}}}sa(r,l)}function ca(r,e,t,n,a,i){var o;if(typeof Qn[r]!=="undefined"){o=Qn[r]}else{o=Nn[r]*$n[e]}if(i){o*=6}if(a){var f=0;var u=t;while(u>=1){f+=o*u*u;u/=2}return f}else{return o*t*n}}function va(t,n,a,i,o,f,u){var s={"don't care":_n,"dont care":_n,nice:Fn,fast:Tn};var l={repeat:bn,clamp:mn,mirror:hn};var c={nearest:wn,linear:xn};var v=e({mipmap:kn,"nearest mipmap nearest":An,"linear mipmap nearest":Cn,"nearest mipmap linear":jn,"linear mipmap linear":kn},c);var d={none:0,browser:En};var p={uint8:sn,rgba4:Wt,rgb565:Ut,"rgb5 a1":Lt};var b={alpha:Bt,luminance:Rt,"luminance alpha":Jt,rgb:Et,rgba:zt,rgba4:Vt,"rgb5 a1":Nt,rgb565:It};var m={};if(n.ext_srgb){b.srgb=Ht;b.srgba=$t}if(n.oes_texture_float){p.float32=p.float=vn}if(n.oes_texture_half_float){p["float16"]=p["half float"]=Qt}if(n.webgl_depth_texture){e(b,{depth:Pt,"depth stencil":Gt});e(p,{uint16:ln,uint32:cn,"depth stencil":qt})}if(n.webgl_compressed_texture_s3tc){e(m,{"rgb s3tc dxt1":Xt,"rgba s3tc dxt1":Yt,"rgba s3tc dxt3":Zt,"rgba s3tc dxt5":Kt})}if(n.webgl_compressed_texture_atc){e(m,{"rgb atc":rn,"rgba atc explicit alpha":en,"rgba atc interpolated alpha":tn})}if(n.webgl_compressed_texture_pvrtc){e(m,{"rgb pvrtc 4bppv1":nn,"rgb pvrtc 2bppv1":an,"rgba pvrtc 4bppv1":on,"rgba pvrtc 2bppv1":fn})}if(n.webgl_compressed_texture_etc1){m["rgb etc1"]=un}var h=Array.prototype.slice.call(t.getParameter(Ft));Object.keys(m).forEach((function(r){var e=m[r];if(h.indexOf(e)>=0){b[r]=e}}));var y=Object.keys(b);a.textureFormats=y;var g=[];Object.keys(b).forEach((function(r){var e=b[r];g[e]=r}));var w=[];Object.keys(p).forEach((function(r){var e=p[r];w[e]=r}));var x=[];Object.keys(c).forEach((function(r){var e=c[r];x[e]=r}));var A=[];Object.keys(v).forEach((function(r){var e=v[r];A[e]=r}));var C=[];Object.keys(l).forEach((function(r){var e=l[r];C[e]=r}));var j=y.reduce((function(r,e){var t=b[e];if(t===Rt||t===Bt||t===Rt||t===Jt||t===Pt||t===Gt||n.ext_srgb&&(t===Ht||t===$t)){r[t]=t}else if(t===Nt||e.indexOf("rgba")>=0){r[t]=zt}else{r[t]=Et}return r}),{});function k(){this.internalformat=zt;this.format=zt;this.type=sn;this.compressed=false;this.premultiplyAlpha=false;this.flipY=false;this.unpackAlignment=1;this.colorSpace=En;this.width=0;this.height=0;this.channels=0}function O(r,e){r.internalformat=e.internalformat;r.format=e.format;r.type=e.type;r.compressed=e.compressed;r.premultiplyAlpha=e.premultiplyAlpha;r.flipY=e.flipY;r.unpackAlignment=e.unpackAlignment;r.colorSpace=e.colorSpace;r.width=e.width;r.height=e.height;r.channels=e.channels}function _(r,e){if(typeof e!=="object"||!e){return}if("premultiplyAlpha"in e){nr.type(e.premultiplyAlpha,"boolean","invalid premultiplyAlpha");r.premultiplyAlpha=e.premultiplyAlpha}if("flipY"in e){nr.type(e.flipY,"boolean","invalid texture flip");r.flipY=e.flipY}if("alignment"in e){nr.oneOf(e.alignment,[1,2,4,8],"invalid texture unpack alignment");r.unpackAlignment=e.alignment}if("colorSpace"in e){nr.parameter(e.colorSpace,d,"invalid colorSpace");r.colorSpace=d[e.colorSpace]}if("type"in e){var t=e.type;nr(n.oes_texture_float||!(t==="float"||t==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures.");nr(n.oes_texture_half_float||!(t==="half float"||t==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.");nr(n.webgl_depth_texture||!(t==="uint16"||t==="uint32"||t==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.");nr.parameter(t,p,"invalid texture type");r.type=p[t]}var i=r.width;var o=r.height;var f=r.channels;var u=false;if("shape"in e){nr(Array.isArray(e.shape)&&e.shape.length>=2,"shape must be an array");i=e.shape[0];o=e.shape[1];if(e.shape.length===3){f=e.shape[2];nr(f>0&&f<=4,"invalid number of channels");u=true}nr(i>=0&&i<=a.maxTextureSize,"invalid width");nr(o>=0&&o<=a.maxTextureSize,"invalid height")}else{if("radius"in e){i=o=e.radius;nr(i>=0&&i<=a.maxTextureSize,"invalid radius")}if("width"in e){i=e.width;nr(i>=0&&i<=a.maxTextureSize,"invalid width")}if("height"in e){o=e.height;nr(o>=0&&o<=a.maxTextureSize,"invalid height")}if("channels"in e){f=e.channels;nr(f>0&&f<=4,"invalid number of channels");u=true}}r.width=i|0;r.height=o|0;r.channels=f|0;var s=false;if("format"in e){var l=e.format;nr(n.webgl_depth_texture||!(l==="depth"||l==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.");nr.parameter(l,b,"invalid texture format");var c=r.internalformat=b[l];r.format=j[c];if(l in p){if(!("type"in e)){r.type=p[l]}}if(l in m){r.compressed=true}s=true}if(!u&&s){r.channels=Nn[r.format]}else if(u&&!s){if(r.channels!==Vn[r.format]){r.format=r.internalformat=Vn[r.channels]}}else if(s&&u){nr(r.channels===Nn[r.format],"number of channels inconsistent with specified format")}}function T(r){t.pixelStorei(Sn,r.flipY);t.pixelStorei(zn,r.premultiplyAlpha);t.pixelStorei(Bn,r.colorSpace);t.pixelStorei(Dn,r.unpackAlignment)}function F(){k.call(this);this.xOffset=0;this.yOffset=0;this.data=null;this.needsFree=false;this.element=null;this.needsCopy=false}function M(e,t){var n=null;if(ia(t)){n=t}else if(t){nr.type(t,"object","invalid pixel data type");_(e,t);if("x"in t){e.xOffset=t.x|0}if("y"in t){e.yOffset=t.y|0}if(ia(t.data)){n=t.data}}nr(!e.compressed||n instanceof Uint8Array,"compressed texture data must be stored in a uint8array");if(t.copy){nr(!n,"can not specify copy and data field for the same texture");var i=o.viewportWidth;var f=o.viewportHeight;e.width=e.width||i-e.xOffset;e.height=e.height||f-e.yOffset;e.needsCopy=true;nr(e.xOffset>=0&&e.xOffset<i&&e.yOffset>=0&&e.yOffset<f&&e.width>0&&e.width<=i&&e.height>0&&e.height<=f,"copy texture read out of bounds")}else if(!n){e.width=e.width||1;e.height=e.height||1;e.channels=e.channels||4}else if(r(n)){e.channels=e.channels||4;e.data=n;if(!("type"in t)&&e.type===sn){e.type=oa(n)}}else if(Xn(n)){e.channels=e.channels||4;fa(e,n);e.alignment=1;e.needsFree=true}else if(je(n)){var u=n.data;if(!Array.isArray(u)&&e.type===sn){e.type=oa(u)}var s=n.shape;var l=n.stride;var c,v,d,p,b,m;if(s.length===3){d=s[2];m=l[2]}else{nr(s.length===2,"invalid ndarray pixel data, must be 2 or 3D");d=1;m=1}c=s[0];v=s[1];p=l[0];b=l[1];e.alignment=1;e.width=c;e.height=v;e.channels=d;e.format=e.internalformat=Vn[d];e.needsFree=true;la(e,u,p,b,m,n.offset)}else if(Kn(n)||ra(n)||ea(n)){if(Kn(n)||ra(n)){e.element=n}else{e.element=n.canvas}e.width=e.element.width;e.height=e.element.height;e.channels=4}else if(ta(n)){e.element=n;e.width=n.width;e.height=n.height;e.channels=4}else if(na(n)){e.element=n;e.width=n.naturalWidth;e.height=n.naturalHeight;e.channels=4}else if(aa(n)){e.element=n;e.width=n.videoWidth;e.height=n.videoHeight;e.channels=4}else if(Yn(n)){var h=e.width||n[0].length;var y=e.height||n.length;var g=e.channels;if(_t(n[0][0])){g=g||n[0][0].length}else{g=g||1}var w=Oe.shape(n);var x=1;for(var A=0;A<w.length;++A){x*=w[A]}var C=ua(e,x);Oe.flatten(n,w,"",C);sa(e,C);e.alignment=1;e.width=h;e.height=y;e.channels=g;e.format=e.internalformat=Vn[g];e.needsFree=true}if(e.type===vn){nr(a.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled")}else if(e.type===Qt){nr(a.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}}function D(r,e,n){var a=r.element;var o=r.data;var f=r.internalformat;var u=r.format;var s=r.type;var l=r.width;var c=r.height;T(r);if(a){t.texImage2D(e,n,u,u,s,a)}else if(r.compressed){t.compressedTexImage2D(e,n,f,l,c,0,o)}else if(r.needsCopy){i();t.copyTexImage2D(e,n,u,r.xOffset,r.yOffset,l,c,0)}else{t.texImage2D(e,n,u,l,c,0,u,s,o||null)}}function S(r,e,n,a,o){var f=r.element;var u=r.data;var s=r.internalformat;var l=r.format;var c=r.type;var v=r.width;var d=r.height;T(r);if(f){t.texSubImage2D(e,o,n,a,l,c,f)}else if(r.compressed){t.compressedTexSubImage2D(e,o,n,a,s,v,d,u)}else if(r.needsCopy){i();t.copyTexSubImage2D(e,o,n,a,r.xOffset,r.yOffset,v,d)}else{t.texSubImage2D(e,o,n,a,v,d,l,c,u)}}var z=[];function B(){return z.pop()||new F}function E(r){if(r.needsFree){Vr.freeType(r.data)}F.call(r);z.push(r)}function R(){k.call(this);this.genMipmaps=false;this.mipmapHint=_n;this.mipmask=0;this.images=Array(16)}function J(r,e,t){var n=r.images[0]=B();r.mipmask=1;n.width=r.width=e;n.height=r.height=t;n.channels=r.channels=4}function V(r,e){var t=null;if(ia(e)){t=r.images[0]=B();O(t,r);M(t,e);r.mipmask=1}else{_(r,e);if(Array.isArray(e.mipmap)){var n=e.mipmap;for(var a=0;a<n.length;++a){t=r.images[a]=B();O(t,r);t.width>>=a;t.height>>=a;M(t,n[a]);r.mipmask|=1<<a}}else{t=r.images[0]=B();O(t,r);M(t,e);r.mipmask=1}}O(r,r.images[0]);if(r.compressed&&(r.internalformat===Xt||r.internalformat===Yt||r.internalformat===Zt||r.internalformat===Kt)){nr(r.width%4===0&&r.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}}function N(r,e){var t=r.images;for(var n=0;n<t.length;++n){if(!t[n]){return}D(t[n],e,n)}}var I=[];function W(){var r=I.pop()||new R;k.call(r);r.mipmask=0;for(var e=0;e<16;++e){r.images[e]=null}return r}function L(r){var e=r.images;for(var t=0;t<e.length;++t){if(e[t]){E(e[t])}e[t]=null}I.push(r)}function U(){this.minFilter=wn;this.magFilter=wn;this.wrapS=mn;this.wrapT=mn;this.anisotropic=1;this.genMipmaps=false;this.mipmapHint=_n}function q(r,e){if("min"in e){var t=e.min;nr.parameter(t,v);r.minFilter=v[t];if(Jn.indexOf(r.minFilter)>=0&&!("faces"in e)){r.genMipmaps=true}}if("mag"in e){var n=e.mag;nr.parameter(n,c);r.magFilter=c[n]}var i=r.wrapS;var o=r.wrapT;if("wrap"in e){var f=e.wrap;if(typeof f==="string"){nr.parameter(f,l);i=o=l[f]}else if(Array.isArray(f)){nr.parameter(f[0],l);nr.parameter(f[1],l);i=l[f[0]];o=l[f[1]]}}else{if("wrapS"in e){var u=e.wrapS;nr.parameter(u,l);i=l[u]}if("wrapT"in e){var d=e.wrapT;nr.parameter(d,l);o=l[d]}}r.wrapS=i;r.wrapT=o;if("anisotropic"in e){var p=e.anisotropic;nr(typeof p==="number"&&p>=1&&p<=a.maxAnisotropic,"aniso samples must be between 1 and ");r.anisotropic=e.anisotropic}if("mipmap"in e){var b=false;switch(typeof e.mipmap){case"string":nr.parameter(e.mipmap,s,"invalid mipmap hint");r.mipmapHint=s[e.mipmap];r.genMipmaps=true;b=true;break;case"boolean":b=r.genMipmaps=e.mipmap;break;case"object":nr(Array.isArray(e.mipmap),"invalid mipmap type");r.genMipmaps=false;b=true;break;default:nr.raise("invalid mipmap type")}if(b&&!("min"in e)){r.minFilter=An}}}function P(r,e){t.texParameteri(e,gn,r.minFilter);t.texParameteri(e,yn,r.magFilter);t.texParameteri(e,dn,r.wrapS);t.texParameteri(e,pn,r.wrapT);if(n.ext_texture_filter_anisotropic){t.texParameteri(e,Mn,r.anisotropic)}if(r.genMipmaps){t.hint(On,r.mipmapHint);t.generateMipmap(e)}}var G=0;var H={};var $=a.maxTextureUnits;var Q=Array($).map((function(){return null}));function X(r){k.call(this);this.mipmask=0;this.internalformat=zt;this.id=G++;this.refCount=1;this.target=r;this.texture=t.createTexture();this.unit=-1;this.bindCount=0;this.texInfo=new U;if(u.profile){this.stats={size:0}}}function Y(r){t.activeTexture(Rn);t.bindTexture(r.target,r.texture)}function Z(){var r=Q[0];if(r){t.bindTexture(r.target,r.texture)}else{t.bindTexture(Mt,null)}}function K(r){var e=r.texture;nr(e,"must not double destroy texture");var n=r.unit;var a=r.target;if(n>=0){t.activeTexture(Rn+n);t.bindTexture(a,null);Q[n]=null}t.deleteTexture(e);r.texture=null;r.params=null;r.pixels=null;r.refCount=0;delete H[r.id];f.textureCount--}e(X.prototype,{bind:function(){var r=this;r.bindCount+=1;var e=r.unit;if(e<0){for(var n=0;n<$;++n){var a=Q[n];if(a){if(a.bindCount>0){continue}a.unit=-1}Q[n]=r;e=n;break}if(e>=$){nr.raise("insufficient number of texture units")}if(u.profile&&f.maxTextureUnits<e+1){f.maxTextureUnits=e+1}r.unit=e;t.activeTexture(Rn+e);t.bindTexture(r.target,r.texture)}return e},unbind:function(){this.bindCount-=1},decRef:function(){if(--this.refCount<=0){K(this)}}});function rr(r,e){var n=new X(Mt);H[n.id]=n;f.textureCount++;function i(r,e){var t=n.texInfo;U.call(t);var o=W();if(typeof r==="number"){if(typeof e==="number"){J(o,r|0,e|0)}else{J(o,r|0,r|0)}}else if(r){nr.type(r,"object","invalid arguments to regl.texture");q(t,r);V(o,r)}else{J(o,1,1)}if(t.genMipmaps){o.mipmask=(o.width<<1)-1}n.mipmask=o.mipmask;O(n,o);nr.texture2D(t,o,a);n.internalformat=o.internalformat;i.width=o.width;i.height=o.height;Y(n);N(o,Mt);P(t,Mt);Z();L(o);if(u.profile){n.stats.size=ca(n.internalformat,n.type,o.width,o.height,t.genMipmaps,false)}i.format=g[n.internalformat];i.type=w[n.type];i.mag=x[t.magFilter];i.min=A[t.minFilter];i.wrapS=C[t.wrapS];i.wrapT=C[t.wrapT];return i}function o(r,e,t,a){nr(!!r,"must specify image data");var o=e|0;var f=t|0;var u=a|0;var s=B();O(s,n);s.width=0;s.height=0;M(s,r);s.width=s.width||(n.width>>u)-o;s.height=s.height||(n.height>>u)-f;nr(n.type===s.type&&n.format===s.format&&n.internalformat===s.internalformat,"incompatible format for texture.subimage");nr(o>=0&&f>=0&&o+s.width<=n.width&&f+s.height<=n.height,"texture.subimage write out of bounds");nr(n.mipmask&1<<u,"missing mipmap data");nr(s.data||s.element||s.needsCopy,"missing image data");Y(n);S(s,Mt,o,f,u);Z();E(s);return i}function s(r,e){var a=r|0;var o=e|0||a;if(a===n.width&&o===n.height){return i}i.width=n.width=a;i.height=n.height=o;Y(n);for(var f=0;n.mipmask>>f;++f){var s=a>>f;var l=o>>f;if(!s||!l)break;t.texImage2D(Mt,f,n.format,s,l,0,n.format,n.type,null)}Z();if(u.profile){n.stats.size=ca(n.internalformat,n.type,a,o,false,false)}return i}i(r,e);i.subimage=o;i.resize=s;i._reglType="texture2d";i._texture=n;if(u.profile){i.stats=n.stats}i.destroy=function(){n.decRef()};return i}function er(r,e,n,i,o,s){var l=new X(Dt);H[l.id]=l;f.cubeCount++;var c=new Array(6);function v(r,e,t,n,i,o){var f;var s=l.texInfo;U.call(s);for(f=0;f<6;++f){c[f]=W()}if(typeof r==="number"||!r){var d=r|0||1;for(f=0;f<6;++f){J(c[f],d,d)}}else if(typeof r==="object"){if(e){V(c[0],r);V(c[1],e);V(c[2],t);V(c[3],n);V(c[4],i);V(c[5],o)}else{q(s,r);_(l,r);if("faces"in r){var p=r.faces;nr(Array.isArray(p)&&p.length===6,"cube faces must be a length 6 array");for(f=0;f<6;++f){nr(typeof p[f]==="object"&&!!p[f],"invalid input for cube map face");O(c[f],l);V(c[f],p[f])}}else{for(f=0;f<6;++f){V(c[f],r)}}}}else{nr.raise("invalid arguments to cube map")}O(l,c[0]);nr.optional((function(){if(!a.npotTextureCube){nr(Tt(l.width)&&Tt(l.height),"your browser does not support non power or two texture dimensions")}}));if(s.genMipmaps){l.mipmask=(c[0].width<<1)-1}else{l.mipmask=c[0].mipmask}nr.textureCube(l,s,c,a);l.internalformat=c[0].internalformat;v.width=c[0].width;v.height=c[0].height;Y(l);for(f=0;f<6;++f){N(c[f],St+f)}P(s,Dt);Z();if(u.profile){l.stats.size=ca(l.internalformat,l.type,v.width,v.height,s.genMipmaps,true)}v.format=g[l.internalformat];v.type=w[l.type];v.mag=x[s.magFilter];v.min=A[s.minFilter];v.wrapS=C[s.wrapS];v.wrapT=C[s.wrapT];for(f=0;f<6;++f){L(c[f])}return v}function d(r,e,t,n,a){nr(!!e,"must specify image data");nr(typeof r==="number"&&r===(r|0)&&r>=0&&r<6,"invalid face");var i=t|0;var o=n|0;var f=a|0;var u=B();O(u,l);u.width=0;u.height=0;M(u,e);u.width=u.width||(l.width>>f)-i;u.height=u.height||(l.height>>f)-o;nr(l.type===u.type&&l.format===u.format&&l.internalformat===u.internalformat,"incompatible format for texture.subimage");nr(i>=0&&o>=0&&i+u.width<=l.width&&o+u.height<=l.height,"texture.subimage write out of bounds");nr(l.mipmask&1<<f,"missing mipmap data");nr(u.data||u.element||u.needsCopy,"missing image data");Y(l);S(u,St+r,i,o,f);Z();E(u);return v}function p(r){var e=r|0;if(e===l.width){return}v.width=l.width=e;v.height=l.height=e;Y(l);for(var n=0;n<6;++n){for(var a=0;l.mipmask>>a;++a){t.texImage2D(St+n,a,l.format,e>>a,e>>a,0,l.format,l.type,null)}}Z();if(u.profile){l.stats.size=ca(l.internalformat,l.type,v.width,v.height,false,true)}return v}v(r,e,n,i,o,s);v.subimage=d;v.resize=p;v._reglType="textureCube";v._texture=l;if(u.profile){v.stats=l.stats}v.destroy=function(){l.decRef()};return v}function tr(){for(var r=0;r<$;++r){t.activeTexture(Rn+r);t.bindTexture(Mt,null);Q[r]=null}ke(H).forEach(K);f.cubeCount=0;f.textureCount=0}if(u.profile){f.getTotalTextureSize=function(){var r=0;Object.keys(H).forEach((function(e){r+=H[e].stats.size}));return r}}function ar(){for(var r=0;r<$;++r){var e=Q[r];if(e){e.bindCount=0;e.unit=-1;Q[r]=null}}ke(H).forEach((function(r){r.texture=t.createTexture();t.bindTexture(r.target,r.texture);for(var e=0;e<32;++e){if((r.mipmask&1<<e)===0){continue}if(r.target===Mt){t.texImage2D(Mt,e,r.internalformat,r.width>>e,r.height>>e,0,r.internalformat,r.type,null)}else{for(var n=0;n<6;++n){t.texImage2D(St+n,e,r.internalformat,r.width>>e,r.height>>e,0,r.internalformat,r.type,null)}}}P(r.texInfo,r.target)}))}function ir(){for(var r=0;r<$;++r){var e=Q[r];if(e){e.bindCount=0;e.unit=-1;Q[r]=null}t.activeTexture(Rn+r);t.bindTexture(Mt,null);t.bindTexture(Dt,null)}}return{create2D:rr,createCube:er,clear:tr,getTexture:function(r){return null},restore:ar,refresh:ir}}var da=36161;var pa=32854;var ba=32855;var ma=36194;var ha=33189;var ya=36168;var ga=34041;var wa=35907;var xa=34836;var Aa=34842;var Ca=34843;var ja=[];ja[pa]=2;ja[ba]=2;ja[ma]=2;ja[ha]=2;ja[ya]=1;ja[ga]=4;ja[wa]=4;ja[xa]=16;ja[Aa]=8;ja[Ca]=6;function ka(r,e,t){return ja[r]*e*t}var Oa=function(r,e,t,n,a){var i={rgba4:pa,rgb565:ma,"rgb5 a1":ba,depth:ha,stencil:ya,"depth stencil":ga};if(e.ext_srgb){i["srgba"]=wa}if(e.ext_color_buffer_half_float){i["rgba16f"]=Aa;i["rgb16f"]=Ca}if(e.webgl_color_buffer_float){i["rgba32f"]=xa}var o=[];Object.keys(i).forEach((function(r){var e=i[r];o[e]=r}));var f=0;var u={};function s(r){this.id=f++;this.refCount=1;this.renderbuffer=r;this.format=pa;this.width=0;this.height=0;if(a.profile){this.stats={size:0}}}s.prototype.decRef=function(){if(--this.refCount<=0){l(this)}};function l(e){var t=e.renderbuffer;nr(t,"must not double destroy renderbuffer");r.bindRenderbuffer(da,null);r.deleteRenderbuffer(t);e.renderbuffer=null;e.refCount=0;delete u[e.id];n.renderbufferCount--}function c(e,f){var l=new s(r.createRenderbuffer());u[l.id]=l;n.renderbufferCount++;function c(e,n){var f=0;var u=0;var s=pa;if(typeof e==="object"&&e){var v=e;if("shape"in v){var d=v.shape;nr(Array.isArray(d)&&d.length>=2,"invalid renderbuffer shape");f=d[0]|0;u=d[1]|0}else{if("radius"in v){f=u=v.radius|0}if("width"in v){f=v.width|0}if("height"in v){u=v.height|0}}if("format"in v){nr.parameter(v.format,i,"invalid renderbuffer format");s=i[v.format]}}else if(typeof e==="number"){f=e|0;if(typeof n==="number"){u=n|0}else{u=f}}else if(!e){f=u=1}else{nr.raise("invalid arguments to renderbuffer constructor")}nr(f>0&&u>0&&f<=t.maxRenderbufferSize&&u<=t.maxRenderbufferSize,"invalid renderbuffer size");if(f===l.width&&u===l.height&&s===l.format){return}c.width=l.width=f;c.height=l.height=u;l.format=s;r.bindRenderbuffer(da,l.renderbuffer);r.renderbufferStorage(da,s,f,u);nr(r.getError()===0,"invalid render buffer format");if(a.profile){l.stats.size=ka(l.format,l.width,l.height)}c.format=o[l.format];return c}function v(e,n){var i=e|0;var o=n|0||i;if(i===l.width&&o===l.height){return c}nr(i>0&&o>0&&i<=t.maxRenderbufferSize&&o<=t.maxRenderbufferSize,"invalid renderbuffer size");c.width=l.width=i;c.height=l.height=o;r.bindRenderbuffer(da,l.renderbuffer);r.renderbufferStorage(da,l.format,i,o);nr(r.getError()===0,"invalid render buffer format");if(a.profile){l.stats.size=ka(l.format,l.width,l.height)}return c}c(e,f);c.resize=v;c._reglType="renderbuffer";c._renderbuffer=l;if(a.profile){c.stats=l.stats}c.destroy=function(){l.decRef()};return c}if(a.profile){n.getTotalRenderbufferSize=function(){var r=0;Object.keys(u).forEach((function(e){r+=u[e].stats.size}));return r}}function v(){ke(u).forEach((function(e){e.renderbuffer=r.createRenderbuffer();r.bindRenderbuffer(da,e.renderbuffer);r.renderbufferStorage(da,e.format,e.width,e.height)}));r.bindRenderbuffer(da,null)}return{create:c,clear:function(){ke(u).forEach(l)},restore:v}};var _a=36160;var Ta=36161;var Fa=3553;var Ma=34069;var Da=36064;var Sa=36096;var za=36128;var Ba=33306;var Ea=36053;var Ra=36054;var Ja=36055;var Va=36057;var Na=36061;var Ia=36193;var Wa=5121;var La=5126;var Ua=6407;var qa=6408;var Pa=6402;var Ga=[Ua,qa];var Ha=[];Ha[qa]=4;Ha[Ua]=3;var $a=[];$a[Wa]=1;$a[La]=4;$a[Ia]=2;var Qa=32854;var Xa=32855;var Ya=36194;var Za=33189;var Ka=36168;var ri=34041;var ei=35907;var ti=34836;var ni=34842;var ai=34843;var ii=[Qa,Xa,Ya,ei,ni,ai,ti];var oi={};oi[Ea]="complete";oi[Ra]="incomplete attachment";oi[Va]="incomplete dimensions";oi[Ja]="incomplete, missing attachment";oi[Na]="unsupported";function fi(r,t,n,a,i,o){var f={cur:null,next:null,dirty:false,setFBO:null};var u=["rgba"];var s=["rgba4","rgb565","rgb5 a1"];if(t.ext_srgb){s.push("srgba")}if(t.ext_color_buffer_half_float){s.push("rgba16f","rgb16f")}if(t.webgl_color_buffer_float){s.push("rgba32f")}var l=["uint8"];if(t.oes_texture_half_float){l.push("half float","float16")}if(t.oes_texture_float){l.push("float","float32")}function c(r,e,t){this.target=r;this.texture=e;this.renderbuffer=t;var n=0;var a=0;if(e){n=e.width;a=e.height}else if(t){n=t.width;a=t.height}this.width=n;this.height=a}function v(r){if(r){if(r.texture){r.texture._texture.decRef()}if(r.renderbuffer){r.renderbuffer._renderbuffer.decRef()}}}function d(r,e,t){if(!r){return}if(r.texture){var n=r.texture._texture;var a=Math.max(1,n.width);var i=Math.max(1,n.height);nr(a===e&&i===t,"inconsistent width/height for supplied texture");n.refCount+=1}else{var o=r.renderbuffer._renderbuffer;nr(o.width===e&&o.height===t,"inconsistent width/height for renderbuffer");o.refCount+=1}}function p(e,t){if(t){if(t.texture){r.framebufferTexture2D(_a,e,t.target,t.texture._texture.texture,0)}else{r.framebufferRenderbuffer(_a,e,Ta,t.renderbuffer._renderbuffer.renderbuffer)}}}function b(r){var e=Fa;var t=null;var n=null;var a=r;if(typeof r==="object"){a=r.data;if("target"in r){e=r.target|0}}nr.type(a,"function","invalid attachment data");var i=a._reglType;if(i==="texture2d"){t=a;nr(e===Fa)}else if(i==="textureCube"){t=a;nr(e>=Ma&&e<Ma+6,"invalid cube map target")}else if(i==="renderbuffer"){n=a;e=Ta}else{nr.raise("invalid regl object for attachment")}return new c(e,t,n)}function m(r,e,t,n,o){if(t){var f=a.create2D({width:r,height:e,format:n,type:o});f._texture.refCount=0;return new c(Fa,f,null)}else{var u=i.create({width:r,height:e,format:n});u._renderbuffer.refCount=0;return new c(Ta,null,u)}}function h(r){return r&&(r.texture||r.renderbuffer)}function y(r,e,t){if(r){if(r.texture){r.texture.resize(e,t)}else if(r.renderbuffer){r.renderbuffer.resize(e,t)}r.width=e;r.height=t}}var g=0;var w={};function x(){this.id=g++;w[this.id]=this;this.framebuffer=r.createFramebuffer();this.width=0;this.height=0;this.colorAttachments=[];this.depthAttachment=null;this.stencilAttachment=null;this.depthStencilAttachment=null}function A(r){r.colorAttachments.forEach(v);v(r.depthAttachment);v(r.stencilAttachment);v(r.depthStencilAttachment)}function C(e){var t=e.framebuffer;nr(t,"must not double destroy framebuffer");r.deleteFramebuffer(t);e.framebuffer=null;o.framebufferCount--;delete w[e.id]}function j(e){var t;r.bindFramebuffer(_a,e.framebuffer);var a=e.colorAttachments;for(t=0;t<a.length;++t){p(Da+t,a[t])}for(t=a.length;t<n.maxColorAttachments;++t){r.framebufferTexture2D(_a,Da+t,Fa,null,0)}r.framebufferTexture2D(_a,Ba,Fa,null,0);r.framebufferTexture2D(_a,Sa,Fa,null,0);r.framebufferTexture2D(_a,za,Fa,null,0);p(Sa,e.depthAttachment);p(za,e.stencilAttachment);p(Ba,e.depthStencilAttachment);var i=r.checkFramebufferStatus(_a);if(!r.isContextLost()&&i!==Ea){nr.raise("framebuffer configuration not supported, status = "+oi[i])}r.bindFramebuffer(_a,f.next?f.next.framebuffer:null);f.cur=f.next;r.getError()}function k(r,a){var i=new x;o.framebufferCount++;function c(r,e){var a;nr(f.next!==i,"can not update framebuffer which is currently in use");var o=0;var v=0;var p=true;var y=true;var g=null;var w=true;var x="rgba";var C="uint8";var k=1;var O=null;var _=null;var T=null;var F=false;if(typeof r==="number"){o=r|0;v=e|0||o}else if(!r){o=v=1}else{nr.type(r,"object","invalid arguments for framebuffer");var M=r;if("shape"in M){var D=M.shape;nr(Array.isArray(D)&&D.length>=2,"invalid shape for framebuffer");o=D[0];v=D[1]}else{if("radius"in M){o=v=M.radius}if("width"in M){o=M.width}if("height"in M){v=M.height}}if("color"in M||"colors"in M){g=M.color||M.colors;if(Array.isArray(g)){nr(g.length===1||t.webgl_draw_buffers,"multiple render targets not supported")}}if(!g){if("colorCount"in M){k=M.colorCount|0;nr(k>0,"invalid color buffer count")}if("colorTexture"in M){w=!!M.colorTexture;x="rgba4"}if("colorType"in M){C=M.colorType;if(!w){if(C==="half float"||C==="float16"){nr(t.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers");x="rgba16f"}else if(C==="float"||C==="float32"){nr(t.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers");x="rgba32f"}}else{nr(t.oes_texture_float||!(C==="float"||C==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects");nr(t.oes_texture_half_float||!(C==="half float"||C==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")}nr.oneOf(C,l,"invalid color type")}if("colorFormat"in M){x=M.colorFormat;if(u.indexOf(x)>=0){w=true}else if(s.indexOf(x)>=0){w=false}else{nr.optional((function(){if(w){nr.oneOf(M.colorFormat,u,"invalid color format for texture")}else{nr.oneOf(M.colorFormat,s,"invalid color format for renderbuffer")}}))}}}if("depthTexture"in M||"depthStencilTexture"in M){F=!!(M.depthTexture||M.depthStencilTexture);nr(!F||t.webgl_depth_texture,"webgl_depth_texture extension not supported")}if("depth"in M){if(typeof M.depth==="boolean"){p=M.depth}else{O=M.depth;y=false}}if("stencil"in M){if(typeof M.stencil==="boolean"){y=M.stencil}else{_=M.stencil;p=false}}if("depthStencil"in M){if(typeof M.depthStencil==="boolean"){p=y=M.depthStencil}else{T=M.depthStencil;p=false;y=false}}}var S=null;var z=null;var B=null;var E=null;if(Array.isArray(g)){S=g.map(b)}else if(g){S=[b(g)]}else{S=new Array(k);for(a=0;a<k;++a){S[a]=m(o,v,w,x,C)}}nr(t.webgl_draw_buffers||S.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers.");nr(S.length<=n.maxColorAttachments,"too many color attachments, not supported");o=o||S[0].width;v=v||S[0].height;if(O){z=b(O)}else if(p&&!y){z=m(o,v,F,"depth","uint32")}if(_){B=b(_)}else if(y&&!p){B=m(o,v,false,"stencil","uint8")}if(T){E=b(T)}else if(!O&&!_&&y&&p){E=m(o,v,F,"depth stencil","depth stencil")}nr(!!O+!!_+!!T<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var R=null;for(a=0;a<S.length;++a){d(S[a],o,v);nr(!S[a]||S[a].texture&&Ga.indexOf(S[a].texture._texture.format)>=0||S[a].renderbuffer&&ii.indexOf(S[a].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+a+" is invalid");if(S[a]&&S[a].texture){var J=Ha[S[a].texture._texture.format]*$a[S[a].texture._texture.type];if(R===null){R=J}else{nr(R===J,"all color attachments much have the same number of bits per pixel.")}}}d(z,o,v);nr(!z||z.texture&&z.texture._texture.format===Pa||z.renderbuffer&&z.renderbuffer._renderbuffer.format===Za,"invalid depth attachment for framebuffer object");d(B,o,v);nr(!B||B.renderbuffer&&B.renderbuffer._renderbuffer.format===Ka,"invalid stencil attachment for framebuffer object");d(E,o,v);nr(!E||E.texture&&E.texture._texture.format===ri||E.renderbuffer&&E.renderbuffer._renderbuffer.format===ri,"invalid depth-stencil attachment for framebuffer object");A(i);i.width=o;i.height=v;i.colorAttachments=S;i.depthAttachment=z;i.stencilAttachment=B;i.depthStencilAttachment=E;c.color=S.map(h);c.depth=h(z);c.stencil=h(B);c.depthStencil=h(E);c.width=i.width;c.height=i.height;j(i);return c}function v(r,e){nr(f.next!==i,"can not resize a framebuffer which is currently in use");var t=Math.max(r|0,1);var n=Math.max(e|0||t,1);if(t===i.width&&n===i.height){return c}var a=i.colorAttachments;for(var o=0;o<a.length;++o){y(a[o],t,n)}y(i.depthAttachment,t,n);y(i.stencilAttachment,t,n);y(i.depthStencilAttachment,t,n);i.width=c.width=t;i.height=c.height=n;j(i);return c}c(r,a);return e(c,{resize:v,_reglType:"framebuffer",_framebuffer:i,destroy:function(){C(i);A(i)},use:function(r){f.setFBO({framebuffer:c},r)}})}function O(r){var i=Array(6);function o(r){var n;nr(i.indexOf(f.next)<0,"can not update framebuffer which is currently in use");var s={color:null};var c=0;var v=null;var d="rgba";var p="uint8";var b=1;if(typeof r==="number"){c=r|0}else if(!r){c=1}else{nr.type(r,"object","invalid arguments for framebuffer");var m=r;if("shape"in m){var h=m.shape;nr(Array.isArray(h)&&h.length>=2,"invalid shape for framebuffer");nr(h[0]===h[1],"cube framebuffer must be square");c=h[0]}else{if("radius"in m){c=m.radius|0}if("width"in m){c=m.width|0;if("height"in m){nr(m.height===c,"must be square")}}else if("height"in m){c=m.height|0}}if("color"in m||"colors"in m){v=m.color||m.colors;if(Array.isArray(v)){nr(v.length===1||t.webgl_draw_buffers,"multiple render targets not supported")}}if(!v){if("colorCount"in m){b=m.colorCount|0;nr(b>0,"invalid color buffer count")}if("colorType"in m){nr.oneOf(m.colorType,l,"invalid color type");p=m.colorType}if("colorFormat"in m){d=m.colorFormat;nr.oneOf(m.colorFormat,u,"invalid color format for texture")}}if("depth"in m){s.depth=m.depth}if("stencil"in m){s.stencil=m.stencil}if("depthStencil"in m){s.depthStencil=m.depthStencil}}var y;if(v){if(Array.isArray(v)){y=[];for(n=0;n<v.length;++n){y[n]=v[n]}}else{y=[v]}}else{y=Array(b);var g={radius:c,format:d,type:p};for(n=0;n<b;++n){y[n]=a.createCube(g)}}s.color=Array(y.length);for(n=0;n<y.length;++n){var w=y[n];nr(typeof w==="function"&&w._reglType==="textureCube","invalid cube map");c=c||w.width;nr(w.width===c&&w.height===c,"invalid cube map shape");s.color[n]={target:Ma,data:y[n]}}for(n=0;n<6;++n){for(var x=0;x<y.length;++x){s.color[x].target=Ma+n}if(n>0){s.depth=i[0].depth;s.stencil=i[0].stencil;s.depthStencil=i[0].depthStencil}if(i[n]){i[n](s)}else{i[n]=k(s)}}return e(o,{width:c,height:c,color:y})}function s(r){var e;var t=r|0;nr(t>0&&t<=n.maxCubeMapSize,"invalid radius for cube fbo");if(t===o.width){return o}var a=o.color;for(e=0;e<a.length;++e){a[e].resize(t)}for(e=0;e<6;++e){i[e].resize(t)}o.width=o.height=t;return o}o(r);return e(o,{faces:i,resize:s,_reglType:"framebufferCube",destroy:function(){i.forEach((function(r){r.destroy()}))}})}function _(){f.cur=null;f.next=null;f.dirty=true;ke(w).forEach((function(e){e.framebuffer=r.createFramebuffer();j(e)}))}return e(f,{getFramebuffer:function(r){if(typeof r==="function"&&r._reglType==="framebuffer"){var e=r._framebuffer;if(e instanceof x){return e}}return null},create:k,createCube:O,clear:function(){ke(w).forEach(C)},restore:_})}var ui=5126;var si=34962;var li=34963;var ci=["attributes","elements","offset","count","primitive","instances"];function vi(){this.state=0;this.x=0;this.y=0;this.z=0;this.w=0;this.buffer=null;this.size=0;this.normalized=false;this.type=ui;this.offset=0;this.stride=0;this.divisor=0}function di(e,t,n,a,i,o,f){var u=n.maxAttributes;var s=new Array(u);for(var l=0;l<u;++l){s[l]=new vi}var c=0;var v={};var d={Record:vi,scope:{},state:s,currentVAO:null,targetVAO:null,restore:b()?A:function(){},createVAO:C,getVAO:h,destroyBuffer:p,setVAO:b()?y:g,clear:b()?w:function(){}};function p(r){for(var t=0;t<s.length;++t){var n=s[t];if(n.buffer===r){e.disableVertexAttribArray(t);n.buffer=null}}}function b(){return t.oes_vertex_array_object}function m(){return t.angle_instanced_arrays}function h(r){if(typeof r==="function"&&r._vao){return r._vao}return null}function y(r){if(r===d.currentVAO){return}var e=b();if(r){e.bindVertexArrayOES(r.vao)}else{e.bindVertexArrayOES(null)}d.currentVAO=r}function g(r){if(r===d.currentVAO){return}if(r){r.bindAttrs()}else{var t=m();for(var n=0;n<s.length;++n){var a=s[n];if(a.buffer){e.enableVertexAttribArray(n);a.buffer.bind();e.vertexAttribPointer(n,a.size,a.type,a.normalized,a.stride,a.offfset);if(t&&a.divisor){t.vertexAttribDivisorANGLE(n,a.divisor)}}else{e.disableVertexAttribArray(n);e.vertexAttrib4f(n,a.x,a.y,a.z,a.w)}}if(f.elements){e.bindBuffer(li,f.elements.buffer.buffer)}else{e.bindBuffer(li,null)}}d.currentVAO=r}function w(){ke(v).forEach((function(r){r.destroy()}))}function x(){this.id=++c;this.attributes=[];this.elements=null;this.ownsElements=false;this.count=0;this.offset=0;this.instances=-1;this.primitive=4;var r=b();if(r){this.vao=r.createVertexArrayOES()}else{this.vao=null}v[this.id]=this;this.buffers=[]}x.prototype.bindAttrs=function(){var r=m();var t=this.attributes;for(var n=0;n<t.length;++n){var a=t[n];if(a.buffer){e.enableVertexAttribArray(n);e.bindBuffer(si,a.buffer.buffer);e.vertexAttribPointer(n,a.size,a.type,a.normalized,a.stride,a.offset);if(r&&a.divisor){r.vertexAttribDivisorANGLE(n,a.divisor)}}else{e.disableVertexAttribArray(n);e.vertexAttrib4f(n,a.x,a.y,a.z,a.w)}}for(var i=t.length;i<u;++i){e.disableVertexAttribArray(i)}var f=o.getElements(this.elements);if(f){e.bindBuffer(li,f.buffer.buffer)}else{e.bindBuffer(li,null)}};x.prototype.refresh=function(){var r=b();if(r){r.bindVertexArrayOES(this.vao);this.bindAttrs();d.currentVAO=null;r.bindVertexArrayOES(null)}};x.prototype.destroy=function(){if(this.vao){var r=b();if(this===d.currentVAO){d.currentVAO=null;r.bindVertexArrayOES(null)}r.deleteVertexArrayOES(this.vao);this.vao=null}if(this.ownsElements){this.elements.destroy();this.elements=null;this.ownsElements=false}if(v[this.id]){delete v[this.id];a.vaoCount-=1}};function A(){var r=b();if(r){ke(v).forEach((function(r){r.refresh()}))}}function C(e){var n=new x;a.vaoCount+=1;function f(e){var a;if(Array.isArray(e)){a=e;if(n.elements&&n.ownsElements){n.elements.destroy()}n.elements=null;n.ownsElements=false;n.offset=0;n.count=0;n.instances=-1;n.primitive=4}else{nr(typeof e==="object","invalid arguments for create vao");nr("attributes"in e,"must specify attributes for vao");if(e.elements){var s=e.elements;if(n.ownsElements){if(typeof s==="function"&&s._reglType==="elements"){n.elements.destroy();n.ownsElements=false}else{n.elements(s);n.ownsElements=false}}else if(o.getElements(e.elements)){n.elements=e.elements;n.ownsElements=false}else{n.elements=o.create(e.elements);n.ownsElements=true}}else{n.elements=null;n.ownsElements=false}a=e.attributes;n.offset=0;n.count=-1;n.instances=-1;n.primitive=4;if(n.elements){n.count=n.elements._elements.vertCount;n.primitive=n.elements._elements.primType}if("offset"in e){n.offset=e.offset|0}if("count"in e){n.count=e.count|0}if("instances"in e){n.instances=e.instances|0}if("primitive"in e){nr(e.primitive in st,"bad primitive type: "+e.primitive);n.primitive=st[e.primitive]}nr.optional((()=>{var r=Object.keys(e);for(var t=0;t<r.length;++t){nr(ci.indexOf(r[t])>=0,'invalid option for vao: "'+r[t]+'" valid options are '+ci)}}));nr(Array.isArray(a),"attributes must be an array")}nr(a.length<u,"too many attributes");nr(a.length>0,"must specify at least one attribute");var l={};var c=n.attributes;c.length=a.length;for(var v=0;v<a.length;++v){var d=a[v];var p=c[v]=new vi;var b=d.data||d;if(Array.isArray(b)||r(b)||je(b)){var m;if(n.buffers[v]){m=n.buffers[v];if(r(b)&&m._buffer.byteLength>=b.byteLength){m.subdata(b)}else{m.destroy();n.buffers[v]=null}}if(!n.buffers[v]){m=n.buffers[v]=i.create(d,si,false,true)}p.buffer=i.getBuffer(m);p.size=p.buffer.dimension|0;p.normalized=false;p.type=p.buffer.dtype;p.offset=0;p.stride=0;p.divisor=0;p.state=1;l[v]=1}else if(i.getBuffer(d)){p.buffer=i.getBuffer(d);p.size=p.buffer.dimension|0;p.normalized=false;p.type=p.buffer.dtype;p.offset=0;p.stride=0;p.divisor=0;p.state=1}else if(i.getBuffer(d.buffer)){p.buffer=i.getBuffer(d.buffer);p.size=(+d.size||p.buffer.dimension)|0;p.normalized=!!d.normalized||false;if("type"in d){nr.parameter(d.type,Le,"invalid buffer type");p.type=Le[d.type]}else{p.type=p.buffer.dtype}p.offset=(d.offset||0)|0;p.stride=(d.stride||0)|0;p.divisor=(d.divisor||0)|0;p.state=1;nr(p.size>=1&&p.size<=4,"size must be between 1 and 4");nr(p.offset>=0,"invalid offset");nr(p.stride>=0&&p.stride<=255,"stride must be between 0 and 255");nr(p.divisor>=0,"divisor must be positive");nr(!p.divisor||!!t.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")}else if("x"in d){nr(v>0,"first attribute must not be a constant");p.x=+d.x||0;p.y=+d.y||0;p.z=+d.z||0;p.w=+d.w||0;p.state=2}else{nr(false,"invalid attribute spec for location "+v)}}for(var h=0;h<n.buffers.length;++h){if(!l[h]&&n.buffers[h]){n.buffers[h].destroy();n.buffers[h]=null}}n.refresh();return f}f.destroy=function(){for(var r=0;r<n.buffers.length;++r){if(n.buffers[r]){n.buffers[r].destroy()}}n.buffers.length=0;if(n.ownsElements){n.elements.destroy();n.elements=null;n.ownsElements=false}n.destroy()};f._vao=n;f._reglType="vao";return f(e)}return d}var pi=35632;var bi=35633;var mi=35718;var hi=35721;function yi(r,t,n,a){var i={};var o={};function f(r,e,t,n){this.name=r;this.id=e;this.location=t;this.info=n}function u(r,e){for(var t=0;t<r.length;++t){if(r[t].id===e.id){r[t].location=e.location;return}}r.push(e)}function s(e,n,a){var f=e===pi?i:o;var u=f[n];if(!u){var s=t.str(n);u=r.createShader(e);r.shaderSource(u,s);r.compileShader(u);nr.shaderError(r,u,s,e,a);f[n]=u}return u}var l={};var c=[];var v=0;function d(r,e){this.id=v++;this.fragId=r;this.vertId=e;this.program=null;this.uniforms=[];this.attributes=[];this.refCount=1;if(a.profile){this.stats={uniformsCount:0,attributesCount:0}}}function p(e,n,i){var o,l;var c=s(pi,e.fragId);var v=s(bi,e.vertId);var d=e.program=r.createProgram();r.attachShader(d,c);r.attachShader(d,v);if(i){for(o=0;o<i.length;++o){var p=i[o];r.bindAttribLocation(d,p[0],p[1])}}r.linkProgram(d);nr.linkError(r,d,t.str(e.fragId),t.str(e.vertId),n);var b=r.getProgramParameter(d,mi);if(a.profile){e.stats.uniformsCount=b}var m=e.uniforms;for(o=0;o<b;++o){l=r.getActiveUniform(d,o);if(l){if(l.size>1){for(var h=0;h<l.size;++h){var y=l.name.replace("[0]","["+h+"]");u(m,new f(y,t.id(y),r.getUniformLocation(d,y),l))}}else{u(m,new f(l.name,t.id(l.name),r.getUniformLocation(d,l.name),l))}}}var g=r.getProgramParameter(d,hi);if(a.profile){e.stats.attributesCount=g}var w=e.attributes;for(o=0;o<g;++o){l=r.getActiveAttrib(d,o);if(l){u(w,new f(l.name,t.id(l.name),r.getAttribLocation(d,l.name),l))}}}if(a.profile){n.getMaxUniformsCount=function(){var r=0;c.forEach((function(e){if(e.stats.uniformsCount>r){r=e.stats.uniformsCount}}));return r};n.getMaxAttributesCount=function(){var r=0;c.forEach((function(e){if(e.stats.attributesCount>r){r=e.stats.attributesCount}}));return r}}function b(){i={};o={};for(var r=0;r<c.length;++r){p(c[r],null,c[r].attributes.map((function(r){return[r.location,r.name]})))}}return{clear:function(){var e=r.deleteShader.bind(r);ke(i).forEach(e);i={};ke(o).forEach(e);o={};c.forEach((function(e){r.deleteProgram(e.program)}));c.length=0;l={};n.shaderCount=0},program:function(t,a,f,u){nr.command(t>=0,"missing vertex shader",f);nr.command(a>=0,"missing fragment shader",f);var s=l[a];if(!s){s=l[a]={}}var v=s[t];if(v){v.refCount++;if(!u){return v}}var b=new d(a,t);n.shaderCount++;p(b,f,u);if(!v){s[t]=b}c.push(b);return e(b,{destroy:function(){b.refCount--;if(b.refCount<=0){r.deleteProgram(b.program);var e=c.indexOf(b);c.splice(e,1);n.shaderCount--}if(s[b.vertId].refCount<=0){r.deleteShader(o[b.vertId]);delete o[b.vertId];delete l[b.fragId][b.vertId]}if(!Object.keys(l[b.fragId]).length){r.deleteShader(i[b.fragId]);delete i[b.fragId];delete l[b.fragId]}}})},restore:b,shader:s,frag:-1,vert:-1}}var gi=6408;var wi=5121;var xi=3333;var Ai=5126;function Ci(e,t,n,a,i,o,f){function u(u){var s;if(t.next===null){nr(i.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer');s=wi}else{nr(t.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer");s=t.next.colorAttachments[0].texture._texture.type;nr.optional((function(){if(o.oes_texture_float){nr(s===wi||s===Ai,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'");if(s===Ai){nr(f.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")}}else{nr(s===wi,"Reading from a framebuffer is only allowed for the type 'uint8'")}}))}var l=0;var c=0;var v=a.framebufferWidth;var d=a.framebufferHeight;var p=null;if(r(u)){p=u}else if(u){nr.type(u,"object","invalid arguments to regl.read()");l=u.x|0;c=u.y|0;nr(l>=0&&l<a.framebufferWidth,"invalid x offset for regl.read");nr(c>=0&&c<a.framebufferHeight,"invalid y offset for regl.read");v=(u.width||a.framebufferWidth-l)|0;d=(u.height||a.framebufferHeight-c)|0;p=u.data||null}if(p){if(s===wi){nr(p instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'")}else if(s===Ai){nr(p instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")}}nr(v>0&&v+l<=a.framebufferWidth,"invalid width for read pixels");nr(d>0&&d+c<=a.framebufferHeight,"invalid height for read pixels");n();var b=v*d*4;if(!p){if(s===wi){p=new Uint8Array(b)}else if(s===Ai){p=p||new Float32Array(b)}}nr.isTypedArray(p,"data buffer for regl.read() must be a typedarray");nr(p.byteLength>=b,"data buffer for regl.read() too small");e.pixelStorei(xi,4);e.readPixels(l,c,v,d,gi,s,p);return p}function s(r){var e;t.setFBO({framebuffer:r.framebuffer},(function(){e=u(r)}));return e}function l(r){if(!r||!("framebuffer"in r)){return u(r)}else{return s(r)}}return l}function ji(r){return Array.prototype.slice.call(r)}function ki(r){return ji(r).join("")}function Oi(){var r=0;var t=[];var n=[];function a(e){for(var a=0;a<n.length;++a){if(n[a]===e){return t[a]}}var i="g"+r++;t.push(i);n.push(e);return i}function i(){var t=[];function n(){t.push.apply(t,ji(arguments))}var a=[];function i(){var e="v"+r++;a.push(e);if(arguments.length>0){t.push(e,"=");t.push.apply(t,ji(arguments));t.push(";")}return e}return e(n,{def:i,toString:function(){return ki([a.length>0?"var "+a.join(",")+";":"",ki(t)])}})}function o(){var r=i();var t=i();var n=r.toString;var a=t.toString;function o(e,n){t(e,n,"=",r.def(e,n),";")}return e((function(){r.apply(r,ji(arguments))}),{def:r.def,entry:r,exit:t,save:o,set:function(e,t,n){o(e,t);r(e,t,"=",n,";")},toString:function(){return n()+a()}})}function f(){var r=ki(arguments);var t=o();var n=o();var a=t.toString;var i=n.toString;return e(t,{then:function(){t.apply(t,ji(arguments));return this},else:function(){n.apply(n,ji(arguments));return this},toString:function(){var e=i();if(e){e="else{"+e+"}"}return ki(["if(",r,"){",a(),"}",e])}})}var u=i();var s={};function l(r,t){var n=[];function a(){var r="a"+n.length;n.push(r);return r}t=t||0;for(var i=0;i<t;++i){a()}var f=o();var u=f.toString;var l=s[r]=e(f,{arg:a,toString:function(){return ki(["function(",n.join(),"){",u(),"}"])}});return l}function c(){var r=['"use strict";',u,"return {"];Object.keys(s).forEach((function(e){r.push('"',e,'":',s[e].toString(),",")}));r.push("}");var e=ki(r).replace(/;/g,";\n").replace(/}/g,"}\n").replace(/{/g,"{\n");var a=Function.apply(null,t.concat(e));return a.apply(null,n)}return{global:u,link:a,block:i,proc:l,scope:o,cond:f,compile:c}}var _i="xyzw".split("");var Ti=5121;var Fi=1;var Mi=2;var Di=0;var Si=1;var zi=2;var Bi=3;var Ei=4;var Ri=5;var Ji=6;var Vi="dither";var Ni="blend.enable";var Ii="blend.color";var Wi="blend.equation";var Li="blend.func";var Ui="depth.enable";var qi="depth.func";var Pi="depth.range";var Gi="depth.mask";var Hi="colorMask";var $i="cull.enable";var Qi="cull.face";var Xi="frontFace";var Yi="lineWidth";var Zi="polygonOffset.enable";var Ki="polygonOffset.offset";var ro="sample.alpha";var eo="sample.enable";var to="sample.coverage";var no="stencil.enable";var ao="stencil.mask";var io="stencil.func";var oo="stencil.opFront";var fo="stencil.opBack";var uo="scissor.enable";var so="scissor.box";var lo="viewport";var co="profile";var vo="framebuffer";var po="vert";var bo="frag";var mo="elements";var ho="primitive";var yo="count";var go="offset";var wo="instances";var xo="vao";var Ao="Width";var Co="Height";var jo=vo+Ao;var ko=vo+Co;var Oo=lo+Ao;var _o=lo+Co;var To="drawingBuffer";var Fo=To+Ao;var Mo=To+Co;var Do=[Li,Wi,io,oo,fo,to,lo,so,Ki];var So=34962;var zo=34963;var Bo=35632;var Eo=35633;var Ro=3553;var Jo=34067;var Vo=2884;var No=3042;var Io=3024;var Wo=2960;var Lo=2929;var Uo=3089;var qo=32823;var Po=32926;var Go=32928;var Ho=5126;var $o=35664;var Qo=35665;var Xo=35666;var Yo=5124;var Zo=35667;var Ko=35668;var rf=35669;var ef=35670;var tf=35671;var nf=35672;var af=35673;var of=35674;var ff=35675;var uf=35676;var sf=35678;var lf=35680;var cf=4;var vf=1028;var df=1029;var pf=2304;var bf=2305;var mf=32775;var hf=32776;var yf=519;var gf=7680;var wf=0;var xf=1;var Af=32774;var Cf=513;var jf=36160;var kf=36064;var Of={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};var _f=["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"];var Tf={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};var Ff={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386};var Mf={frag:Bo,vert:Eo};var Df={cw:pf,ccw:bf};function Sf(e){return Array.isArray(e)||r(e)||je(e)}function zf(r){return r.sort((function(r,e){if(r===lo){return-1}else if(e===lo){return 1}return r<e?-1:1}))}function Bf(r,e,t,n){this.thisDep=r;this.contextDep=e;this.propDep=t;this.append=n}function Ef(r){return r&&!(r.thisDep||r.contextDep||r.propDep)}function Rf(r){return new Bf(false,false,false,r)}function Jf(r,e){var t=r.type;if(t===Di){var n=r.data.length;return new Bf(true,n>=1,n>=2,e)}else if(t===Ei){var a=r.data;return new Bf(a.thisDep,a.contextDep,a.propDep,e)}else if(t===Ri){return new Bf(false,false,false,e)}else if(t===Ji){var i=false;var o=false;var f=false;for(var u=0;u<r.data.length;++u){var s=r.data[u];if(s.type===Si){f=true}else if(s.type===zi){o=true}else if(s.type===Bi){i=true}else if(s.type===Di){i=true;var l=s.data;if(l>=1){o=true}if(l>=2){f=true}}else if(s.type===Ei){i=i||s.data.thisDep;o=o||s.data.contextDep;f=f||s.data.propDep}}return new Bf(i,o,f,e)}else{return new Bf(t===Bi,t===zi,t===Si,e)}}var Vf=new Bf(false,false,false,(function(){}));function Nf(r,t,n,a,i,o,f,u,s,l,c,v,d,p,b){var m=l.Record;var h={add:32774,subtract:32778,"reverse subtract":32779};if(n.ext_blend_minmax){h.min=mf;h.max=hf}var y=n.angle_instanced_arrays;var g=n.webgl_draw_buffers;var w=n.oes_vertex_array_object;var x={dirty:true,profile:b.profile};var A={};var C=[];var j={};var k={};function O(r){return r.replace(".","_")}function _(r,e,t){var n=O(r);C.push(r);A[n]=x[n]=!!t;j[n]=e}function T(r,e,t){var n=O(r);C.push(r);if(Array.isArray(t)){x[n]=t.slice();A[n]=t.slice()}else{x[n]=A[n]=t}k[n]=e}_(Vi,Io);_(Ni,No);T(Ii,"blendColor",[0,0,0,0]);T(Wi,"blendEquationSeparate",[Af,Af]);T(Li,"blendFuncSeparate",[xf,wf,xf,wf]);_(Ui,Lo,true);T(qi,"depthFunc",Cf);T(Pi,"depthRange",[0,1]);T(Gi,"depthMask",true);T(Hi,Hi,[true,true,true,true]);_($i,Vo);T(Qi,"cullFace",df);T(Xi,Xi,bf);T(Yi,Yi,1);_(Zi,qo);T(Ki,"polygonOffset",[0,0]);_(ro,Po);_(eo,Go);T(to,"sampleCoverage",[1,false]);_(no,Wo);T(ao,"stencilMask",-1);T(io,"stencilFunc",[yf,0,-1]);T(oo,"stencilOpSeparate",[vf,gf,gf,gf]);T(fo,"stencilOpSeparate",[df,gf,gf,gf]);_(uo,Uo);T(so,"scissor",[0,0,r.drawingBufferWidth,r.drawingBufferHeight]);T(lo,lo,[0,0,r.drawingBufferWidth,r.drawingBufferHeight]);var F={gl:r,context:d,strings:t,next:A,current:x,draw:v,elements:o,buffer:i,shader:c,attributes:l.state,vao:l,uniforms:s,framebuffer:u,extensions:n,timer:p,isBufferArgs:Sf};var M={primTypes:st,compareFuncs:Tf,blendFuncs:Of,blendEquations:h,stencilOps:Ff,glTypes:Le,orientationType:Df};nr.optional((function(){F.isArrayLike=_t}));if(g){M.backBuffer=[df];M.drawBuffer=_r(a.maxDrawbuffers,(function(r){if(r===0){return[0]}return _r(r,(function(r){return kf+r}))}))}var D=0;function S(){var r=Oi();var e=r.link;var n=r.global;r.id=D++;r.batchId="0";var a=e(F);var i=r.shared={props:"a0"};Object.keys(F).forEach((function(r){i[r]=n.def(a,".",r)}));nr.optional((function(){r.CHECK=e(nr);r.commandStr=nr.guessCommand();r.command=e(r.commandStr);r.assert=function(r,t,n){r("if(!(",t,"))",this.CHECK,".commandRaise(",e(n),",",this.command,");")};M.invalidBlendCombinations=_f}));var o=r.next={};var f=r.current={};Object.keys(k).forEach((function(r){if(Array.isArray(x[r])){o[r]=n.def(i.next,".",r);f[r]=n.def(i.current,".",r)}}));var u=r.constants={};Object.keys(M).forEach((function(r){u[r]=n.def(JSON.stringify(M[r]))}));r.invoke=function(t,n){switch(n.type){case Di:var a=["this",i.context,i.props,r.batchId];return t.def(e(n.data),".call(",a.slice(0,Math.max(n.data.length+1,4)),")");case Si:return t.def(i.props,n.data);case zi:return t.def(i.context,n.data);case Bi:return t.def("this",n.data);case Ei:n.data.append(r,t);return n.data.ref;case Ri:return n.data.toString();case Ji:return n.data.map((function(e){return r.invoke(t,e)}))}};r.attribCache={};var s={};r.scopeAttrib=function(r){var n=t.id(r);if(n in s){return s[n]}var a=l.scope[n];if(!a){a=l.scope[n]=new m}var i=s[n]=e(a);return i};return r}function z(r){var e=r.static;var t=r.dynamic;var n;if(co in e){var a=!!e[co];n=Rf((function(r,e){return a}));n.enable=a}else if(co in t){var i=t[co];n=Jf(i,(function(r,e){return r.invoke(e,i)}))}return n}function B(r,e){var t=r.static;var n=r.dynamic;if(vo in t){var a=t[vo];if(a){a=u.getFramebuffer(a);nr.command(a,"invalid framebuffer object");return Rf((function(r,e){var t=r.link(a);var n=r.shared;e.set(n.framebuffer,".next",t);var i=n.context;e.set(i,"."+jo,t+".width");e.set(i,"."+ko,t+".height");return t}))}else{return Rf((function(r,e){var t=r.shared;e.set(t.framebuffer,".next","null");var n=t.context;e.set(n,"."+jo,n+"."+Fo);e.set(n,"."+ko,n+"."+Mo);return"null"}))}}else if(vo in n){var i=n[vo];return Jf(i,(function(r,e){var t=r.invoke(e,i);var n=r.shared;var a=n.framebuffer;var o=e.def(a,".getFramebuffer(",t,")");nr.optional((function(){r.assert(e,"!"+t+"||"+o,"invalid framebuffer object")}));e.set(a,".next",o);var f=n.context;e.set(f,"."+jo,o+"?"+o+".width:"+f+"."+Fo);e.set(f,"."+ko,o+"?"+o+".height:"+f+"."+Mo);return o}))}else{return null}}function E(r,e,t){var n=r.static;var a=r.dynamic;function i(r){if(r in n){var i=n[r];nr.commandType(i,"object","invalid "+r,t.commandStr);var o=true;var f=i.x|0;var u=i.y|0;var s,l;if("width"in i){s=i.width|0;nr.command(s>=0,"invalid "+r,t.commandStr)}else{o=false}if("height"in i){l=i.height|0;nr.command(l>=0,"invalid "+r,t.commandStr)}else{o=false}return new Bf(!o&&e&&e.thisDep,!o&&e&&e.contextDep,!o&&e&&e.propDep,(function(r,e){var t=r.shared.context;var n=s;if(!("width"in i)){n=e.def(t,".",jo,"-",f)}var a=l;if(!("height"in i)){a=e.def(t,".",ko,"-",u)}return[f,u,n,a]}))}else if(r in a){var c=a[r];var v=Jf(c,(function(e,t){var n=e.invoke(t,c);nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));var a=e.shared.context;var i=t.def(n,".x|0");var o=t.def(n,".y|0");var f=t.def('"width" in ',n,"?",n,".width|0:","(",a,".",jo,"-",i,")");var u=t.def('"height" in ',n,"?",n,".height|0:","(",a,".",ko,"-",o,")");nr.optional((function(){e.assert(t,f+">=0&&"+u+">=0","invalid "+r)}));return[i,o,f,u]}));if(e){v.thisDep=v.thisDep||e.thisDep;v.contextDep=v.contextDep||e.contextDep;v.propDep=v.propDep||e.propDep}return v}else if(e){return new Bf(e.thisDep,e.contextDep,e.propDep,(function(r,e){var t=r.shared.context;return[0,0,e.def(t,".",jo),e.def(t,".",ko)]}))}else{return null}}var o=i(lo);if(o){var f=o;o=new Bf(o.thisDep,o.contextDep,o.propDep,(function(r,e){var t=f.append(r,e);var n=r.shared.context;e.set(n,"."+Oo,t[2]);e.set(n,"."+_o,t[3]);return t}))}return{viewport:o,scissor_box:i(so)}}function R(r,e){var t=r.static;var n=typeof t[bo]==="string"&&typeof t[po]==="string";if(n){if(Object.keys(e.dynamic).length>0){return null}var a=e.static;var i=Object.keys(a);if(i.length>0&&typeof a[i[0]]==="number"){var o=[];for(var f=0;f<i.length;++f){nr(typeof a[i[f]]==="number","must specify all vertex attribute locations when using vaos");o.push([a[i[f]]|0,i[f]])}return o}}return null}function J(r,e,n){var a=r.static;var i=r.dynamic;function o(r){if(r in a){var e=t.id(a[r]);nr.optional((function(){c.shader(Mf[r],e,nr.guessCommand())}));var n=Rf((function(){return e}));n.id=e;return n}else if(r in i){var o=i[r];return Jf(o,(function(e,t){var n=e.invoke(t,o);var a=t.def(e.shared.strings,".id(",n,")");nr.optional((function(){t(e.shared.shader,".shader(",Mf[r],",",a,",",e.command,");")}));return a}))}return null}var f=o(bo);var u=o(po);var s=null;var l;if(Ef(f)&&Ef(u)){s=c.program(u.id,f.id,null,n);l=Rf((function(r,e){return r.link(s)}))}else{l=new Bf(f&&f.thisDep||u&&u.thisDep,f&&f.contextDep||u&&u.contextDep,f&&f.propDep||u&&u.propDep,(function(r,e){var t=r.shared.shader;var n;if(f){n=f.append(r,e)}else{n=e.def(t,".",bo)}var a;if(u){a=u.append(r,e)}else{a=e.def(t,".",po)}var i=t+".program("+a+","+n;nr.optional((function(){i+=","+r.command}));return e.def(i+")")}))}return{frag:f,vert:u,progVar:l,program:s}}function V(r,e){var t=r.static;var n=r.dynamic;var a={};var i=false;function f(){if(xo in t){var r=t[xo];if(r!==null&&l.getVAO(r)===null){r=l.createVAO(r)}i=true;a.vao=r;return Rf((function(e){var t=l.getVAO(r);if(t){return e.link(t)}else{return"null"}}))}else if(xo in n){i=true;var e=n[xo];return Jf(e,(function(r,t){var n=r.invoke(t,e);return t.def(r.shared.vao+".getVAO("+n+")")}))}return null}var u=f();var s=false;function c(){if(mo in t){var r=t[mo];a.elements=r;if(Sf(r)){var f=a.elements=o.create(r,true);r=o.getElements(f);s=true}else if(r){r=o.getElements(r);s=true;nr.command(r,"invalid elements",e.commandStr)}var l=Rf((function(e,t){if(r){var n=e.link(r);e.ELEMENTS=n;return n}e.ELEMENTS=null;return null}));l.value=r;return l}else if(mo in n){s=true;var c=n[mo];return Jf(c,(function(r,e){var t=r.shared;var n=t.isBufferArgs;var a=t.elements;var i=r.invoke(e,c);var o=e.def("null");var f=e.def(n,"(",i,")");var u=r.cond(f).then(o,"=",a,".createStream(",i,");").else(o,"=",a,".getElements(",i,");");nr.optional((function(){r.assert(u.else,"!"+i+"||"+o,"invalid elements")}));e.entry(u);e.exit(r.cond(f).then(a,".destroyStream(",o,");"));r.ELEMENTS=o;return o}))}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.elements+".getElements("+r.shared.vao+".currentVAO.elements):null")}))}return null}var v=c();function d(){if(ho in t){var r=t[ho];a.primitive=r;nr.commandParameter(r,st,"invalid primitve",e.commandStr);return Rf((function(e,t){return st[r]}))}else if(ho in n){var o=n[ho];return Jf(o,(function(r,e){var t=r.constants.primTypes;var n=r.invoke(e,o);nr.optional((function(){r.assert(e,n+" in "+t,"invalid primitive, must be one of "+Object.keys(st))}));return e.def(t,"[",n,"]")}))}else if(s){if(Ef(v)){if(v.value){return Rf((function(r,e){return e.def(r.ELEMENTS,".primType")}))}else{return Rf((function(){return cf}))}}else{return new Bf(v.thisDep,v.contextDep,v.propDep,(function(r,e){var t=r.ELEMENTS;return e.def(t,"?",t,".primType:",cf)}))}}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.primitive:"+cf)}))}return null}function p(r,o){if(r in t){var f=t[r]|0;if(o){a.offset=f}else{a.instances=f}nr.command(!o||f>=0,"invalid "+r,e.commandStr);return Rf((function(r,e){if(o){r.OFFSET=f}return f}))}else if(r in n){var l=n[r];return Jf(l,(function(e,t){var n=e.invoke(t,l);if(o){e.OFFSET=n;nr.optional((function(){e.assert(t,n+">=0","invalid "+r)}))}return n}))}else if(o){if(s){return Rf((function(r,e){r.OFFSET=0;return 0}))}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.offset:0")}))}}else if(i){return new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao+".currentVAO?"+r.shared.vao+".currentVAO.instances:-1")}))}return null}var b=p(go,true);function m(){if(yo in t){var r=t[yo]|0;a.count=r;nr.command(typeof r==="number"&&r>=0,"invalid vertex count",e.commandStr);return Rf((function(){return r}))}else if(yo in n){var o=n[yo];return Jf(o,(function(r,e){var t=r.invoke(e,o);nr.optional((function(){r.assert(e,"typeof "+t+'==="number"&&'+t+">=0&&"+t+"===("+t+"|0)","invalid vertex count")}));return t}))}else if(s){if(Ef(v)){if(v){if(b){return new Bf(b.thisDep,b.contextDep,b.propDep,(function(r,e){var t=e.def(r.ELEMENTS,".vertCount-",r.OFFSET);nr.optional((function(){r.assert(e,t+">=0","invalid vertex offset/element buffer too small")}));return t}))}else{return Rf((function(r,e){return e.def(r.ELEMENTS,".vertCount")}))}}else{var f=Rf((function(){return-1}));nr.optional((function(){f.MISSING=true}));return f}}else{var l=new Bf(v.thisDep||b.thisDep,v.contextDep||b.contextDep,v.propDep||b.propDep,(function(r,e){var t=r.ELEMENTS;if(r.OFFSET){return e.def(t,"?",t,".vertCount-",r.OFFSET,":-1")}return e.def(t,"?",t,".vertCount:-1")}));nr.optional((function(){l.DYNAMIC=true}));return l}}else if(i){var c=new Bf(u.thisDep,u.contextDep,u.propDep,(function(r,e){return e.def(r.shared.vao,".currentVAO?",r.shared.vao,".currentVAO.count:-1")}));return c}return null}var h=d();var y=m();var g=p(wo,false);return{elements:v,primitive:h,count:y,instances:g,offset:b,vao:u,vaoActive:i,elementsActive:s,static:a}}function N(r,e){var t=r.static;var n=r.dynamic;var i={};C.forEach((function(r){var o=O(r);function f(e,a){if(r in t){var f=e(t[r]);i[o]=Rf((function(){return f}))}else if(r in n){var u=n[r];i[o]=Jf(u,(function(r,e){return a(r,e,r.invoke(e,u))}))}}switch(r){case $i:case Ni:case Vi:case no:case Ui:case uo:case Zi:case ro:case eo:case Gi:return f((function(t){nr.commandType(t,"boolean",r,e.commandStr);return t}),(function(e,t,n){nr.optional((function(){e.assert(t,"typeof "+n+'==="boolean"',"invalid flag "+r,e.commandStr)}));return n}));case qi:return f((function(t){nr.commandParameter(t,Tf,"invalid "+r,e.commandStr);return Tf[t]}),(function(e,t,n){var a=e.constants.compareFuncs;nr.optional((function(){e.assert(t,n+" in "+a,"invalid "+r+", must be one of "+Object.keys(Tf))}));return t.def(a,"[",n,"]")}));case Pi:return f((function(r){nr.command(_t(r)&&r.length===2&&typeof r[0]==="number"&&typeof r[1]==="number"&&r[0]<=r[1],"depth range is 2d array",e.commandStr);return r}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===2&&"+"typeof "+t+'[0]==="number"&&'+"typeof "+t+'[1]==="number"&&'+t+"[0]<="+t+"[1]","depth range must be a 2d array")}));var n=e.def("+",t,"[0]");var a=e.def("+",t,"[1]");return[n,a]}));case Li:return f((function(r){nr.commandType(r,"object","blend.func",e.commandStr);var t="srcRGB"in r?r.srcRGB:r.src;var n="srcAlpha"in r?r.srcAlpha:r.src;var a="dstRGB"in r?r.dstRGB:r.dst;var i="dstAlpha"in r?r.dstAlpha:r.dst;nr.commandParameter(t,Of,o+".srcRGB",e.commandStr);nr.commandParameter(n,Of,o+".srcAlpha",e.commandStr);nr.commandParameter(a,Of,o+".dstRGB",e.commandStr);nr.commandParameter(i,Of,o+".dstAlpha",e.commandStr);nr.command(_f.indexOf(t+", "+a)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+t+", "+a+")",e.commandStr);return[Of[t],Of[a],Of[n],Of[i]]}),(function(e,t,n){var a=e.constants.blendFuncs;nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid blend func, must be an object")}));function i(i,o){var f=t.def('"',i,o,'" in ',n,"?",n,".",i,o,":",n,".",i);nr.optional((function(){e.assert(t,f+" in "+a,"invalid "+r+"."+i+o+", must be one of "+Object.keys(Of))}));return f}var o=i("src","RGB");var f=i("dst","RGB");nr.optional((function(){var r=e.constants.invalidBlendCombinations;e.assert(t,r+".indexOf("+o+'+", "+'+f+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")}));var u=t.def(a,"[",o,"]");var s=t.def(a,"[",i("src","Alpha"),"]");var l=t.def(a,"[",f,"]");var c=t.def(a,"[",i("dst","Alpha"),"]");return[u,l,s,c]}));case Wi:return f((function(t){if(typeof t==="string"){nr.commandParameter(t,h,"invalid "+r,e.commandStr);return[h[t],h[t]]}else if(typeof t==="object"){nr.commandParameter(t.rgb,h,r+".rgb",e.commandStr);nr.commandParameter(t.alpha,h,r+".alpha",e.commandStr);return[h[t.rgb],h[t.alpha]]}else{nr.commandRaise("invalid blend.equation",e.commandStr)}}),(function(e,t,n){var a=e.constants.blendEquations;var i=t.def();var o=t.def();var f=e.cond("typeof ",n,'==="string"');nr.optional((function(){function t(r,t,n){e.assert(r,n+" in "+a,"invalid "+t+", must be one of "+Object.keys(h))}t(f.then,r,n);e.assert(f.else,n+"&&typeof "+n+'==="object"',"invalid "+r);t(f.else,r+".rgb",n+".rgb");t(f.else,r+".alpha",n+".alpha")}));f.then(i,"=",o,"=",a,"[",n,"];");f.else(i,"=",a,"[",n,".rgb];",o,"=",a,"[",n,".alpha];");t(f);return[i,o]}));case Ii:return f((function(r){nr.command(_t(r)&&r.length===4,"blend.color must be a 4d array",e.commandStr);return _r(4,(function(e){return+r[e]}))}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===4","blend.color must be a 4d array")}));return _r(4,(function(r){return e.def("+",t,"[",r,"]")}))}));case ao:return f((function(r){nr.commandType(r,"number",o,e.commandStr);return r|0}),(function(r,e,t){nr.optional((function(){r.assert(e,"typeof "+t+'==="number"',"invalid stencil.mask")}));return e.def(t,"|0")}));case io:return f((function(t){nr.commandType(t,"object",o,e.commandStr);var n=t.cmp||"keep";var a=t.ref||0;var i="mask"in t?t.mask:-1;nr.commandParameter(n,Tf,r+".cmp",e.commandStr);nr.commandType(a,"number",r+".ref",e.commandStr);nr.commandType(i,"number",r+".mask",e.commandStr);return[Tf[n],a,i]}),(function(r,e,t){var n=r.constants.compareFuncs;nr.optional((function(){function a(){r.assert(e,Array.prototype.join.call(arguments,""),"invalid stencil.func")}a(t+"&&typeof ",t,'==="object"');a('!("cmp" in ',t,")||(",t,".cmp in ",n,")")}));var a=e.def('"cmp" in ',t,"?",n,"[",t,".cmp]",":",gf);var i=e.def(t,".ref|0");var o=e.def('"mask" in ',t,"?",t,".mask|0:-1");return[a,i,o]}));case oo:case fo:return f((function(t){nr.commandType(t,"object",o,e.commandStr);var n=t.fail||"keep";var a=t.zfail||"keep";var i=t.zpass||"keep";nr.commandParameter(n,Ff,r+".fail",e.commandStr);nr.commandParameter(a,Ff,r+".zfail",e.commandStr);nr.commandParameter(i,Ff,r+".zpass",e.commandStr);return[r===fo?df:vf,Ff[n],Ff[a],Ff[i]]}),(function(e,t,n){var a=e.constants.stencilOps;nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));function i(i){nr.optional((function(){e.assert(t,'!("'+i+'" in '+n+")||"+"("+n+"."+i+" in "+a+")","invalid "+r+"."+i+", must be one of "+Object.keys(Ff))}));return t.def('"',i,'" in ',n,"?",a,"[",n,".",i,"]:",gf)}return[r===fo?df:vf,i("fail"),i("zfail"),i("zpass")]}));case Ki:return f((function(r){nr.commandType(r,"object",o,e.commandStr);var t=r.factor|0;var n=r.units|0;nr.commandType(t,"number",o+".factor",e.commandStr);nr.commandType(n,"number",o+".units",e.commandStr);return[t,n]}),(function(e,t,n){nr.optional((function(){e.assert(t,n+"&&typeof "+n+'==="object"',"invalid "+r)}));var a=t.def(n,".factor|0");var i=t.def(n,".units|0");return[a,i]}));case Qi:return f((function(r){var t=0;if(r==="front"){t=vf}else if(r==="back"){t=df}nr.command(!!t,o,e.commandStr);return t}),(function(r,e,t){nr.optional((function(){r.assert(e,t+'==="front"||'+t+'==="back"',"invalid cull.face")}));return e.def(t,'==="front"?',vf,":",df)}));case Yi:return f((function(r){nr.command(typeof r==="number"&&r>=a.lineWidthDims[0]&&r<=a.lineWidthDims[1],"invalid line width, must be a positive number between "+a.lineWidthDims[0]+" and "+a.lineWidthDims[1],e.commandStr);return r}),(function(r,e,t){nr.optional((function(){r.assert(e,"typeof "+t+'==="number"&&'+t+">="+a.lineWidthDims[0]+"&&"+t+"<="+a.lineWidthDims[1],"invalid line width")}));return t}));case Xi:return f((function(r){nr.commandParameter(r,Df,o,e.commandStr);return Df[r]}),(function(r,e,t){nr.optional((function(){r.assert(e,t+'==="cw"||'+t+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}));return e.def(t+'==="cw"?'+pf+":"+bf)}));case Hi:return f((function(r){nr.command(_t(r)&&r.length===4,"color.mask must be length 4 array",e.commandStr);return r.map((function(r){return!!r}))}),(function(r,e,t){nr.optional((function(){r.assert(e,r.shared.isArrayLike+"("+t+")&&"+t+".length===4","invalid color.mask")}));return _r(4,(function(r){return"!!"+t+"["+r+"]"}))}));case to:return f((function(r){nr.command(typeof r==="object"&&r,o,e.commandStr);var t="value"in r?r.value:1;var n=!!r.invert;nr.command(typeof t==="number"&&t>=0&&t<=1,"sample.coverage.value must be a number between 0 and 1",e.commandStr);return[t,n]}),(function(r,e,t){nr.optional((function(){r.assert(e,t+"&&typeof "+t+'==="object"',"invalid sample.coverage")}));var n=e.def('"value" in ',t,"?+",t,".value:1");var a=e.def("!!",t,".invert");return[n,a]}))}}));return i}function I(r,e){var t=r.static;var n=r.dynamic;var a={};Object.keys(t).forEach((function(r){var n=t[r];var i;if(typeof n==="number"||typeof n==="boolean"){i=Rf((function(){return n}))}else if(typeof n==="function"){var o=n._reglType;if(o==="texture2d"||o==="textureCube"){i=Rf((function(r){return r.link(n)}))}else if(o==="framebuffer"||o==="framebufferCube"){nr.command(n.color.length>0,'missing color attachment for framebuffer sent to uniform "'+r+'"',e.commandStr);i=Rf((function(r){return r.link(n.color[0])}))}else{nr.commandRaise('invalid data for uniform "'+r+'"',e.commandStr)}}else if(_t(n)){i=Rf((function(e){var t=e.global.def("[",_r(n.length,(function(t){nr.command(typeof n[t]==="number"||typeof n[t]==="boolean","invalid uniform "+r,e.commandStr);return n[t]})),"]");return t}))}else{nr.commandRaise('invalid or missing data for uniform "'+r+'"',e.commandStr)}i.value=n;a[r]=i}));Object.keys(n).forEach((function(r){var e=n[r];a[r]=Jf(e,(function(r,t){return r.invoke(t,e)}))}));return a}function W(r,e){var n=r.static;var a=r.dynamic;var o={};Object.keys(n).forEach((function(r){var a=n[r];var f=t.id(r);var u=new m;if(Sf(a)){u.state=Fi;u.buffer=i.getBuffer(i.create(a,So,false,true));u.type=0}else{var s=i.getBuffer(a);if(s){u.state=Fi;u.buffer=s;u.type=0}else{nr.command(typeof a==="object"&&a,"invalid data for attribute "+r,e.commandStr);if("constant"in a){var l=a.constant;u.buffer="null";u.state=Mi;if(typeof l==="number"){u.x=l}else{nr.command(_t(l)&&l.length>0&&l.length<=4,"invalid constant for attribute "+r,e.commandStr);_i.forEach((function(r,e){if(e<l.length){u[r]=l[e]}}))}}else{if(Sf(a.buffer)){s=i.getBuffer(i.create(a.buffer,So,false,true))}else{s=i.getBuffer(a.buffer)}nr.command(!!s,'missing buffer for attribute "'+r+'"',e.commandStr);var c=a.offset|0;nr.command(c>=0,'invalid offset for attribute "'+r+'"',e.commandStr);var v=a.stride|0;nr.command(v>=0&&v<256,'invalid stride for attribute "'+r+'", must be integer betweeen [0, 255]',e.commandStr);var d=a.size|0;nr.command(!("size"in a)||d>0&&d<=4,'invalid size for attribute "'+r+'", must be 1,2,3,4',e.commandStr);var p=!!a.normalized;var b=0;if("type"in a){nr.commandParameter(a.type,Le,"invalid type for attribute "+r,e.commandStr);b=Le[a.type]}var h=a.divisor|0;nr.optional((function(){if("divisor"in a){nr.command(h===0||y,'cannot specify divisor for attribute "'+r+'", instancing not supported',e.commandStr);nr.command(h>=0,'invalid divisor for attribute "'+r+'"',e.commandStr)}var t=e.commandStr;var n=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(a).forEach((function(e){nr.command(n.indexOf(e)>=0,'unknown parameter "'+e+'" for attribute pointer "'+r+'" (valid parameters are '+n+")",t)}))}));u.buffer=s;u.state=Fi;u.size=d;u.normalized=p;u.type=b||s.dtype;u.offset=c;u.stride=v;u.divisor=h}}}o[r]=Rf((function(r,e){var t=r.attribCache;if(f in t){return t[f]}var n={isStream:false};Object.keys(u).forEach((function(r){n[r]=u[r]}));if(u.buffer){n.buffer=r.link(u.buffer);n.type=n.type||n.buffer+".dtype"}t[f]=n;return n}))}));Object.keys(a).forEach((function(r){var e=a[r];function t(t,n){var a=t.invoke(n,e);var i=t.shared;var o=t.constants;var f=i.isBufferArgs;var u=i.buffer;nr.optional((function(){t.assert(n,a+"&&(typeof "+a+'==="object"||typeof '+a+'==="function")&&('+f+"("+a+")||"+u+".getBuffer("+a+")||"+u+".getBuffer("+a+".buffer)||"+f+"("+a+".buffer)||"+'("constant" in '+a+"&&(typeof "+a+'.constant==="number"||'+i.isArrayLike+"("+a+".constant))))",'invalid dynamic attribute "'+r+'"')}));var s={isStream:n.def(false)};var l=new m;l.state=Fi;Object.keys(l).forEach((function(r){s[r]=n.def(""+l[r])}));var c=s.buffer;var v=s.type;n("if(",f,"(",a,")){",s.isStream,"=true;",c,"=",u,".createStream(",So,",",a,");",v,"=",c,".dtype;","}else{",c,"=",u,".getBuffer(",a,");","if(",c,"){",v,"=",c,".dtype;",'}else if("constant" in ',a,"){",s.state,"=",Mi,";","if(typeof "+a+'.constant === "number"){',s[_i[0]],"=",a,".constant;",_i.slice(1).map((function(r){return s[r]})).join("="),"=0;","}else{",_i.map((function(r,e){return s[r]+"="+a+".constant.length>"+e+"?"+a+".constant["+e+"]:0;"})).join(""),"}}else{","if(",f,"(",a,".buffer)){",c,"=",u,".createStream(",So,",",a,".buffer);","}else{",c,"=",u,".getBuffer(",a,".buffer);","}",v,'="type" in ',a,"?",o.glTypes,"[",a,".type]:",c,".dtype;",s.normalized,"=!!",a,".normalized;");function d(r){n(s[r],"=",a,".",r,"|0;")}d("size");d("offset");d("stride");d("divisor");n("}}");n.exit("if(",s.isStream,"){",u,".destroyStream(",c,");","}");return s}o[r]=Jf(e,t)}));return o}function L(r){var e=r.static;var t=r.dynamic;var n={};Object.keys(e).forEach((function(r){var t=e[r];n[r]=Rf((function(r,e){if(typeof t==="number"||typeof t==="boolean"){return""+t}else{return r.link(t)}}))}));Object.keys(t).forEach((function(r){var e=t[r];n[r]=Jf(e,(function(r,t){return r.invoke(t,e)}))}));return n}function U(r,e,t,a,i){var o=r.static;var f=r.dynamic;nr.optional((function(){var r=[vo,po,bo,mo,ho,go,yo,wo,co,xo].concat(C);function e(e){Object.keys(e).forEach((function(e){nr.command(r.indexOf(e)>=0,'unknown parameter "'+e+'"',i.commandStr)}))}e(o);e(f)}));var u=R(r,e);var s=B(r);var c=E(r,s,i);var v=V(r,i);var d=N(r,i);var p=J(r,i,u);function b(r){var e=c[r];if(e){d[r]=e}}b(lo);b(O(so));var m=Object.keys(d).length>0;var h={framebuffer:s,draw:v,shader:p,state:d,dirty:m,scopeVAO:null,drawVAO:null,useVAO:false,attributes:{}};h.profile=z(r);h.uniforms=I(t,i);h.drawVAO=h.scopeVAO=v.vao;if(!h.drawVAO&&p.program&&!u&&n.angle_instanced_arrays&&v.static.elements){var y=true;var g=p.program.attributes.map((function(r){var t=e.static[r];y=y&&!!t;return t}));if(y&&g.length>0){var w=l.getVAO(l.createVAO({attributes:g,elements:v.static.elements}));h.drawVAO=new Bf(null,null,null,(function(r,e){return r.link(w)}));h.useVAO=true}}if(u){h.useVAO=true}else{h.attributes=W(e,i)}h.context=L(a);return h}function q(r,e,t){var n=r.shared;var a=n.context;var i=r.scope();Object.keys(t).forEach((function(n){e.save(a,"."+n);var o=t[n];var f=o.append(r,e);if(Array.isArray(f)){i(a,".",n,"=[",f.join(),"];")}else{i(a,".",n,"=",f,";")}}));e(i)}function P(r,e,t,n){var a=r.shared;var i=a.gl;var o=a.framebuffer;var f;if(g){f=e.def(a.extensions,".webgl_draw_buffers")}var u=r.constants;var s=u.drawBuffer;var l=u.backBuffer;var c;if(t){c=t.append(r,e)}else{c=e.def(o,".next")}if(!n){e("if(",c,"!==",o,".cur){")}e("if(",c,"){",i,".bindFramebuffer(",jf,",",c,".framebuffer);");if(g){e(f,".drawBuffersWEBGL(",s,"[",c,".colorAttachments.length]);")}e("}else{",i,".bindFramebuffer(",jf,",null);");if(g){e(f,".drawBuffersWEBGL(",l,");")}e("}",o,".cur=",c,";");if(!n){e("}")}}function G(r,e,t){var n=r.shared;var a=n.gl;var i=r.current;var o=r.next;var f=n.current;var u=n.next;var s=r.cond(f,".dirty");C.forEach((function(e){var n=O(e);if(n in t.state){return}var l,c;if(n in o){l=o[n];c=i[n];var v=_r(x[n].length,(function(r){return s.def(l,"[",r,"]")}));s(r.cond(v.map((function(r,e){return r+"!=="+c+"["+e+"]"})).join("||")).then(a,".",k[n],"(",v,");",v.map((function(r,e){return c+"["+e+"]="+r})).join(";"),";"))}else{l=s.def(u,".",n);var d=r.cond(l,"!==",f,".",n);s(d);if(n in j){d(r.cond(l).then(a,".enable(",j[n],");").else(a,".disable(",j[n],");"),f,".",n,"=",l,";")}else{d(a,".",k[n],"(",l,");",f,".",n,"=",l,";")}}}));if(Object.keys(t.state).length===0){s(f,".dirty=false;")}e(s)}function H(r,e,t,n){var a=r.shared;var i=r.current;var o=a.current;var f=a.gl;zf(Object.keys(t)).forEach((function(a){var u=t[a];if(n&&!n(u)){return}var s=u.append(r,e);if(j[a]){var l=j[a];if(Ef(u)){if(s){e(f,".enable(",l,");")}else{e(f,".disable(",l,");")}}else{e(r.cond(s).then(f,".enable(",l,");").else(f,".disable(",l,");"))}e(o,".",a,"=",s,";")}else if(_t(s)){var c=i[a];e(f,".",k[a],"(",s,");",s.map((function(r,e){return c+"["+e+"]="+r})).join(";"),";")}else{e(f,".",k[a],"(",s,");",o,".",a,"=",s,";")}}))}function $(r,e){if(y){r.instancing=e.def(r.shared.extensions,".angle_instanced_arrays")}}function Q(r,e,t,n,a){var i=r.shared;var o=r.stats;var f=i.current;var u=i.timer;var s=t.profile;function l(){if(typeof performance==="undefined"){return"Date.now()"}else{return"performance.now()"}}var c,v;function d(r){c=e.def();r(c,"=",l(),";");if(typeof a==="string"){r(o,".count+=",a,";")}else{r(o,".count++;")}if(p){if(n){v=e.def();r(v,"=",u,".getNumPendingQueries();")}else{r(u,".beginQuery(",o,");")}}}function b(r){r(o,".cpuTime+=",l(),"-",c,";");if(p){if(n){r(u,".pushScopeStats(",v,",",u,".getNumPendingQueries(),",o,");")}else{r(u,".endQuery();")}}}function m(r){var t=e.def(f,".profile");e(f,".profile=",r,";");e.exit(f,".profile=",t,";")}var h;if(s){if(Ef(s)){if(s.enable){d(e);b(e.exit);m("true")}else{m("false")}return}h=s.append(r,e);m(h)}else{h=e.def(f,".profile")}var y=r.block();d(y);e("if(",h,"){",y,"}");var g=r.block();b(g);e.exit("if(",h,"){",g,"}")}function X(r,e,t,n,a){var i=r.shared;function o(r){switch(r){case $o:case Zo:case tf:return 2;case Qo:case Ko:case nf:return 3;case Xo:case rf:case af:return 4;default:return 1}}function f(t,n,a){var o=i.gl;var f=e.def(t,".location");var u=e.def(i.attributes,"[",f,"]");var s=a.state;var l=a.buffer;var c=[a.x,a.y,a.z,a.w];var v=["buffer","normalized","offset","stride"];function d(){e("if(!",u,".buffer){",o,".enableVertexAttribArray(",f,");}");var t=a.type;var i;if(!a.size){i=n}else{i=e.def(a.size,"||",n)}e("if(",u,".type!==",t,"||",u,".size!==",i,"||",v.map((function(r){return u+"."+r+"!=="+a[r]})).join("||"),"){",o,".bindBuffer(",So,",",l,".buffer);",o,".vertexAttribPointer(",[f,i,t,a.normalized,a.stride,a.offset],");",u,".type=",t,";",u,".size=",i,";",v.map((function(r){return u+"."+r+"="+a[r]+";"})).join(""),"}");if(y){var s=a.divisor;e("if(",u,".divisor!==",s,"){",r.instancing,".vertexAttribDivisorANGLE(",[f,s],");",u,".divisor=",s,";}")}}function p(){e("if(",u,".buffer){",o,".disableVertexAttribArray(",f,");",u,".buffer=null;","}if(",_i.map((function(r,e){return u+"."+r+"!=="+c[e]})).join("||"),"){",o,".vertexAttrib4f(",f,",",c,");",_i.map((function(r,e){return u+"."+r+"="+c[e]+";"})).join(""),"}")}if(s===Fi){d()}else if(s===Mi){p()}else{e("if(",s,"===",Fi,"){");d();e("}else{");p();e("}")}}n.forEach((function(n){var i=n.name;var u=t.attributes[i];var s;if(u){if(!a(u)){return}s=u.append(r,e)}else{if(!a(Vf)){return}var l=r.scopeAttrib(i);nr.optional((function(){r.assert(e,l+".state","missing attribute "+i)}));s={};Object.keys(new m).forEach((function(r){s[r]=e.def(l,".",r)}))}f(r.link(n),o(n.info.type),s)}))}function Y(r,e,n,a,i,o){var f=r.shared;var u=f.gl;var s;for(var l=0;l<a.length;++l){var c=a[l];var v=c.name;var d=c.info.type;var p=n.uniforms[v];var b=r.link(c);var m=b+".location";var h;if(p){if(!i(p)){continue}if(Ef(p)){var y=p.value;nr.command(y!==null&&typeof y!=="undefined",'missing uniform "'+v+'"',r.commandStr);if(d===sf||d===lf){nr.command(typeof y==="function"&&(d===sf&&(y._reglType==="texture2d"||y._reglType==="framebuffer")||d===lf&&(y._reglType==="textureCube"||y._reglType==="framebufferCube")),"invalid texture for uniform "+v,r.commandStr);var g=r.link(y._texture||y.color[0]._texture);e(u,".uniform1i(",m,",",g+".bind());");e.exit(g,".unbind();")}else if(d===of||d===ff||d===uf){nr.optional((function(){nr.command(_t(y),"invalid matrix for uniform "+v,r.commandStr);nr.command(d===of&&y.length===4||d===ff&&y.length===9||d===uf&&y.length===16,"invalid length for matrix uniform "+v,r.commandStr)}));var w=r.global.def("new Float32Array(["+Array.prototype.slice.call(y)+"])");var x=2;if(d===ff){x=3}else if(d===uf){x=4}e(u,".uniformMatrix",x,"fv(",m,",false,",w,");")}else{switch(d){case Ho:nr.commandType(y,"number","uniform "+v,r.commandStr);s="1f";break;case $o:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2f";break;case Qo:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3f";break;case Xo:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4f";break;case ef:nr.commandType(y,"boolean","uniform "+v,r.commandStr);s="1i";break;case Yo:nr.commandType(y,"number","uniform "+v,r.commandStr);s="1i";break;case tf:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2i";break;case Zo:nr.command(_t(y)&&y.length===2,"uniform "+v,r.commandStr);s="2i";break;case nf:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3i";break;case Ko:nr.command(_t(y)&&y.length===3,"uniform "+v,r.commandStr);s="3i";break;case af:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4i";break;case rf:nr.command(_t(y)&&y.length===4,"uniform "+v,r.commandStr);s="4i";break}e(u,".uniform",s,"(",m,",",_t(y)?Array.prototype.slice.call(y):y,");")}continue}else{h=p.append(r,e)}}else{if(!i(Vf)){continue}h=e.def(f.uniforms,"[",t.id(v),"]")}if(d===sf){nr(!Array.isArray(h),"must specify a scalar prop for textures");e("if(",h,"&&",h,'._reglType==="framebuffer"){',h,"=",h,".color[0];","}")}else if(d===lf){nr(!Array.isArray(h),"must specify a scalar prop for cube maps");e("if(",h,"&&",h,'._reglType==="framebufferCube"){',h,"=",h,".color[0];","}")}nr.optional((function(){function t(t,n){r.assert(e,t,'bad data or missing for uniform "'+v+'". '+n)}function n(r){nr(!Array.isArray(h),"must not specify an array type for uniform");t("typeof "+h+'==="'+r+'"',"invalid type, expected "+r)}function a(r,e){if(Array.isArray(h)){nr(h.length===r,"must have length "+r)}else{t(f.isArrayLike+"("+h+")&&"+h+".length==="+r,"invalid vector, should have length "+r)}}function i(r){nr(!Array.isArray(h),"must not specify a value type");t("typeof "+h+'==="function"&&'+h+'._reglType==="texture'+(r===Ro?"2d":"Cube")+'"',"invalid texture type")}switch(d){case Yo:n("number");break;case Zo:a(2);break;case Ko:a(3);break;case rf:a(4);break;case Ho:n("number");break;case $o:a(2);break;case Qo:a(3);break;case Xo:a(4);break;case ef:n("boolean");break;case tf:a(2);break;case nf:a(3);break;case af:a(4);break;case of:a(4);break;case ff:a(9);break;case uf:a(16);break;case sf:i(Ro);break;case lf:i(Jo);break}}));var A=1;switch(d){case sf:case lf:var C=e.def(h,"._texture");e(u,".uniform1i(",m,",",C,".bind());");e.exit(C,".unbind();");continue;case Yo:case ef:s="1i";break;case Zo:case tf:s="2i";A=2;break;case Ko:case nf:s="3i";A=3;break;case rf:case af:s="4i";A=4;break;case Ho:s="1f";break;case $o:s="2f";A=2;break;case Qo:s="3f";A=3;break;case Xo:s="4f";A=4;break;case of:s="Matrix2fv";break;case ff:s="Matrix3fv";break;case uf:s="Matrix4fv";break}if(s.charAt(0)==="M"){e(u,".uniform",s,"(",m,",");var j=Math.pow(d-of+2,2);var k=r.global.def("new Float32Array(",j,")");if(Array.isArray(h)){e("false,(",_r(j,(function(r){return k+"["+r+"]="+h[r]})),",",k,")")}else{e("false,(Array.isArray(",h,")||",h," instanceof Float32Array)?",h,":(",_r(j,(function(r){return k+"["+r+"]="+h+"["+r+"]"})),",",k,")")}e(");")}else if(A>1){var O=[];var _=[];for(var T=0;T<A;++T){if(Array.isArray(h)){_.push(h[T])}else{_.push(e.def(h+"["+T+"]"))}if(o){O.push(e.def())}}if(o){e("if(!",r.batchId,"||",O.map((function(r,e){return r+"!=="+_[e]})).join("||"),"){",O.map((function(r,e){return r+"="+_[e]+";"})).join(""))}e(u,".uniform",s,"(",m,",",_.join(","),");");if(o){e("}")}}else{nr(!Array.isArray(h),"uniform value must not be an array");if(o){var F=e.def();e("if(!",r.batchId,"||",F,"!==",h,"){",F,"=",h,";")}e(u,".uniform",s,"(",m,",",h,");");if(o){e("}")}}}}function Z(r,e,t,n){var a=r.shared;var i=a.gl;var o=a.draw;var f=n.draw;function u(){var u=f.elements;var s;var l=e;if(u){if(u.contextDep&&n.contextDynamic||u.propDep){l=t}s=u.append(r,l);if(f.elementsActive){l("if("+s+")"+i+".bindBuffer("+zo+","+s+".buffer.buffer);")}}else{s=l.def();l(s,"=",o,".",mo,";","if(",s,"){",i,".bindBuffer(",zo,",",s,".buffer.buffer);}","else if(",a.vao,".currentVAO){",s,"=",r.shared.elements+".getElements("+a.vao,".currentVAO.elements);",!w?"if("+s+")"+i+".bindBuffer("+zo+","+s+".buffer.buffer);":"","}")}return s}function s(){var a=f.count;var i;var u=e;if(a){if(a.contextDep&&n.contextDynamic||a.propDep){u=t}i=a.append(r,u);nr.optional((function(){if(a.MISSING){r.assert(e,"false","missing vertex count")}if(a.DYNAMIC){r.assert(u,i+">=0","missing vertex count")}}))}else{i=u.def(o,".",yo);nr.optional((function(){r.assert(u,i+">=0","missing vertex count")}))}return i}var l=u();function c(a){var i=f[a];if(i){if(i.contextDep&&n.contextDynamic||i.propDep){return i.append(r,t)}else{return i.append(r,e)}}else{return e.def(o,".",a)}}var v=c(ho);var d=c(go);var p=s();if(typeof p==="number"){if(p===0){return}}else{t("if(",p,"){");t.exit("}")}var b,m;if(y){b=c(wo);m=r.instancing}var h=l+".type";var g=f.elements&&Ef(f.elements)&&!f.vaoActive;function x(){function r(){t(m,".drawElementsInstancedANGLE(",[v,p,h,d+"<<(("+h+"-"+Ti+")>>1)",b],");")}function e(){t(m,".drawArraysInstancedANGLE(",[v,d,p,b],");")}if(l&&l!=="null"){if(!g){t("if(",l,"){");r();t("}else{");e();t("}")}else{r()}}else{e()}}function A(){function r(){t(i+".drawElements("+[v,p,h,d+"<<(("+h+"-"+Ti+")>>1)"]+");")}function e(){t(i+".drawArrays("+[v,d,p]+");")}if(l&&l!=="null"){if(!g){t("if(",l,"){");r();t("}else{");e();t("}")}else{r()}}else{e()}}if(y&&(typeof b!=="number"||b>=0)){if(typeof b==="string"){t("if(",b,">0){");x();t("}else if(",b,"<0){");A();t("}")}else{x()}}else{A()}}function K(r,e,t,n,a){var i=S();var o=i.proc("body",a);nr.optional((function(){i.commandStr=e.commandStr;i.command=i.link(e.commandStr)}));if(y){i.instancing=o.def(i.shared.extensions,".angle_instanced_arrays")}r(i,o,t,n);return i.compile().body}function rr(r,e,t,n){$(r,e);if(t.useVAO){if(t.drawVAO){e(r.shared.vao,".setVAO(",t.drawVAO.append(r,e),");")}else{e(r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);")}}else{e(r.shared.vao,".setVAO(null);");X(r,e,t,n.attributes,(function(){return true}))}Y(r,e,t,n.uniforms,(function(){return true}),false);Z(r,e,e,t)}function er(r,e){var t=r.proc("draw",1);$(r,t);q(r,t,e.context);P(r,t,e.framebuffer);G(r,t,e);H(r,t,e.state);Q(r,t,e,false,true);var n=e.shader.progVar.append(r,t);t(r.shared.gl,".useProgram(",n,".program);");if(e.shader.program){rr(r,t,e,e.shader.program)}else{t(r.shared.vao,".setVAO(null);");var a=r.global.def("{}");var i=t.def(n,".id");var o=t.def(a,"[",i,"]");t(r.cond(o).then(o,".call(this,a0);").else(o,"=",a,"[",i,"]=",r.link((function(t){return K(rr,r,e,t,1)})),"(",n,");",o,".call(this,a0);"))}if(Object.keys(e.state).length>0){t(r.shared.current,".dirty=true;")}if(r.shared.vao){t(r.shared.vao,".setVAO(null);")}}function tr(r,e,t,n){r.batchId="a1";$(r,e);function a(){return true}X(r,e,t,n.attributes,a);Y(r,e,t,n.uniforms,a,false);Z(r,e,e,t)}function ar(r,e,t,n){$(r,e);var a=t.contextDep;var i=e.def();var o="a0";var f="a1";var u=e.def();r.shared.props=u;r.batchId=i;var s=r.scope();var l=r.scope();e(s.entry,"for(",i,"=0;",i,"<",f,";++",i,"){",u,"=",o,"[",i,"];",l,"}",s.exit);function c(r){return r.contextDep&&a||r.propDep}function v(r){return!c(r)}if(t.needsContext){q(r,l,t.context)}if(t.needsFramebuffer){P(r,l,t.framebuffer)}H(r,l,t.state,c);if(t.profile&&c(t.profile)){Q(r,l,t,false,true)}if(!n){var d=r.global.def("{}");var p=t.shader.progVar.append(r,l);var b=l.def(p,".id");var m=l.def(d,"[",b,"]");l(r.shared.gl,".useProgram(",p,".program);","if(!",m,"){",m,"=",d,"[",b,"]=",r.link((function(e){return K(tr,r,t,e,2)})),"(",p,");}",m,".call(this,a0[",i,"],",i,");")}else{if(t.useVAO){if(t.drawVAO){if(c(t.drawVAO)){l(r.shared.vao,".setVAO(",t.drawVAO.append(r,l),");")}else{s(r.shared.vao,".setVAO(",t.drawVAO.append(r,s),");")}}else{s(r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);")}}else{s(r.shared.vao,".setVAO(null);");X(r,s,t,n.attributes,v);X(r,l,t,n.attributes,c)}Y(r,s,t,n.uniforms,v,false);Y(r,l,t,n.uniforms,c,true);Z(r,s,l,t)}}function ir(r,e){var t=r.proc("batch",2);r.batchId="0";$(r,t);var n=false;var a=true;Object.keys(e.context).forEach((function(r){n=n||e.context[r].propDep}));if(!n){q(r,t,e.context);a=false}var i=e.framebuffer;var o=false;if(i){if(i.propDep){n=o=true}else if(i.contextDep&&n){o=true}if(!o){P(r,t,i)}}else{P(r,t,null)}if(e.state.viewport&&e.state.viewport.propDep){n=true}function f(r){return r.contextDep&&n||r.propDep}G(r,t,e);H(r,t,e.state,(function(r){return!f(r)}));if(!e.profile||!f(e.profile)){Q(r,t,e,false,"a1")}e.contextDep=n;e.needsContext=a;e.needsFramebuffer=o;var u=e.shader.progVar;if(u.contextDep&&n||u.propDep){ar(r,t,e,null)}else{var s=u.append(r,t);t(r.shared.gl,".useProgram(",s,".program);");if(e.shader.program){ar(r,t,e,e.shader.program)}else{t(r.shared.vao,".setVAO(null);");var l=r.global.def("{}");var c=t.def(s,".id");var v=t.def(l,"[",c,"]");t(r.cond(v).then(v,".call(this,a0,a1);").else(v,"=",l,"[",c,"]=",r.link((function(t){return K(ar,r,e,t,2)})),"(",s,");",v,".call(this,a0,a1);"))}}if(Object.keys(e.state).length>0){t(r.shared.current,".dirty=true;")}if(r.shared.vao){t(r.shared.vao,".setVAO(null);")}}function or(r,e){var n=r.proc("scope",3);r.batchId="a2";var a=r.shared;var i=a.current;q(r,n,e.context);if(e.framebuffer){e.framebuffer.append(r,n)}zf(Object.keys(e.state)).forEach((function(t){var i=e.state[t];var o=i.append(r,n);if(_t(o)){o.forEach((function(e,a){n.set(r.next[t],"["+a+"]",e)}))}else{n.set(a.next,"."+t,o)}}));Q(r,n,e,true,true);[mo,go,yo,wo,ho].forEach((function(t){var i=e.draw[t];if(!i){return}n.set(a.draw,"."+t,""+i.append(r,n))}));Object.keys(e.uniforms).forEach((function(i){var o=e.uniforms[i].append(r,n);if(Array.isArray(o)){o="["+o.join()+"]"}n.set(a.uniforms,"["+t.id(i)+"]",o)}));Object.keys(e.attributes).forEach((function(t){var a=e.attributes[t].append(r,n);var i=r.scopeAttrib(t);Object.keys(new m).forEach((function(r){n.set(i,"."+r,a[r])}))}));if(e.scopeVAO){n.set(a.vao,".targetVAO",e.scopeVAO.append(r,n))}function o(t){var i=e.shader[t];if(i){n.set(a.shader,"."+t,i.append(r,n))}}o(po);o(bo);if(Object.keys(e.state).length>0){n(i,".dirty=true;");n.exit(i,".dirty=true;")}n("a1(",r.shared.context,",a0,",r.batchId,");")}function fr(r){if(typeof r!=="object"||_t(r)){return}var e=Object.keys(r);for(var t=0;t<e.length;++t){if(br.isDynamic(r[e[t]])){return true}}return false}function ur(r,e,t){var n=e.static[t];if(!n||!fr(n)){return}var a=r.global;var i=Object.keys(n);var o=false;var f=false;var u=false;var s=r.global.def("{}");i.forEach((function(e){var t=n[e];if(br.isDynamic(t)){if(typeof t==="function"){t=n[e]=br.unbox(t)}var i=Jf(t,null);o=o||i.thisDep;u=u||i.propDep;f=f||i.contextDep}else{a(s,".",e,"=");switch(typeof t){case"number":a(t);break;case"string":a('"',t,'"');break;case"object":if(Array.isArray(t)){a("[",t.join(),"]")}break;default:a(r.link(t));break}a(";")}}));function l(r,e){i.forEach((function(t){var a=n[t];if(!br.isDynamic(a)){return}var i=r.invoke(e,a);e(s,".",t,"=",i,";")}))}e.dynamic[t]=new br.DynamicVariable(Ei,{thisDep:o,contextDep:f,propDep:u,ref:s,append:l});delete e.static[t]}function sr(r,t,n,a,i){var o=S();o.stats=o.link(i);Object.keys(t.static).forEach((function(r){ur(o,t,r)}));Do.forEach((function(e){ur(o,r,e)}));var f=U(r,t,n,a,o);er(o,f);or(o,f);ir(o,f);return e(o.compile(),{destroy:function(){f.shader.program.destroy()}})}return{next:A,current:x,procs:function(){var r=S();var e=r.proc("poll");var t=r.proc("refresh");var i=r.block();e(i);t(i);var o=r.shared;var f=o.gl;var u=o.next;var s=o.current;i(s,".dirty=false;");P(r,e);P(r,t,null,true);var l;if(y){l=r.link(y)}if(n.oes_vertex_array_object){t(r.link(n.oes_vertex_array_object),".bindVertexArrayOES(null);")}for(var c=0;c<a.maxAttributes;++c){var v=t.def(o.attributes,"[",c,"]");var d=r.cond(v,".buffer");d.then(f,".enableVertexAttribArray(",c,");",f,".bindBuffer(",So,",",v,".buffer.buffer);",f,".vertexAttribPointer(",c,",",v,".size,",v,".type,",v,".normalized,",v,".stride,",v,".offset);").else(f,".disableVertexAttribArray(",c,");",f,".vertexAttrib4f(",c,",",v,".x,",v,".y,",v,".z,",v,".w);",v,".buffer=null;");t(d);if(y){t(l,".vertexAttribDivisorANGLE(",c,",",v,".divisor);")}}t(r.shared.vao,".currentVAO=null;",r.shared.vao,".setVAO(",r.shared.vao,".targetVAO);");Object.keys(j).forEach((function(n){var a=j[n];var o=i.def(u,".",n);var l=r.block();l("if(",o,"){",f,".enable(",a,")}else{",f,".disable(",a,")}",s,".",n,"=",o,";");t(l);e("if(",o,"!==",s,".",n,"){",l,"}")}));Object.keys(k).forEach((function(n){var a=k[n];var o=x[n];var l,c;var v=r.block();v(f,".",a,"(");if(_t(o)){var d=o.length;l=r.global.def(u,".",n);c=r.global.def(s,".",n);v(_r(d,(function(r){return l+"["+r+"]"})),");",_r(d,(function(r){return c+"["+r+"]="+l+"["+r+"];"})).join(""));e("if(",_r(d,(function(r){return l+"["+r+"]!=="+c+"["+r+"]"})).join("||"),"){",v,"}")}else{l=i.def(u,".",n);c=i.def(s,".",n);v(l,");",s,".",n,"=",l,";");e("if(",l,"!==",c,"){",v,"}")}t(v)}));return r.compile()}(),compile:sr}}function If(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var Wf=34918;var Lf=34919;var Uf=35007;var qf=function(r,e){if(!e.ext_disjoint_timer_query){return null}var t=[];function n(){return t.pop()||e.ext_disjoint_timer_query.createQueryEXT()}function a(r){t.push(r)}var i=[];function o(r){var t=n();e.ext_disjoint_timer_query.beginQueryEXT(Uf,t);i.push(t);d(i.length-1,i.length,r)}function f(){e.ext_disjoint_timer_query.endQueryEXT(Uf)}function u(){this.startQueryIndex=-1;this.endQueryIndex=-1;this.sum=0;this.stats=null}var s=[];function l(){return s.pop()||new u}function c(r){s.push(r)}var v=[];function d(r,e,t){var n=l();n.startQueryIndex=r;n.endQueryIndex=e;n.sum=0;n.stats=t;v.push(n)}var p=[];var b=[];function m(){var r,t;var n=i.length;if(n===0){return}b.length=Math.max(b.length,n+1);p.length=Math.max(p.length,n+1);p[0]=0;b[0]=0;var o=0;r=0;for(t=0;t<i.length;++t){var f=i[t];if(e.ext_disjoint_timer_query.getQueryObjectEXT(f,Lf)){o+=e.ext_disjoint_timer_query.getQueryObjectEXT(f,Wf);a(f)}else{i[r++]=f}p[t+1]=o;b[t+1]=r}i.length=r;r=0;for(t=0;t<v.length;++t){var u=v[t];var s=u.startQueryIndex;var l=u.endQueryIndex;u.sum+=p[l]-p[s];var d=b[s];var m=b[l];if(m===d){u.stats.gpuTime+=u.sum/1e6;c(u)}else{u.startQueryIndex=d;u.endQueryIndex=m;v[r++]=u}}v.length=r}return{beginQuery:o,endQuery:f,pushScopeStats:d,update:m,getNumPendingQueries:function(){return i.length},clear:function(){t.push.apply(t,i);for(var r=0;r<t.length;r++){e.ext_disjoint_timer_query.deleteQueryEXT(t[r])}i.length=0;t.length=0},restore:function(){i.length=0;t.length=0}}};var Pf=16384;var Gf=256;var Hf=1024;var $f=34962;var Qf="webglcontextlost";var Xf="webglcontextrestored";var Yf=1;var Zf=2;var Kf=3;function ru(r,e){for(var t=0;t<r.length;++t){if(r[t]===e){return t}}return-1}function eu(r){var t=kr(r);if(!t){return null}var n=t.gl;var a=n.getContextAttributes();var i=n.isContextLost();var o=Or(n,t);if(!o){return null}var f=yr();var u=If();var s=o.extensions;var l=qf(n,s);var c=hr();var v=n.drawingBufferWidth;var d=n.drawingBufferHeight;var p={tick:0,time:0,viewportWidth:v,viewportHeight:d,framebufferWidth:v,framebufferHeight:d,drawingBufferWidth:v,drawingBufferHeight:d,pixelRatio:t.pixelRatio};var b={};var m={elements:null,primitive:4,count:-1,offset:0,instances:-1};var h=Ce(n,s);var y=tt(n,u,t,x);var g=At(n,s,y,u);var w=di(n,s,h,u,y,g,m);function x(r){return w.destroyBuffer(r)}var A=yi(n,f,u,t);var C=va(n,s,h,(function(){O.procs.poll()}),p,u,t);var j=Oa(n,s,h,u,t);var k=fi(n,s,h,C,j,u);var O=Nf(n,f,s,h,y,g,C,k,b,w,A,m,p,l,t);var _=Ci(n,k,O.procs.poll,p,a,s,h);var T=O.next;var F=n.canvas;var M=[];var D=[];var S=[];var z=[t.onDestroy];var B=null;function E(){if(M.length===0){if(l){l.update()}B=null;return}B=mr.next(E);H();for(var r=M.length-1;r>=0;--r){var e=M[r];if(e){e(p,null,0)}}n.flush();if(l){l.update()}}function R(){if(!B&&M.length>0){B=mr.next(E)}}function J(){if(B){mr.cancel(E);B=null}}function V(r){r.preventDefault();i=true;J();D.forEach((function(r){r()}))}function N(r){n.getError();i=false;o.restore();A.restore();y.restore();C.restore();j.restore();k.restore();w.restore();if(l){l.restore()}O.procs.refresh();R();S.forEach((function(r){r()}))}if(F){F.addEventListener(Qf,V,false);F.addEventListener(Xf,N,false)}function I(){M.length=0;J();if(F){F.removeEventListener(Qf,V);F.removeEventListener(Xf,N)}A.clear();k.clear();j.clear();w.clear();C.clear();g.clear();y.clear();if(l){l.clear()}z.forEach((function(r){r()}))}function W(r){nr(!!r,"invalid args to regl({...})");nr.type(r,"object","invalid args to regl({...})");function t(r){var t=e({},r);delete t.uniforms;delete t.attributes;delete t.context;delete t.vao;if("stencil"in t&&t.stencil.op){t.stencil.opBack=t.stencil.opFront=t.stencil.op;delete t.stencil.op}function n(r){if(r in t){var e=t[r];delete t[r];Object.keys(e).forEach((function(n){t[r+"."+n]=e[n]}))}}n("blend");n("depth");n("cull");n("stencil");n("polygonOffset");n("scissor");n("sample");if("vao"in r){t.vao=r.vao}return t}function n(r,e){var t={};var n={};Object.keys(r).forEach((function(a){var i=r[a];if(br.isDynamic(i)){n[a]=br.unbox(i,a);return}else if(e&&Array.isArray(i)){for(var o=0;o<i.length;++o){if(br.isDynamic(i[o])){n[a]=br.unbox(i,a);return}}}t[a]=i}));return{dynamic:n,static:t}}var a=n(r.context||{},true);var o=n(r.uniforms||{},true);var f=n(r.attributes||{},false);var u=n(t(r),false);var s={gpuTime:0,cpuTime:0,count:0};var l=O.compile(u,f,o,a,s);var c=l.draw;var v=l.batch;var d=l.scope;var p=[];function b(r){while(p.length<r){p.push(null)}return p}function m(r,e){var t;if(i){nr.raise("context lost")}if(typeof r==="function"){return d.call(this,null,r,0)}else if(typeof e==="function"){if(typeof r==="number"){for(t=0;t<r;++t){d.call(this,null,e,t)}}else if(Array.isArray(r)){for(t=0;t<r.length;++t){d.call(this,r[t],e,t)}}else{return d.call(this,r,e,0)}}else if(typeof r==="number"){if(r>0){return v.call(this,b(r|0),r|0)}}else if(Array.isArray(r)){if(r.length){return v.call(this,r,r.length)}}else{return c.call(this,r)}}return e(m,{stats:s,destroy:function(){l.destroy()}})}var L=k.setFBO=W({framebuffer:br.define.call(null,Yf,"framebuffer")});function U(r,e){var t=0;O.procs.poll();var a=e.color;if(a){n.clearColor(+a[0]||0,+a[1]||0,+a[2]||0,+a[3]||0);t|=Pf}if("depth"in e){n.clearDepth(+e.depth);t|=Gf}if("stencil"in e){n.clearStencil(e.stencil|0);t|=Hf}nr(!!t,"called regl.clear with no buffer specified");n.clear(t)}function q(r){nr(typeof r==="object"&&r,"regl.clear() takes an object as input");if("framebuffer"in r){if(r.framebuffer&&r.framebuffer_reglType==="framebufferCube"){for(var t=0;t<6;++t){L(e({framebuffer:r.framebuffer.faces[t]},r),U)}}else{L(r,U)}}else{U(null,r)}}function P(r){nr.type(r,"function","regl.frame() callback must be a function");M.push(r);function e(){var e=ru(M,r);nr(e>=0,"cannot cancel a frame twice");function t(){var r=ru(M,t);M[r]=M[M.length-1];M.length-=1;if(M.length<=0){J()}}M[e]=t}R();return{cancel:e}}function G(){var r=T.viewport;var e=T.scissor_box;r[0]=r[1]=e[0]=e[1]=0;p.viewportWidth=p.framebufferWidth=p.drawingBufferWidth=r[2]=e[2]=n.drawingBufferWidth;p.viewportHeight=p.framebufferHeight=p.drawingBufferHeight=r[3]=e[3]=n.drawingBufferHeight}function H(){p.tick+=1;p.time=Q();G();O.procs.poll()}function $(){C.refresh();G();O.procs.refresh();if(l){l.update()}}function Q(){return(hr()-c)/1e3}$();function X(r,e){nr.type(e,"function","listener callback must be a function");var t;switch(r){case"frame":return P(e);case"lost":t=D;break;case"restore":t=S;break;case"destroy":t=z;break;default:nr.raise("invalid event, must be one of frame,lost,restore,destroy")}t.push(e);return{cancel:function(){for(var r=0;r<t.length;++r){if(t[r]===e){t[r]=t[t.length-1];t.pop();return}}}}}var Y=e(W,{clear:q,prop:br.define.bind(null,Yf),context:br.define.bind(null,Zf),this:br.define.bind(null,Kf),draw:W({}),buffer:function(r){return y.create(r,$f,false,false)},elements:function(r){return g.create(r,false)},texture:C.create2D,cube:C.createCube,renderbuffer:j.create,framebuffer:k.create,framebufferCube:k.createCube,vao:w.createVAO,attributes:a,frame:P,on:X,limits:h,hasExtension:function(r){return h.extensions.indexOf(r.toLowerCase())>=0},read:_,destroy:I,_gl:n,_refresh:$,poll:function(){H();if(l){l.update()}},now:Q,stats:u});t.onDone(null,Y);return Y}return eu}))})(v);return v.exports}var m=b();var h=r(m);var y={};var g;var w;function x(){if(w)return g;w=1;g=r;function r(r,e){if(!r||r.length==null)throw Error("Argument should be an array");if(e==null)e=1;else e=Math.floor(e);var t=Array(e*2);for(var n=0;n<e;n++){var a=-Infinity,i=Infinity,o=n,f=r.length;for(;o<f;o+=e){if(r[o]>a)a=r[o];if(r[o]<i)i=r[o]}t[n]=i;t[e+n]=a}return t}return g}var A;var C;function j(){if(C)return A;C=1;var r=x();A=e;function e(e,t,n){if(!e||e.length==null)throw Error("Argument should be an array");if(t==null)t=1;if(n==null)n=r(e,t);for(var a=0;a<t;a++){var i=n[t+a],o=n[a],f=a,u=e.length;if(i===Infinity&&o===-Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===i?1:e[f]===o?0:.5}}else if(i===Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===i?1:0}}else if(o===-Infinity){for(f=a;f<u;f+=t){e[f]=e[f]===o?0:1}}else{var s=i-o;for(f=a;f<u;f+=t){if(!isNaN(e[f])){e[f]=s===0?.5:(e[f]-o)/s}}}}return e}return A}var k;var O;function _(){if(O)return k;O=1;k={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};return k}var T;var F;function M(){if(F)return T;F=1;var r=_();T=t;var e={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function t(t){var n,a=[],i=1,o;if(typeof t==="string"){t=t.toLowerCase();if(r[t]){a=r[t].slice();o="rgb"}else if(t==="transparent"){i=0;o="rgb";a=[0,0,0]}else if(/^#[A-Fa-f0-9]+$/.test(t)){var f=t.slice(1);var u=f.length;var s=u<=4;i=1;if(s){a=[parseInt(f[0]+f[0],16),parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16)];if(u===4){i=parseInt(f[3]+f[3],16)/255}}else{a=[parseInt(f[0]+f[1],16),parseInt(f[2]+f[3],16),parseInt(f[4]+f[5],16)];if(u===8){i=parseInt(f[6]+f[7],16)/255}}if(!a[0])a[0]=0;if(!a[1])a[1]=0;if(!a[2])a[2]=0;o="rgb"}else if(n=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var l=n[1];var c=l==="rgb";var f=l.replace(/a$/,"");o=f;var u=f==="cmyk"?4:f==="gray"?1:3;a=n[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(r,t){if(/%$/.test(r)){if(t===u)return parseFloat(r)/100;if(f==="rgb")return parseFloat(r)*255/100;return parseFloat(r)}else if(f[t]==="h"){if(/deg$/.test(r)){return parseFloat(r)}else if(e[r]!==undefined){return e[r]}}return parseFloat(r)}));if(l===f)a.push(1);i=c?1:a[u]===undefined?1:a[u];a=a.slice(0,u)}else if(t.length>10&&/[0-9](?:\s|\/)/.test(t)){a=t.match(/([0-9]+)/g).map((function(r){return parseFloat(r)}));o=t.match(/([a-z])/gi).join("").toLowerCase()}}else if(!isNaN(t)){o="rgb";a=[t>>>16,(t&65280)>>>8,t&255]}else if(Array.isArray(t)||t.length){a=[t[0],t[1],t[2]];o="rgb";i=t.length===4?t[3]:1}else if(t instanceof Object){if(t.r!=null||t.red!=null||t.R!=null){o="rgb";a=[t.r||t.red||t.R||0,t.g||t.green||t.G||0,t.b||t.blue||t.B||0]}else{o="hsl";a=[t.h||t.hue||t.H||0,t.s||t.saturation||t.S||0,t.l||t.lightness||t.L||t.b||t.brightness]}i=t.a||t.alpha||t.opacity||1;if(t.opacity!=null)i/=100}return{space:o,values:a,alpha:i}}return T}var D=M();var S=r(D);const z={min:[0,0,0],max:[255,255,255]};var B={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(r){var e=r[0]/360,t=r[1]/100,n=r[2]/100,a,i,o,f,u,s=0;if(t===0)return u=n*255,[u,u,u];i=n<.5?n*(1+t):n+t-n*t;a=2*n-i;f=[0,0,0];for(;s<3;){o=e+1/3*-(s-1);o<0?o++:o>1&&o--;u=6*o<1?a+(i-a)*6*o:2*o<1?i:3*o<2?a+(i-a)*(2/3-o)*6:a;f[s++]=u*255}return f}};z.hsl=function(r){var e=r[0]/255,t=r[1]/255,n=r[2]/255,a=Math.min(e,t,n),i=Math.max(e,t,n),o=i-a,f,u,s;if(i===a){f=0}else if(e===i){f=(t-n)/o}else if(t===i){f=2+(n-e)/o}else if(n===i){f=4+(e-t)/o}f=Math.min(f*60,360);if(f<0){f+=360}s=(a+i)/2;if(i===a){u=0}else if(s<=.5){u=o/(i+a)}else{u=o/(2-i-a)}return[f,u*100,s*100]};function E(r){if(Array.isArray(r)&&r.raw)r=String.raw(...arguments);var e;var t=S(r);if(!t.space)return[];const n=t.space[0]==="h"?B.min:z.min;const a=t.space[0]==="h"?B.max:z.max;e=Array(3);e[0]=Math.min(Math.max(t.values[0],n[0]),a[0]);e[1]=Math.min(Math.max(t.values[1],n[1]),a[1]);e[2]=Math.min(Math.max(t.values[2],n[2]),a[2]);if(t.space[0]==="h"){e=B.rgb(e)}e.push(Math.min(Math.max(t.alpha,0),1));return e}var R;var J;function V(){if(J)return R;J=1;R=function(r){switch(r){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}};return R}var N=V();var I=r(N);function W(r,e){if(e==="float"||!e)e="array";if(e==="uint")e="uint8";if(e==="uint_clamped")e="uint8_clamped";var t=I(e);var n=new t(4);var a=e!=="uint8"&&e!=="uint8_clamped";if(!r.length||typeof r==="string"){r=E(r);r[0]/=255;r[1]/=255;r[2]/=255}if(L(r)){n[0]=r[0];n[1]=r[1];n[2]=r[2];n[3]=r[3]!=null?r[3]:255;if(a){n[0]/=255;n[1]/=255;n[2]/=255;n[3]/=255}return n}if(!a){n[0]=Math.min(Math.max(Math.floor(r[0]*255),0),255);n[1]=Math.min(Math.max(Math.floor(r[1]*255),0),255);n[2]=Math.min(Math.max(Math.floor(r[2]*255),0),255);n[3]=r[3]==null?255:Math.min(Math.max(Math.floor(r[3]*255),0),255)}else{n[0]=r[0];n[1]=r[1];n[2]=r[2];n[3]=r[3]!=null?r[3]:1}return n}function L(r){if(r instanceof Uint8Array||r instanceof Uint8ClampedArray)return true;if(Array.isArray(r)&&(r[0]>1||r[0]===0)&&(r[1]>1||r[1]===0)&&(r[2]>1||r[2]===0)&&(!r[3]||r[3]>1))return true;return false}var U=Object.freeze({__proto__:null,default:W});var q=e(U);var P={exports:{}};var G;function H(){if(G)return P.exports;G=1;P.exports=r;P.exports.default=r;function r(r,t,a){a=a||2;var i=t&&t.length,o=i?t[0]*a:r.length,f=e(r,0,o,a,true),s=[];if(!f||f.next===f.prev)return s;var l,c,v,d,p,b,m;if(i)f=u(r,t,f,a);if(r.length>80*a){l=v=r[0];c=d=r[1];for(var h=a;h<o;h+=a){p=r[h];b=r[h+1];if(p<l)l=p;if(b<c)c=b;if(p>v)v=p;if(b>d)d=b}m=Math.max(v-l,d-c);m=m!==0?32767/m:0}n(f,s,a,l,c,m,0);return s}function e(r,e,t,n,a){var i,o;if(a===D(r,e,t,n)>0){for(i=e;i<t;i+=n)o=T(i,r[i],r[i+1],o)}else{for(i=t-n;i>=e;i-=n)o=T(i,r[i],r[i+1],o)}if(o&&w(o,o.next)){F(o);o=o.next}return o}function t(r,e){if(!r)return r;if(!e)e=r;var t=r,n;do{n=false;if(!t.steiner&&(w(t,t.next)||g(t.prev,t,t.next)===0)){F(t);t=e=t.prev;if(t===t.next)break;n=true}else{t=t.next}}while(n||t!==e);return e}function n(r,e,u,s,l,c,v){if(!r)return;if(!v&&c)d(r,s,l,c);var p=r,b,m;while(r.prev!==r.next){b=r.prev;m=r.next;if(c?i(r,s,l,c):a(r)){e.push(b.i/u|0);e.push(r.i/u|0);e.push(m.i/u|0);F(r);r=m.next;p=m.next;continue}r=m;if(r===p){if(!v){n(t(r),e,u,s,l,c,1)}else if(v===1){r=o(t(r),e,u);n(r,e,u,s,l,c,2)}else if(v===2){f(r,e,u,s,l,c)}break}}}function a(r){var e=r.prev,t=r,n=r.next;if(g(e,t,n)>=0)return false;var a=e.x,i=t.x,o=n.x,f=e.y,u=t.y,s=n.y;var l=a<i?a<o?a:o:i<o?i:o,c=f<u?f<s?f:s:u<s?u:s,v=a>i?a>o?a:o:i>o?i:o,d=f>u?f>s?f:s:u>s?u:s;var p=n.next;while(p!==e){if(p.x>=l&&p.x<=v&&p.y>=c&&p.y<=d&&h(a,f,i,u,o,s,p.x,p.y)&&g(p.prev,p,p.next)>=0)return false;p=p.next}return true}function i(r,e,t,n){var a=r.prev,i=r,o=r.next;if(g(a,i,o)>=0)return false;var f=a.x,u=i.x,s=o.x,l=a.y,c=i.y,v=o.y;var d=f<u?f<s?f:s:u<s?u:s,p=l<c?l<v?l:v:c<v?c:v,m=f>u?f>s?f:s:u>s?u:s,y=l>c?l>v?l:v:c>v?c:v;var w=b(d,p,e,t,n),x=b(m,y,e,t,n);var A=r.prevZ,C=r.nextZ;while(A&&A.z>=w&&C&&C.z<=x){if(A.x>=d&&A.x<=m&&A.y>=p&&A.y<=y&&A!==a&&A!==o&&h(f,l,u,c,s,v,A.x,A.y)&&g(A.prev,A,A.next)>=0)return false;A=A.prevZ;if(C.x>=d&&C.x<=m&&C.y>=p&&C.y<=y&&C!==a&&C!==o&&h(f,l,u,c,s,v,C.x,C.y)&&g(C.prev,C,C.next)>=0)return false;C=C.nextZ}while(A&&A.z>=w){if(A.x>=d&&A.x<=m&&A.y>=p&&A.y<=y&&A!==a&&A!==o&&h(f,l,u,c,s,v,A.x,A.y)&&g(A.prev,A,A.next)>=0)return false;A=A.prevZ}while(C&&C.z<=x){if(C.x>=d&&C.x<=m&&C.y>=p&&C.y<=y&&C!==a&&C!==o&&h(f,l,u,c,s,v,C.x,C.y)&&g(C.prev,C,C.next)>=0)return false;C=C.nextZ}return true}function o(r,e,n){var a=r;do{var i=a.prev,o=a.next.next;if(!w(i,o)&&x(i,a,a.next,o)&&k(i,o)&&k(o,i)){e.push(i.i/n|0);e.push(a.i/n|0);e.push(o.i/n|0);F(a);F(a.next);a=r=o}a=a.next}while(a!==r);return t(a)}function f(r,e,a,i,o,f){var u=r;do{var s=u.next.next;while(s!==u.prev){if(u.i!==s.i&&y(u,s)){var l=_(u,s);u=t(u,u.next);l=t(l,l.next);n(u,e,a,i,o,f,0);n(l,e,a,i,o,f,0);return}s=s.next}u=u.next}while(u!==r)}function u(r,t,n,a){var i=[],o,f,u,c,v;for(o=0,f=t.length;o<f;o++){u=t[o]*a;c=o<f-1?t[o+1]*a:r.length;v=e(r,u,c,a,false);if(v===v.next)v.steiner=true;i.push(m(v))}i.sort(s);for(o=0;o<i.length;o++){n=l(i[o],n)}return n}function s(r,e){return r.x-e.x}function l(r,e){var n=c(r,e);if(!n){return e}var a=_(n,r);t(a,a.next);return t(n,n.next)}function c(r,e){var t=e,n=r.x,a=r.y,i=-Infinity,o;do{if(a<=t.y&&a>=t.next.y&&t.next.y!==t.y){var f=t.x+(a-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(f<=n&&f>i){i=f;o=t.x<t.next.x?t:t.next;if(f===n)return o}}t=t.next}while(t!==e);if(!o)return null;var u=o,s=o.x,l=o.y,c=Infinity,d;t=o;do{if(n>=t.x&&t.x>=s&&n!==t.x&&h(a<l?n:i,a,s,l,a<l?i:n,a,t.x,t.y)){d=Math.abs(a-t.y)/(n-t.x);if(k(t,r)&&(d<c||d===c&&(t.x>o.x||t.x===o.x&&v(o,t)))){o=t;c=d}}t=t.next}while(t!==u);return o}function v(r,e){return g(r.prev,r,e.prev)<0&&g(e.next,r,r.next)<0}function d(r,e,t,n){var a=r;do{if(a.z===0)a.z=b(a.x,a.y,e,t,n);a.prevZ=a.prev;a.nextZ=a.next;a=a.next}while(a!==r);a.prevZ.nextZ=null;a.prevZ=null;p(a)}function p(r){var e,t,n,a,i,o,f,u,s=1;do{t=r;r=null;i=null;o=0;while(t){o++;n=t;f=0;for(e=0;e<s;e++){f++;n=n.nextZ;if(!n)break}u=s;while(f>0||u>0&&n){if(f!==0&&(u===0||!n||t.z<=n.z)){a=t;t=t.nextZ;f--}else{a=n;n=n.nextZ;u--}if(i)i.nextZ=a;else r=a;a.prevZ=i;i=a}t=n}i.nextZ=null;s*=2}while(o>1);return r}function b(r,e,t,n,a){r=(r-t)*a|0;e=(e-n)*a|0;r=(r|r<<8)&16711935;r=(r|r<<4)&252645135;r=(r|r<<2)&858993459;r=(r|r<<1)&1431655765;e=(e|e<<8)&16711935;e=(e|e<<4)&252645135;e=(e|e<<2)&858993459;e=(e|e<<1)&1431655765;return r|e<<1}function m(r){var e=r,t=r;do{if(e.x<t.x||e.x===t.x&&e.y<t.y)t=e;e=e.next}while(e!==r);return t}function h(r,e,t,n,a,i,o,f){return(a-o)*(e-f)>=(r-o)*(i-f)&&(r-o)*(n-f)>=(t-o)*(e-f)&&(t-o)*(i-f)>=(a-o)*(n-f)}function y(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!j(r,e)&&(k(r,e)&&k(e,r)&&O(r,e)&&(g(r.prev,r,e.prev)||g(r,e.prev,e))||w(r,e)&&g(r.prev,r,r.next)>0&&g(e.prev,e,e.next)>0)}function g(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function w(r,e){return r.x===e.x&&r.y===e.y}function x(r,e,t,n){var a=C(g(r,e,t));var i=C(g(r,e,n));var o=C(g(t,n,r));var f=C(g(t,n,e));if(a!==i&&o!==f)return true;if(a===0&&A(r,t,e))return true;if(i===0&&A(r,n,e))return true;if(o===0&&A(t,r,n))return true;if(f===0&&A(t,e,n))return true;return false}function A(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function C(r){return r>0?1:r<0?-1:0}function j(r,e){var t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&x(t,t.next,r,e))return true;t=t.next}while(t!==r);return false}function k(r,e){return g(r.prev,r,r.next)<0?g(r,e,r.next)>=0&&g(r,r.prev,e)>=0:g(r,e,r.prev)<0||g(r,r.next,e)<0}function O(r,e){var t=r,n=false,a=(r.x+e.x)/2,i=(r.y+e.y)/2;do{if(t.y>i!==t.next.y>i&&t.next.y!==t.y&&a<(t.next.x-t.x)*(i-t.y)/(t.next.y-t.y)+t.x)n=!n;t=t.next}while(t!==r);return n}function _(r,e){var t=new M(r.i,r.x,r.y),n=new M(e.i,e.x,e.y),a=r.next,i=e.prev;r.next=e;e.prev=r;t.next=a;a.prev=t;n.next=t;t.prev=n;i.next=n;n.prev=i;return n}function T(r,e,t,n){var a=new M(r,e,t);if(!n){a.prev=a;a.next=a}else{a.next=n.next;a.prev=n;n.next.prev=a;n.next=a}return a}function F(r){r.next.prev=r.prev;r.prev.next=r.next;if(r.prevZ)r.prevZ.nextZ=r.nextZ;if(r.nextZ)r.nextZ.prevZ=r.prevZ}function M(r,e,t){this.i=r;this.x=e;this.y=t;this.prev=null;this.next=null;this.z=0;this.prevZ=null;this.nextZ=null;this.steiner=false}r.deviation=function(r,e,t,n){var a=e&&e.length;var i=a?e[0]*t:r.length;var o=Math.abs(D(r,0,i,t));if(a){for(var f=0,u=e.length;f<u;f++){var s=e[f]*t;var l=f<u-1?e[f+1]*t:r.length;o-=Math.abs(D(r,s,l,t))}}var c=0;for(f=0;f<n.length;f+=3){var v=n[f]*t;var d=n[f+1]*t;var p=n[f+2]*t;c+=Math.abs((r[v]-r[p])*(r[d+1]-r[v+1])-(r[v]-r[d])*(r[p+1]-r[v+1]))}return o===0&&c===0?0:Math.abs((c-o)/o)};function D(r,e,t,n){var a=0;for(var i=e,o=t-n;i<t;i+=n){a+=(r[o]-r[i])*(r[i+1]+r[o+1]);o=i}return a}r.flatten=function(r){var e=r[0][0].length,t={vertices:[],holes:[],dimensions:e},n=0;for(var a=0;a<r.length;a++){for(var i=0;i<r[a].length;i++){for(var o=0;o<e;o++)t.vertices.push(r[a][i][o])}if(a>0){n+=r[a-1].length;t.holes.push(n)}}return t};return P.exports}var $={};var Q={};const X="precision highp float;\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}";var Y=Object.freeze({__proto__:null,default:X});var Z=e(Y);const K="precision highp float;\n\nuniform sampler2D dashPattern;\n\nuniform float dashSize, pixelRatio, thickness, opacity;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}";var rr=Object.freeze({__proto__:null,default:K});var er=e(rr);var tr;function nr(){if(tr)return Q;tr=1;var r=Q&&Q.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Q,"__esModule",{value:true});Q.createRectShader=void 0;const e=r(Z);const t=r(er);function n(r,n,a){const i=Object.assign(Object.assign({},a),{vert:e.default,frag:t.default,attributes:{lineEnd:{buffer:n,divisor:0,stride:8,offset:0},lineTop:{buffer:n,divisor:0,stride:8,offset:4},aCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8,divisor:1},bCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:16,divisor:1},aCoordFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:8,divisor:1},bCoordFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:16,divisor:1},color:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:0,divisor:1}}});return r(i)}Q.createRectShader=n;return Q}var ar={};const ir="precision highp float;\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}";var or=Object.freeze({__proto__:null,default:ir});var fr=e(or);const ur="precision highp float;\n\nuniform sampler2D dashPattern;\nuniform float dashSize, pixelRatio, thickness, opacity, miterMode;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashSize) * .5 + .25;\n\tfloat dash = texture2D(dashPattern, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}";var sr=Object.freeze({__proto__:null,default:ur});var lr=e(sr);var cr;function vr(){if(cr)return ar;cr=1;var r=ar&&ar.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ar,"__esModule",{value:true});ar.createMiterShader=void 0;const e=r(fr);const t=r(lr);function n(r,n,a){const i=Object.assign(Object.assign({},a),{cull:{enable:true,face:"back"},vert:e.default,frag:t.default,attributes:{lineEnd:{buffer:n,divisor:0,stride:8,offset:0},lineTop:{buffer:n,divisor:0,stride:8,offset:4},aColor:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:0,divisor:1},bColor:{buffer:(r,e)=>e.colorBuffer,stride:4,offset:4,divisor:1},prevCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:0,divisor:1},aCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8,divisor:1},bCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:16,divisor:1},nextCoord:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:24,divisor:1}}});return r(i)}ar.createMiterShader=n;return ar}var dr={};const pr="precision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio;\nuniform vec4 viewport;\nuniform float opacity;\nuniform float depth;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}";var br=Object.freeze({__proto__:null,default:pr});var mr=e(br);const hr="precision highp float;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}";var yr=Object.freeze({__proto__:null,default:hr});var gr=e(yr);var wr;function xr(){if(wr)return dr;wr=1;var r=dr&&dr.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(dr,"__esModule",{value:true});dr.createFillShader=void 0;const e=r(mr);const t=r(gr);function n(r,{blend:n,scissor:a,stencil:i,viewport:o,uniforms:f}){const u={blend:n,scissor:a,stencil:i,viewport:o,primitive:"triangles",elements:(r,e)=>e.triangles,offset:0,vert:e.default,frag:t.default,uniforms:Object.assign(Object.assign({},f),{color:(r,e)=>e.fillColor}),attributes:{position:{buffer:(r,e)=>e.positionBuffer,stride:8,offset:8},positionFract:{buffer:(r,e)=>e.positionFractBuffer,stride:8,offset:8}},depth:{enable:false}};return r(u)}dr.createFillShader=n;return dr}var Ar;function Cr(){if(Ar)return $;Ar=1;Object.defineProperty($,"__esModule",{value:true});$.createShaders=void 0;const r=Dr();const e=nr();const t=vr();const n=xr();function a(e){return{primitive:"triangle strip",instances:(r,e)=>e.count,count:4,offset:0,uniforms:{miterMode:(e,t)=>t.join===r.JoinStyle.Round?2:1,miterLimit:(r,e)=>e.miterLimit,scale:(r,e)=>e.scale,scaleFract:(r,e)=>e.scaleFract,translateFract:(r,e)=>e.translateFract,translate:(r,e)=>e.translate,thickness:(r,e)=>e.thickness,dashPattern:(r,e)=>e.dashTexture,opacity:(r,e)=>e.opacity,pixelRatio:r=>r.pixelRatio,dashSize:(r,e)=>e.dashLength,viewport:({viewportWidth:r,viewportHeight:e},{viewport:{x:t,y:n}})=>[t||0,n||0,r,e],depth:(r,e)=>e.depth},blend:{enable:true,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:(r,e)=>({enable:!e.overlay}),stencil:{enable:false},scissor:{enable:true,box:(r,e)=>e.viewport},viewport:(r,e)=>e.viewport}}function i(r){const i=r.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]});const o=a();const f=e.createRectShader(r,i,o);let u=null;try{u=t.createMiterShader(r,i,o)}catch(r){u=f;console.log("No support for miter lines.")}const s=n.createFillShader(r,o);return{rect:f,miter:u,fill:s}}$.createShaders=i;return $}var jr={};var kr;function Or(){if(kr)return jr;kr=1;Object.defineProperty(jr,"__esModule",{value:true});jr.updateDashTextureAndGetLength=void 0;const r=2;const e=new Uint8Array(8).fill(255);function t(t,n){let a=0;let i=null;if(n.length<2){a=1;i=e}else{a=0;for(let r=0;r<n.length;++r){a+=n[r]}i=new Uint8Array(a*r);let e=0;let t=255;for(let a=0;a<2;a++){for(let a=0;a<n.length;++a){for(let o=0,f=n[a]*r*.5;o<f;++o){i[e++]=t}t^=255}}}t({channels:1,data:i,width:i.length,height:1,mag:"linear",min:"linear"});return a}jr.updateDashTextureAndGetLength=t;return jr}var _r={};var Tr;function Fr(){if(Tr)return _r;Tr=1;var r=_r&&_r.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_r,"__esModule",{value:true});_r.updateColorBuffer=void 0;const e=r(q);function t(r){return!Array.isArray(r)||!Array.isArray(r[0])}function n(r,n,a,i){if(t(a)){let r=e.default(a,"uint8");for(let e=0;e<i+1;e++){n.set(r,e*4)}}else{for(let r=0;r<i;r++){let t=e.default(a[r],"uint8");n.set(t,r*4)}n.set(e.default(a[0],"uint8"),i*4)}r.subdata(n)}_r.updateColorBuffer=n;return _r}var Mr;function Dr(){if(Mr)return y;Mr=1;(function(r){var e=y&&y.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(r,"__esModule",{value:true});r.JoinStyle=void 0;const t=e(x());const n=e(j());const a=e(q);const i=e(H());const o=Cr();const f=Or();const u=Fr();var s;(function(r){r["Bevel"]="bevel";r["Round"]="round";r["Rect"]="rect"})(s=r.JoinStyle||(r.JoinStyle={}));function l(r){const e=o.createShaders(r);let l=0;return{createShape(o,c){const v=l;l++;const d=new Float64Array(o.length);const p=new Float64Array(o.length+6);const b=new Float32Array(p.length);const m=new Float32Array(p.length);const h=new Uint8Array(2*o.length+4);const y=r.buffer({usage:"dynamic",type:"uint8",data:h});const g=r.buffer({usage:"dynamic",type:"float",data:b});const w=r.buffer({usage:"dynamic",type:"float",data:m});const x=r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"});return l=>{const A=Object.assign(Object.assign({count:Math.floor(o.length/2),color:"white",fill:null,thickness:1,dashes:null,join:s.Bevel,miterLimit:1,close:false,opacity:1,overlay:false,range:[-1,-1,1,1],viewport:{x:0,y:0,width:r._gl.drawingBufferWidth,height:r._gl.drawingBufferHeight},depth:-.01*v},c),l);let{count:C,color:j,close:k,join:O,range:_,dashes:T,fill:F}=A;const M=2*C;const D=t.default(o.length>M?o.slice(0,M):o,2);d.set(o);n.default(d,2,D);const S=o[0]===o[M-2]&&o[1]===o[M-1];if(k){if(S){p[0]=d[M-4];p[1]=d[M-3]}else{p[0]=d[M-2];p[1]=d[M-1]}}else{p[0]=d[0];p[1]=d[1]}p.set(d,2);if(k){if(S){p[M+2]=d[2];p[M+3]=d[3];C--}else{p[M+2]=d[0];p[M+3]=d[1];p[M+4]=d[2];p[M+5]=d[3]}}else{p[M+2]=d[M-2];p[M+3]=d[M-1];p[M+4]=d[M-2];p[M+5]=d[M-1]}b.set(p);for(let r=0;r<M;r++)m[r]=p[r]-b[r];g.subdata(b);w.subdata(m);const z=D[2]-D[0];const B=D[3]-D[1];const E=_[2]-_[0];const R=_[3]-_[1];const J=[z/E,B/R];const V=[-_[0]/E+D[0]/E||0,-_[1]/R+D[1]/R||0];const N=new Float32Array(J);const I=[J[0]-N[0],J[1]-N[1]];const W=new Float32Array(V);const L=[V[0]-W[0],V[1]-W[1]];const U=T?f.updateDashTextureAndGetLength(x,T):1;if(j)u.updateColorBuffer(y,h,j,C);const q=Object.assign(Object.assign({},A),{translate:V,translateFract:L,scale:J,scaleFract:I,colorBuffer:y,positionBuffer:g,positionFractBuffer:w,dashLength:U,dashTexture:x,triangles:F?i.default(o):null,fillColor:F?a.default(F,"uint8"):null});r._refresh();if(F)e.fill(q);if(O===s.Rect)e.rect(q);else e.miter(q)}}}}r.default=l})(y);return y}var Sr=Dr();var zr=r(Sr);class Br{constructor(r,e,t,n,a,i={},o=false){this.createShape=r;this.identifier=e;this.points=t;this.outlineColor=n;this.fillColor=a;this.shapeProps=i;this.disabled=o;const f=t.toArray();this.pointsArray=new Float64Array(f.length*2+4);l(f).forEach(((r,e)=>this.pointsArray[e]=r));this.initialFillColor=a;this.draw=r(this.pointsArray,{count:f.length,thickness:2,join:"rect",fill:this.fillColor,color:this.outlineColor,...i})}updateFillColor(r,e=false){if(r!=null){this.fillColor=typeof r==="string"?r:s.toHexString(r);this.initialFillColor=e?this.fillColor:this.initialFillColor}}updateOutlineColor(r){if(r!=null){this.outlineColor=typeof r==="string"?r:s.toHexString(r)}}updatePoints(r){if(r!=null){this.points=r;l(r.toArray()).forEach(((r,e)=>this.pointsArray[e]=r))}}}function Er(r,...e){let a=t.create(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let i=t.create();e.filter((r=>r.points.valid)).forEach((e=>{e.points.toArray().map((e=>r.transformNdcPointToViewport(e))).forEach((r=>{a=t.create(Math.min(r.x,a.x),Math.min(r.y,a.y));i=t.create(Math.max(r.x,i.x),Math.max(r.y,i.y))}))}));return n.fromPoints(a,i)}class Rr{constructor(r,e,t,n,a){this.valid=r;this.worldOrigin=e;this.worldEnd=t;this.origin=n;this.end=a}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[this.worldOrigin,this.worldEnd]}toArray(){return[this.origin,this.end]}}class Jr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={thickness:3}){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i)}}class Vr{constructor(r,e,t){this.valid=r;this.world=e;this.ndc=t}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return this.world}toArray(){return this.ndc}}class Nr extends Br{constructor(r,e,t,n="#000000",a={join:"round"},i=false){super(r,e,t,typeof n==="string"?n:s.toHexString(n),undefined,a);this.disabled=i}setDisabled(r){this.disabled=r}}function Ir(r,e,t){const n=a.fromMatrixPosition(r);return new Rr(t.points.valid,n,t.points.worldBase,a.transformMatrix(n,e.projectionViewMatrix),t.points.base)}function Wr(r,e,t,n=3){if(e!=null&&t!=null){const o=a.distance(e.points.worldBase,t);const f=a.distance(e.points.worldTip,t);const u=o<f?e.points.worldBase:e.points.worldTip;const s=a.scale(.5,a.add(u,t));const l=i.create({origin:s,direction:a.normalize(a.subtract(e.points.worldRight,e.points.worldLeft))});const c=[0,.05,.1,.15].map((r=>Lr(u,i.at(l,n*2),t,r)));return new Vr(e.points.valid,c,c.map((e=>a.transformMatrix(e,r.projectionViewMatrix))))}return undefined}function Lr(r,e,t,n){const i=1-n;const o=i*i;const f=2*i*n;const u=n*n;return a.create(o*r.x+f*e.x+u*t.x,o*r.y+f*e.y+u*t.y,o*r.z+f*e.z+u*t.z)}class Ur{constructor(r,e,t,n){this.valid=r;this.world=e;this.screen=t;this.computeShortestDistance=n}shortestDistanceFrom(r){return this.computeShortestDistance!=null?this.computeShortestDistance(r):this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[...this.world,this.world[0]]}toArray(){return[...this.screen,this.screen[0]]}}class qr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={}){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i)}}class Pr{constructor(r,e,t,n,a,i,o,f,u){this.valid=r;this.worldBase=e;this.worldLeft=t;this.worldRight=n;this.worldTip=a;this.base=i;this.left=o;this.right=f;this.tip=u}shortestDistanceFrom(r){return this.toWorldArray().map((e=>a.distance(e,r))).sort(((r,e)=>r-e))[0]}toWorldArray(){return[this.worldBase,this.worldLeft,this.worldRight,this.worldTip]}toArray(){return[this.base,this.left,this.tip,this.right,this.base]}}class Gr extends Br{constructor(r,e,t,n="#000000",a="#000000",i={},o=false){super(r,e,t,typeof n==="string"?n:s.toHexString(n),typeof a==="string"?a:s.toHexString(a),i);this.disabled=o}setDisabled(r){this.disabled=r}isDisabled(){return!!this.disabled}}function Hr(r,e,t=3,n=1){return Xr(r,e,a.right(),t,n)}function $r(r,e,t=3,n=1){return Xr(r,e,a.up(),t,n)}function Qr(r,e,t=3,n=1){return Xr(r,e,a.back(),t,n)}function Xr(r,e,t,n,u=1){const s=a.transformMatrix(t,o.makeRotation(f.fromMatrixRotation(r)));const l=a.fromMatrixPosition(r);const c=a.add(l,a.scale(n*9,s));const v=a.normalize(a.cross(s,a.normalize(e.viewVector)));const d=i.create({origin:c,direction:v});const p=i.create({origin:c,direction:s});const b=i.at(d,-(n*u*1.25));const m=i.at(d,n*u*1.25);const h=i.at(p,n*u*3);return new Pr(!isNaN(v.x),c,b,m,h,a.transformMatrix(c,e.projectionViewMatrix),a.transformMatrix(b,e.projectionViewMatrix),a.transformMatrix(m,e.projectionViewMatrix),a.transformMatrix(h,e.projectionViewMatrix))}function Yr(r,e,t=3,n=1){return re(r,e,a.right(),a.up(),t,n)}function Zr(r,e,t=3,n=1){return re(r,e,a.right(),a.back(),t,n)}function Kr(r,e,t=3,n=1){return re(r,e,a.back(),a.up(),t,n)}function re(r,e,t,n,s,l=1){const c=a.transformMatrix(a.add(t,n),o.makeRotation(f.fromMatrixRotation(r)));const v=a.transformMatrix(t,o.makeRotation(f.fromMatrixRotation(r)));const d=a.transformMatrix(n,o.makeRotation(f.fromMatrixRotation(r)));const p=a.fromMatrixPosition(r);const b=a.add(p,a.scale(s*2.5,c));const m=i.create({origin:b,direction:v});const h=i.create({origin:b,direction:d});const y=a.cross(v,d);const g=a.rotateAboutAxis(u.toRadians(45),i.at(h,-(s*l)),y,b);const w=a.rotateAboutAxis(u.toRadians(45),i.at(m,s*l),y,b);const x=a.rotateAboutAxis(u.toRadians(45),i.at(h,s*l),y,b);const A=a.rotateAboutAxis(u.toRadians(45),i.at(m,-(s*l)),y,b);return new Pr(a.dot(v,e.direction)!==-1&&a.dot(d,e.direction)!==-1,g,A,w,x,a.transformMatrix(g,e.projectionViewMatrix),a.transformMatrix(A,e.projectionViewMatrix),a.transformMatrix(w,e.projectionViewMatrix),a.transformMatrix(x,e.projectionViewMatrix))}const ee=.005;const te=.00625;const ne=158e4;const ae=52e4;const ie=950;const oe=45;class fe{constructor(r){this.canvasElement=r;this.availableElements=[];this.drawableElements=[];this.viewport=new c(r.width,r.height)}dispose(){var r;(r=this.reglFrameDisposable)===null||r===void 0?void 0:r.cancel()}updateFrame(r,e=true){this.frame=r;if(e){this.updateAndDraw()}}updateDimensions(r){this.viewport=new c(r.width,r.height);this.createOrUpdateElements()}updateAndDraw(){if(this.frame!=null&&this.hasData()){this.createOrUpdateElements();this.sortMeshes(this.frame,...this.availableElements);this.draw()}}getDrawableElements(){return this.drawableElements}draw(){var r;if(this.reglFrameDisposable==null){this.reglFrameDisposable=(r=this.reglCommand)===null||r===void 0?void 0:r.frame((()=>{this.drawableElements.forEach((r=>r===null||r===void 0?void 0:r.draw({fill:r.fillColor,opacity:!!r.disabled?.2:1})))}))}}clear(){var r;(r=this.reglCommand)===null||r===void 0?void 0:r.clear({color:[0,0,0,0]})}sortMeshes(r,...e){const t=(e,t)=>e.points.shortestDistanceFrom(r.scene.camera.position)-t.points.shortestDistanceFrom(r.scene.camera.position);this.drawableElements=e.filter((r=>r!=null)).filter((r=>r.points.valid)).sort(t).reverse()}computeTriangleSize(r,e){const t=e.scene.camera.isOrthographic()?e.scene.camera.fovHeight*te:a.magnitude(a.subtract(r,e.scene.camera.position))*ee;const n=this.canvasElement.height*this.canvasElement.width;const i=ne/(n+ae);const o=this.canvasElement.height<650?ie/(this.canvasElement.height+oe):1;const f=Math.max(i,o,1);return t*f}}export{Jr as A,Ur as M,fe as R,Gr as T,qr as a,Ir as b,Xr as c,Pr as d,Er as e,Yr as f,Zr as g,Kr as h,Wr as i,Nr as j,h as r,zr as s,Hr as x,$r as y,Qr as z};
5
+ //# sourceMappingURL=p-BLSuslo8.js.map