@genome-spy/core 0.19.0 → 0.21.0

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 (101) hide show
  1. package/dist/index.js +46 -119
  2. package/dist/schema.json +213 -25
  3. package/package.json +4 -3
  4. package/src/data/collector.test.js +2 -0
  5. package/src/data/dataFlow.test.js +2 -0
  6. package/src/data/flow.test.js +1 -0
  7. package/src/data/flowNode.test.js +1 -0
  8. package/src/data/flowOptimizer.test.js +1 -0
  9. package/src/data/formats/fasta.test.js +1 -0
  10. package/src/data/sources/inlineSource.test.js +1 -0
  11. package/src/data/sources/sequenceSource.test.js +1 -0
  12. package/src/data/transforms/clone.test.js +1 -0
  13. package/src/data/transforms/coverage.test.js +1 -0
  14. package/src/data/transforms/filter.test.js +1 -0
  15. package/src/data/transforms/flattenDelimited.test.js +1 -0
  16. package/src/data/transforms/flattenSequence.test.js +1 -0
  17. package/src/data/transforms/formula.test.js +1 -0
  18. package/src/data/transforms/identifier.test.js +1 -0
  19. package/src/data/transforms/pileup.test.js +1 -0
  20. package/src/data/transforms/project.test.js +1 -0
  21. package/src/data/transforms/regexExtract.test.js +1 -0
  22. package/src/data/transforms/regexFold.test.js +1 -0
  23. package/src/data/transforms/sample.test.js +1 -0
  24. package/src/data/transforms/stack.test.js +1 -0
  25. package/src/encoder/accessor.test.js +1 -0
  26. package/src/encoder/encoder.test.js +1 -0
  27. package/src/genome/genome.test.js +1 -0
  28. package/src/genome/scaleIndex.js +3 -2
  29. package/src/genome/scaleIndex.test.js +23 -6
  30. package/src/genome/scaleLocus.test.js +1 -0
  31. package/src/genomeSpy.js +16 -11
  32. package/src/gl/dataToVertices.js +52 -52
  33. package/src/gl/includes/common.glsl +12 -12
  34. package/src/gl/includes/picking.fragment.glsl +0 -2
  35. package/src/gl/includes/picking.vertex.glsl +0 -2
  36. package/src/gl/includes/scales.glsl +33 -2
  37. package/src/gl/point.vertex.glsl +0 -2
  38. package/src/gl/rule.vertex.glsl +1 -1
  39. package/src/gl/webGLHelper.js +0 -3
  40. package/src/marks/link.js +32 -39
  41. package/src/marks/mark.js +176 -106
  42. package/src/marks/pointMark.js +28 -59
  43. package/src/marks/rectMark.js +38 -33
  44. package/src/marks/rule.js +31 -21
  45. package/src/marks/text.js +18 -14
  46. package/src/scale/glslScaleGenerator.js +56 -17
  47. package/src/scale/scale.test.js +1 -0
  48. package/src/scale/ticks.test.js +1 -0
  49. package/src/spec/mark.d.ts +0 -3
  50. package/src/spec/scale.d.ts +0 -9
  51. package/src/spec/title.d.ts +102 -0
  52. package/src/spec/view.d.ts +6 -4
  53. package/src/tooltip/dataTooltipHandler.js +3 -2
  54. package/src/utils/addBaseUrl.test.js +1 -0
  55. package/src/utils/binnedIndex.js +147 -0
  56. package/src/utils/binnedIndex.test.js +73 -0
  57. package/src/utils/cloner.test.js +1 -0
  58. package/src/utils/coalesce.test.js +1 -0
  59. package/src/utils/concatIterables.test.js +1 -0
  60. package/src/utils/domainArray.test.js +1 -0
  61. package/src/utils/indexer.test.js +1 -0
  62. package/src/utils/iterateNestedMaps.test.js +1 -0
  63. package/src/utils/kWayMerge.test.js +1 -0
  64. package/src/utils/layout/flexLayout.js +35 -3
  65. package/src/utils/layout/flexLayout.test.js +15 -0
  66. package/src/utils/layout/grid.js +95 -0
  67. package/src/utils/layout/grid.test.js +71 -0
  68. package/src/utils/layout/padding.js +13 -0
  69. package/src/utils/layout/rectangle.js +6 -0
  70. package/src/utils/layout/rectangle.test.js +1 -0
  71. package/src/utils/mergeObjects.test.js +1 -0
  72. package/src/utils/numberExtractor.test.js +1 -0
  73. package/src/utils/propertyCacher.test.js +1 -0
  74. package/src/utils/propertyCoalescer.test.js +1 -0
  75. package/src/utils/reservationMap.test.js +1 -0
  76. package/src/utils/topK.test.js +1 -0
  77. package/src/utils/variableTools.test.js +1 -0
  78. package/src/view/axisResolution.test.js +1 -0
  79. package/src/view/axisView.js +3 -5
  80. package/src/view/concatView.js +24 -275
  81. package/src/view/flowBuilder.test.js +1 -0
  82. package/src/view/gridView.js +774 -0
  83. package/src/view/implicitRootView.js +14 -0
  84. package/src/view/layerView.js +15 -1
  85. package/src/view/renderingContext/deferredViewRenderingContext.js +3 -1
  86. package/src/view/renderingContext/simpleViewRenderingContext.js +3 -1
  87. package/src/view/scaleResolution.js +5 -11
  88. package/src/view/scaleResolution.test.js +1 -0
  89. package/src/view/title.js +165 -0
  90. package/src/view/unitView.js +9 -5
  91. package/src/view/view.js +35 -14
  92. package/src/view/view.test.js +1 -0
  93. package/src/view/viewContext.d.ts +6 -1
  94. package/src/view/viewFactory.test.js +1 -0
  95. package/src/view/viewUtils.js +1 -93
  96. package/src/view/zoom.js +89 -0
  97. package/src/gl/includes/fp64-arithmetic.glsl +0 -187
  98. package/src/gl/includes/fp64-utils.js +0 -142
  99. package/src/gl/includes/scales_fp64.glsl +0 -30
  100. package/src/utils/binnedRangeIndex.js +0 -83
  101. package/src/view/decoratorView.js +0 -513
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var kC=Object.defineProperty,OC=Object.defineProperties;var zC=Object.getOwnPropertyDescriptors;var Vh=Object.getOwnPropertySymbols;var UC=Object.prototype.hasOwnProperty,GC=Object.prototype.propertyIsEnumerable;var Qh=(W,H,Me)=>H in W?kC(W,H,{enumerable:!0,configurable:!0,writable:!0,value:Me}):W[H]=Me,T=(W,H)=>{for(var Me in H||(H={}))UC.call(H,Me)&&Qh(W,Me,H[Me]);if(Vh)for(var Me of Vh(H))GC.call(H,Me)&&Qh(W,Me,H[Me]);return W},Se=(W,H)=>OC(W,zC(H));(function(W,H){typeof exports=="object"&&typeof module!="undefined"?H(exports):typeof define=="function"&&define.amd?define(["exports"],H):(W=typeof globalThis!="undefined"?globalThis:W||self,H(W.genomeSpyEmbed={}))})(this,function(W){"use strict";function H(t,e,n){return t.fields=e||[],t.fname=n,t}function Me(t){return t==null?null:t.fname}function su(t){return t==null?null:t.fields}function jh(t){return t.length===1?Yh(t[0]):Wh(t)}const Yh=t=>function(e){return e[t]},Wh=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function Y(t){throw Error(t)}function Xh(t){const e=[],n=t.length;let r=null,i=0,s="",o,a,u;t=t+"";function c(){e.push(s+t.substring(o,a)),s="",o=a+1}for(o=a=0;a<n;++a)if(u=t[a],u==="\\")s+=t.substring(o,a),s+=t.substring(++a,++a),o=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;o===i&&u==='"'||o===i&&u==="'"?(o=a+1,r=u):u==="."&&!i?a>o?c():o=a+1:u==="["?(a>o&&c(),i=o=a+1):u==="]"&&(i||Y("Access path missing open bracket: "+t),i>0&&c(),i=0,o=a+1)}return i&&Y("Access path missing closing bracket: "+t),r&&Y("Access path missing closing quote: "+t),a>o&&(a++,c()),e}function Ur(t,e,n){const r=Xh(t);return t=r.length===1?r[0]:t,H((n&&n.get||jh)(r),[t],e||t)}Ur("id");const Gr=H(t=>t,[],"identity");H(()=>0,[],"zero"),H(()=>1,[],"one"),H(()=>!0,[],"true"),H(()=>!1,[],"false");var Be=Array.isArray;function Re(t){return t===Object(t)}function Ne(t){return t[t.length-1]}function Fn(t){return t==null||t===""?null:+t}const ou=t=>e=>t*Math.exp(e),au=t=>e=>Math.log(t*e),Zh=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),Kh=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,Hr=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function ls(t,e,n,r){const i=n(t[0]),s=n(Ne(t)),o=(s-i)*e;return[r(i-o),r(s-o)]}function qh(t,e){return ls(t,e,Fn,Gr)}function Jh(t,e){var n=Math.sign(t[0]);return ls(t,e,au(n),ou(n))}function _h(t,e,n){return ls(t,e,Hr(n),Hr(1/n))}function Vr(t,e,n,r,i){const s=r(t[0]),o=r(Ne(t)),a=e!=null?r(e):(s+o)/2;return[i(a+(s-a)*n),i(a+(o-a)*n)]}function hs(t,e,n){return Vr(t,e,n,Fn,Gr)}function uu(t,e,n){const r=Math.sign(t[0]);return Vr(t,e,n,au(r),ou(r))}function ds(t,e,n,r){return Vr(t,e,n,Hr(r),Hr(1/r))}function $h(t,e,n,r){return Vr(t,e,n,Zh(r),Kh(r))}function ps(t){return t!=null?Be(t)?t:[t]:[]}function ed(t,e,n){let r=t[0],i=t[1],s;return i<r&&(s=i,i=r,r=s),s=i-r,s>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-s),r+s]}function ge(t){return typeof t=="function"}const td="descending";function cu(t,e,n){n=n||{},e=ps(e)||[];const r=[],i=[],s={},o=n.comparator||nd;return ps(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===td?-1:1),i.push(a=ge(a)?a:Ur(a,null,n)),(su(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:H(o(i,r),Object.keys(s))}const fu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),nd=(t,e)=>t.length===1?rd(t[0],e[0]):id(t,e,t.length),rd=(t,e)=>function(n,r){return fu(t(n),t(r))*e},id=(t,e,n)=>(e.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<n;)s=t[a],o=fu(s(r),s(i));return o*e[a]});function sd(t){return ge(t)?t:()=>t}function gs(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const od=Object.prototype.hasOwnProperty;function Pt(t,e){return od.call(t,e)}function Qr(t){return typeof t=="boolean"}function ad(t){return Object.prototype.toString.call(t)==="[object Date]"}function ud(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function X(t){return typeof t=="string"}function cd(t,e){const n=t[0],r=Ne(t),i=+e;return i?i===1?r:n+i*(r-n):n}function jr(t){return t&&Ne(t)-t[0]||0}function Yr(t){return Be(t)?"["+t.map(Yr)+"]":Re(t)||X(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function fd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const ld=t=>me(t)||ad(t)?t:Date.parse(t);function hd(t,e){return e=e||ld,t==null||t===""?null:e(t)}function dd(t){return t==null||t===""?null:t+""}function Wr(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var lu={},ms={},As=34,In=10,xs=13;function hu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function pd(t,e){var n=hu(t);return function(r,i){return e(n(r),i,t)}}function du(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function Ae(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function gd(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function md(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":gd(t.getUTCFullYear())+"-"+Ae(t.getUTCMonth()+1,2)+"-"+Ae(t.getUTCDate(),2)+(i?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"."+Ae(i,3)+"Z":r?"T"+Ae(e,2)+":"+Ae(n,2)+":"+Ae(r,2)+"Z":n||e?"T"+Ae(e,2)+":"+Ae(n,2)+"Z":"")}function pu(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(f,h){var p,d,g=i(f,function(m,A){if(p)return p(m,A-1);d=m,p=h?pd(m,h):hu(m)});return g.columns=d||[],g}function i(f,h){var p=[],d=f.length,g=0,m=0,A,b=d<=0,y=!1;f.charCodeAt(d-1)===In&&--d,f.charCodeAt(d-1)===xs&&--d;function v(){if(b)return ms;if(y)return y=!1,lu;var C,F=g,S;if(f.charCodeAt(F)===As){for(;g++<d&&f.charCodeAt(g)!==As||f.charCodeAt(++g)===As;);return(C=g)>=d?b=!0:(S=f.charCodeAt(g++))===In?y=!0:S===xs&&(y=!0,f.charCodeAt(g)===In&&++g),f.slice(F+1,C-1).replace(/""/g,'"')}for(;g<d;){if((S=f.charCodeAt(C=g++))===In)y=!0;else if(S===xs)y=!0,f.charCodeAt(g)===In&&++g;else if(S!==n)continue;return f.slice(F,C)}return b=!0,f.slice(F,d)}for(;(A=v())!==ms;){for(var D=[];A!==lu&&A!==ms;)D.push(A),A=v();h&&(D=h(D,m++))==null||p.push(D)}return p}function s(f,h){return f.map(function(p){return h.map(function(d){return l(p[d])}).join(t)})}function o(f,h){return h==null&&(h=du(f)),[h.map(l).join(t)].concat(s(f,h)).join(`
3
- `)}function a(f,h){return h==null&&(h=du(f)),s(f,h).join(`
4
- `)}function u(f){return f.map(c).join(`
5
- `)}function c(f){return f.map(l).join(t)}function l(f){return f==null?"":f instanceof Date?md(f):e.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:u,formatRow:c,formatValue:l}}var Ad=pu(" "),xd=Ad.parseRows;function yd(t){return t}function bd(t){if(t==null)return yd;var e,n,r=t.scale[0],i=t.scale[1],s=t.translate[0],o=t.translate[1];return function(a,u){u||(e=n=0);var c=2,l=a.length,f=new Array(l);for(f[0]=(e+=a[0])*r+s,f[1]=(n+=a[1])*i+o;c<l;)f[c]=a[c],++c;return f}}function wd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function vd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return gu(t,n)})}:gu(t,e)}function gu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,s=mu(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:n,properties:i,geometry:s}:{type:"Feature",id:n,bbox:r,properties:i,geometry:s}}function mu(t,e){var n=bd(t.transform),r=t.arcs;function i(l,f){f.length&&f.pop();for(var h=r[l<0?~l:l],p=0,d=h.length;p<d;++p)f.push(n(h[p],p));l<0&&wd(f,d)}function s(l){return n(l)}function o(l){for(var f=[],h=0,p=l.length;h<p;++h)i(l[h],f);return f.length<2&&f.push(f[0]),f}function a(l){for(var f=o(l);f.length<4;)f.push(f[0]);return f}function u(l){return l.map(a)}function c(l){var f=l.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:l.geometries.map(c)};case"Point":h=s(l.coordinates);break;case"MultiPoint":h=l.coordinates.map(s);break;case"LineString":h=o(l.arcs);break;case"MultiLineString":h=l.arcs.map(o);break;case"Polygon":h=u(l.arcs);break;case"MultiPolygon":h=l.arcs.map(u);break;default:return null}return{type:f,coordinates:h}}return c(e)}function Ed(t,e){var n={},r={},i={},s=[],o=-1;e.forEach(function(c,l){var f=t.arcs[c<0?~c:c],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=e[++o],e[o]=c,e[l]=h)}),e.forEach(function(c){var l=a(c),f=l[0],h=l[1],p,d;if(p=i[f])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=f,d=i[f]){delete i[d.end];var m=d===p?p:d.concat(p);r[m.start=d.start]=i[m.end=p.end]=m}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=f]=i[p.end=h]=p});function a(c){var l=t.arcs[c<0?~c:c],f=l[0],h;return t.transform?(h=[0,0],l.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=l[l.length-1],c<0?[h,f]:[f,h]}function u(c,l){for(var f in c){var h=c[f];delete l[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),s.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||s.push([c])}),s}function Cd(t){return mu(t,Dd.apply(this,arguments))}function Dd(t,e,n){var r,i,s;if(arguments.length>1)r=Sd(t,e,n);else for(i=0,r=new Array(s=t.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:Ed(t,r)}}function Sd(t,e,n){var r=[],i=[],s;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:s})}function a(f){f.forEach(o)}function u(f){f.forEach(a)}function c(f){f.forEach(u)}function l(f){switch(s=f,f.type){case"GeometryCollection":f.geometries.forEach(l);break;case"LineString":a(f.arcs);break;case"MultiLineString":case"Polygon":u(f.arcs);break;case"MultiPolygon":c(f.arcs);break}}return l(e),i.forEach(n==null?function(f){r.push(f[0].i)}:function(f){n(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}function ys(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function bs(t){let e=t,n=t;t.length===1&&(e=(o,a)=>t(o)-a,n=Md(t));function r(o,a,u,c){for(u==null&&(u=0),c==null&&(c=o.length);u<c;){const l=u+c>>>1;n(o[l],a)<0?u=l+1:c=l}return u}function i(o,a,u,c){for(u==null&&(u=0),c==null&&(c=o.length);u<c;){const l=u+c>>>1;n(o[l],a)>0?c=l:u=l+1}return u}function s(o,a,u,c){u==null&&(u=0),c==null&&(c=o.length);const l=r(o,a,u,c-1);return l>u&&e(o[l-1],a)>-e(o[l],a)?l-1:l}return{left:r,center:s,right:i}}function Md(t){return(e,n)=>ys(t(e),n)}function Au(t){return t===null?NaN:+t}const ws=bs(ys).right;bs(Au).center;var Tn=ws,vs=Math.sqrt(50),Es=Math.sqrt(10),Cs=Math.sqrt(2);function Ds(t,e,n){var r,i=-1,s,o,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(s=t,t=e,e=s),(a=xu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)/a}return r&&o.reverse(),o}function xu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),s=r/Math.pow(10,i);return i>=0?(s>=vs?10:s>=Es?5:s>=Cs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(s>=vs?10:s>=Es?5:s>=Cs?2:1)}function Xr(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),s=r/i;return s>=vs?i*=10:s>=Es?i*=5:s>=Cs&&(i*=2),e<t?-i:i}function Bd(t,e,n=Au){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,s=Math.floor(i),o=+n(t[s],s,t),a=+n(t[s+1],s+1,t);return o+(a-o)*(i-s)}}function Fd(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,s=new Array(i);++r<i;)s[r]=t+r*n;return s}function Id(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Zr(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function $t(t){return t=Zr(Math.abs(t)),t?t[1]:NaN}function Td(t,e){return function(n,r){for(var i=n.length,s=[],o=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),s.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[o=(o+1)%t.length];return s.reverse().join(e)}}function Pd(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Ld=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function en(t){if(!(e=Ld.exec(t)))throw new Error("invalid format: "+t);var e;return new Ss({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}en.prototype=Ss.prototype;function Ss(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Ss.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Rd(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var yu;function Nd(t,e){var n=Zr(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(yu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+Zr(t,Math.max(0,e+s-1))[0]}function bu(t,e){var n=Zr(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var wu={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Id,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>bu(t*100,e),r:bu,s:Nd,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vu(t){return t}var Eu=Array.prototype.map,Cu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function kd(t){var e=t.grouping===void 0||t.thousands===void 0?vu:Td(Eu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",s=t.numerals===void 0?vu:Pd(Eu.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(f){f=en(f);var h=f.fill,p=f.align,d=f.sign,g=f.symbol,m=f.zero,A=f.width,b=f.comma,y=f.precision,v=f.trim,D=f.type;D==="n"?(b=!0,D="g"):wu[D]||(y===void 0&&(y=12),v=!0,D="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(D)?"0"+D.toLowerCase():"",F=g==="$"?r:/[%p]/.test(D)?o:"",S=wu[D],le=/[defgprs%]/.test(D);y=y===void 0?6:/[gprs]/.test(D)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function se(E){var oe=C,z=F,pe,Jt,He;if(D==="c")z=S(E)+z,E="";else{E=+E;var Ve=E<0||1/E<0;if(E=isNaN(E)?u:S(Math.abs(E),y),v&&(E=Rd(E)),Ve&&+E==0&&d!=="+"&&(Ve=!1),oe=(Ve?d==="("?d:a:d==="-"||d==="("?"":d)+oe,z=(D==="s"?Cu[8+yu/3]:"")+z+(Ve&&d==="("?")":""),le){for(pe=-1,Jt=E.length;++pe<Jt;)if(He=E.charCodeAt(pe),48>He||He>57){z=(He===46?i+E.slice(pe+1):E.slice(pe))+z,E=E.slice(0,pe);break}}}b&&!m&&(E=e(E,1/0));var Qe=oe.length+E.length+z.length,Z=Qe<A?new Array(A-Qe+1).join(h):"";switch(b&&m&&(E=e(Z+E,Z.length?A-z.length:1/0),Z=""),p){case"<":E=oe+E+z+Z;break;case"=":E=oe+Z+E+z;break;case"^":E=Z.slice(0,Qe=Z.length>>1)+oe+E+z+Z.slice(Qe);break;default:E=Z+oe+E+z;break}return s(E)}return se.toString=function(){return f+""},se}function l(f,h){var p=c((f=en(f),f.type="f",f)),d=Math.max(-8,Math.min(8,Math.floor($t(h)/3)))*3,g=Math.pow(10,-d),m=Cu[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:l}}var Kr,qr,Ms;Od({thousands:",",grouping:[3],currency:["$",""]});function Od(t){return Kr=kd(t),qr=Kr.format,Ms=Kr.formatPrefix,Kr}function Du(t){return Math.max(0,-$t(Math.abs(t)))}function Su(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor($t(e)/3)))*3-$t(Math.abs(t)))}function Mu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$t(e)-$t(t))+1}var Bs=new Date,Fs=new Date;function _(t,e,n,r){function i(s){return t(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=function(s){return t(s=new Date(+s)),s},i.ceil=function(s){return t(s=new Date(s-1)),e(s,1),t(s),s},i.round=function(s){var o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=function(s,o){return e(s=new Date(+s),o==null?1:Math.floor(o)),s},i.range=function(s,o,a){var u=[],c;if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return u;do u.push(c=new Date(+s)),e(s,a),t(s);while(c<s&&s<o);return u},i.filter=function(s){return _(function(o){if(o>=o)for(;t(o),!s(o);)o.setTime(o-1)},function(o,a){if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!s(o););else for(;--a>=0;)for(;e(o,1),!s(o););})},n&&(i.count=function(s,o){return Bs.setTime(+s),Fs.setTime(+o),t(Bs),t(Fs),Math.floor(n(Bs,Fs))},i.every=function(s){return s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?function(o){return r(o)%s===0}:function(o){return i.count(0,o)%s===0}):i}),i}var Is=_(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Is.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?_(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Is};var Ts=Is;const it=1e3,Fe=it*60,st=Fe*60,Lt=st*24,Ps=Lt*7,Bu=Lt*30,Ls=Lt*365;var zd=_(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*it)},function(t,e){return(e-t)/it},function(t){return t.getUTCSeconds()}),pt=zd,Ud=_(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*it)},function(t,e){t.setTime(+t+e*Fe)},function(t,e){return(e-t)/Fe},function(t){return t.getMinutes()}),Rs=Ud,Gd=_(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*it-t.getMinutes()*Fe)},function(t,e){t.setTime(+t+e*st)},function(t,e){return(e-t)/st},function(t){return t.getHours()}),Ns=Gd,Hd=_(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Fe)/Lt,t=>t.getDate()-1),Rt=Hd;function Nt(t){return _(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Fe)/Ps})}var Jr=Nt(0),ks=Nt(1);Nt(2),Nt(3);var Pn=Nt(4);Nt(5),Nt(6);var Vd=_(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()}),_r=Vd,Fu=_(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Fu.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:_(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};var gt=Fu,Qd=_(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Fe)},function(t,e){return(e-t)/Fe},function(t){return t.getUTCMinutes()}),Os=Qd,jd=_(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*st)},function(t,e){return(e-t)/st},function(t){return t.getUTCHours()}),zs=jd,Yd=_(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Lt},function(t){return t.getUTCDate()-1}),kt=Yd;function Ot(t){return _(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Ps})}var $r=Ot(0),Us=Ot(1);Ot(2),Ot(3);var Ln=Ot(4);Ot(5),Ot(6);var Wd=_(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()}),ei=Wd,Iu=_(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Iu.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:_(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};var mt=Iu;function Tu(t,e,n,r,i,s){const o=[[pt,1,it],[pt,5,5*it],[pt,15,15*it],[pt,30,30*it],[s,1,Fe],[s,5,5*Fe],[s,15,15*Fe],[s,30,30*Fe],[i,1,st],[i,3,3*st],[i,6,6*st],[i,12,12*st],[r,1,Lt],[r,2,2*Lt],[n,1,Ps],[e,1,Bu],[e,3,3*Bu],[t,1,Ls]];function a(c,l,f){const h=l<c;h&&([c,l]=[l,c]);const p=f&&typeof f.range=="function"?f:u(c,l,f),d=p?p.range(c,+l+1):[];return h?d.reverse():d}function u(c,l,f){const h=Math.abs(l-c)/f,p=bs(([,,m])=>m).right(o,h);if(p===o.length)return t.every(Xr(c/Ls,l/Ls,f));if(p===0)return Ts.every(Math.max(Xr(c,l,f),1));const[d,g]=o[h/o[p-1][2]<o[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[Xd,Zd]=Tu(mt,ei,$r,kt,zs,Os),[Kd,qd]=Tu(gt,_r,Jr,Rt,Ns,Rs),Rn="year",Nn="quarter",kn="month",On="week",zn="date",ti="day",Gs="dayofyear",Un="hours",Gn="minutes",Hn="seconds",ni="milliseconds";[Rn,Nn,kn,On,zn,ti,Gs,Un,Gn,Hn,ni].reduce((t,e,n)=>(t[e]=1+n,t),{});const Jd={[Rn]:gt,[Nn]:_r.every(3),[kn]:_r,[On]:Jr,[zn]:Rt,[ti]:Rt,[Gs]:Rt,[Un]:Ns,[Gn]:Rs,[Hn]:pt,[ni]:Ts},_d={[Rn]:mt,[Nn]:ei.every(3),[kn]:ei,[On]:$r,[zn]:kt,[ti]:kt,[Gs]:kt,[Un]:zs,[Gn]:Os,[Hn]:pt,[ni]:Ts};function $d(t){return Jd[t]}function ep(t){return _d[t]}function Hs(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Vs(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Vn(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Pu(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,s=t.days,o=t.shortDays,a=t.months,u=t.shortMonths,c=Qn(i),l=jn(i),f=Qn(s),h=jn(s),p=Qn(o),d=jn(o),g=Qn(a),m=jn(a),A=Qn(u),b=jn(u),y={a:Ve,A:Qe,b:Z,B:MC,c:null,d:zu,e:zu,f:Ep,g:Lp,G:Np,H:bp,I:wp,j:vp,L:Uu,m:Cp,M:Dp,p:BC,q:FC,Q:Yu,s:Wu,S:Sp,u:Mp,U:Bp,V:Fp,w:Ip,W:Tp,x:null,X:null,y:Pp,Y:Rp,Z:kp,"%":ju},v={a:IC,A:TC,b:PC,B:LC,c:null,d:Hu,e:Hu,f:Gp,g:qp,G:_p,H:Op,I:zp,j:Up,L:Vu,m:Hp,M:Vp,p:RC,q:NC,Q:Yu,s:Wu,S:Qp,u:jp,U:Yp,V:Wp,w:Xp,W:Zp,x:null,X:null,y:Kp,Y:Jp,Z:$p,"%":ju},D={a:se,A:E,b:oe,B:z,c:pe,d:ku,e:ku,f:mp,g:Nu,G:Ru,H:Ou,I:Ou,j:hp,L:gp,m:lp,M:dp,p:le,q:fp,Q:xp,s:yp,S:pp,u:sp,U:op,V:ap,w:ip,W:up,x:Jt,X:He,y:Nu,Y:Ru,Z:cp,"%":Ap};y.x=C(n,y),y.X=C(r,y),y.c=C(e,y),v.x=C(n,v),v.X=C(r,v),v.c=C(e,v);function C(B,P){return function(N){var w=[],ve=-1,G=0,Ce=B.length,De,_t,Hh;for(N instanceof Date||(N=new Date(+N));++ve<Ce;)B.charCodeAt(ve)===37&&(w.push(B.slice(G,ve)),(_t=Lu[De=B.charAt(++ve)])!=null?De=B.charAt(++ve):_t=De==="e"?" ":"0",(Hh=P[De])&&(De=Hh(N,_t)),w.push(De),G=ve+1);return w.push(B.slice(G,ve)),w.join("")}}function F(B,P){return function(N){var w=Vn(1900,void 0,1),ve=S(w,B,N+="",0),G,Ce;if(ve!=N.length)return null;if("Q"in w)return new Date(w.Q);if("s"in w)return new Date(w.s*1e3+("L"in w?w.L:0));if(P&&!("Z"in w)&&(w.Z=0),"p"in w&&(w.H=w.H%12+w.p*12),w.m===void 0&&(w.m="q"in w?w.q:0),"V"in w){if(w.V<1||w.V>53)return null;"w"in w||(w.w=1),"Z"in w?(G=Vs(Vn(w.y,0,1)),Ce=G.getUTCDay(),G=Ce>4||Ce===0?Us.ceil(G):Us(G),G=kt.offset(G,(w.V-1)*7),w.y=G.getUTCFullYear(),w.m=G.getUTCMonth(),w.d=G.getUTCDate()+(w.w+6)%7):(G=Hs(Vn(w.y,0,1)),Ce=G.getDay(),G=Ce>4||Ce===0?ks.ceil(G):ks(G),G=Rt.offset(G,(w.V-1)*7),w.y=G.getFullYear(),w.m=G.getMonth(),w.d=G.getDate()+(w.w+6)%7)}else("W"in w||"U"in w)&&("w"in w||(w.w="u"in w?w.u%7:"W"in w?1:0),Ce="Z"in w?Vs(Vn(w.y,0,1)).getUTCDay():Hs(Vn(w.y,0,1)).getDay(),w.m=0,w.d="W"in w?(w.w+6)%7+w.W*7-(Ce+5)%7:w.w+w.U*7-(Ce+6)%7);return"Z"in w?(w.H+=w.Z/100|0,w.M+=w.Z%100,Vs(w)):Hs(w)}}function S(B,P,N,w){for(var ve=0,G=P.length,Ce=N.length,De,_t;ve<G;){if(w>=Ce)return-1;if(De=P.charCodeAt(ve++),De===37){if(De=P.charAt(ve++),_t=D[De in Lu?P.charAt(ve++):De],!_t||(w=_t(B,N,w))<0)return-1}else if(De!=N.charCodeAt(w++))return-1}return w}function le(B,P,N){var w=c.exec(P.slice(N));return w?(B.p=l.get(w[0].toLowerCase()),N+w[0].length):-1}function se(B,P,N){var w=p.exec(P.slice(N));return w?(B.w=d.get(w[0].toLowerCase()),N+w[0].length):-1}function E(B,P,N){var w=f.exec(P.slice(N));return w?(B.w=h.get(w[0].toLowerCase()),N+w[0].length):-1}function oe(B,P,N){var w=A.exec(P.slice(N));return w?(B.m=b.get(w[0].toLowerCase()),N+w[0].length):-1}function z(B,P,N){var w=g.exec(P.slice(N));return w?(B.m=m.get(w[0].toLowerCase()),N+w[0].length):-1}function pe(B,P,N){return S(B,e,P,N)}function Jt(B,P,N){return S(B,n,P,N)}function He(B,P,N){return S(B,r,P,N)}function Ve(B){return o[B.getDay()]}function Qe(B){return s[B.getDay()]}function Z(B){return u[B.getMonth()]}function MC(B){return a[B.getMonth()]}function BC(B){return i[+(B.getHours()>=12)]}function FC(B){return 1+~~(B.getMonth()/3)}function IC(B){return o[B.getUTCDay()]}function TC(B){return s[B.getUTCDay()]}function PC(B){return u[B.getUTCMonth()]}function LC(B){return a[B.getUTCMonth()]}function RC(B){return i[+(B.getUTCHours()>=12)]}function NC(B){return 1+~~(B.getUTCMonth()/3)}return{format:function(B){var P=C(B+="",y);return P.toString=function(){return B},P},parse:function(B){var P=F(B+="",!1);return P.toString=function(){return B},P},utcFormat:function(B){var P=C(B+="",v);return P.toString=function(){return B},P},utcParse:function(B){var P=F(B+="",!0);return P.toString=function(){return B},P}}}var Lu={"-":"",_:" ","0":"0"},$=/^\s*\d+/,tp=/^%/,np=/[\\^$*+?|[\]().{}]/g;function L(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s<n?new Array(n-s+1).join(e)+i:i)}function rp(t){return t.replace(np,"\\$&")}function Qn(t){return new RegExp("^(?:"+t.map(rp).join("|")+")","i")}function jn(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function ip(t,e,n){var r=$.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function sp(t,e,n){var r=$.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function op(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function ap(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function up(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Ru(t,e,n){var r=$.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Nu(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function cp(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function fp(t,e,n){var r=$.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function lp(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ku(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function hp(t,e,n){var r=$.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Ou(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dp(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pp(t,e,n){var r=$.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function gp(t,e,n){var r=$.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function mp(t,e,n){var r=$.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ap(t,e,n){var r=tp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function xp(t,e,n){var r=$.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function yp(t,e,n){var r=$.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function zu(t,e){return L(t.getDate(),e,2)}function bp(t,e){return L(t.getHours(),e,2)}function wp(t,e){return L(t.getHours()%12||12,e,2)}function vp(t,e){return L(1+Rt.count(gt(t),t),e,3)}function Uu(t,e){return L(t.getMilliseconds(),e,3)}function Ep(t,e){return Uu(t,e)+"000"}function Cp(t,e){return L(t.getMonth()+1,e,2)}function Dp(t,e){return L(t.getMinutes(),e,2)}function Sp(t,e){return L(t.getSeconds(),e,2)}function Mp(t){var e=t.getDay();return e===0?7:e}function Bp(t,e){return L(Jr.count(gt(t)-1,t),e,2)}function Gu(t){var e=t.getDay();return e>=4||e===0?Pn(t):Pn.ceil(t)}function Fp(t,e){return t=Gu(t),L(Pn.count(gt(t),t)+(gt(t).getDay()===4),e,2)}function Ip(t){return t.getDay()}function Tp(t,e){return L(ks.count(gt(t)-1,t),e,2)}function Pp(t,e){return L(t.getFullYear()%100,e,2)}function Lp(t,e){return t=Gu(t),L(t.getFullYear()%100,e,2)}function Rp(t,e){return L(t.getFullYear()%1e4,e,4)}function Np(t,e){var n=t.getDay();return t=n>=4||n===0?Pn(t):Pn.ceil(t),L(t.getFullYear()%1e4,e,4)}function kp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+L(e/60|0,"0",2)+L(e%60,"0",2)}function Hu(t,e){return L(t.getUTCDate(),e,2)}function Op(t,e){return L(t.getUTCHours(),e,2)}function zp(t,e){return L(t.getUTCHours()%12||12,e,2)}function Up(t,e){return L(1+kt.count(mt(t),t),e,3)}function Vu(t,e){return L(t.getUTCMilliseconds(),e,3)}function Gp(t,e){return Vu(t,e)+"000"}function Hp(t,e){return L(t.getUTCMonth()+1,e,2)}function Vp(t,e){return L(t.getUTCMinutes(),e,2)}function Qp(t,e){return L(t.getUTCSeconds(),e,2)}function jp(t){var e=t.getUTCDay();return e===0?7:e}function Yp(t,e){return L($r.count(mt(t)-1,t),e,2)}function Qu(t){var e=t.getUTCDay();return e>=4||e===0?Ln(t):Ln.ceil(t)}function Wp(t,e){return t=Qu(t),L(Ln.count(mt(t),t)+(mt(t).getUTCDay()===4),e,2)}function Xp(t){return t.getUTCDay()}function Zp(t,e){return L(Us.count(mt(t)-1,t),e,2)}function Kp(t,e){return L(t.getUTCFullYear()%100,e,2)}function qp(t,e){return t=Qu(t),L(t.getUTCFullYear()%100,e,2)}function Jp(t,e){return L(t.getUTCFullYear()%1e4,e,4)}function _p(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Ln(t):Ln.ceil(t),L(t.getUTCFullYear()%1e4,e,4)}function $p(){return"+0000"}function ju(){return"%"}function Yu(t){return+t}function Wu(t){return Math.floor(+t/1e3)}var tn,Qs,Xu,js,Zu;eg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function eg(t){return tn=Pu(t),Qs=tn.format,Xu=tn.parse,js=tn.utcFormat,Zu=tn.utcParse,tn}function Yn(t){const e={};return n=>e[n]||(e[n]=t(n))}function tg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let s=ng(r,i);const o=s<r.length?r.slice(s):"";for(;--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function ng(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function rg(t){const e=Yn(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=en(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return tg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,s,o){o=en(o==null?",f":o);const a=Xr(r,i,s),u=Math.max(Math.abs(r),Math.abs(i));let c;if(o.precision==null)switch(o.type){case"s":return isNaN(c=Su(a,u))||(o.precision=c),n(o,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Mu(a,u))||(o.precision=c-(o.type==="e"));break}case"f":case"%":{isNaN(c=Du(a))||(o.precision=c-(o.type==="%")*2);break}}return e(o)}}}ig();function ig(){return rg({format:qr,formatPrefix:Ms})}function Ku(t,e,n){n=n||{},Re(n)||Y("Invalid time multi-format specifier: ".concat(n));const r=e(Hn),i=e(Gn),s=e(Un),o=e(zn),a=e(On),u=e(kn),c=e(Nn),l=e(Rn),f=t(n[ni]||".%L"),h=t(n[Hn]||":%S"),p=t(n[Gn]||"%I:%M"),d=t(n[Un]||"%I %p"),g=t(n[zn]||n[ti]||"%a %d"),m=t(n[On]||"%b %d"),A=t(n[kn]||"%B"),b=t(n[Nn]||"%B"),y=t(n[Rn]||"%Y");return v=>(r(v)<v?f:i(v)<v?h:s(v)<v?p:o(v)<v?d:u(v)<v?a(v)<v?g:m:l(v)<v?c(v)<v?A:b:y)(v)}function qu(t){const e=Yn(t.format),n=Yn(t.utcFormat);return{timeFormat:r=>X(r)?e(r):Ku(e,$d,r),utcFormat:r=>X(r)?n(r):Ku(n,ep,r),timeParse:Yn(t.parse),utcParse:Yn(t.utcParse)}}let Ys;sg();function sg(){return Ys=qu({format:Qs,parse:Xu,utcFormat:js,utcParse:Zu})}function og(t){return qu(Pu(t))}function ag(t){return arguments.length?Ys=og(t):Ys}const ug=/^(data:|([A-Za-z]+:)?\/\/)/,cg=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,fg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ju="file://";function lg(t,e){return n=>({options:n||{},sanitize:dg,load:hg,fileAccess:!!e,file:pg(e),http:mg(t)})}async function hg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function dg(t,e){e=gs({},this.options,e);const n=this.fileAccess,r={href:null};let i,s,o;const a=cg.test(t.replace(fg,""));(t==null||typeof t!="string"||!a)&&Y("Sanitize failure, invalid URI: "+Yr(t));const u=ug.test(t);return(o=e.baseURL)&&!u&&(!t.startsWith("/")&&!o.endsWith("/")&&(t="/"+t),t=o+t),s=(i=t.startsWith(Ju))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(Ju.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),s=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!s}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function pg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,s)=>{i?r(i):n(s)})}):gg}async function gg(){Y("No file system access.")}function mg(t){return t?async function(e,n){const r=gs({},this.options.http,n),i=n&&n.response,s=await t(e,r);return s.ok?ge(s[i])?s[i]():s.text():Y(s.status+""+s.statusText)}:Ag}async function Ag(){Y("No HTTP fetch method available.")}const xg=t=>t!=null&&t===t,yg=t=>t==="true"||t==="false"||t===!0||t===!1,bg=t=>!Number.isNaN(Date.parse(t)),_u=t=>!Number.isNaN(+t)&&!(t instanceof Date),wg=t=>_u(t)&&Number.isInteger(+t),$u={boolean:fd,integer:Fn,number:Fn,date:hd,string:dd,unknown:Gr},ri=[yg,wg,_u,bg],vg=["boolean","integer","number","date"];function Eg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=ri.length,i=ri.map((s,o)=>o+1);for(let s=0,o=0,a,u;s<n;++s)for(u=e?t[s][e]:t[s],a=0;a<r;++a)if(i[a]&&xg(u)&&!ri[a](u)&&(i[a]=0,++o,o===ri.length))return"string";return vg[i.reduce((s,o)=>s===0?o:s,0)-1]}function Cg(t,e){return e.reduce((n,r)=>(n[r]=Eg(t,r),n),{})}function ec(t){const e=function(n,r){const i={delimiter:t};return Ws(n,r?gs(r,i):i)};return e.responseType="text",e}function Ws(t,e){return e.header&&(t=e.header.map(Yr).join(e.delimiter)+`
6
- `+t),pu(e.delimiter).parse(t+"")}Ws.responseType="text";function Dg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Xs(t,e){const n=e&&e.property?Ur(e.property):Gr;return Re(t)&&!Dg(t)?Sg(n(t),e):n(JSON.parse(t))}Xs.responseType="json";function Sg(t,e){return!Be(t)&&ud(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Mg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function tc(t,e){let n,r,i,s;return t=Xs(t,e),e&&e.feature?(n=vd,i=e.feature):e&&e.mesh?(n=Cd,i=e.mesh,s=Mg[e.filter]):Y("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,s):Y("Invalid TopoJSON object: "+i),r&&r.features||[r]}tc.responseType="json";const Zs={dsv:Ws,csv:ec(","),tsv:ec(" "),json:Xs,topojson:tc};function nc(t,e){return arguments.length>1?(Zs[t]=e,this):Pt(Zs,t)?Zs[t]:null}function rc(t,e,n,r){e=e||{};const i=nc(e.type||"json");return i||Y("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Bg(t,e.parse,n,r),Pt(t,"columns")&&delete t.columns,t}function Bg(t,e,n,r){if(!t.length)return;const i=ag();n=n||i.timeParse,r=r||i.utcParse;let s=t.columns||Object.keys(t[0]),o,a,u,c,l,f;e==="auto"&&(e=Cg(t,s)),s=Object.keys(e);const h=s.map(p=>{const d=e[p];let g,m;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!$u[d])throw Error("Illegal format pattern: "+p+":"+d);return $u[d]});for(u=0,l=t.length,f=s.length;u<l;++u)for(o=t[u],c=0;c<f;++c)a=s[c],o[a]=h[c](o[a])}const ii=lg(typeof fetch!="undefined"&&fetch,null);/**
1
+ var fE=Object.defineProperty,hE=Object.defineProperties;var dE=Object.getOwnPropertyDescriptors;var jh=Object.getOwnPropertySymbols;var pE=Object.prototype.hasOwnProperty,gE=Object.prototype.propertyIsEnumerable;var au=(P,M,G)=>M in P?fE(P,M,{enumerable:!0,configurable:!0,writable:!0,value:G}):P[M]=G,F=(P,M)=>{for(var G in M||(M={}))pE.call(M,G)&&au(P,G,M[G]);if(jh)for(var G of jh(M))gE.call(M,G)&&au(P,G,M[G]);return P},Se=(P,M)=>hE(P,dE(M));var Vh=(P,M,G)=>(au(P,typeof M!="symbol"?M+"":M,G),G),uu=(P,M,G)=>{if(!M.has(P))throw TypeError("Cannot "+G)};var Z=(P,M,G)=>(uu(P,M,"read from private field"),G?G.call(P):M.get(P)),ge=(P,M,G)=>{if(M.has(P))throw TypeError("Cannot add the same private member more than once");M instanceof WeakSet?M.add(P):M.set(P,G)},ei=(P,M,G,Pt)=>(uu(P,M,"write to private field"),Pt?Pt.call(P,G):M.set(P,G),G),Yh=(P,M,G,Pt)=>({set _(Fo){ei(P,M,Fo,G)},get _(){return Z(P,M,Pt)}}),ce=(P,M,G)=>(uu(P,M,"access private method"),G);(function(P,M){typeof exports=="object"&&typeof module!="undefined"?M(exports):typeof define=="function"&&define.amd?define(["exports"],M):(P=typeof globalThis!="undefined"?globalThis:P||self,M(P.genomeSpyEmbed={}))})(this,function(P){var Kr,cu,Un,Hn,Ne,Qn,qr,lu,tt,Tt,So,Wh,Do,Xh,an,ti,Jr,fu,_r,hu,$r,du,Bo,Zh;"use strict";function M(t,e,n){return t.fields=e||[],t.fname=n,t}function G(t){return t==null?null:t.fname}function Pt(t){return t==null?null:t.fields}function Fo(t){return t.length===1?Kh(t[0]):qh(t)}const Kh=t=>function(e){return e[t]},qh=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function K(t){throw Error(t)}function Jh(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,u;t=t+"";function c(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(u=t[a],u==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(u===r)c(),r=null,i=-1;else{if(r)continue;s===i&&u==='"'||s===i&&u==="'"?(s=a+1,r=u):u==="."&&!i?a>s?c():s=a+1:u==="["?(a>s&&c(),i=s=a+1):u==="]"&&(i||K("Access path missing open bracket: "+t),i>0&&c(),i=0,s=a+1)}return i&&K("Access path missing closing bracket: "+t),r&&K("Access path missing closing quote: "+t),a>s&&(a++,c()),e}function ni(t,e,n){const r=Jh(t);return t=r.length===1?r[0]:t,M((n&&n.get||Fo)(r),[t],e||t)}ni("id");const ri=M(t=>t,[],"identity");M(()=>0,[],"zero"),M(()=>1,[],"one"),M(()=>!0,[],"true"),M(()=>!1,[],"false");var Te=Array.isArray;function ze(t){return t===Object(t)}function Oe(t){return t[t.length-1]}function Yn(t){return t==null||t===""?null:+t}const pu=t=>e=>t*Math.exp(e),gu=t=>e=>Math.log(t*e),_h=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),$h=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,ii=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Mo(t,e,n,r){const i=n(t[0]),o=n(Oe(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function ed(t,e){return Mo(t,e,Yn,ri)}function td(t,e){var n=Math.sign(t[0]);return Mo(t,e,gu(n),pu(n))}function nd(t,e,n){return Mo(t,e,ii(n),ii(1/n))}function oi(t,e,n,r,i){const o=r(t[0]),s=r(Oe(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function mu(t,e,n){return oi(t,e,n,Yn,ri)}function Au(t,e,n){const r=Math.sign(t[0]);return oi(t,e,n,gu(r),pu(r))}function Io(t,e,n,r){return oi(t,e,n,ii(r),ii(1/r))}function rd(t,e,n,r){return oi(t,e,n,_h(r),$h(r))}function To(t){return t!=null?Te(t)?t:[t]:[]}function id(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function me(t){return typeof t=="function"}const od="descending";function xu(t,e,n){n=n||{},e=To(e)||[];const r=[],i=[],o={},s=n.comparator||sd;return To(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===od?-1:1),i.push(a=me(a)?a:ni(a,null,n)),(Pt(a)||[]).forEach(c=>o[c]=1))}),i.length===0?null:M(s(i,r),Object.keys(o))}const yu=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),sd=(t,e)=>t.length===1?ad(t[0],e[0]):ud(t,e,t.length),ad=(t,e)=>function(n,r){return yu(t(n),t(r))*e},ud=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=yu(o(r),o(i));return s*e[a]});function cd(t){return me(t)?t:()=>t}function Po(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const ld=Object.prototype.hasOwnProperty;function Lt(t,e){return ld.call(t,e)}function si(t){return typeof t=="boolean"}function fd(t){return Object.prototype.toString.call(t)==="[object Date]"}function hd(t){return t&&me(t[Symbol.iterator])}function Ae(t){return typeof t=="number"}function q(t){return typeof t=="string"}function dd(t,e){const n=t[0],r=Oe(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ai(t){return t&&Oe(t)-t[0]||0}function ui(t){return Te(t)?"["+t.map(ui)+"]":ze(t)||q(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function pd(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const gd=t=>Ae(t)||fd(t)?t:Date.parse(t);function md(t,e){return e=e||gd,t==null||t===""?null:e(t)}function Ad(t){return t==null||t===""?null:t+""}function ci(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var bu={},Lo={},Ro=34,Wn=10,ko=13;function wu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function xd(t,e){var n=wu(t);return function(r,i){return e(n(r),i,t)}}function vu(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function xe(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function yd(t){return t<0?"-"+xe(-t,6):t>9999?"+"+xe(t,6):xe(t,4)}function bd(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":yd(t.getUTCFullYear())+"-"+xe(t.getUTCMonth()+1,2)+"-"+xe(t.getUTCDate(),2)+(i?"T"+xe(e,2)+":"+xe(n,2)+":"+xe(r,2)+"."+xe(i,3)+"Z":r?"T"+xe(e,2)+":"+xe(n,2)+":"+xe(r,2)+"Z":n||e?"T"+xe(e,2)+":"+xe(n,2)+"Z":"")}function Cu(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,h){var p,d,g=i(l,function(A,m){if(p)return p(A,m-1);d=A,p=h?xd(A,h):wu(A)});return g.columns=d||[],g}function i(l,h){var p=[],d=l.length,g=0,A=0,m,b=d<=0,y=!1;l.charCodeAt(d-1)===Wn&&--d,l.charCodeAt(d-1)===ko&&--d;function v(){if(b)return Lo;if(y)return y=!1,bu;var C,B=g,L;if(l.charCodeAt(B)===Ro){for(;g++<d&&l.charCodeAt(g)!==Ro||l.charCodeAt(++g)===Ro;);return(C=g)>=d?b=!0:(L=l.charCodeAt(g++))===Wn?y=!0:L===ko&&(y=!0,l.charCodeAt(g)===Wn&&++g),l.slice(B+1,C-1).replace(/""/g,'"')}for(;g<d;){if((L=l.charCodeAt(C=g++))===Wn)y=!0;else if(L===ko)y=!0,l.charCodeAt(g)===Wn&&++g;else if(L!==n)continue;return l.slice(B,C)}return b=!0,l.slice(B,d)}for(;(m=v())!==Lo;){for(var E=[];m!==bu&&m!==Lo;)E.push(m),m=v();h&&(E=h(E,A++))==null||p.push(E)}return p}function o(l,h){return l.map(function(p){return h.map(function(d){return f(p[d])}).join(t)})}function s(l,h){return h==null&&(h=vu(l)),[h.map(f).join(t)].concat(o(l,h)).join(`
3
+ `)}function a(l,h){return h==null&&(h=vu(l)),o(l,h).join(`
4
+ `)}function u(l){return l.map(c).join(`
5
+ `)}function c(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?bd(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:u,formatRow:c,formatValue:f}}var wd=Cu(" "),vd=wd.parseRows;function Cd(t){return t}function Ed(t){if(t==null)return Cd;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,u){u||(e=n=0);var c=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;c<f;)l[c]=a[c],++c;return l}}function Sd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Dd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Eu(t,n)})}:Eu(t,e)}function Eu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Su(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Su(t,e){var n=Ed(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var h=r[f<0?~f:f],p=0,d=h.length;p<d;++p)l.push(n(h[p],p));f<0&&Sd(l,d)}function o(f){return n(f)}function s(f){for(var l=[],h=0,p=f.length;h<p;++h)i(f[h],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function u(f){return f.map(a)}function c(f){var l=f.type,h;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(c)};case"Point":h=o(f.coordinates);break;case"MultiPoint":h=f.coordinates.map(o);break;case"LineString":h=s(f.arcs);break;case"MultiLineString":h=f.arcs.map(s);break;case"Polygon":h=u(f.arcs);break;case"MultiPolygon":h=f.arcs.map(u);break;default:return null}return{type:l,coordinates:h}}return c(e)}function Bd(t,e){var n={},r={},i={},o=[],s=-1;e.forEach(function(c,f){var l=t.arcs[c<0?~c:c],h;l.length<3&&!l[1][0]&&!l[1][1]&&(h=e[++s],e[s]=c,e[f]=h)}),e.forEach(function(c){var f=a(c),l=f[0],h=f[1],p,d;if(p=i[l])if(delete i[p.end],p.push(c),p.end=h,d=r[h]){delete r[d.start];var g=d===p?p:p.concat(d);r[g.start=p.start]=i[g.end=d.end]=g}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(c),p.start=l,d=i[l]){delete i[d.end];var A=d===p?p:d.concat(p);r[A.start=d.start]=i[A.end=p.end]=A}else r[p.start]=i[p.end]=p;else p=[c],r[p.start=l]=i[p.end=h]=p});function a(c){var f=t.arcs[c<0?~c:c],l=f[0],h;return t.transform?(h=[0,0],f.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=f[f.length-1],c<0?[h,l]:[l,h]}function u(c,f){for(var l in c){var h=c[l];delete f[h.start],delete h.start,delete h.end,h.forEach(function(p){n[p<0?~p:p]=1}),o.push(h)}}return u(i,r),u(r,i),e.forEach(function(c){n[c<0?~c:c]||o.push([c])}),o}function Fd(t){return Su(t,Md.apply(this,arguments))}function Md(t,e,n){var r,i,o;if(arguments.length>1)r=Id(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Bd(t,r)}}function Id(t,e,n){var r=[],i=[],o;function s(l){var h=l<0?~l:l;(i[h]||(i[h]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function u(l){l.forEach(a)}function c(l){l.forEach(u)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(l.arcs);break;case"MultiLineString":case"Polygon":u(l.arcs);break;case"MultiPolygon":c(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Xn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Td(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function li(t){let e,n,r;t.length!==2?(e=Xn,n=(a,u)=>Xn(t(a),u),r=(a,u)=>t(a)-u):(e=t===Xn||t===Td?t:Pd,n=t,r=t);function i(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<0?c=l+1:f=l}while(c<f)}return c}function o(a,u,c=0,f=a.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(a[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function s(a,u,c=0,f=a.length){const l=i(a,u,c,f-1);return l>c&&r(a[l-1],u)>-r(a[l],u)?l-1:l}return{left:i,center:s,right:o}}function Pd(){return 0}function Du(t){return t===null?NaN:+t}const Bu=li(Xn),No=Bu.right;Bu.left,li(Du).center;var cn=No;function Ld(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Rt extends Map{constructor(e,n=Nd){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Fu(this,e))}has(e){return super.has(Fu(this,e))}set(e,n){return super.set(Rd(this,e),n)}delete(e){return super.delete(kd(this,e))}}function Fu({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Rd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function kd({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Nd(t){return t!==null&&typeof t=="object"?t.valueOf():t}function zo(t){return t}function fi(t,...e){return Mu(t,zo,zo,e)}function zd(t,...e){return Mu(t,Array.from,zo,e)}function Mu(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Rt,u=r[s++];let c=-1;for(const f of o){const l=u(f,++c,o),h=a.get(l);h?h.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Oo=Math.sqrt(50),Go=Math.sqrt(10),Uo=Math.sqrt(2);function hi(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Iu(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,s=new Array(o=c-u+1);++i<o;)s[i]=(u+i)/a}return r&&s.reverse(),s}function Iu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Oo?10:o>=Go?5:o>=Uo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Oo?10:o>=Go?5:o>=Uo?2:1)}function kt(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Oo?i*=10:o>=Go?i*=5:o>=Uo&&(i*=2),e<t?-i:i}function Tu(t,e,n=Du){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Zn(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function di(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Od(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function pi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function ln(t){return t=pi(Math.abs(t)),t?t[1]:NaN}function Gd(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),o.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function Ud(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Hd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function dt(t){if(!(e=Hd.exec(t)))throw new Error("invalid format: "+t);var e;return new Ho({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}dt.prototype=Ho.prototype;function Ho(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Ho.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Qd(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Pu;function jd(t,e){var n=pi(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Pu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+pi(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=pi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var Ru={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Od,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Lu(t*100,e),r:Lu,s:jd,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ku(t){return t}var Nu=Array.prototype.map,zu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Vd(t){var e=t.grouping===void 0||t.thousands===void 0?ku:Gd(Nu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?ku:Ud(Nu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=dt(l);var h=l.fill,p=l.align,d=l.sign,g=l.symbol,A=l.zero,m=l.width,b=l.comma,y=l.precision,v=l.trim,E=l.type;E==="n"?(b=!0,E="g"):Ru[E]||(y===void 0&&(y=12),v=!0,E="g"),(A||h==="0"&&p==="=")&&(A=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(E)?"0"+E.toLowerCase():"",B=g==="$"?r:/[%p]/.test(E)?s:"",L=Ru[E],R=/[defgprs%]/.test(E);y=y===void 0?6:/[gprs]/.test(E)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function Q(T){var Ce=C,se=B,Be,nt,Fe;if(E==="c")se=L(T)+se,T="";else{T=+T;var jn=T<0||1/T<0;if(T=isNaN(T)?u:L(Math.abs(T),y),v&&(T=Qd(T)),jn&&+T==0&&d!=="+"&&(jn=!1),Ce=(jn?d==="("?d:a:d==="-"||d==="("?"":d)+Ce,se=(E==="s"?zu[8+Pu/3]:"")+se+(jn&&d==="("?")":""),R){for(Be=-1,nt=T.length;++Be<nt;)if(Fe=T.charCodeAt(Be),48>Fe||Fe>57){se=(Fe===46?i+T.slice(Be+1):T.slice(Be))+se,T=T.slice(0,Be);break}}}b&&!A&&(T=e(T,1/0));var Vn=Ce.length+T.length+se.length,We=Vn<m?new Array(m-Vn+1).join(h):"";switch(b&&A&&(T=e(We+T,We.length?m-se.length:1/0),We=""),p){case"<":T=Ce+T+se+We;break;case"=":T=Ce+We+T+se;break;case"^":T=We.slice(0,Vn=We.length>>1)+Ce+T+se+We.slice(Vn);break;default:T=We+Ce+T+se;break}return o(T)}return Q.toString=function(){return l+""},Q}function f(l,h){var p=c((l=dt(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(ln(h)/3)))*3,g=Math.pow(10,-d),A=zu[8+d/3];return function(m){return p(g*m)+A}}return{format:c,formatPrefix:f}}var gi,ae,Qo;Yd({thousands:",",grouping:[3],currency:["$",""]});function Yd(t){return gi=Vd(t),ae=gi.format,Qo=gi.formatPrefix,gi}function Ou(t){return Math.max(0,-ln(Math.abs(t)))}function Gu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ln(e)/3)))*3-ln(Math.abs(t)))}function Uu(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ln(e)-ln(t))+1}var jo=new Date,Vo=new Date;function ee(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var u=[],c;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return u;do u.push(c=new Date(+o)),e(o,a),t(o);while(c<o&&o<s);return u},i.filter=function(o){return ee(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return jo.setTime(+o),Vo.setTime(+s),t(jo),t(Vo),Math.floor(n(jo,Vo))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var Yo=ee(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Yo.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?ee(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):Yo};var Wo=Yo;const rt=1e3,Pe=rt*60,it=Pe*60,Nt=it*24,Xo=Nt*7,Hu=Nt*30,Zo=Nt*365;var Wd=ee(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*rt)},function(t,e){return(e-t)/rt},function(t){return t.getUTCSeconds()}),pt=Wd,Xd=ee(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*rt)},function(t,e){t.setTime(+t+e*Pe)},function(t,e){return(e-t)/Pe},function(t){return t.getMinutes()}),Ko=Xd,Zd=ee(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*rt-t.getMinutes()*Pe)},function(t,e){t.setTime(+t+e*it)},function(t,e){return(e-t)/it},function(t){return t.getHours()}),qo=Zd,Kd=ee(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Pe)/Nt,t=>t.getDate()-1),zt=Kd;function Ot(t){return ee(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*Pe)/Xo})}var mi=Ot(0),Jo=Ot(1);Ot(2),Ot(3);var Kn=Ot(4);Ot(5),Ot(6);var qd=ee(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()}),Ai=qd,Qu=ee(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Qu.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ee(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};var gt=Qu,Jd=ee(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Pe)},function(t,e){return(e-t)/Pe},function(t){return t.getUTCMinutes()}),_o=Jd,_d=ee(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*it)},function(t,e){return(e-t)/it},function(t){return t.getUTCHours()}),$o=_d,$d=ee(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Nt},function(t){return t.getUTCDate()-1}),Gt=$d;function Ut(t){return ee(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Xo})}var xi=Ut(0),es=Ut(1);Ut(2),Ut(3);var qn=Ut(4);Ut(5),Ut(6);var ep=ee(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()}),yi=ep,ju=ee(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});ju.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:ee(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};var mt=ju;function Vu(t,e,n,r,i,o){const s=[[pt,1,rt],[pt,5,5*rt],[pt,15,15*rt],[pt,30,30*rt],[o,1,Pe],[o,5,5*Pe],[o,15,15*Pe],[o,30,30*Pe],[i,1,it],[i,3,3*it],[i,6,6*it],[i,12,12*it],[r,1,Nt],[r,2,2*Nt],[n,1,Xo],[e,1,Hu],[e,3,3*Hu],[t,1,Zo]];function a(c,f,l){const h=f<c;h&&([c,f]=[f,c]);const p=l&&typeof l.range=="function"?l:u(c,f,l),d=p?p.range(c,+f+1):[];return h?d.reverse():d}function u(c,f,l){const h=Math.abs(f-c)/l,p=li(([,,A])=>A).right(s,h);if(p===s.length)return t.every(kt(c/Zo,f/Zo,l));if(p===0)return Wo.every(Math.max(kt(c,f,l),1));const[d,g]=s[h/s[p-1][2]<s[p][2]/h?p-1:p];return d.every(g)}return[a,u]}const[tp,np]=Vu(mt,yi,xi,Gt,$o,_o),[rp,ip]=Vu(gt,Ai,mi,zt,qo,Ko),Jn="year",_n="quarter",$n="month",er="week",tr="date",bi="day",ts="dayofyear",nr="hours",rr="minutes",ir="seconds",wi="milliseconds";[Jn,_n,$n,er,tr,bi,ts,nr,rr,ir,wi].reduce((t,e,n)=>(t[e]=1+n,t),{});const op={[Jn]:gt,[_n]:Ai.every(3),[$n]:Ai,[er]:mi,[tr]:zt,[bi]:zt,[ts]:zt,[nr]:qo,[rr]:Ko,[ir]:pt,[wi]:Wo},sp={[Jn]:mt,[_n]:yi.every(3),[$n]:yi,[er]:xi,[tr]:Gt,[bi]:Gt,[ts]:Gt,[nr]:$o,[rr]:_o,[ir]:pt,[wi]:Wo};function ap(t){return op[t]}function up(t){return sp[t]}function ns(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function rs(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function or(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yu(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,u=t.shortMonths,c=sr(i),f=ar(i),l=sr(o),h=ar(o),p=sr(s),d=ar(s),g=sr(a),A=ar(a),m=sr(u),b=ar(u),y={a:jn,A:Vn,b:We,B:nE,c:null,d:Ju,e:Ju,f:Tp,g:Hp,G:jp,H:Fp,I:Mp,j:Ip,L:_u,m:Pp,M:Lp,p:rE,q:iE,Q:ic,s:oc,S:Rp,u:kp,U:Np,V:zp,w:Op,W:Gp,x:null,X:null,y:Up,Y:Qp,Z:Vp,"%":rc},v={a:oE,A:sE,b:aE,B:uE,c:null,d:ec,e:ec,f:Zp,g:ig,G:sg,H:Yp,I:Wp,j:Xp,L:tc,m:Kp,M:qp,p:cE,q:lE,Q:ic,s:oc,S:Jp,u:_p,U:$p,V:eg,w:tg,W:ng,x:null,X:null,y:rg,Y:og,Z:ag,"%":rc},E={a:Q,A:T,b:Ce,B:se,c:Be,d:Ku,e:Ku,f:Ep,g:Zu,G:Xu,H:qu,I:qu,j:bp,L:Cp,m:yp,M:wp,p:R,q:xp,Q:Dp,s:Bp,S:vp,u:dp,U:pp,V:gp,w:hp,W:mp,x:nt,X:Fe,y:Zu,Y:Xu,Z:Ap,"%":Sp};y.x=C(n,y),y.X=C(r,y),y.c=C(e,y),v.x=C(n,v),v.X=C(r,v),v.c=C(e,v);function C(D,k){return function(O){var w=[],Ee=-1,V=0,Me=D.length,Ie,un,Qh;for(O instanceof Date||(O=new Date(+O));++Ee<Me;)D.charCodeAt(Ee)===37&&(w.push(D.slice(V,Ee)),(un=Wu[Ie=D.charAt(++Ee)])!=null?Ie=D.charAt(++Ee):un=Ie==="e"?" ":"0",(Qh=k[Ie])&&(Ie=Qh(O,un)),w.push(Ie),V=Ee+1);return w.push(D.slice(V,Ee)),w.join("")}}function B(D,k){return function(O){var w=or(1900,void 0,1),Ee=L(w,D,O+="",0),V,Me;if(Ee!=O.length)return null;if("Q"in w)return new Date(w.Q);if("s"in w)return new Date(w.s*1e3+("L"in w?w.L:0));if(k&&!("Z"in w)&&(w.Z=0),"p"in w&&(w.H=w.H%12+w.p*12),w.m===void 0&&(w.m="q"in w?w.q:0),"V"in w){if(w.V<1||w.V>53)return null;"w"in w||(w.w=1),"Z"in w?(V=rs(or(w.y,0,1)),Me=V.getUTCDay(),V=Me>4||Me===0?es.ceil(V):es(V),V=Gt.offset(V,(w.V-1)*7),w.y=V.getUTCFullYear(),w.m=V.getUTCMonth(),w.d=V.getUTCDate()+(w.w+6)%7):(V=ns(or(w.y,0,1)),Me=V.getDay(),V=Me>4||Me===0?Jo.ceil(V):Jo(V),V=zt.offset(V,(w.V-1)*7),w.y=V.getFullYear(),w.m=V.getMonth(),w.d=V.getDate()+(w.w+6)%7)}else("W"in w||"U"in w)&&("w"in w||(w.w="u"in w?w.u%7:"W"in w?1:0),Me="Z"in w?rs(or(w.y,0,1)).getUTCDay():ns(or(w.y,0,1)).getDay(),w.m=0,w.d="W"in w?(w.w+6)%7+w.W*7-(Me+5)%7:w.w+w.U*7-(Me+6)%7);return"Z"in w?(w.H+=w.Z/100|0,w.M+=w.Z%100,rs(w)):ns(w)}}function L(D,k,O,w){for(var Ee=0,V=k.length,Me=O.length,Ie,un;Ee<V;){if(w>=Me)return-1;if(Ie=k.charCodeAt(Ee++),Ie===37){if(Ie=k.charAt(Ee++),un=E[Ie in Wu?k.charAt(Ee++):Ie],!un||(w=un(D,O,w))<0)return-1}else if(Ie!=O.charCodeAt(w++))return-1}return w}function R(D,k,O){var w=c.exec(k.slice(O));return w?(D.p=f.get(w[0].toLowerCase()),O+w[0].length):-1}function Q(D,k,O){var w=p.exec(k.slice(O));return w?(D.w=d.get(w[0].toLowerCase()),O+w[0].length):-1}function T(D,k,O){var w=l.exec(k.slice(O));return w?(D.w=h.get(w[0].toLowerCase()),O+w[0].length):-1}function Ce(D,k,O){var w=m.exec(k.slice(O));return w?(D.m=b.get(w[0].toLowerCase()),O+w[0].length):-1}function se(D,k,O){var w=g.exec(k.slice(O));return w?(D.m=A.get(w[0].toLowerCase()),O+w[0].length):-1}function Be(D,k,O){return L(D,e,k,O)}function nt(D,k,O){return L(D,n,k,O)}function Fe(D,k,O){return L(D,r,k,O)}function jn(D){return s[D.getDay()]}function Vn(D){return o[D.getDay()]}function We(D){return u[D.getMonth()]}function nE(D){return a[D.getMonth()]}function rE(D){return i[+(D.getHours()>=12)]}function iE(D){return 1+~~(D.getMonth()/3)}function oE(D){return s[D.getUTCDay()]}function sE(D){return o[D.getUTCDay()]}function aE(D){return u[D.getUTCMonth()]}function uE(D){return a[D.getUTCMonth()]}function cE(D){return i[+(D.getUTCHours()>=12)]}function lE(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var k=C(D+="",y);return k.toString=function(){return D},k},parse:function(D){var k=B(D+="",!1);return k.toString=function(){return D},k},utcFormat:function(D){var k=C(D+="",v);return k.toString=function(){return D},k},utcParse:function(D){var k=B(D+="",!0);return k.toString=function(){return D},k}}}var Wu={"-":"",_:" ","0":"0"},te=/^\s*\d+/,cp=/^%/,lp=/[\\^$*+?|[\]().{}]/g;function N(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function fp(t){return t.replace(lp,"\\$&")}function sr(t){return new RegExp("^(?:"+t.map(fp).join("|")+")","i")}function ar(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function hp(t,e,n){var r=te.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function dp(t,e,n){var r=te.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function pp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function gp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function mp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Xu(t,e,n){var r=te.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Zu(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Ap(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function xp(t,e,n){var r=te.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function yp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ku(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function bp(t,e,n){var r=te.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function qu(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function wp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function vp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Cp(t,e,n){var r=te.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ep(t,e,n){var r=te.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Sp(t,e,n){var r=cp.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Dp(t,e,n){var r=te.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Bp(t,e,n){var r=te.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Ju(t,e){return N(t.getDate(),e,2)}function Fp(t,e){return N(t.getHours(),e,2)}function Mp(t,e){return N(t.getHours()%12||12,e,2)}function Ip(t,e){return N(1+zt.count(gt(t),t),e,3)}function _u(t,e){return N(t.getMilliseconds(),e,3)}function Tp(t,e){return _u(t,e)+"000"}function Pp(t,e){return N(t.getMonth()+1,e,2)}function Lp(t,e){return N(t.getMinutes(),e,2)}function Rp(t,e){return N(t.getSeconds(),e,2)}function kp(t){var e=t.getDay();return e===0?7:e}function Np(t,e){return N(mi.count(gt(t)-1,t),e,2)}function $u(t){var e=t.getDay();return e>=4||e===0?Kn(t):Kn.ceil(t)}function zp(t,e){return t=$u(t),N(Kn.count(gt(t),t)+(gt(t).getDay()===4),e,2)}function Op(t){return t.getDay()}function Gp(t,e){return N(Jo.count(gt(t)-1,t),e,2)}function Up(t,e){return N(t.getFullYear()%100,e,2)}function Hp(t,e){return t=$u(t),N(t.getFullYear()%100,e,2)}function Qp(t,e){return N(t.getFullYear()%1e4,e,4)}function jp(t,e){var n=t.getDay();return t=n>=4||n===0?Kn(t):Kn.ceil(t),N(t.getFullYear()%1e4,e,4)}function Vp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+N(e/60|0,"0",2)+N(e%60,"0",2)}function ec(t,e){return N(t.getUTCDate(),e,2)}function Yp(t,e){return N(t.getUTCHours(),e,2)}function Wp(t,e){return N(t.getUTCHours()%12||12,e,2)}function Xp(t,e){return N(1+Gt.count(mt(t),t),e,3)}function tc(t,e){return N(t.getUTCMilliseconds(),e,3)}function Zp(t,e){return tc(t,e)+"000"}function Kp(t,e){return N(t.getUTCMonth()+1,e,2)}function qp(t,e){return N(t.getUTCMinutes(),e,2)}function Jp(t,e){return N(t.getUTCSeconds(),e,2)}function _p(t){var e=t.getUTCDay();return e===0?7:e}function $p(t,e){return N(xi.count(mt(t)-1,t),e,2)}function nc(t){var e=t.getUTCDay();return e>=4||e===0?qn(t):qn.ceil(t)}function eg(t,e){return t=nc(t),N(qn.count(mt(t),t)+(mt(t).getUTCDay()===4),e,2)}function tg(t){return t.getUTCDay()}function ng(t,e){return N(es.count(mt(t)-1,t),e,2)}function rg(t,e){return N(t.getUTCFullYear()%100,e,2)}function ig(t,e){return t=nc(t),N(t.getUTCFullYear()%100,e,2)}function og(t,e){return N(t.getUTCFullYear()%1e4,e,4)}function sg(t,e){var n=t.getUTCDay();return t=n>=4||n===0?qn(t):qn.ceil(t),N(t.getUTCFullYear()%1e4,e,4)}function ag(){return"+0000"}function rc(){return"%"}function ic(t){return+t}function oc(t){return Math.floor(+t/1e3)}var fn,is,sc,os,ac;ug({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ug(t){return fn=Yu(t),is=fn.format,sc=fn.parse,os=fn.utcFormat,ac=fn.utcParse,fn}function ur(t){const e={};return n=>e[n]||(e[n]=t(n))}function cg(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=lg(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function lg(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function fg(t){const e=ur(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=dt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return cg(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=dt(s==null?",f":s);const a=kt(r,i,o),u=Math.max(Math.abs(r),Math.abs(i));let c;if(s.precision==null)switch(s.type){case"s":return isNaN(c=Gu(a,u))||(s.precision=c),n(s,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Uu(a,u))||(s.precision=c-(s.type==="e"));break}case"f":case"%":{isNaN(c=Ou(a))||(s.precision=c-(s.type==="%")*2);break}}return e(s)}}}hg();function hg(){return fg({format:ae,formatPrefix:Qo})}function uc(t,e,n){n=n||{},ze(n)||K("Invalid time multi-format specifier: ".concat(n));const r=e(ir),i=e(rr),o=e(nr),s=e(tr),a=e(er),u=e($n),c=e(_n),f=e(Jn),l=t(n[wi]||".%L"),h=t(n[ir]||":%S"),p=t(n[rr]||"%I:%M"),d=t(n[nr]||"%I %p"),g=t(n[tr]||n[bi]||"%a %d"),A=t(n[er]||"%b %d"),m=t(n[$n]||"%B"),b=t(n[_n]||"%B"),y=t(n[Jn]||"%Y");return v=>(r(v)<v?l:i(v)<v?h:o(v)<v?p:s(v)<v?d:u(v)<v?a(v)<v?g:A:f(v)<v?c(v)<v?m:b:y)(v)}function cc(t){const e=ur(t.format),n=ur(t.utcFormat);return{timeFormat:r=>q(r)?e(r):uc(e,ap,r),utcFormat:r=>q(r)?n(r):uc(n,up,r),timeParse:ur(t.parse),utcParse:ur(t.utcParse)}}let ss;dg();function dg(){return ss=cc({format:is,parse:sc,utcFormat:os,utcParse:ac})}function pg(t){return cc(Yu(t))}function gg(t){return arguments.length?ss=pg(t):ss}const mg=/^(data:|([A-Za-z]+:)?\/\/)/,Ag=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,xg=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,lc="file://";function yg(t,e){return n=>({options:n||{},sanitize:wg,load:bg,fileAccess:!!e,file:vg(e),http:Eg(t)})}async function bg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function wg(t,e){e=Po({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=Ag.test(t.replace(xg,""));(t==null||typeof t!="string"||!a)&&K("Sanitize failure, invalid URI: "+ui(t));const u=mg.test(t);return(s=e.baseURL)&&!u&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(lc))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(lc.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function vg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Cg}async function Cg(){K("No file system access.")}function Eg(t){return t?async function(e,n){const r=Po({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?me(o[i])?o[i]():o.text():K(o.status+""+o.statusText)}:Sg}async function Sg(){K("No HTTP fetch method available.")}const Dg=t=>t!=null&&t===t,Bg=t=>t==="true"||t==="false"||t===!0||t===!1,Fg=t=>!Number.isNaN(Date.parse(t)),fc=t=>!Number.isNaN(+t)&&!(t instanceof Date),Mg=t=>fc(t)&&Number.isInteger(+t),hc={boolean:pd,integer:Yn,number:Yn,date:md,string:Ad,unknown:ri},vi=[Bg,Mg,fc,Fg],Ig=["boolean","integer","number","date"];function Tg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=vi.length,i=vi.map((o,s)=>s+1);for(let o=0,s=0,a,u;o<n;++o)for(u=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Dg(u)&&!vi[a](u)&&(i[a]=0,++s,s===vi.length))return"string";return Ig[i.reduce((o,s)=>o===0?s:o,0)-1]}function Pg(t,e){return e.reduce((n,r)=>(n[r]=Tg(t,r),n),{})}function dc(t){const e=function(n,r){const i={delimiter:t};return as(n,r?Po(r,i):i)};return e.responseType="text",e}function as(t,e){return e.header&&(t=e.header.map(ui).join(e.delimiter)+`
6
+ `+t),Cu(e.delimiter).parse(t+"")}as.responseType="text";function Lg(t){return typeof Buffer=="function"&&me(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function us(t,e){const n=e&&e.property?ni(e.property):ri;return ze(t)&&!Lg(t)?Rg(n(t),e):n(JSON.parse(t))}us.responseType="json";function Rg(t,e){return!Te(t)&&hd(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const kg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function pc(t,e){let n,r,i,o;return t=us(t,e),e&&e.feature?(n=Dd,i=e.feature):e&&e.mesh?(n=Fd,i=e.mesh,o=kg[e.filter]):K("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):K("Invalid TopoJSON object: "+i),r&&r.features||[r]}pc.responseType="json";const cs={dsv:as,csv:dc(","),tsv:dc(" "),json:us,topojson:pc};function gc(t,e){return arguments.length>1?(cs[t]=e,this):Lt(cs,t)?cs[t]:null}function mc(t,e,n,r){e=e||{};const i=gc(e.type||"json");return i||K("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Ng(t,e.parse,n,r),Lt(t,"columns")&&delete t.columns,t}function Ng(t,e,n,r){if(!t.length)return;const i=gg();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,u,c,f,l;e==="auto"&&(e=Pg(t,o)),o=Object.keys(e);const h=o.map(p=>{const d=e[p];let g,A;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),A=g[1],(A[0]==="'"&&A[A.length-1]==="'"||A[0]==='"'&&A[A.length-1]==='"')&&(A=A.slice(1,-1)),(g[0]==="utc"?r:n)(A);if(!hc[d])throw Error("Illegal format pattern: "+p+":"+d);return hc[d]});for(u=0,f=t.length,l=o.length;u<f;++u)for(s=t[u],c=0;c<l;++c)a=o[c],s[a]=h[c](s[a])}const Ci=yg(typeof fetch!="undefined"&&fetch,null);/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var Ks;const nn=globalThis.trustedTypes,ic=nn?nn.createPolicy("lit-html",{createHTML:t=>t}):void 0,At=`lit$${(Math.random()+"").slice(9)}$`,sc="?"+At,Fg=`<${sc}>`,rn=document,Wn=(t="")=>rn.createComment(t),Xn=t=>t===null||typeof t!="object"&&typeof t!="function",oc=Array.isArray,Ig=t=>{var e;return oc(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Zn=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ac=/-->/g,uc=/>/g,zt=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,cc=/'/g,fc=/"/g,lc=/^(?:script|style|textarea)$/i,Tg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),ot=Tg(1),Kn=Symbol.for("lit-noChange"),ee=Symbol.for("lit-nothing"),hc=new WeakMap,dc=(t,e,n)=>{var r,i;const s=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let o=s._$litPart$;if(o===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;s._$litPart$=o=new Jn(e.insertBefore(Wn(),a),a,void 0,n!=null?n:{})}return o._$AI(t),o},sn=rn.createTreeWalker(rn,129,null,!1),Pg=(t,e)=>{const n=t.length-1,r=[];let i,s=e===2?"<svg>":"",o=Zn;for(let u=0;u<n;u++){const c=t[u];let l,f,h=-1,p=0;for(;p<c.length&&(o.lastIndex=p,f=o.exec(c),f!==null);)p=o.lastIndex,o===Zn?f[1]==="!--"?o=ac:f[1]!==void 0?o=uc:f[2]!==void 0?(lc.test(f[2])&&(i=RegExp("</"+f[2],"g")),o=zt):f[3]!==void 0&&(o=zt):o===zt?f[0]===">"?(o=i!=null?i:Zn,h=-1):f[1]===void 0?h=-2:(h=o.lastIndex-f[2].length,l=f[1],o=f[3]===void 0?zt:f[3]==='"'?fc:cc):o===fc||o===cc?o=zt:o===ac||o===uc?o=Zn:(o=zt,i=void 0);const d=o===zt&&t[u+1].startsWith("/>")?" ":"";s+=o===Zn?c+Fg:h>=0?(r.push(l),c.slice(0,h)+"$lit$"+c.slice(h)+At+d):c+At+(h===-2?(r.push(void 0),u):d)}const a=s+(t[n]||"<?>")+(e===2?"</svg>":"");return[ic!==void 0?ic.createHTML(a):a,r]};class qn{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let s=0,o=0;const a=e.length-1,u=this.parts,[c,l]=Pg(e,n);if(this.el=qn.createElement(c,r),sn.currentNode=this.el.content,n===2){const f=this.el.content,h=f.firstChild;h.remove(),f.append(...h.childNodes)}for(;(i=sn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const f=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(At)){const p=l[o++];if(f.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(At),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:s,name:g[2],strings:d,ctor:g[1]==="."?Rg:g[1]==="?"?kg:g[1]==="@"?Og:si})}else u.push({type:6,index:s})}for(const h of f)i.removeAttribute(h)}if(lc.test(i.tagName)){const f=i.textContent.split(At),h=f.length-1;if(h>0){i.textContent=nn?nn.emptyScript:"";for(let p=0;p<h;p++)i.append(f[p],Wn()),sn.nextNode(),u.push({type:2,index:++s});i.append(f[h],Wn())}}}else if(i.nodeType===8)if(i.data===sc)u.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(At,f+1))!==-1;)u.push({type:7,index:s}),f+=At.length-1}s++}}static createElement(e,n){const r=rn.createElement("template");return r.innerHTML=e,r}}function on(t,e,n=t,r){var i,s,o,a;if(e===Kn)return e;let u=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const c=Xn(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((s=u==null?void 0:u._$AO)===null||s===void 0||s.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((o=(a=n)._$Cl)!==null&&o!==void 0?o:a._$Cl=[])[r]=u:n._$Cu=u),u!==void 0&&(e=on(t,u._$AS(t,e.values),u,r)),e}class Lg{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,s=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:rn).importNode(r,!0);sn.currentNode=s;let o=sn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let l;c.type===2?l=new Jn(o,o.nextSibling,this,e):c.type===1?l=new c.ctor(o,c.name,c.strings,this,e):c.type===6&&(l=new zg(o,this,e)),this.v.push(l),c=i[++u]}a!==(c==null?void 0:c.index)&&(o=sn.nextNode(),a++)}return s}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class Jn{constructor(e,n,r,i){var s;this.type=2,this._$AH=ee,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(s=i==null?void 0:i.isConnected)===null||s===void 0||s}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=on(this,e,n),Xn(e)?e===ee||e==null||e===""?(this._$AH!==ee&&this._$AR(),this._$AH=ee):e!==this._$AH&&e!==Kn&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):Ig(e)?this.M(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}S(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==ee&&Xn(this._$AH)?this._$AA.nextSibling.data=e:this.S(rn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,s=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=qn.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===s)this._$AH.m(r);else{const o=new Lg(s,this),a=o.p(this.options);o.m(r),this.S(a),this._$AH=o}}_$AC(e){let n=hc.get(e.strings);return n===void 0&&hc.set(e.strings,n=new qn(e)),n}M(e){oc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const s of e)i===n.length?n.push(r=new Jn(this.A(Wn()),this.A(Wn()),this,this.options)):r=n[i],r._$AI(s),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class si{constructor(e,n,r,i,s){this.type=1,this._$AH=ee,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=ee}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const s=this.strings;let o=!1;if(s===void 0)e=on(this,e,n,0),o=!Xn(e)||e!==this._$AH&&e!==Kn,o&&(this._$AH=e);else{const a=e;let u,c;for(e=s[0],u=0;u<s.length-1;u++)c=on(this,a[r+u],n,u),c===Kn&&(c=this._$AH[u]),o||(o=!Xn(c)||c!==this._$AH[u]),c===ee?e=ee:e!==ee&&(e+=(c!=null?c:"")+s[u+1]),this._$AH[u]=c}o&&!i&&this.k(e)}k(e){e===ee?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Rg extends si{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===ee?void 0:e}}const Ng=nn?nn.emptyScript:"";class kg extends si{constructor(){super(...arguments),this.type=4}k(e){e&&e!==ee?this.element.setAttribute(this.name,Ng):this.element.removeAttribute(this.name)}}class Og extends si{constructor(e,n,r,i,s){super(e,n,r,i,s),this.type=5}_$AI(e,n=this){var r;if((e=(r=on(this,e,n,0))!==null&&r!==void 0?r:ee)===Kn)return;const i=this._$AH,s=e===ee&&i!==ee||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,o=e!==ee&&(i===ee||s);s&&this.element.removeEventListener(this.name,this,i),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class zg{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){on(this,e)}}const pc=window.litHtmlPolyfillSupport;pc==null||pc(qn,Jn),((Ks=globalThis.litHtmlVersions)!==null&&Ks!==void 0?Ks:globalThis.litHtmlVersions=[]).push("2.0.2");function qs(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function oi(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,u)=>t(a)-u,n=qs,r=(a,u)=>qs(t(a),u));function i(a,u,c=0,l=a.length){if(c<l){if(n(u,u)!==0)return l;do{const f=c+l>>>1;r(a[f],u)<0?c=f+1:l=f}while(c<l)}return c}function s(a,u,c=0,l=a.length){if(c<l){if(n(u,u)!==0)return l;do{const f=c+l>>>1;r(a[f],u)<=0?c=f+1:l=f}while(c<l)}return c}function o(a,u,c=0,l=a.length){const f=i(a,u,c,l-1);return f>c&&e(a[f-1],u)>-e(a[f],u)?f-1:f}return{left:i,center:o,right:s}}function gc(t){return t===null?NaN:+t}const mc=oi(qs),Ug=mc.right;mc.left,oi(gc).center;var Gg=Ug;function Hg(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let s of t)(s=e(s,++i,t))!=null&&(n===void 0?s>=s&&(n=r=s):(n>s&&(n=s),r<s&&(r=s)))}return[n,r]}class ai extends Map{constructor(e,n=jg){super();if(Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(Ac(this,e))}has(e){return super.has(Ac(this,e))}set(e,n){return super.set(Vg(this,e),n)}delete(e){return super.delete(Qg(this,e))}}function Ac({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Vg({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Qg({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function jg(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Js(t){return t}function ui(t,...e){return xc(t,Js,Js,e)}function Yg(t,...e){return xc(t,Array.from,Js,e)}function xc(t,e,n,r){return function i(s,o){if(o>=r.length)return n(s);const a=new ai,u=r[o++];let c=-1;for(const l of s){const f=u(l,++c,s),h=a.get(f);h?h.push(l):a.set(f,[l])}for(const[l,f]of a)a.set(l,i(f,o));return e(a)}(t,0)}var _s=Math.sqrt(50),$s=Math.sqrt(10),eo=Math.sqrt(2);function Wg(t,e,n){var r,i=-1,s,o,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(s=t,t=e,e=s),(a=Xg(t,e,n))===0||!isFinite(a))return[];if(a>0){let u=Math.round(t/a),c=Math.round(e/a);for(u*a<t&&++u,c*a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)*a}else{a=-a;let u=Math.round(t*a),c=Math.round(e*a);for(u/a<t&&++u,c/a>e&&--c,o=new Array(s=c-u+1);++i<s;)o[i]=(u+i)/a}return r&&o.reverse(),o}function Xg(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),s=r/Math.pow(10,i);return i>=0?(s>=_s?10:s>=$s?5:s>=eo?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(s>=_s?10:s>=$s?5:s>=eo?2:1)}function to(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),s=r/i;return s>=_s?i*=10:s>=$s?i*=5:s>=eo&&(i*=2),e<t?-i:i}function Zg(t,e,n=gc){if(!!(r=t.length)){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,s=Math.floor(i),o=+n(t[s],s,t),a=+n(t[s+1],s+1,t);return o+(a-o)*(i-s)}}function ci(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,s=new Array(i);++r<i;)s[r]=t+r*n;return s}function fi(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function Kg(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function li(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function qg(t){return t=li(Math.abs(t)),t?t[1]:NaN}function Jg(t,e){return function(n,r){for(var i=n.length,s=[],o=0,a=t[0],u=0;i>0&&a>0&&(u+a+1>r&&(a=Math.max(1,r-u)),s.push(n.substring(i-=a,i+a)),!((u+=a+1)>r));)a=t[o=(o+1)%t.length];return s.reverse().join(e)}}function _g(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var $g=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function hi(t){if(!(e=$g.exec(t)))throw new Error("invalid format: "+t);var e;return new no({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}hi.prototype=no.prototype;function no(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}no.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function em(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var yc;function tm(t,e){var n=li(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(yc=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+li(t,Math.max(0,e+s-1))[0]}function bc(t,e){var n=li(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var wc={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Kg,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>bc(t*100,e),r:bc,s:tm,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function vc(t){return t}var Ec=Array.prototype.map,Cc=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function nm(t){var e=t.grouping===void 0||t.thousands===void 0?vc:Jg(Ec.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",s=t.numerals===void 0?vc:_g(Ec.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(f){f=hi(f);var h=f.fill,p=f.align,d=f.sign,g=f.symbol,m=f.zero,A=f.width,b=f.comma,y=f.precision,v=f.trim,D=f.type;D==="n"?(b=!0,D="g"):wc[D]||(y===void 0&&(y=12),v=!0,D="g"),(m||h==="0"&&p==="=")&&(m=!0,h="0",p="=");var C=g==="$"?n:g==="#"&&/[boxX]/.test(D)?"0"+D.toLowerCase():"",F=g==="$"?r:/[%p]/.test(D)?o:"",S=wc[D],le=/[defgprs%]/.test(D);y=y===void 0?6:/[gprs]/.test(D)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function se(E){var oe=C,z=F,pe,Jt,He;if(D==="c")z=S(E)+z,E="";else{E=+E;var Ve=E<0||1/E<0;if(E=isNaN(E)?u:S(Math.abs(E),y),v&&(E=em(E)),Ve&&+E==0&&d!=="+"&&(Ve=!1),oe=(Ve?d==="("?d:a:d==="-"||d==="("?"":d)+oe,z=(D==="s"?Cc[8+yc/3]:"")+z+(Ve&&d==="("?")":""),le){for(pe=-1,Jt=E.length;++pe<Jt;)if(He=E.charCodeAt(pe),48>He||He>57){z=(He===46?i+E.slice(pe+1):E.slice(pe))+z,E=E.slice(0,pe);break}}}b&&!m&&(E=e(E,1/0));var Qe=oe.length+E.length+z.length,Z=Qe<A?new Array(A-Qe+1).join(h):"";switch(b&&m&&(E=e(Z+E,Z.length?A-z.length:1/0),Z=""),p){case"<":E=oe+E+z+Z;break;case"=":E=oe+Z+E+z;break;case"^":E=Z.slice(0,Qe=Z.length>>1)+oe+E+z+Z.slice(Qe);break;default:E=Z+oe+E+z;break}return s(E)}return se.toString=function(){return f+""},se}function l(f,h){var p=c((f=hi(f),f.type="f",f)),d=Math.max(-8,Math.min(8,Math.floor(qg(h)/3)))*3,g=Math.pow(10,-d),m=Cc[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:l}}var ro,xe;rm({thousands:",",grouping:[3],currency:["$",""]});function rm(t){return ro=nm(t),xe=ro.format,ro}const Dc=1;function io(){let t=[0,1],e=[0,1],n=1,r=1,i=0,s=0,o=.5,a=0;const c=l=>(l-t[0])/n*r+e[0];return c.invert=l=>(l-e[0])/r*n+t[0],c.domain=function(l){if(arguments.length){if(t=Hg(l),n=t[1]-t[0],n<Dc){n=Dc;const f=(t[0]+t[1])/2;t[0]=f-n/2,t[1]=f+n/2}return c}else return t},c.range=function(l){return arguments.length?(e=[...l],r=e[1]-e[0],c):e},c.numberingOffset=function(l){return arguments.length?(a=l,c):a},c.padding=function(l){return arguments.length?(s=l,i=Math.min(1,l),c):i},c.paddingInner=function(l){return arguments.length?(i=Math.min(1,l),c):i},c.paddingOuter=function(l){return arguments.length?(s=l,c):s},c.align=function(l){return arguments.length?(o=Math.max(0,Math.min(1,l)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=l=>{const f=c.align(),h=c.numberingOffset();return Wg(t[0]-f+h,t[1]-f+h,Math.min(l,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(l,f)=>{if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const p=to(t[0],t[1],Math.min(l,Math.ceil(n)))<1e5?xe(","):xe(".3s");return d=>p(d+a)},c.copy=()=>io().domain(t).range(e).paddingInner(i).paddingOuter(s).numberingOffset(a),c}function im(){const t=io().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),s=t.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(l=>e.toChromosome(l)),u=Math.max(1,to(i[0],i[1],r)),c=[];for(let l=o.index;l<=a.index;l++){const f=e.chromosomes[l],h=Math.max(f.continuousStart+u,i[0]-(i[0]-f.continuousStart)%u),p=Math.min(f.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-s;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=t.domain(),o=s[1]-s[0],a=t.numberingOffset(),c=to(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?xe(","):xe(".3s"),l=f=>f-e.toChromosome(f).continuousStart;return f=>c(l(f)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function sm(t){return t.type=="locus"}function je(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function xt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const so=Symbol("implicit");function oo(){var t=new Map,e=[],n=[],r=so;function i(s){var o=s+"",a=t.get(o);if(!a){if(r!==so)return r;t.set(o,a=e.push(s))}return n[(a-1)%n.length]}return i.domain=function(s){if(!arguments.length)return e.slice();e=[],t=new Map;for(const o of s){const a=o+"";t.has(a)||t.set(a,e.push(o))}return i},i.range=function(s){return arguments.length?(n=Array.from(s),i):n.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return oo(e,n).unknown(r)},je.apply(i,arguments),i}function an(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function _n(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function yt(){}var Ut=.7,un=1/Ut,cn="\\s*([+-]?\\d+)\\s*",$n="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ye="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",om=/^#([0-9a-f]{3,8})$/,am=new RegExp("^rgb\\("+[cn,cn,cn]+"\\)$"),um=new RegExp("^rgb\\("+[Ye,Ye,Ye]+"\\)$"),cm=new RegExp("^rgba\\("+[cn,cn,cn,$n]+"\\)$"),fm=new RegExp("^rgba\\("+[Ye,Ye,Ye,$n]+"\\)$"),lm=new RegExp("^hsl\\("+[$n,Ye,Ye]+"\\)$"),hm=new RegExp("^hsla\\("+[$n,Ye,Ye,$n]+"\\)$"),Sc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};an(yt,er,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Mc,formatHex:Mc,formatHsl:dm,formatRgb:Bc,toString:Bc});function Mc(){return this.rgb().formatHex()}function dm(){return Lc(this).formatHsl()}function Bc(){return this.rgb().formatRgb()}function er(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=om.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Fc(e):n===3?new re(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?di(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?di(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=am.exec(t))?new re(e[1],e[2],e[3],1):(e=um.exec(t))?new re(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=cm.exec(t))?di(e[1],e[2],e[3],e[4]):(e=fm.exec(t))?di(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=lm.exec(t))?Pc(e[1],e[2]/100,e[3]/100,1):(e=hm.exec(t))?Pc(e[1],e[2]/100,e[3]/100,e[4]):Sc.hasOwnProperty(t)?Fc(Sc[t]):t==="transparent"?new re(NaN,NaN,NaN,0):null}function Fc(t){return new re(t>>16&255,t>>8&255,t&255,1)}function di(t,e,n,r){return r<=0&&(t=e=n=NaN),new re(t,e,n,r)}function ao(t){return t instanceof yt||(t=er(t)),t?(t=t.rgb(),new re(t.r,t.g,t.b,t.opacity)):new re}function pi(t,e,n,r){return arguments.length===1?ao(t):new re(t,e,n,r==null?1:r)}function re(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}an(re,pi,_n(yt,{brighter:function(t){return t=t==null?un:Math.pow(un,t),new re(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ut:Math.pow(Ut,t),new re(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ic,formatHex:Ic,formatRgb:Tc,toString:Tc}));function Ic(){return"#"+uo(this.r)+uo(this.g)+uo(this.b)}function Tc(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function uo(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function Pc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new We(t,e,n,r)}function Lc(t){if(t instanceof We)return new We(t.h,t.s,t.l,t.opacity);if(t instanceof yt||(t=er(t)),!t)return new We;if(t instanceof We)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,a=s-i,u=(s+i)/2;return a?(e===s?o=(n-r)/a+(n<r)*6:n===s?o=(r-e)/a+2:o=(e-n)/a+4,a/=u<.5?s+i:2-s-i,o*=60):a=u>0&&u<1?0:o,new We(o,a,u,t.opacity)}function co(t,e,n,r){return arguments.length===1?Lc(t):new We(t,e,n,r==null?1:r)}function We(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}an(We,co,_n(yt,{brighter:function(t){return t=t==null?un:Math.pow(un,t),new We(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ut:Math.pow(Ut,t),new We(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new re(fo(t>=240?t-240:t+120,i,r),fo(t,i,r),fo(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function fo(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Rc=Math.PI/180,Nc=180/Math.PI,gi=18,kc=.96422,Oc=1,zc=.82521,Uc=4/29,fn=6/29,Gc=3*fn*fn,pm=fn*fn*fn;function Hc(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof at)return Vc(t);t instanceof re||(t=ao(t));var e=mo(t.r),n=mo(t.g),r=mo(t.b),i=ho((.2225045*e+.7168786*n+.0606169*r)/Oc),s,o;return e===n&&n===r?s=o=i:(s=ho((.4360747*e+.3850649*n+.1430804*r)/kc),o=ho((.0139322*e+.0971045*n+.7141733*r)/zc)),new Xe(116*i-16,500*(s-i),200*(i-o),t.opacity)}function lo(t,e,n,r){return arguments.length===1?Hc(t):new Xe(t,e,n,r==null?1:r)}function Xe(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}an(Xe,lo,_n(yt,{brighter:function(t){return new Xe(this.l+gi*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Xe(this.l-gi*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=kc*po(e),t=Oc*po(t),n=zc*po(n),new re(go(3.1338561*e-1.6168667*t-.4906146*n),go(-.9787684*e+1.9161415*t+.033454*n),go(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ho(t){return t>pm?Math.pow(t,1/3):t/Gc+Uc}function po(t){return t>fn?t*t*t:Gc*(t-Uc)}function go(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function mo(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function gm(t){if(t instanceof at)return new at(t.h,t.c,t.l,t.opacity);if(t instanceof Xe||(t=Hc(t)),t.a===0&&t.b===0)return new at(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Nc;return new at(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Ao(t,e,n,r){return arguments.length===1?gm(t):new at(t,e,n,r==null?1:r)}function at(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Vc(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Rc;return new Xe(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}an(at,Ao,_n(yt,{brighter:function(t){return new at(this.h,this.c,this.l+gi*(t==null?1:t),this.opacity)},darker:function(t){return new at(this.h,this.c,this.l-gi*(t==null?1:t),this.opacity)},rgb:function(){return Vc(this).rgb()}}));var Qc=-.14861,xo=1.78277,yo=-.29227,mi=-.90649,tr=1.97294,jc=tr*mi,Yc=tr*xo,Wc=xo*yo-mi*Qc;function mm(t){if(t instanceof Gt)return new Gt(t.h,t.s,t.l,t.opacity);t instanceof re||(t=ao(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Wc*r+jc*e-Yc*n)/(Wc+jc-Yc),s=r-i,o=(tr*(n-i)-yo*s)/mi,a=Math.sqrt(o*o+s*s)/(tr*i*(1-i)),u=a?Math.atan2(o,s)*Nc-120:NaN;return new Gt(u<0?u+360:u,a,i,t.opacity)}function bo(t,e,n,r){return arguments.length===1?mm(t):new Gt(t,e,n,r==null?1:r)}function Gt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}an(Gt,bo,_n(yt,{brighter:function(t){return t=t==null?un:Math.pow(un,t),new Gt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ut:Math.pow(Ut,t),new Gt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Rc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new re(255*(e+n*(Qc*r+xo*i)),255*(e+n*(yo*r+mi*i)),255*(e+n*(tr*r)),this.opacity)}}));function Xc(t,e,n,r,i){var s=t*t,o=s*t;return((1-3*t+3*s-o)*e+(4-6*s+3*o)*n+(1+3*t+3*s-3*o)*r+o*i)/6}function Zc(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],s=t[r+1],o=r>0?t[r-1]:2*i-s,a=r<e-1?t[r+2]:2*s-i;return Xc((n-r/e)*e,o,i,s,a)}}function Kc(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],s=t[r%e],o=t[(r+1)%e],a=t[(r+2)%e];return Xc((n-r/e)*e,i,s,o,a)}}var Ai=t=>()=>t;function qc(t,e){return function(n){return t+n*e}}function Am(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function xi(t,e){var n=e-t;return n?qc(t,n>180||n<-180?n-360*Math.round(n/360):n):Ai(isNaN(t)?e:t)}function xm(t){return(t=+t)==1?te:function(e,n){return n-e?Am(e,n,t):Ai(isNaN(e)?n:e)}}function te(t,e){var n=e-t;return n?qc(t,n):Ai(isNaN(t)?e:t)}var wo=function t(e){var n=xm(e);function r(i,s){var o=n((i=pi(i)).r,(s=pi(s)).r),a=n(i.g,s.g),u=n(i.b,s.b),c=te(i.opacity,s.opacity);return function(l){return i.r=o(l),i.g=a(l),i.b=u(l),i.opacity=c(l),i+""}}return r.gamma=t,r}(1);function Jc(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),s=new Array(n),o,a;for(o=0;o<n;++o)a=pi(e[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=t(r),i=t(i),s=t(s),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=s(u),a+""}}}var ym=Jc(Zc),bm=Jc(Kc);function vo(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(s){for(i=0;i<n;++i)r[i]=t[i]*(1-s)+e[i]*s;return r}}function _c(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function wm(t,e){return(_c(e)?vo:$c)(t,e)}function $c(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),s=new Array(n),o;for(o=0;o<r;++o)i[o]=bt(t[o],e[o]);for(;o<n;++o)s[o]=e[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function ef(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function ke(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function tf(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=bt(t[i],e[i]):r[i]=e[i];return function(s){for(i in n)r[i]=n[i](s);return r}}var Eo=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Co=new RegExp(Eo.source,"g");function vm(t){return function(){return t}}function Em(t){return function(e){return t(e)+""}}function nf(t,e){var n=Eo.lastIndex=Co.lastIndex=0,r,i,s,o=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Eo.exec(t))&&(i=Co.exec(e));)(s=i.index)>n&&(s=e.slice(n,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,u.push({i:o,x:ke(r,i)})),n=Co.lastIndex;return n<e.length&&(s=e.slice(n),a[o]?a[o]+=s:a[++o]=s),a.length<2?u[0]?Em(u[0].x):vm(e):(e=u.length,function(c){for(var l=0,f;l<e;++l)a[(f=u[l]).i]=f.x(c);return a.join("")})}function bt(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ai(e):(n==="number"?ke:n==="string"?(r=er(e))?(e=r,wo):nf:e instanceof er?wo:e instanceof Date?ef:_c(e)?vo:Array.isArray(e)?$c:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?tf:ke)(t,e)}function Cm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Dm(t,e){var n=xi(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function nr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var rf=180/Math.PI,Do={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function sf(t,e,n,r,i,s){var o,a,u;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(e,t)*rf,skewX:Math.atan(u)*rf,scaleX:o,scaleY:a}}var yi;function Sm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Do:sf(e.a,e.b,e.c,e.d,e.e,e.f)}function Mm(t){return t==null||(yi||(yi=document.createElementNS("http://www.w3.org/2000/svg","g")),yi.setAttribute("transform",t),!(t=yi.transform.baseVal.consolidate()))?Do:(t=t.matrix,sf(t.a,t.b,t.c,t.d,t.e,t.f))}function of(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function s(c,l,f,h,p,d){if(c!==f||l!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:ke(c,f)},{i:g-2,x:ke(l,h)})}else(f||h)&&p.push("translate("+f+e+h+n)}function o(c,l,f,h){c!==l?(c-l>180?l+=360:l-c>180&&(c+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:ke(c,l)})):l&&f.push(i(f)+"rotate("+l+r)}function a(c,l,f,h){c!==l?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:ke(c,l)}):l&&f.push(i(f)+"skewX("+l+r)}function u(c,l,f,h,p,d){if(c!==f||l!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:ke(c,f)},{i:g-2,x:ke(l,h)})}else(f!==1||h!==1)&&p.push(i(p)+"scale("+f+","+h+")")}return function(c,l){var f=[],h=[];return c=t(c),l=t(l),s(c.translateX,c.translateY,l.translateX,l.translateY,f,h),o(c.rotate,l.rotate,f,h),a(c.skewX,l.skewX,f,h),u(c.scaleX,c.scaleY,l.scaleX,l.scaleY,f,h),c=l=null,function(p){for(var d=-1,g=h.length,m;++d<g;)f[(m=h[d]).i]=m.x(p);return f.join("")}}}var Bm=of(Sm,"px, ","px)","deg)"),Fm=of(Mm,", ",")",")"),Im=1e-12;function af(t){return((t=Math.exp(t))+1/t)/2}function Tm(t){return((t=Math.exp(t))-1/t)/2}function Pm(t){return((t=Math.exp(2*t))-1)/(t+1)}var uf=function t(e,n,r){function i(s,o){var a=s[0],u=s[1],c=s[2],l=o[0],f=o[1],h=o[2],p=l-a,d=f-u,g=p*p+d*d,m,A;if(g<Im)A=Math.log(h/c)/e,m=function(F){return[a+F*p,u+F*d,c*Math.exp(e*F*A)]};else{var b=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*n*b),v=(h*h-c*c-r*g)/(2*h*n*b),D=Math.log(Math.sqrt(y*y+1)-y),C=Math.log(Math.sqrt(v*v+1)-v);A=(C-D)/e,m=function(F){var S=F*A,le=af(D),se=c/(n*b)*(le*Pm(e*S+D)-Tm(D));return[a+se*p,u+se*d,c*le/af(e*S+D)]}}return m.duration=A*1e3*e/Math.SQRT2,m}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,u=a*a;return t(o,a,u)},i}(Math.SQRT2,2,4);function cf(t){return function(e,n){var r=t((e=co(e)).h,(n=co(n)).h),i=te(e.s,n.s),s=te(e.l,n.l),o=te(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=s(a),e.opacity=o(a),e+""}}}var Lm=cf(xi),Rm=cf(te);function Nm(t,e){var n=te((t=lo(t)).l,(e=lo(e)).l),r=te(t.a,e.a),i=te(t.b,e.b),s=te(t.opacity,e.opacity);return function(o){return t.l=n(o),t.a=r(o),t.b=i(o),t.opacity=s(o),t+""}}function ff(t){return function(e,n){var r=t((e=Ao(e)).h,(n=Ao(n)).h),i=te(e.c,n.c),s=te(e.l,n.l),o=te(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=s(a),e.opacity=o(a),e+""}}}var km=ff(xi),Om=ff(te);function lf(t){return function e(n){n=+n;function r(i,s){var o=t((i=bo(i)).h,(s=bo(s)).h),a=te(i.s,s.s),u=te(i.l,s.l),c=te(i.opacity,s.opacity);return function(l){return i.h=o(l),i.s=a(l),i.l=u(Math.pow(l,n)),i.opacity=c(l),i+""}}return r.gamma=e,r}(1)}var zm=lf(xi),Um=lf(te);function So(t,e){e===void 0&&(e=t,t=bt);for(var n=0,r=e.length-1,i=e[0],s=new Array(r<0?0:r);n<r;)s[n]=t(i,i=e[++n]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function Gm(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var Hm=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:bt,interpolateArray:wm,interpolateBasis:Zc,interpolateBasisClosed:Kc,interpolateDate:ef,interpolateDiscrete:Cm,interpolateHue:Dm,interpolateNumber:ke,interpolateNumberArray:vo,interpolateObject:tf,interpolateRound:nr,interpolateString:nf,interpolateTransformCss:Bm,interpolateTransformSvg:Fm,interpolateZoom:uf,interpolateRgb:wo,interpolateRgbBasis:ym,interpolateRgbBasisClosed:bm,interpolateHsl:Lm,interpolateHslLong:Rm,interpolateLab:Nm,interpolateHcl:km,interpolateHclLong:Om,interpolateCubehelix:zm,interpolateCubehelixLong:Um,piecewise:So,quantize:Gm});function Vm(t){return function(){return t}}function Mo(t){return+t}var hf=[0,1];function ye(t){return t}function Bo(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Vm(isNaN(e)?NaN:.5)}function Qm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function jm(t,e,n){var r=t[0],i=t[1],s=e[0],o=e[1];return i<r?(r=Bo(i,r),s=n(o,s)):(r=Bo(r,i),s=n(s,o)),function(a){return s(r(a))}}function Ym(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),s=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Bo(t[o],t[o+1]),s[o]=n(e[o],e[o+1]);return function(a){var u=Tn(t,a,1,r)-1;return s[u](i[u](a))}}function rr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function bi(){var t=hf,e=hf,n=bt,r,i,s,o=ye,a,u,c;function l(){var h=Math.min(t.length,e.length);return o!==ye&&(o=Qm(t[0],t[h-1])),a=h>2?Ym:jm,u=c=null,f}function f(h){return h==null||isNaN(h=+h)?s:(u||(u=a(t.map(r),e,n)))(r(o(h)))}return f.invert=function(h){return o(i((c||(c=a(e,t.map(r),ke)))(h)))},f.domain=function(h){return arguments.length?(t=Array.from(h,Mo),l()):t.slice()},f.range=function(h){return arguments.length?(e=Array.from(h),l()):e.slice()},f.rangeRound=function(h){return e=Array.from(h),n=nr,l()},f.clamp=function(h){return arguments.length?(o=h?!0:ye,l()):o!==ye},f.interpolate=function(h){return arguments.length?(n=h,l()):n},f.unknown=function(h){return arguments.length?(s=h,f):s},function(h,p){return r=h,i=p,l()}}function df(){return bi()(ye,ye)}function pf(t,e,n,r){var i=Xr(t,e,n),s;switch(r=en(r==null?",f":r),r.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(s=Su(i,o))&&(r.precision=s),Ms(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Mu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Du(i))&&(r.precision=s-(r.type==="%")*2);break}}return qr(r)}function Ht(t){var e=t.domain;return t.ticks=function(n){var r=e();return Ds(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return pf(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,s=r.length-1,o=r[i],a=r[s],u,c,l=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);l-- >0;){if(c=xu(o,a,n),c===u)return r[i]=o,r[s]=a,e(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function gf(){var t=df();return t.copy=function(){return rr(t,gf())},je.apply(t,arguments),Ht(t)}function mf(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Mo),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return mf(t).unknown(e)},t=arguments.length?Array.from(t,Mo):[0,1],Ht(n)}function Af(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],s=t[r],o;return s<i&&(o=n,n=r,r=o,o=i,i=s,s=o),t[n]=e.floor(i),t[r]=e.ceil(s),t}function xf(t){return Math.log(t)}function yf(t){return Math.exp(t)}function Wm(t){return-Math.log(-t)}function Xm(t){return-Math.exp(-t)}function Zm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Km(t){return t===10?Zm:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function qm(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function bf(t){return function(e){return-t(-e)}}function Fo(t){var e=t(xf,yf),n=e.domain,r=10,i,s;function o(){return i=qm(r),s=Km(r),n()[0]<0?(i=bf(i),s=bf(s),t(Wm,Xm)):t(xf,yf),e}return e.base=function(a){return arguments.length?(r=+a,o()):r},e.domain=function(a){return arguments.length?(n(a),o()):n()},e.ticks=function(a){var u=n(),c=u[0],l=u[u.length-1],f;(f=l<c)&&(h=c,c=l,l=h);var h=i(c),p=i(l),d,g,m,A=a==null?10:+a,b=[];if(!(r%1)&&p-h<A){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(g=1,d=s(h);g<r;++g)if(m=d*g,!(m<c)){if(m>l)break;b.push(m)}}else for(;h<=p;++h)for(g=r-1,d=s(h);g>=1;--g)if(m=d*g,!(m<c)){if(m>l)break;b.push(m)}b.length*2<A&&(b=Ds(c,l,A))}else b=Ds(h,p,Math.min(p-h,A)).map(s);return f?b.reverse():b},e.tickFormat=function(a,u){if(u==null&&(u=r===10?".0e":","),typeof u!="function"&&(u=qr(u)),a===1/0)return u;a==null&&(a=10);var c=Math.max(1,r*a/e.ticks().length);return function(l){var f=l/s(Math.round(i(l)));return f*r<r-.5&&(f*=r),f<=c?u(l):""}},e.nice=function(){return n(Af(n(),{floor:function(a){return s(Math.floor(i(a)))},ceil:function(a){return s(Math.ceil(i(a)))}}))},e}function Io(){var t=Fo(bi()).domain([1,10]);return t.copy=function(){return rr(t,Io()).base(t.base())},je.apply(t,arguments),t}function wf(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function vf(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function To(t){var e=1,n=t(wf(e),vf(e));return n.constant=function(r){return arguments.length?t(wf(e=+r),vf(e)):e},Ht(n)}function Ef(){var t=To(bi());return t.copy=function(){return rr(t,Ef()).constant(t.constant())},je.apply(t,arguments)}function Cf(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Jm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function _m(t){return t<0?-t*t:t*t}function Po(t){var e=t(ye,ye),n=1;function r(){return n===1?t(ye,ye):n===.5?t(Jm,_m):t(Cf(n),Cf(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Ht(e)}function Lo(){var t=Po(bi());return t.copy=function(){return rr(t,Lo()).exponent(t.exponent())},je.apply(t,arguments),t}function $m(){return Lo.apply(null,arguments).exponent(.5)}function Df(){var t=[],e=[],n=[],r;function i(){var o=0,a=Math.max(1,e.length);for(n=new Array(a-1);++o<a;)n[o-1]=Bd(t,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:e[Tn(n,o)]}return s.invertExtent=function(o){var a=e.indexOf(o);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},s.domain=function(o){if(!arguments.length)return t.slice();t=[];for(let a of o)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(ys),i()},s.range=function(o){return arguments.length?(e=Array.from(o),i()):e.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return n.slice()},s.copy=function(){return Df().domain(t).range(e).unknown(r)},je.apply(s,arguments)}function Sf(){var t=0,e=1,n=1,r=[.5],i=[0,1],s;function o(u){return u!=null&&u<=u?i[Tn(r,u,0,n)]:s}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return o}return o.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},o.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},o.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},o.unknown=function(u){return arguments.length&&(s=u),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Sf().domain([t,e]).range(i).unknown(s)},je.apply(Ht(o),arguments)}function Mf(){var t=[.5],e=[0,1],n,r=1;function i(s){return s!=null&&s<=s?e[Tn(t,s,0,r)]:n}return i.domain=function(s){return arguments.length?(t=Array.from(s),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(s){return arguments.length?(e=Array.from(s),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(s){var o=e.indexOf(s);return[t[o-1],t[o]]},i.unknown=function(s){return arguments.length?(n=s,i):n},i.copy=function(){return Mf().domain(t).range(e).unknown(n)},je.apply(i,arguments)}function eA(t){return new Date(t)}function tA(t){return t instanceof Date?+t:+new Date(+t)}function Ro(t,e,n,r,i,s,o,a,u,c){var l=df(),f=l.invert,h=l.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),m=c("%I %p"),A=c("%a %d"),b=c("%b %d"),y=c("%B"),v=c("%Y");function D(C){return(u(C)<C?p:a(C)<C?d:o(C)<C?g:s(C)<C?m:r(C)<C?i(C)<C?A:b:n(C)<C?y:v)(C)}return l.invert=function(C){return new Date(f(C))},l.domain=function(C){return arguments.length?h(Array.from(C,tA)):h().map(eA)},l.ticks=function(C){var F=h();return t(F[0],F[F.length-1],C==null?10:C)},l.tickFormat=function(C,F){return F==null?D:c(F)},l.nice=function(C){var F=h();return(!C||typeof C.range!="function")&&(C=e(F[0],F[F.length-1],C==null?10:C)),C?h(Af(F,C)):l},l.copy=function(){return rr(l,Ro(t,e,n,r,i,s,o,a,u,c))},l}function nA(){return je.apply(Ro(Kd,qd,gt,_r,Jr,Rt,Ns,Rs,pt,Qs).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function rA(){return je.apply(Ro(Xd,Zd,mt,ei,$r,kt,zs,Os,pt,js).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function wi(){var t=0,e=1,n,r,i,s,o=ye,a=!1,u;function c(f){return f==null||isNaN(f=+f)?u:o(i===0?.5:(f=(s(f)-n)*i,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([t,e]=f,n=s(t=+t),r=s(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(o=f,c):o};function l(f){return function(h){var p,d;return arguments.length?([p,d]=h,o=f(p,d),c):[o(0),o(1)]}}return c.range=l(bt),c.rangeRound=l(nr),c.unknown=function(f){return arguments.length?(u=f,c):u},function(f){return s=f,n=f(t),r=f(e),i=n===r?0:1/(r-n),c}}function wt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function No(){var t=Ht(wi()(ye));return t.copy=function(){return wt(t,No())},xt.apply(t,arguments)}function Bf(){var t=Fo(wi()).domain([1,10]);return t.copy=function(){return wt(t,Bf()).base(t.base())},xt.apply(t,arguments)}function Ff(){var t=To(wi());return t.copy=function(){return wt(t,Ff()).constant(t.constant())},xt.apply(t,arguments)}function ko(){var t=Po(wi());return t.copy=function(){return wt(t,ko()).exponent(t.exponent())},xt.apply(t,arguments)}function iA(){return ko.apply(null,arguments).exponent(.5)}function vi(){var t=0,e=.5,n=1,r=1,i,s,o,a,u,c=ye,l,f=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+l(g))-s)*(r*g<r*s?a:u),c(f?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=l(t=+t),s=l(e=+e),o=l(n=+n),a=i===s?0:.5/(s-i),u=s===o?0:.5/(o-s),r=s<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(f=!!g,p):f},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(m){var A,b,y;return arguments.length?([A,b,y]=m,c=So(g,[A,b,y]),p):[c(0),c(.5),c(1)]}}return p.range=d(bt),p.rangeRound=d(nr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return l=g,i=g(t),s=g(e),o=g(n),a=i===s?0:.5/(s-i),u=s===o?0:.5/(o-s),r=s<i?-1:1,p}}function If(){var t=Ht(vi()(ye));return t.copy=function(){return wt(t,If())},xt.apply(t,arguments)}function Tf(){var t=Fo(vi()).domain([.1,1,10]);return t.copy=function(){return wt(t,Tf()).base(t.base())},xt.apply(t,arguments)}function Pf(){var t=To(vi());return t.copy=function(){return wt(t,Pf()).constant(t.constant())},xt.apply(t,arguments)}function Oo(){var t=Po(vi());return t.copy=function(){return wt(t,Oo()).exponent(t.exponent())},xt.apply(t,arguments)}function sA(){return Oo.apply(null,arguments).exponent(.5)}function zo(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const oA="identity",ln="linear",vt="log",ir="pow",sr="sqrt",Ei="symlog",Lf="time",Rf="utc",Ze="sequential",hn="diverging",Uo="quantile",Nf="quantize",kf="threshold",Go="ordinal",Ho="point",Of="band",Vo="bin-ordinal",J="continuous",or="discrete",ar="discretizing",Ie="interpolating",zf="temporal";function aA(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function uA(t){return function(e){const n=t.range();let r=e[0],i=e[1],s=-1,o,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(s<0&&(s=u),o=u);if(!(s<0))return r=t.invertExtent(n[s]),i=t.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Qo(){const t=oo().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,s,o=!1,a=0,u=0,c=.5;delete t.unknown;function l(){const f=e().length,h=r[1]<r[0],p=r[1-h],d=zo(f,a,u);let g=r[h-0];i=(p-g)/(d||1),o&&(i=Math.floor(i)),g+=(p-g-i*(f-a))*c,s=i*(1-a),o&&(g=Math.round(g),s=Math.round(s));const m=Fd(f).map(A=>g+i*A);return n(h?m.reverse():m)}return t.domain=function(f){return arguments.length?(e(f),l()):e()},t.range=function(f){return arguments.length?(r=[+f[0],+f[1]],l()):r.slice()},t.rangeRound=function(f){return r=[+f[0],+f[1]],o=!0,l()},t.bandwidth=function(){return s},t.step=function(){return i},t.round=function(f){return arguments.length?(o=!!f,l()):o},t.padding=function(f){return arguments.length?(u=Math.max(0,Math.min(1,f)),a=u,l()):a},t.paddingInner=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),l()):a},t.paddingOuter=function(f){return arguments.length?(u=Math.max(0,Math.min(1,f)),l()):u},t.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),l()):c},t.invertRange=function(f){if(f[0]==null||f[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+f[0],m=+f[1],A,b,y;if(!(g!==g||m!==m)&&(m<g&&(y=g,g=m,m=y),!(m<p[0]||g>r[1-h])))return A=Math.max(0,ws(p,g)-1),b=g===m?A:ws(p,m)-1,g-p[A]>s+1e-10&&++A,h&&(y=A,A=d-b,b=d-y),A>b?void 0:e().slice(A,b+1)},t.invert=function(f){const h=t.invertRange([f,f]);return h&&h[0]},t.copy=function(){return Qo().domain(e()).range(r).round(o).paddingInner(a).paddingOuter(u).align(c)},l()}function Uf(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Uf(e())},t}function cA(){return Uf(Qo().paddingInner(1))}var fA=Array.prototype.map;function lA(t){return fA.call(t,Fn)}const hA=Array.prototype.slice;function Gf(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Tn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=lA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=hA.call(r),n):e.slice()},n.tickFormat=function(r,i){return pf(t[0],Ne(t),r==null?10:r,i)},n.copy=function(){return Gf().domain(n.domain()).range(n.range())},n}const Ci={};function dA(t,e,n){const r=function(){const s=e();return s.invertRange||(s.invertRange=s.invert?aA(s):s.invertExtent?uA(s):void 0),s.type=t,s};return r.metadata=Wr(ps(n)),r}function k(t,e,n){return arguments.length>1?(Ci[t]=dA(t,e,n),this):pA(t)?Ci[t]:void 0}k(oA,mf),k(ln,gf,J),k(vt,Io,[J,vt]),k(ir,Lo,J),k(sr,$m,J),k(Ei,Ef,J),k(Lf,nA,[J,zf]),k(Rf,rA,[J,zf]),k(Ze,No,[J,Ie]),k("".concat(Ze,"-").concat(ln),No,[J,Ie]),k("".concat(Ze,"-").concat(vt),Bf,[J,Ie,vt]),k("".concat(Ze,"-").concat(ir),ko,[J,Ie]),k("".concat(Ze,"-").concat(sr),iA,[J,Ie]),k("".concat(Ze,"-").concat(Ei),Ff,[J,Ie]),k("".concat(hn,"-").concat(ln),If,[J,Ie]),k("".concat(hn,"-").concat(vt),Tf,[J,Ie,vt]),k("".concat(hn,"-").concat(ir),Oo,[J,Ie]),k("".concat(hn,"-").concat(sr),sA,[J,Ie]),k("".concat(hn,"-").concat(Ei),Pf,[J,Ie]),k(Uo,Df,[ar,Uo]),k(Nf,Sf,ar),k(kf,Mf,ar),k(Vo,Gf,[or,ar]),k(Go,oo,or),k(Of,Qo,or),k(Ho,cA,or);function pA(t){return Pt(Ci,t)}function ur(t,e){const n=Ci[t];return n&&n.metadata[e]}function Ke(t){return ur(t,J)}function Vt(t){return ur(t,or)}function dn(t){return ur(t,ar)}function Hf(t){return ur(t,vt)}function Di(t){return ur(t,Ie)}function gA(t,e){const n=e[0],r=Ne(e)-n;return function(i){return t(n+i*r)}}function Si(t,e,n){return So(Vf(e||"rgb",n),t)}function mA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Vf(t,e){const n=Hm[AA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function AA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const xA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},yA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Qf(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function jf(t,e){for(const n in t)jo(n,e(t[n]))}const Yf={};jf(yA,Qf),jf(xA,t=>Si(Qf(t)));function jo(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Yf[t]=e,this):Yf[t]}var QC="";function bA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function Wf(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function wA(t,e,n,r){return t.length==e.length&&t.every((i,s)=>n(t[s])===r(e[s]))}function qe(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function Te(t){return t[t.length-1]}class vA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){var e;return(e=Te(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=bA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&EA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(dc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}dc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(ot`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function EA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const CA="RawCode",DA="Literal",SA="Property",MA="Identifier",BA="ArrayExpression",FA="BinaryExpression",IA="CallExpression",TA="ConditionalExpression",PA="LogicalExpression",LA="MemberExpression",RA="ObjectExpression",NA="UnaryExpression";function Oe(t){this.type=t}Oe.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=kA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function kA(t){switch(t.type){case BA:return t.elements;case FA:case PA:return[t.left,t.right];case IA:return[t.callee].concat(t.arguments);case TA:return[t.test,t.consequent,t.alternate];case LA:return[t.object,t.property];case RA:return t.properties;case SA:return[t.key,t.value];case NA:return[t.argument];case MA:case DA:case CA:default:return[]}}var Je,M,x,ae,O,Mi=1,cr=2,Qt=3,Et=4,Bi=5,jt=6,be=7,fr=8,OA=9;Je={},Je[Mi]="Boolean",Je[cr]="<end>",Je[Qt]="Identifier",Je[Et]="Keyword",Je[Bi]="Null",Je[jt]="Numeric",Je[be]="Punctuator",Je[fr]="String",Je[OA]="RegularExpression";var zA="ArrayExpression",UA="BinaryExpression",GA="CallExpression",HA="ConditionalExpression",Xf="Identifier",VA="Literal",QA="LogicalExpression",jA="MemberExpression",YA="ObjectExpression",WA="Property",XA="UnaryExpression",ne="Unexpected token %0",ZA="Unexpected number",KA="Unexpected string",qA="Unexpected identifier",JA="Unexpected reserved word",_A="Unexpected end of input",Yo="Invalid regular expression",Wo="Invalid regular expression: missing /",Zf="Octal literals are not allowed in strict mode.",$A="Duplicate data property in object literal not allowed in strict mode",ie="ILLEGAL",lr="Disabled.",e1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),t1=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function Fi(t,e){if(!t)throw new Error("ASSERT: "+e)}function ut(t){return t>=48&&t<=57}function Xo(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function hr(t){return"01234567".indexOf(t)>=0}function n1(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function dr(t){return t===10||t===13||t===8232||t===8233}function pr(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&e1.test(String.fromCharCode(t))}function Ii(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&t1.test(String.fromCharCode(t))}const r1={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function Kf(){for(;x<ae;){const t=M.charCodeAt(x);if(n1(t)||dr(t))++x;else break}}function Zo(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ae&&Xo(M[x])?(r=M[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):R({},ne,ie);return String.fromCharCode(i)}function i1(){var t,e,n,r;for(t=M[x],e=0,t==="}"&&R({},ne,ie);x<ae&&(t=M[x++],!!Xo(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&R({},ne,ie),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function qf(){var t,e;for(t=M.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(M.charCodeAt(x)!==117&&R({},ne,ie),++x,t=Zo("u"),(!t||t==="\\"||!pr(t.charCodeAt(0)))&&R({},ne,ie),e=t);x<ae&&(t=M.charCodeAt(x),!!Ii(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),M.charCodeAt(x)!==117&&R({},ne,ie),++x,t=Zo("u"),(!t||t==="\\"||!Ii(t.charCodeAt(0)))&&R({},ne,ie),e+=t);return e}function s1(){var t,e;for(t=x++;x<ae;){if(e=M.charCodeAt(x),e===92)return x=t,qf();if(Ii(e))++x;else break}return M.slice(t,x)}function o1(){var t,e,n;return t=x,e=M.charCodeAt(x)===92?qf():s1(),e.length===1?n=Qt:r1.hasOwnProperty(e)?n=Et:e==="null"?n=Bi:e==="true"||e==="false"?n=Mi:n=Qt,{type:n,value:e,start:t,end:x}}function Ko(){var t=x,e=M.charCodeAt(x),n,r=M[x],i,s,o;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:be,value:String.fromCharCode(e),start:t,end:x};default:if(n=M.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:be,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,M.charCodeAt(x)===61&&++x,{type:be,value:M.slice(t,x),start:t,end:x}}}if(o=M.substr(x,4),o===">>>=")return x+=4,{type:be,value:o,start:t,end:x};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return x+=3,{type:be,value:s,start:t,end:x};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:be,value:i,start:t,end:x};if(i==="//"&&R({},ne,ie),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:be,value:r,start:t,end:x};R({},ne,ie)}function a1(t){let e="";for(;x<ae&&Xo(M[x]);)e+=M[x++];return e.length===0&&R({},ne,ie),pr(M.charCodeAt(x))&&R({},ne,ie),{type:jt,value:parseInt("0x"+e,16),start:t,end:x}}function u1(t){let e="0"+M[x++];for(;x<ae&&hr(M[x]);)e+=M[x++];return(pr(M.charCodeAt(x))||ut(M.charCodeAt(x)))&&R({},ne,ie),{type:jt,value:parseInt(e,8),octal:!0,start:t,end:x}}function Jf(){var t,e,n;if(n=M[x],Fi(ut(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=M[x++],n=M[x],t==="0"){if(n==="x"||n==="X")return++x,a1(e);if(hr(n))return u1(e);n&&ut(n.charCodeAt(0))&&R({},ne,ie)}for(;ut(M.charCodeAt(x));)t+=M[x++];n=M[x]}if(n==="."){for(t+=M[x++];ut(M.charCodeAt(x));)t+=M[x++];n=M[x]}if(n==="e"||n==="E")if(t+=M[x++],n=M[x],(n==="+"||n==="-")&&(t+=M[x++]),ut(M.charCodeAt(x)))for(;ut(M.charCodeAt(x));)t+=M[x++];else R({},ne,ie);return pr(M.charCodeAt(x))&&R({},ne,ie),{type:jt,value:parseFloat(t),start:e,end:x}}function c1(){var t="",e,n,r,i,s=!1;for(e=M[x],Fi(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ae;)if(r=M[x++],r===e){e="";break}else if(r==="\\")if(r=M[x++],!r||!dr(r.charCodeAt(0)))switch(r){case"u":case"x":M[x]==="{"?(++x,t+=i1()):t+=Zo(r);break;case"n":t+=`
11
- `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:hr(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),x<ae&&hr(M[x])&&(s=!0,i=i*8+"01234567".indexOf(M[x++]),"0123".indexOf(r)>=0&&x<ae&&hr(M[x])&&(i=i*8+"01234567".indexOf(M[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&M[x]===`
12
- `&&++x;else{if(dr(r.charCodeAt(0)))break;t+=r}return e!==""&&R({},ne,ie),{type:fr,value:t,octal:s,start:n,end:x}}function f1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";R({},Yo)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{R({},Yo)}try{return new RegExp(t,e)}catch{return null}}function l1(){var t,e,n,r,i;for(t=M[x],Fi(t==="/","Regular expression literal must start with a slash"),e=M[x++],n=!1,r=!1;x<ae;)if(t=M[x++],e+=t,t==="\\")t=M[x++],dr(t.charCodeAt(0))&&R({},Wo),e+=t;else if(dr(t.charCodeAt(0)))R({},Wo);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||R({},Wo),i=e.substr(1,e.length-2),{value:i,literal:e}}function h1(){var t,e,n;for(e="",n="";x<ae&&(t=M[x],!!Ii(t.charCodeAt(0)));)++x,t==="\\"&&x<ae?R({},ne,ie):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&R({},Yo,n),{value:n,literal:e}}function d1(){var t,e,n,r;return O=null,Kf(),t=x,e=l1(),n=h1(),r=f1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function p1(t){return t.type===Qt||t.type===Et||t.type===Mi||t.type===Bi}function _f(){if(Kf(),x>=ae)return{type:cr,start:x,end:x};const t=M.charCodeAt(x);return pr(t)?o1():t===40||t===41||t===59?Ko():t===39||t===34?c1():t===46?ut(M.charCodeAt(x+1))?Jf():Ko():ut(t)?Jf():Ko()}function we(){const t=O;return x=t.end,O=_f(),x=t.end,t}function $f(){const t=x;O=_f(),x=t}function g1(t){const e=new Oe(zA);return e.elements=t,e}function el(t,e,n){const r=new Oe(t==="||"||t==="&&"?QA:UA);return r.operator=t,r.left=e,r.right=n,r}function m1(t,e){const n=new Oe(GA);return n.callee=t,n.arguments=e,n}function A1(t,e,n){const r=new Oe(HA);return r.test=t,r.consequent=e,r.alternate=n,r}function qo(t){const e=new Oe(Xf);return e.name=t,e}function gr(t){const e=new Oe(VA);return e.value=t.value,e.raw=M.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function tl(t,e,n){const r=new Oe(jA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function x1(t){const e=new Oe(YA);return e.properties=t,e}function nl(t,e,n){const r=new Oe(WA);return r.key=e,r.value=n,r.kind=t,r}function y1(t,e){const n=new Oe(XA);return n.operator=t,n.argument=e,n.prefix=!0,n}function R(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(s,o)=>(Fi(o<r.length,"Message reference must be in range"),r[o]));throw n=new Error(i),n.index=x,n.description=i,n}function Ti(t){t.type===cr&&R(t,_A),t.type===jt&&R(t,ZA),t.type===fr&&R(t,KA),t.type===Qt&&R(t,qA),t.type===Et&&R(t,JA),R(t,ne,t.value)}function ue(t){const e=we();(e.type!==be||e.value!==t)&&Ti(e)}function V(t){return O.type===be&&O.value===t}function Jo(t){return O.type===Et&&O.value===t}function b1(){const t=[];for(x=O.start,ue("[");!V("]");)V(",")?(we(),t.push(null)):(t.push(Yt()),V("]")||ue(","));return we(),g1(t)}function rl(){x=O.start;const t=we();return t.type===fr||t.type===jt?(t.octal&&R(t,Zf),gr(t)):qo(t.value)}function w1(){var t,e,n,r;if(x=O.start,t=O,t.type===Qt)return n=rl(),ue(":"),r=Yt(),nl("init",n,r);if(t.type===cr||t.type===be)Ti(t);else return e=rl(),ue(":"),r=Yt(),nl("init",e,r)}function v1(){var t=[],e,n,r,i={},s=String;for(x=O.start,ue("{");!V("}");)e=w1(),e.key.type===Xf?n=e.key.name:n=s(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?R({},$A):i[r]=!0,t.push(e),V("}")||ue(",");return ue("}"),x1(t)}function E1(){ue("(");const t=_o();return ue(")"),t}const C1={if:1};function D1(){var t,e,n;if(V("("))return E1();if(V("["))return b1();if(V("{"))return v1();if(t=O.type,x=O.start,t===Qt||C1[O.value])n=qo(we().value);else if(t===fr||t===jt)O.octal&&R(O,Zf),n=gr(we());else{if(t===Et)throw new Error(lr);t===Mi?(e=we(),e.value=e.value==="true",n=gr(e)):t===Bi?(e=we(),e.value=null,n=gr(e)):V("/")||V("/=")?(n=gr(d1()),$f()):Ti(we())}return n}function S1(){const t=[];if(ue("("),!V(")"))for(;x<ae&&(t.push(Yt()),!V(")"));)ue(",");return ue(")"),t}function M1(){x=O.start;const t=we();return p1(t)||Ti(t),qo(t.value)}function B1(){return ue("."),M1()}function F1(){ue("[");const t=_o();return ue("]"),t}function I1(){var t,e,n;for(t=D1();;)if(V("."))n=B1(),t=tl(".",t,n);else if(V("("))e=S1(),t=m1(t,e);else if(V("["))n=F1(),t=tl("[",t,n);else break;return t}function il(){const t=I1();if(O.type===be&&(V("++")||V("--")))throw new Error(lr);return t}function Pi(){var t,e;if(O.type!==be&&O.type!==Et)e=il();else{if(V("++")||V("--"))throw new Error(lr);if(V("+")||V("-")||V("~")||V("!"))t=we(),e=Pi(),e=y1(t.value,e);else{if(Jo("delete")||Jo("void")||Jo("typeof"))throw new Error(lr);e=il()}}return e}function sl(t){let e=0;if(t.type!==be&&t.type!==Et)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function T1(){var t,e,n,r,i,s,o,a,u,c;if(t=O,u=Pi(),r=O,i=sl(r),i===0)return u;for(r.prec=i,we(),e=[t,O],o=Pi(),s=[u,r,o];(i=sl(O))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,u=s.pop(),e.pop(),n=el(a,u,o),s.push(n);r=we(),r.prec=i,s.push(r),e.push(O),n=Pi(),s.push(n)}for(c=s.length-1,n=s[c],e.pop();c>1;)e.pop(),n=el(s[c-1].value,s[c-2],n),c-=2;return n}function Yt(){var t,e,n;return t=T1(),V("?")&&(we(),e=Yt(),ue(":"),n=Yt(),t=A1(t,e,n)),t}function _o(){const t=Yt();if(V(","))throw new Error(lr);return t}function P1(t){M=t,x=0,ae=M.length,O=null,$f();const e=_o();if(O.type!==cr)throw new Error("Unexpect token after expression.");return e}var L1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function R1(t){function e(o,a,u,c){let l=t(a[0]);return u&&(l=u+"("+l+")",u.lastIndexOf("new ",0)===0&&(l="("+l+")")),l+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(o,a,u){return c=>e(o,c,a,u)}const r="new Date",i="String",s="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(o){o.length<3&&Y("Missing arguments to clamp function."),o.length>3&&Y("Too many arguments to clamp function.");const a=o.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:s,test:n("test",s),if:function(o){o.length<3&&Y("Missing arguments to if function."),o.length>3&&Y("Too many arguments to if function.");const a=o.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function N1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function k1(t){t=t||{};const e=t.allowed?Wr(t.allowed):{},n=t.forbidden?Wr(t.forbidden):{},r=t.constants||L1,i=(t.functions||R1)(f),s=t.globalvar,o=t.fieldvar,a=ge(s)?s:d=>`${s}["${d}"]`;let u={},c={},l=0;function f(d){if(X(d))return d;const g=h[d.type];return g==null&&Y("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return l>0?g:Pt(n,g)?Y("Illegal identifier: "+g):Pt(r,g)?r[g]:Pt(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,m=f(d.object);g&&(l+=1);const A=f(d.property);return m===o&&(c[N1(A)]=1),g&&(l-=1),m+(g?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Y("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,A=Pt(i,g)&&i[g];return A||Y("Unrecognized function: "+g),ge(A)?A(m):A+"("+m.map(f).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(f).join(",")+"]",BinaryExpression:d=>"("+f(d.left)+" "+d.operator+" "+f(d.right)+")",UnaryExpression:d=>"("+d.operator+f(d.argument)+")",ConditionalExpression:d=>"("+f(d.test)+"?"+f(d.consequent)+":"+f(d.alternate)+")",LogicalExpression:d=>"("+f(d.left)+d.operator+f(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(f).join(",")+"}",Property:d=>{l+=1;const g=f(d.key);return l-=1,g+":"+f(d.value)}};function p(d){const g={code:f(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function $o(t,e={}){const n=k1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=P1(t),i=n(r),s=Function("datum","global",`"use strict"; return (${i.code});`),o=a=>s(a,e);return o.fields=i.fields,o}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function O1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function z1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const s=t.unitView.getScaleResolution(Le(i)&&i.resolutionChannel||r);n[r]=U1(e[r],s==null?void 0:s.getScale(),t.unitView.getAccessor(r),r)}return n}function U1(t,e,n,r){let i;if(Pe(t)){const s=t.value;i=o=>s,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=s=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=s=>e(n(s)),Vt(e.type)){const s=O1();s.addAll(e.domain()),i.indexer=s}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?s=>e.invert(s):s=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=s=>{for(const o in i)o in i&&(s[o]=i[o]);return s},i}function Pe(t){return t&&"value"in t}function mr(t){return t&&"field"in t}function Ar(t){return t&&"datum"in t}function Le(t){return mr(t)||Ar(t)||ta(t)||ol(t)}function ea(t,e){const n=t.mark.encoding[e];if(Le(n))return n;throw new Error("Not a channel def with scale!")}function ol(t){return t&&"chrom"in t}function ta(t){return t&&"expr"in t}const xr=["x","y"],G1=["x2","y2"],H1=[...xr,...G1];function al(t){return xr.includes(t)}function yr(t){return H1.includes(t)}const na={x:"x2",y:"y2"},ul=Object.fromEntries(Object.entries(na).map(t=>[t[1],t[0]]));function br(t){return t in ul}function V1(t){const e=na[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function pn(t){var e;return(e=ul[t])!=null?e:t}function Wt(t){return["color","fill","stroke"].includes(pn(t))}function Li(t){return["shape","squeeze"].includes(t)}function cl(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function fl(t){if(!Li(t))throw new Error("Not a discrete channel: "+t);const e=new Map(cl(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function U(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return H(n,[t],e)}else return Ur(t)}class Q1{constructor(){this.accessorCreators=[],this.register(e=>{if(mr(e))try{const n=U(e.field);return n.constant=!1,n.fields=su(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ta(e)?j1(e.expr):void 0),this.register(e=>{if(Ar(e)){const r=sd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function j1(t){const e=$o(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.21.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
10
+ */var ls;const hn=globalThis.trustedTypes,Ac=hn?hn.createPolicy("lit-html",{createHTML:t=>t}):void 0,At=`lit$${(Math.random()+"").slice(9)}$`,xc="?"+At,zg=`<${xc}>`,dn=document,cr=(t="")=>dn.createComment(t),lr=t=>t===null||typeof t!="object"&&typeof t!="function",yc=Array.isArray,Og=t=>{var e;return yc(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},fr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,bc=/-->/g,wc=/>/g,Ht=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,vc=/'/g,Cc=/"/g,Ec=/^(?:script|style|textarea|title)$/i,Gg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),ot=Gg(1),hr=Symbol.for("lit-noChange"),ne=Symbol.for("lit-nothing"),Sc=new WeakMap,Dc=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new pr(e.insertBefore(cr(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},pn=dn.createTreeWalker(dn,129,null,!1),Ug=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=fr;for(let u=0;u<n;u++){const c=t[u];let f,l,h=-1,p=0;for(;p<c.length&&(s.lastIndex=p,l=s.exec(c),l!==null);)p=s.lastIndex,s===fr?l[1]==="!--"?s=bc:l[1]!==void 0?s=wc:l[2]!==void 0?(Ec.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=Ht):l[3]!==void 0&&(s=Ht):s===Ht?l[0]===">"?(s=i!=null?i:fr,h=-1):l[1]===void 0?h=-2:(h=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?Ht:l[3]==='"'?Cc:vc):s===Cc||s===vc?s=Ht:s===bc||s===wc?s=fr:(s=Ht,i=void 0);const d=s===Ht&&t[u+1].startsWith("/>")?" ":"";o+=s===fr?c+zg:h>=0?(r.push(f),c.slice(0,h)+"$lit$"+c.slice(h)+At+d):c+At+(h===-2?(r.push(void 0),u):d)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Ac!==void 0?Ac.createHTML(a):a,r]};class dr{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,u=this.parts,[c,f]=Ug(e,n);if(this.el=dr.createElement(c,r),pn.currentNode=this.el.content,n===2){const l=this.el.content,h=l.firstChild;h.remove(),l.append(...h.childNodes)}for(;(i=pn.nextNode())!==null&&u.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const h of i.getAttributeNames())if(h.endsWith("$lit$")||h.startsWith(At)){const p=f[s++];if(l.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(At),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:o,name:g[2],strings:d,ctor:g[1]==="."?Qg:g[1]==="?"?Vg:g[1]==="@"?Yg:Ei})}else u.push({type:6,index:o})}for(const h of l)i.removeAttribute(h)}if(Ec.test(i.tagName)){const l=i.textContent.split(At),h=l.length-1;if(h>0){i.textContent=hn?hn.emptyScript:"";for(let p=0;p<h;p++)i.append(l[p],cr()),pn.nextNode(),u.push({type:2,index:++o});i.append(l[h],cr())}}}else if(i.nodeType===8)if(i.data===xc)u.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(At,l+1))!==-1;)u.push({type:7,index:o}),l+=At.length-1}o++}}static createElement(e,n){const r=dn.createElement("template");return r.innerHTML=e,r}}function gn(t,e,n=t,r){var i,o,s,a;if(e===hr)return e;let u=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const c=lr(e)?void 0:e._$litDirective$;return(u==null?void 0:u.constructor)!==c&&((o=u==null?void 0:u._$AO)===null||o===void 0||o.call(u,!1),c===void 0?u=void 0:(u=new c(t),u._$AT(t,n,r)),r!==void 0?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=u:n._$Cu=u),u!==void 0&&(e=gn(t,u._$AS(t,e.values),u,r)),e}class Hg{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:dn).importNode(r,!0);pn.currentNode=o;let s=pn.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let f;c.type===2?f=new pr(s,s.nextSibling,this,e):c.type===1?f=new c.ctor(s,c.name,c.strings,this,e):c.type===6&&(f=new Wg(s,this,e)),this.v.push(f),c=i[++u]}a!==(c==null?void 0:c.index)&&(s=pn.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class pr{constructor(e,n,r,i){var o;this.type=2,this._$AH=ne,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cg}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=gn(this,e,n),lr(e)?e===ne||e==null||e===""?(this._$AH!==ne&&this._$AR(),this._$AH=ne):e!==this._$AH&&e!==hr&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):Og(e)?this.S(e):this.$(e)}M(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.M(e))}$(e){this._$AH!==ne&&lr(this._$AH)?this._$AA.nextSibling.data=e:this.k(dn.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=dr.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Hg(o,this),a=s.p(this.options);s.m(r),this.k(a),this._$AH=s}}_$AC(e){let n=Sc.get(e.strings);return n===void 0&&Sc.set(e.strings,n=new dr(e)),n}S(e){yc(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new pr(this.M(cr()),this.M(cr()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Ei{constructor(e,n,r,i,o){this.type=1,this._$AH=ne,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=ne}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=gn(this,e,n,0),s=!lr(e)||e!==this._$AH&&e!==hr,s&&(this._$AH=e);else{const a=e;let u,c;for(e=o[0],u=0;u<o.length-1;u++)c=gn(this,a[r+u],n,u),c===hr&&(c=this._$AH[u]),s||(s=!lr(c)||c!==this._$AH[u]),c===ne?e=ne:e!==ne&&(e+=(c!=null?c:"")+o[u+1]),this._$AH[u]=c}s&&!i&&this.C(e)}C(e){e===ne?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Qg extends Ei{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===ne?void 0:e}}const jg=hn?hn.emptyScript:"";class Vg extends Ei{constructor(){super(...arguments),this.type=4}C(e){e&&e!==ne?this.element.setAttribute(this.name,jg):this.element.removeAttribute(this.name)}}class Yg extends Ei{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=gn(this,e,n,0))!==null&&r!==void 0?r:ne)===hr)return;const i=this._$AH,o=e===ne&&i!==ne||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==ne&&(i===ne||o);o&&this.element.removeEventListener(this.name,this,i),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}}class Wg{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){gn(this,e)}}const Bc=window.litHtmlPolyfillSupport;Bc==null||Bc(dr,pr),((ls=globalThis.litHtmlVersions)!==null&&ls!==void 0?ls:globalThis.litHtmlVersions=[]).push("2.2.3");const Fc=1;function fs(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const c=f=>(f+s-t[0])/n*r+e[0];return c.invert=f=>(f-e[0])/r*n+t[0]-s,c.domain=function(f){if(arguments.length){if(t=Ld(f),n=t[1]-t[0],n<Fc){n=Fc;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return c}else return t},c.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],c):e},c.numberingOffset=function(f){return arguments.length?(a=f,c):a},c.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),c):i},c.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),c):i},c.paddingOuter=function(f){return arguments.length?(o=f,c):o},c.align=function(f){return arguments.length?(s=Math.max(0,Math.min(1,f)),c):s},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=f=>{const l=c.align(),h=c.numberingOffset();return hi(t[0]-l+h,t[1]-l+h,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-a)},c.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=kt(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?ae(","):ae(".3s");return d=>p(d+a)},c.copy=()=>fs().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),c}function Xg(){const t=fs().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),u=Math.max(1,kt(i[0],i[1],r)),c=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],h=Math.max(l.continuousStart+u,i[0]-(i[0]-l.continuousStart)%u),p=Math.min(l.continuousEnd-u/4,i[1]+1);for(let d=h;d<=p;d+=u){const g=d-o;g>=i[0]&&g<i[1]&&c.push(g)}}return c},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),s=o[1]-o[0],a=t.numberingOffset(),c=kt(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?ae(","):ae(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>c(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Zg(t){return t.type=="locus"}function Xe(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function xt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const hs=Symbol("implicit");function ds(){var t=new Rt,e=[],n=[],r=hs;function i(o){let s=t.get(o);if(s===void 0){if(r!==hs)return r;t.set(o,s=e.push(o)-1)}return n[s%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Rt;for(const s of o)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return ds(e,n).unknown(r)},Xe.apply(i,arguments),i}function mn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function gr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function yt(){}var Qt=.7,An=1/Qt,xn="\\s*([+-]?\\d+)\\s*",mr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ze="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Kg=/^#([0-9a-f]{3,8})$/,qg=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),Jg=new RegExp(`^rgb\\(${Ze},${Ze},${Ze}\\)$`),_g=new RegExp(`^rgba\\(${xn},${xn},${xn},${mr}\\)$`),$g=new RegExp(`^rgba\\(${Ze},${Ze},${Ze},${mr}\\)$`),em=new RegExp(`^hsl\\(${mr},${Ze},${Ze}\\)$`),tm=new RegExp(`^hsla\\(${mr},${Ze},${Ze},${mr}\\)$`),Mc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};mn(yt,jt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ic,formatHex:Ic,formatHex8:nm,formatHsl:rm,formatRgb:Tc,toString:Tc});function Ic(){return this.rgb().formatHex()}function nm(){return this.rgb().formatHex8()}function rm(){return Nc(this).formatHsl()}function Tc(){return this.rgb().formatRgb()}function jt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Kg.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Pc(e):n===3?new re(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Si(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Si(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=qg.exec(t))?new re(e[1],e[2],e[3],1):(e=Jg.exec(t))?new re(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=_g.exec(t))?Si(e[1],e[2],e[3],e[4]):(e=$g.exec(t))?Si(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=em.exec(t))?kc(e[1],e[2]/100,e[3]/100,1):(e=tm.exec(t))?kc(e[1],e[2]/100,e[3]/100,e[4]):Mc.hasOwnProperty(t)?Pc(Mc[t]):t==="transparent"?new re(NaN,NaN,NaN,0):null}function Pc(t){return new re(t>>16&255,t>>8&255,t&255,1)}function Si(t,e,n,r){return r<=0&&(t=e=n=NaN),new re(t,e,n,r)}function ps(t){return t instanceof yt||(t=jt(t)),t?(t=t.rgb(),new re(t.r,t.g,t.b,t.opacity)):new re}function Di(t,e,n,r){return arguments.length===1?ps(t):new re(t,e,n,r==null?1:r)}function re(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}mn(re,Di,gr(yt,{brighter(t){return t=t==null?An:Math.pow(An,t),new re(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Qt:Math.pow(Qt,t),new re(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new re(Vt(this.r),Vt(this.g),Vt(this.b),Bi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Lc,formatHex:Lc,formatHex8:im,formatRgb:Rc,toString:Rc}));function Lc(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}`}function im(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}${Yt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Rc(){const t=Bi(this.opacity);return`${t===1?"rgb(":"rgba("}${Vt(this.r)}, ${Vt(this.g)}, ${Vt(this.b)}${t===1?")":`, ${t})`}`}function Bi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Vt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Yt(t){return t=Vt(t),(t<16?"0":"")+t.toString(16)}function kc(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ge(t,e,n,r)}function Nc(t){if(t instanceof Ge)return new Ge(t.h,t.s,t.l,t.opacity);if(t instanceof yt||(t=jt(t)),!t)return new Ge;if(t instanceof Ge)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new Ge(s,a,u,t.opacity)}function gs(t,e,n,r){return arguments.length===1?Nc(t):new Ge(t,e,n,r==null?1:r)}function Ge(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Ge,gs,gr(yt,{brighter(t){return t=t==null?An:Math.pow(An,t),new Ge(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Qt:Math.pow(Qt,t),new Ge(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new re(ms(t>=240?t-240:t+120,i,r),ms(t,i,r),ms(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Ge(zc(this.h),Fi(this.s),Fi(this.l),Bi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Bi(this.opacity);return`${t===1?"hsl(":"hsla("}${zc(this.h)}, ${Fi(this.s)*100}%, ${Fi(this.l)*100}%${t===1?")":`, ${t})`}`}}));function zc(t){return t=(t||0)%360,t<0?t+360:t}function Fi(t){return Math.max(0,Math.min(1,t||0))}function ms(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Oc=Math.PI/180,Gc=180/Math.PI,Mi=18,Uc=.96422,Hc=1,Qc=.82521,jc=4/29,yn=6/29,Vc=3*yn*yn,om=yn*yn*yn;function Yc(t){if(t instanceof Ke)return new Ke(t.l,t.a,t.b,t.opacity);if(t instanceof st)return Wc(t);t instanceof re||(t=ps(t));var e=ws(t.r),n=ws(t.g),r=ws(t.b),i=xs((.2225045*e+.7168786*n+.0606169*r)/Hc),o,s;return e===n&&n===r?o=s=i:(o=xs((.4360747*e+.3850649*n+.1430804*r)/Uc),s=xs((.0139322*e+.0971045*n+.7141733*r)/Qc)),new Ke(116*i-16,500*(o-i),200*(i-s),t.opacity)}function As(t,e,n,r){return arguments.length===1?Yc(t):new Ke(t,e,n,r==null?1:r)}function Ke(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}mn(Ke,As,gr(yt,{brighter(t){return new Ke(this.l+Mi*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Ke(this.l-Mi*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=Uc*ys(e),t=Hc*ys(t),n=Qc*ys(n),new re(bs(3.1338561*e-1.6168667*t-.4906146*n),bs(-.9787684*e+1.9161415*t+.033454*n),bs(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function xs(t){return t>om?Math.pow(t,1/3):t/Vc+jc}function ys(t){return t>yn?t*t*t:Vc*(t-jc)}function bs(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ws(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function sm(t){if(t instanceof st)return new st(t.h,t.c,t.l,t.opacity);if(t instanceof Ke||(t=Yc(t)),t.a===0&&t.b===0)return new st(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Gc;return new st(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function vs(t,e,n,r){return arguments.length===1?sm(t):new st(t,e,n,r==null?1:r)}function st(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Wc(t){if(isNaN(t.h))return new Ke(t.l,0,0,t.opacity);var e=t.h*Oc;return new Ke(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}mn(st,vs,gr(yt,{brighter(t){return new st(this.h,this.c,this.l+Mi*(t==null?1:t),this.opacity)},darker(t){return new st(this.h,this.c,this.l-Mi*(t==null?1:t),this.opacity)},rgb(){return Wc(this).rgb()}}));var Xc=-.14861,Cs=1.78277,Es=-.29227,Ii=-.90649,Ar=1.97294,Zc=Ar*Ii,Kc=Ar*Cs,qc=Cs*Es-Ii*Xc;function am(t){if(t instanceof Wt)return new Wt(t.h,t.s,t.l,t.opacity);t instanceof re||(t=ps(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(qc*r+Zc*e-Kc*n)/(qc+Zc-Kc),o=r-i,s=(Ar*(n-i)-Es*o)/Ii,a=Math.sqrt(s*s+o*o)/(Ar*i*(1-i)),u=a?Math.atan2(s,o)*Gc-120:NaN;return new Wt(u<0?u+360:u,a,i,t.opacity)}function Ss(t,e,n,r){return arguments.length===1?am(t):new Wt(t,e,n,r==null?1:r)}function Wt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}mn(Wt,Ss,gr(yt,{brighter(t){return t=t==null?An:Math.pow(An,t),new Wt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Qt:Math.pow(Qt,t),new Wt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Oc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new re(255*(e+n*(Xc*r+Cs*i)),255*(e+n*(Es*r+Ii*i)),255*(e+n*(Ar*r)),this.opacity)}}));function Jc(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function _c(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return Jc((n-r/e)*e,s,i,o,a)}}function $c(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],s=t[(r+1)%e],a=t[(r+2)%e];return Jc((n-r/e)*e,i,o,s,a)}}var Ti=t=>()=>t;function el(t,e){return function(n){return t+n*e}}function um(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Pi(t,e){var n=e-t;return n?el(t,n>180||n<-180?n-360*Math.round(n/360):n):Ti(isNaN(t)?e:t)}function cm(t){return(t=+t)==1?ie:function(e,n){return n-e?um(e,n,t):Ti(isNaN(e)?n:e)}}function ie(t,e){var n=e-t;return n?el(t,n):Ti(isNaN(t)?e:t)}var Ds=function t(e){var n=cm(e);function r(i,o){var s=n((i=Di(i)).r,(o=Di(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=ie(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r}(1);function tl(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Di(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(u){return a.r=r(u),a.g=i(u),a.b=o(u),a+""}}}var lm=tl(_c),fm=tl($c);function Bs(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function nl(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function hm(t,e){return(nl(e)?Bs:rl)(t,e)}function rl(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=bt(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function il(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ue(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function ol(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=bt(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var Fs=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ms=new RegExp(Fs.source,"g");function dm(t){return function(){return t}}function pm(t){return function(e){return t(e)+""}}function sl(t,e){var n=Fs.lastIndex=Ms.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Fs.exec(t))&&(i=Ms.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Ue(r,i)})),n=Ms.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?pm(u[0].x):dm(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)a[(l=u[f]).i]=l.x(c);return a.join("")})}function bt(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ti(e):(n==="number"?Ue:n==="string"?(r=jt(e))?(e=r,Ds):sl:e instanceof jt?Ds:e instanceof Date?il:nl(e)?Bs:Array.isArray(e)?rl:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?ol:Ue)(t,e)}function gm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function mm(t,e){var n=Pi(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function xr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var al=180/Math.PI,Is={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ul(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*al,skewX:Math.atan(u)*al,scaleX:s,scaleY:a}}var Li;function Am(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Is:ul(e.a,e.b,e.c,e.d,e.e,e.f)}function xm(t){return t==null||(Li||(Li=document.createElementNS("http://www.w3.org/2000/svg","g")),Li.setAttribute("transform",t),!(t=Li.transform.baseVal.consolidate()))?Is:(t=t.matrix,ul(t.a,t.b,t.c,t.d,t.e,t.f))}function cl(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push("translate(",null,e,null,n);d.push({i:g-4,x:Ue(c,l)},{i:g-2,x:Ue(f,h)})}else(l||h)&&p.push("translate("+l+e+h+n)}function s(c,f,l,h){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:Ue(c,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(c,f,l,h){c!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:Ue(c,f)}):f&&l.push(i(l)+"skewX("+f+r)}function u(c,f,l,h,p,d){if(c!==l||f!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:Ue(c,l)},{i:g-2,x:Ue(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(c,f){var l=[],h=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,l,h),s(c.rotate,f.rotate,l,h),a(c.skewX,f.skewX,l,h),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,l,h),c=f=null,function(p){for(var d=-1,g=h.length,A;++d<g;)l[(A=h[d]).i]=A.x(p);return l.join("")}}}var ym=cl(Am,"px, ","px)","deg)"),bm=cl(xm,", ",")",")"),wm=1e-12;function ll(t){return((t=Math.exp(t))+1/t)/2}function vm(t){return((t=Math.exp(t))-1/t)/2}function Cm(t){return((t=Math.exp(2*t))-1)/(t+1)}var fl=function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],l=s[1],h=s[2],p=f-a,d=l-u,g=p*p+d*d,A,m;if(g<wm)m=Math.log(h/c)/e,A=function(B){return[a+B*p,u+B*d,c*Math.exp(e*B*m)]};else{var b=Math.sqrt(g),y=(h*h-c*c+r*g)/(2*c*n*b),v=(h*h-c*c-r*g)/(2*h*n*b),E=Math.log(Math.sqrt(y*y+1)-y),C=Math.log(Math.sqrt(v*v+1)-v);m=(C-E)/e,A=function(B){var L=B*m,R=ll(E),Q=c/(n*b)*(R*Cm(e*L+E)-vm(E));return[a+Q*p,u+Q*d,c*R/ll(e*L+E)]}}return A.duration=m*1e3*e/Math.SQRT2,A}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i}(Math.SQRT2,2,4);function hl(t){return function(e,n){var r=t((e=gs(e)).h,(n=gs(n)).h),i=ie(e.s,n.s),o=ie(e.l,n.l),s=ie(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var Em=hl(Pi),Sm=hl(ie);function Dm(t,e){var n=ie((t=As(t)).l,(e=As(e)).l),r=ie(t.a,e.a),i=ie(t.b,e.b),o=ie(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function dl(t){return function(e,n){var r=t((e=vs(e)).h,(n=vs(n)).h),i=ie(e.c,n.c),o=ie(e.l,n.l),s=ie(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var Bm=dl(Pi),Fm=dl(ie);function pl(t){return function e(n){n=+n;function r(i,o){var s=t((i=Ss(i)).h,(o=Ss(o)).h),a=ie(i.s,o.s),u=ie(i.l,o.l),c=ie(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=u(Math.pow(f,n)),i.opacity=c(f),i+""}}return r.gamma=e,r}(1)}var Mm=pl(Pi),Im=pl(ie);function Ts(t,e){e===void 0&&(e=t,t=bt);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function Tm(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var Pm=Object.freeze(Object.defineProperty({__proto__:null,interpolate:bt,interpolateArray:hm,interpolateBasis:_c,interpolateBasisClosed:$c,interpolateDate:il,interpolateDiscrete:gm,interpolateHue:mm,interpolateNumber:Ue,interpolateNumberArray:Bs,interpolateObject:ol,interpolateRound:xr,interpolateString:sl,interpolateTransformCss:ym,interpolateTransformSvg:bm,interpolateZoom:fl,interpolateRgb:Ds,interpolateRgbBasis:lm,interpolateRgbBasisClosed:fm,interpolateHsl:Em,interpolateHslLong:Sm,interpolateLab:Dm,interpolateHcl:Bm,interpolateHclLong:Fm,interpolateCubehelix:Mm,interpolateCubehelixLong:Im,piecewise:Ts,quantize:Tm},Symbol.toStringTag,{value:"Module"}));function Lm(t){return function(){return t}}function Ps(t){return+t}var gl=[0,1];function ye(t){return t}function Ls(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Lm(isNaN(e)?NaN:.5)}function Rm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function km(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=Ls(i,r),o=n(s,o)):(r=Ls(r,i),o=n(o,s)),function(a){return o(r(a))}}function Nm(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=Ls(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var u=cn(t,a,1,r)-1;return o[u](i[u](a))}}function yr(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ri(){var t=gl,e=gl,n=bt,r,i,o,s=ye,a,u,c;function f(){var h=Math.min(t.length,e.length);return s!==ye&&(s=Rm(t[0],t[h-1])),a=h>2?Nm:km,u=c=null,l}function l(h){return h==null||isNaN(h=+h)?o:(u||(u=a(t.map(r),e,n)))(r(s(h)))}return l.invert=function(h){return s(i((c||(c=a(e,t.map(r),Ue)))(h)))},l.domain=function(h){return arguments.length?(t=Array.from(h,Ps),f()):t.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),f()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),n=xr,f()},l.clamp=function(h){return arguments.length?(s=h?!0:ye,f()):s!==ye},l.interpolate=function(h){return arguments.length?(n=h,f()):n},l.unknown=function(h){return arguments.length?(o=h,l):o},function(h,p){return r=h,i=p,f()}}function ml(){return Ri()(ye,ye)}function Al(t,e,n,r){var i=kt(t,e,n),o;switch(r=dt(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Gu(i,s))&&(r.precision=o),Qo(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Uu(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Ou(i))&&(r.precision=o-(r.type==="%")*2);break}}return ae(r)}function Xt(t){var e=t.domain;return t.ticks=function(n){var r=e();return hi(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Al(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],u,c,f=10;for(a<s&&(c=s,s=a,a=c,c=i,i=o,o=c);f-- >0;){if(c=Iu(s,a,n),c===u)return r[i]=s,r[o]=a,e(r);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;u=c}return t},t}function xl(){var t=ml();return t.copy=function(){return yr(t,xl())},Xe.apply(t,arguments),Xt(t)}function yl(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,Ps),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return yl(t).unknown(e)},t=arguments.length?Array.from(t,Ps):[0,1],Xt(n)}function bl(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function wl(t){return Math.log(t)}function vl(t){return Math.exp(t)}function zm(t){return-Math.log(-t)}function Om(t){return-Math.exp(-t)}function Gm(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Um(t){return t===10?Gm:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Hm(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Cl(t){return(e,n)=>-t(-e,n)}function Rs(t){const e=t(wl,vl),n=e.domain;let r=10,i,o;function s(){return i=Hm(r),o=Um(r),n()[0]<0?(i=Cl(i),o=Cl(o),t(zm,Om)):t(wl,vl),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=a=>{const u=n();let c=u[0],f=u[u.length-1];const l=f<c;l&&([c,f]=[f,c]);let h=i(c),p=i(f),d,g;const A=a==null?10:+a;let m=[];if(!(r%1)&&p-h<A){if(h=Math.floor(h),p=Math.ceil(p),c>0){for(;h<=p;++h)for(d=1;d<r;++d)if(g=h<0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/o(-h):d*o(h),!(g<c)){if(g>f)break;m.push(g)}m.length*2<A&&(m=hi(c,f,A))}else m=hi(h,p,Math.min(p-h,A)).map(o);return l?m.reverse():m},e.tickFormat=(a,u)=>{if(a==null&&(a=10),u==null&&(u=r===10?"s":","),typeof u!="function"&&(!(r%1)&&(u=dt(u)).precision==null&&(u.trim=!0),u=ae(u)),a===1/0)return u;const c=Math.max(1,r*a/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=c?u(f):""}},e.nice=()=>n(bl(n(),{floor:a=>o(Math.floor(i(a))),ceil:a=>o(Math.ceil(i(a)))})),e}function ks(){const t=Rs(Ri()).domain([1,10]);return t.copy=()=>yr(t,ks()).base(t.base()),Xe.apply(t,arguments),t}function El(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Sl(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ns(t){var e=1,n=t(El(e),Sl(e));return n.constant=function(r){return arguments.length?t(El(e=+r),Sl(e)):e},Xt(n)}function Dl(){var t=Ns(Ri());return t.copy=function(){return yr(t,Dl()).constant(t.constant())},Xe.apply(t,arguments)}function Bl(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Qm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function jm(t){return t<0?-t*t:t*t}function zs(t){var e=t(ye,ye),n=1;function r(){return n===1?t(ye,ye):n===.5?t(Qm,jm):t(Bl(n),Bl(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Xt(e)}function Os(){var t=zs(Ri());return t.copy=function(){return yr(t,Os()).exponent(t.exponent())},Xe.apply(t,arguments),t}function Vm(){return Os.apply(null,arguments).exponent(.5)}function Fl(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=Tu(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[cn(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(Xn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return Fl().domain(t).range(e).unknown(r)},Xe.apply(o,arguments)}function Ml(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(u){return u!=null&&u<=u?i[cn(r,u,0,n)]:o}function a(){var u=-1;for(r=new Array(n);++u<n;)r[u]=((u+1)*e-(u-n)*t)/(n+1);return s}return s.domain=function(u){return arguments.length?([t,e]=u,t=+t,e=+e,a()):[t,e]},s.range=function(u){return arguments.length?(n=(i=Array.from(u)).length-1,a()):i.slice()},s.invertExtent=function(u){var c=i.indexOf(u);return c<0?[NaN,NaN]:c<1?[t,r[0]]:c>=n?[r[n-1],e]:[r[c-1],r[c]]},s.unknown=function(u){return arguments.length&&(o=u),s},s.thresholds=function(){return r.slice()},s.copy=function(){return Ml().domain([t,e]).range(i).unknown(o)},Xe.apply(Xt(s),arguments)}function Il(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[cn(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return Il().domain(t).range(e).unknown(n)},Xe.apply(i,arguments)}function Ym(t){return new Date(t)}function Wm(t){return t instanceof Date?+t:+new Date(+t)}function Gs(t,e,n,r,i,o,s,a,u,c){var f=ml(),l=f.invert,h=f.domain,p=c(".%L"),d=c(":%S"),g=c("%I:%M"),A=c("%I %p"),m=c("%a %d"),b=c("%b %d"),y=c("%B"),v=c("%Y");function E(C){return(u(C)<C?p:a(C)<C?d:s(C)<C?g:o(C)<C?A:r(C)<C?i(C)<C?m:b:n(C)<C?y:v)(C)}return f.invert=function(C){return new Date(l(C))},f.domain=function(C){return arguments.length?h(Array.from(C,Wm)):h().map(Ym)},f.ticks=function(C){var B=h();return t(B[0],B[B.length-1],C==null?10:C)},f.tickFormat=function(C,B){return B==null?E:c(B)},f.nice=function(C){var B=h();return(!C||typeof C.range!="function")&&(C=e(B[0],B[B.length-1],C==null?10:C)),C?h(bl(B,C)):f},f.copy=function(){return yr(f,Gs(t,e,n,r,i,o,s,a,u,c))},f}function Xm(){return Xe.apply(Gs(rp,ip,gt,Ai,mi,zt,qo,Ko,pt,is).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Zm(){return Xe.apply(Gs(tp,np,mt,yi,xi,Gt,$o,_o,pt,os).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function ki(){var t=0,e=1,n,r,i,o,s=ye,a=!1,u;function c(l){return l==null||isNaN(l=+l)?u:s(i===0?.5:(l=(o(l)-n)*i,a?Math.max(0,Math.min(1,l)):l))}c.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),c):[t,e]},c.clamp=function(l){return arguments.length?(a=!!l,c):a},c.interpolator=function(l){return arguments.length?(s=l,c):s};function f(l){return function(h){var p,d;return arguments.length?([p,d]=h,s=l(p,d),c):[s(0),s(1)]}}return c.range=f(bt),c.rangeRound=f(xr),c.unknown=function(l){return arguments.length?(u=l,c):u},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),c}}function wt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Us(){var t=Xt(ki()(ye));return t.copy=function(){return wt(t,Us())},xt.apply(t,arguments)}function Tl(){var t=Rs(ki()).domain([1,10]);return t.copy=function(){return wt(t,Tl()).base(t.base())},xt.apply(t,arguments)}function Pl(){var t=Ns(ki());return t.copy=function(){return wt(t,Pl()).constant(t.constant())},xt.apply(t,arguments)}function Hs(){var t=zs(ki());return t.copy=function(){return wt(t,Hs()).exponent(t.exponent())},xt.apply(t,arguments)}function Km(){return Hs.apply(null,arguments).exponent(.5)}function Ni(){var t=0,e=.5,n=1,r=1,i,o,s,a,u,c=ye,f,l=!1,h;function p(g){return isNaN(g=+g)?h:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:u),c(l?Math.max(0,Math.min(1,g)):g))}p.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(g){return arguments.length?(l=!!g,p):l},p.interpolator=function(g){return arguments.length?(c=g,p):c};function d(g){return function(A){var m,b,y;return arguments.length?([m,b,y]=A,c=Ts(g,[m,b,y]),p):[c(0),c(.5),c(1)]}}return p.range=d(bt),p.rangeRound=d(xr),p.unknown=function(g){return arguments.length?(h=g,p):h},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),u=o===s?0:.5/(s-o),r=o<i?-1:1,p}}function Ll(){var t=Xt(Ni()(ye));return t.copy=function(){return wt(t,Ll())},xt.apply(t,arguments)}function Rl(){var t=Rs(Ni()).domain([.1,1,10]);return t.copy=function(){return wt(t,Rl()).base(t.base())},xt.apply(t,arguments)}function kl(){var t=Ns(Ni());return t.copy=function(){return wt(t,kl()).constant(t.constant())},xt.apply(t,arguments)}function Qs(){var t=zs(Ni());return t.copy=function(){return wt(t,Qs()).exponent(t.exponent())},xt.apply(t,arguments)}function qm(){return Qs.apply(null,arguments).exponent(.5)}function js(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Jm="identity",bn="linear",vt="log",br="pow",wr="sqrt",zi="symlog",Nl="time",zl="utc",qe="sequential",wn="diverging",Vs="quantile",Ol="quantize",Gl="threshold",Ys="ordinal",Ws="point",Ul="band",Xs="bin-ordinal",$="continuous",vr="discrete",Cr="discretizing",Le="interpolating",Hl="temporal";function _m(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function $m(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,u,c;for(i<r&&(a=r,r=i,i=a),u=0,c=n.length;u<c;++u)n[u]>=r&&n[u]<=i&&(o<0&&(o=u),s=u);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Zs(){const t=ds().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,u=0,c=.5;delete t.unknown;function f(){const l=e().length,h=r[1]<r[0],p=r[1-h],d=js(l,a,u);let g=r[h-0];i=(p-g)/(d||1),s&&(i=Math.floor(i)),g+=(p-g-i*(l-a))*c,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const A=Zn(l).map(m=>g+i*m);return n(h?A.reverse():A)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),a=u,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},t.paddingOuter=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.align=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const h=r[1]<r[0],p=h?n().reverse():n(),d=p.length-1;let g=+l[0],A=+l[1],m,b,y;if(!(g!==g||A!==A)&&(A<g&&(y=g,g=A,A=y),!(A<p[0]||g>r[1-h])))return m=Math.max(0,No(p,g)-1),b=g===A?m:No(p,A)-1,g-p[m]>o+1e-10&&++m,h&&(y=m,m=d-b,b=d-y),m>b?void 0:e().slice(m,b+1)},t.invert=function(l){const h=t.invertRange([l,l]);return h&&h[0]},t.copy=function(){return Zs().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(u).align(c)},f()}function Ql(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Ql(e())},t}function eA(){return Ql(Zs().paddingInner(1))}var tA=Array.prototype.map;function nA(t){return tA.call(t,Yn)}const rA=Array.prototype.slice;function jl(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(cn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=nA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=rA.call(r),n):e.slice()},n.tickFormat=function(r,i){return Al(t[0],Oe(t),r==null?10:r,i)},n.copy=function(){return jl().domain(n.domain()).range(n.range())},n}const Oi={};function iA(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?_m(o):o.invertExtent?$m(o):void 0),o.type=t,o};return r.metadata=ci(To(n)),r}function U(t,e,n){return arguments.length>1?(Oi[t]=iA(t,e,n),this):oA(t)?Oi[t]:void 0}U(Jm,yl),U(bn,xl,$),U(vt,ks,[$,vt]),U(br,Os,$),U(wr,Vm,$),U(zi,Dl,$),U(Nl,Xm,[$,Hl]),U(zl,Zm,[$,Hl]),U(qe,Us,[$,Le]),U("".concat(qe,"-").concat(bn),Us,[$,Le]),U("".concat(qe,"-").concat(vt),Tl,[$,Le,vt]),U("".concat(qe,"-").concat(br),Hs,[$,Le]),U("".concat(qe,"-").concat(wr),Km,[$,Le]),U("".concat(qe,"-").concat(zi),Pl,[$,Le]),U("".concat(wn,"-").concat(bn),Ll,[$,Le]),U("".concat(wn,"-").concat(vt),Rl,[$,Le,vt]),U("".concat(wn,"-").concat(br),Qs,[$,Le]),U("".concat(wn,"-").concat(wr),qm,[$,Le]),U("".concat(wn,"-").concat(zi),kl,[$,Le]),U(Vs,Fl,[Cr,Vs]),U(Ol,Ml,Cr),U(Gl,Il,Cr),U(Xs,jl,[vr,Cr]),U(Ys,ds,vr),U(Ul,Zs,vr),U(Ws,eA,vr);function oA(t){return Lt(Oi,t)}function Er(t,e){const n=Oi[t];return n&&n.metadata[e]}function Re(t){return Er(t,$)}function Zt(t){return Er(t,vr)}function vn(t){return Er(t,Cr)}function Vl(t){return Er(t,vt)}function Gi(t){return Er(t,Le)}function sA(t,e){const n=e[0],r=Oe(e)-n;return function(i){return t(n+i*r)}}function Ui(t,e,n){return Ts(Yl(e||"rgb",n),t)}function aA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Yl(t,e){const n=Pm[uA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function uA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const cA={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},lA={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function Wl(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function Xl(t,e){for(const n in t)Ks(n,e(t[n]))}const Zl={};Xl(lA,Wl),Xl(cA,t=>Ui(Wl(t)));function Ks(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Zl[t]=e,this):Zl[t]}var AE="";function fA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function Kl(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function hA(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Je(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function Cn(t){return t[t.length-1]}class dA{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){var e;return(e=Cn(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=fA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&pA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Dc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Dc(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(ot`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function pA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const gA="RawCode",mA="Literal",AA="Property",xA="Identifier",yA="ArrayExpression",bA="BinaryExpression",wA="CallExpression",vA="ConditionalExpression",CA="LogicalExpression",EA="MemberExpression",SA="ObjectExpression",DA="UnaryExpression";function He(t){this.type=t}He.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=BA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function BA(t){switch(t.type){case yA:return t.elements;case bA:case CA:return[t.left,t.right];case wA:return[t.callee].concat(t.arguments);case vA:return[t.test,t.consequent,t.alternate];case EA:return[t.object,t.property];case SA:return t.properties;case AA:return[t.key,t.value];case DA:return[t.argument];case xA:case mA:case gA:default:return[]}}var _e,S,x,le,H,Hi=1,Sr=2,Kt=3,Ct=4,Qi=5,qt=6,be=7,Dr=8,FA=9;_e={},_e[Hi]="Boolean",_e[Sr]="<end>",_e[Kt]="Identifier",_e[Ct]="Keyword",_e[Qi]="Null",_e[qt]="Numeric",_e[be]="Punctuator",_e[Dr]="String",_e[FA]="RegularExpression";var MA="ArrayExpression",IA="BinaryExpression",TA="CallExpression",PA="ConditionalExpression",ql="Identifier",LA="Literal",RA="LogicalExpression",kA="MemberExpression",NA="ObjectExpression",zA="Property",OA="UnaryExpression",oe="Unexpected token %0",GA="Unexpected number",UA="Unexpected string",HA="Unexpected identifier",QA="Unexpected reserved word",jA="Unexpected end of input",qs="Invalid regular expression",Js="Invalid regular expression: missing /",Jl="Octal literals are not allowed in strict mode.",VA="Duplicate data property in object literal not allowed in strict mode",ue="ILLEGAL",Br="Disabled.",YA=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),WA=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function ji(t,e){if(!t)throw new Error("ASSERT: "+e)}function at(t){return t>=48&&t<=57}function _s(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Fr(t){return"01234567".indexOf(t)>=0}function XA(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Mr(t){return t===10||t===13||t===8232||t===8233}function Ir(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&YA.test(String.fromCharCode(t))}function Vi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&WA.test(String.fromCharCode(t))}const ZA={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function _l(){for(;x<le;){const t=S.charCodeAt(x);if(XA(t)||Mr(t))++x;else break}}function $s(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<le&&_s(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):z({},oe,ue);return String.fromCharCode(i)}function KA(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&z({},oe,ue);x<le&&(t=S[x++],!!_s(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&z({},oe,ue),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function $l(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&z({},oe,ue),++x,t=$s("u"),(!t||t==="\\"||!Ir(t.charCodeAt(0)))&&z({},oe,ue),e=t);x<le&&(t=S.charCodeAt(x),!!Vi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&z({},oe,ue),++x,t=$s("u"),(!t||t==="\\"||!Vi(t.charCodeAt(0)))&&z({},oe,ue),e+=t);return e}function qA(){var t,e;for(t=x++;x<le;){if(e=S.charCodeAt(x),e===92)return x=t,$l();if(Vi(e))++x;else break}return S.slice(t,x)}function JA(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?$l():qA(),e.length===1?n=Kt:ZA.hasOwnProperty(e)?n=Ct:e==="null"?n=Qi:e==="true"||e==="false"?n=Hi:n=Kt,{type:n,value:e,start:t,end:x}}function ea(){var t=x,e=S.charCodeAt(x),n,r=S[x],i,o,s;switch(e){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++x,{type:be,value:String.fromCharCode(e),start:t,end:x};default:if(n=S.charCodeAt(x+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return x+=2,{type:be,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:x};case 33:case 61:return x+=2,S.charCodeAt(x)===61&&++x,{type:be,value:S.slice(t,x),start:t,end:x}}}if(s=S.substr(x,4),s===">>>=")return x+=4,{type:be,value:s,start:t,end:x};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return x+=3,{type:be,value:o,start:t,end:x};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return x+=2,{type:be,value:i,start:t,end:x};if(i==="//"&&z({},oe,ue),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:be,value:r,start:t,end:x};z({},oe,ue)}function _A(t){let e="";for(;x<le&&_s(S[x]);)e+=S[x++];return e.length===0&&z({},oe,ue),Ir(S.charCodeAt(x))&&z({},oe,ue),{type:qt,value:parseInt("0x"+e,16),start:t,end:x}}function $A(t){let e="0"+S[x++];for(;x<le&&Fr(S[x]);)e+=S[x++];return(Ir(S.charCodeAt(x))||at(S.charCodeAt(x)))&&z({},oe,ue),{type:qt,value:parseInt(e,8),octal:!0,start:t,end:x}}function ef(){var t,e,n;if(n=S[x],ji(at(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=x,t="",n!=="."){if(t=S[x++],n=S[x],t==="0"){if(n==="x"||n==="X")return++x,_A(e);if(Fr(n))return $A(e);n&&at(n.charCodeAt(0))&&z({},oe,ue)}for(;at(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];at(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="e"||n==="E")if(t+=S[x++],n=S[x],(n==="+"||n==="-")&&(t+=S[x++]),at(S.charCodeAt(x)))for(;at(S.charCodeAt(x));)t+=S[x++];else z({},oe,ue);return Ir(S.charCodeAt(x))&&z({},oe,ue),{type:qt,value:parseFloat(t),start:e,end:x}}function e1(){var t="",e,n,r,i,o=!1;for(e=S[x],ji(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<le;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!Mr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=KA()):t+=$s(r);break;case"n":t+=`
11
+ `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Fr(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),x<le&&Fr(S[x])&&(o=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<le&&Fr(S[x])&&(i=i*8+"01234567".indexOf(S[x++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&S[x]===`
12
+ `&&++x;else{if(Mr(r.charCodeAt(0)))break;t+=r}return e!==""&&z({},oe,ue),{type:Dr,value:t,octal:o,start:n,end:x}}function t1(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";z({},qs)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{z({},qs)}try{return new RegExp(t,e)}catch{return null}}function n1(){var t,e,n,r,i;for(t=S[x],ji(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<le;)if(t=S[x++],e+=t,t==="\\")t=S[x++],Mr(t.charCodeAt(0))&&z({},Js),e+=t;else if(Mr(t.charCodeAt(0)))z({},Js);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||z({},Js),i=e.substr(1,e.length-2),{value:i,literal:e}}function r1(){var t,e,n;for(e="",n="";x<le&&(t=S[x],!!Vi(t.charCodeAt(0)));)++x,t==="\\"&&x<le?z({},oe,ue):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&z({},qs,n),{value:n,literal:e}}function i1(){var t,e,n,r;return H=null,_l(),t=x,e=n1(),n=r1(),r=t1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function o1(t){return t.type===Kt||t.type===Ct||t.type===Hi||t.type===Qi}function tf(){if(_l(),x>=le)return{type:Sr,start:x,end:x};const t=S.charCodeAt(x);return Ir(t)?JA():t===40||t===41||t===59?ea():t===39||t===34?e1():t===46?at(S.charCodeAt(x+1))?ef():ea():at(t)?ef():ea()}function we(){const t=H;return x=t.end,H=tf(),x=t.end,t}function nf(){const t=x;H=tf(),x=t}function s1(t){const e=new He(MA);return e.elements=t,e}function rf(t,e,n){const r=new He(t==="||"||t==="&&"?RA:IA);return r.operator=t,r.left=e,r.right=n,r}function a1(t,e){const n=new He(TA);return n.callee=t,n.arguments=e,n}function u1(t,e,n){const r=new He(PA);return r.test=t,r.consequent=e,r.alternate=n,r}function ta(t){const e=new He(ql);return e.name=t,e}function Tr(t){const e=new He(LA);return e.value=t.value,e.raw=S.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function of(t,e,n){const r=new He(kA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function c1(t){const e=new He(NA);return e.properties=t,e}function sf(t,e,n){const r=new He(zA);return r.key=e,r.value=n,r.kind=t,r}function l1(t,e){const n=new He(OA);return n.operator=t,n.argument=e,n.prefix=!0,n}function z(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(ji(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=x,n.description=i,n}function Yi(t){t.type===Sr&&z(t,jA),t.type===qt&&z(t,GA),t.type===Dr&&z(t,UA),t.type===Kt&&z(t,HA),t.type===Ct&&z(t,QA),z(t,oe,t.value)}function fe(t){const e=we();(e.type!==be||e.value!==t)&&Yi(e)}function Y(t){return H.type===be&&H.value===t}function na(t){return H.type===Ct&&H.value===t}function f1(){const t=[];for(x=H.start,fe("[");!Y("]");)Y(",")?(we(),t.push(null)):(t.push(Jt()),Y("]")||fe(","));return we(),s1(t)}function af(){x=H.start;const t=we();return t.type===Dr||t.type===qt?(t.octal&&z(t,Jl),Tr(t)):ta(t.value)}function h1(){var t,e,n,r;if(x=H.start,t=H,t.type===Kt)return n=af(),fe(":"),r=Jt(),sf("init",n,r);if(t.type===Sr||t.type===be)Yi(t);else return e=af(),fe(":"),r=Jt(),sf("init",e,r)}function d1(){var t=[],e,n,r,i={},o=String;for(x=H.start,fe("{");!Y("}");)e=h1(),e.key.type===ql?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?z({},VA):i[r]=!0,t.push(e),Y("}")||fe(",");return fe("}"),c1(t)}function p1(){fe("(");const t=ra();return fe(")"),t}const g1={if:1};function m1(){var t,e,n;if(Y("("))return p1();if(Y("["))return f1();if(Y("{"))return d1();if(t=H.type,x=H.start,t===Kt||g1[H.value])n=ta(we().value);else if(t===Dr||t===qt)H.octal&&z(H,Jl),n=Tr(we());else{if(t===Ct)throw new Error(Br);t===Hi?(e=we(),e.value=e.value==="true",n=Tr(e)):t===Qi?(e=we(),e.value=null,n=Tr(e)):Y("/")||Y("/=")?(n=Tr(i1()),nf()):Yi(we())}return n}function A1(){const t=[];if(fe("("),!Y(")"))for(;x<le&&(t.push(Jt()),!Y(")"));)fe(",");return fe(")"),t}function x1(){x=H.start;const t=we();return o1(t)||Yi(t),ta(t.value)}function y1(){return fe("."),x1()}function b1(){fe("[");const t=ra();return fe("]"),t}function w1(){var t,e,n;for(t=m1();;)if(Y("."))n=y1(),t=of(".",t,n);else if(Y("("))e=A1(),t=a1(t,e);else if(Y("["))n=b1(),t=of("[",t,n);else break;return t}function uf(){const t=w1();if(H.type===be&&(Y("++")||Y("--")))throw new Error(Br);return t}function Wi(){var t,e;if(H.type!==be&&H.type!==Ct)e=uf();else{if(Y("++")||Y("--"))throw new Error(Br);if(Y("+")||Y("-")||Y("~")||Y("!"))t=we(),e=Wi(),e=l1(t.value,e);else{if(na("delete")||na("void")||na("typeof"))throw new Error(Br);e=uf()}}return e}function cf(t){let e=0;if(t.type!==be&&t.type!==Ct)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function v1(){var t,e,n,r,i,o,s,a,u,c;if(t=H,u=Wi(),r=H,i=cf(r),i===0)return u;for(r.prec=i,we(),e=[t,H],s=Wi(),o=[u,r,s];(i=cf(H))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),e.pop(),n=rf(a,u,s),o.push(n);r=we(),r.prec=i,o.push(r),e.push(H),n=Wi(),o.push(n)}for(c=o.length-1,n=o[c],e.pop();c>1;)e.pop(),n=rf(o[c-1].value,o[c-2],n),c-=2;return n}function Jt(){var t,e,n;return t=v1(),Y("?")&&(we(),e=Jt(),fe(":"),n=Jt(),t=u1(t,e,n)),t}function ra(){const t=Jt();if(Y(","))throw new Error(Br);return t}function C1(t){S=t,x=0,le=S.length,H=null,nf();const e=ra();if(H.type!==Sr)throw new Error("Unexpect token after expression.");return e}var E1={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function S1(t){function e(s,a,u,c){let f=t(a[0]);return u&&(f=u+"("+f+")",u.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(c<0?"":c===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,u){return c=>e(s,c,a,u)}const r="new Date",i="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(s){s.length<3&&K("Missing arguments to clamp function."),s.length>3&&K("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:n("getDate",r,0),day:n("getDay",r,0),year:n("getFullYear",r,0),month:n("getMonth",r,0),hours:n("getHours",r,0),minutes:n("getMinutes",r,0),seconds:n("getSeconds",r,0),milliseconds:n("getMilliseconds",r,0),time:n("getTime",r,0),timezoneoffset:n("getTimezoneOffset",r,0),utcdate:n("getUTCDate",r,0),utcday:n("getUTCDay",r,0),utcyear:n("getUTCFullYear",r,0),utcmonth:n("getUTCMonth",r,0),utchours:n("getUTCHours",r,0),utcminutes:n("getUTCMinutes",r,0),utcseconds:n("getUTCSeconds",r,0),utcmilliseconds:n("getUTCMilliseconds",r,0),length:n("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase",i,0),lower:n("toLowerCase",i,0),substring:n("substring",i),split:n("split",i),trim:n("trim",i,0),regexp:o,test:n("test",o),if:function(s){s.length<3&&K("Missing arguments to if function."),s.length>3&&K("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function D1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function B1(t){t=t||{};const e=t.allowed?ci(t.allowed):{},n=t.forbidden?ci(t.forbidden):{},r=t.constants||E1,i=(t.functions||S1)(l),o=t.globalvar,s=t.fieldvar,a=me(o)?o:d=>`${o}["${d}"]`;let u={},c={},f=0;function l(d){if(q(d))return d;const g=h[d.type];return g==null&&K("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return f>0?g:Lt(n,g)?K("Illegal identifier: "+g):Lt(r,g)?r[g]:Lt(e,g)?g:(u[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,A=l(d.object);g&&(f+=1);const m=l(d.property);return A===s&&(c[D1(m)]=1),g&&(f-=1),A+(g?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&K("Illegal callee type: "+d.callee.type);const g=d.callee.name,A=d.arguments,m=Lt(i,g)&&i[g];return m||K("Unrecognized function: "+g),me(m)?m(A):m+"("+A.map(l).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(l).join(",")+"]",BinaryExpression:d=>"("+l(d.left)+" "+d.operator+" "+l(d.right)+")",UnaryExpression:d=>"("+d.operator+l(d.argument)+")",ConditionalExpression:d=>"("+l(d.test)+"?"+l(d.consequent)+":"+l(d.alternate)+")",LogicalExpression:d=>"("+l(d.left)+d.operator+l(d.right)+")",ObjectExpression:d=>"{"+d.properties.map(l).join(",")+"}",Property:d=>{f+=1;const g=l(d.key);return f-=1,g+":"+l(d.value)}};function p(d){const g={code:l(d),globals:Object.keys(u),fields:Object.keys(c)};return u={},c={},g}return p.functions=i,p.constants=r,p}function ia(t,e={}){const n=B1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=C1(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function F1(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function M1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(ke(i)&&i.resolutionChannel||r);n[r]=I1(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function I1(t,e,n,r){let i;if(Qe(t)){const o=t.value;i=s=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),Zt(e.type)){const o=F1();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const s in i)s in i&&(o[s]=i[s]);return o},i}function Qe(t){return t&&"value"in t}function Pr(t){return t&&"field"in t}function Lr(t){return t&&"datum"in t}function ke(t){return Pr(t)||Lr(t)||sa(t)||lf(t)}function oa(t,e){const n=t.mark.encoding[e];if(ke(n))return n;throw new Error("Not a channel def with scale!")}function lf(t){return t&&"chrom"in t}function sa(t){return t&&"expr"in t}const Rr=["x","y"],T1=["x2","y2"],P1=[...Rr,...T1];function ff(t){return Rr.includes(t)}function kr(t){return P1.includes(t)}const aa={x:"x2",y:"y2"},hf=Object.fromEntries(Object.entries(aa).map(t=>[t[1],t[0]]));function Nr(t){return t in hf}function L1(t){const e=aa[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function En(t){var e;return(e=hf[t])!=null?e:t}function _t(t){return["color","fill","stroke"].includes(En(t))}function Xi(t){return["shape","squeeze"].includes(t)}function df(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function pf(t){if(!Xi(t))throw new Error("Not a discrete channel: "+t);const e=new Map(df(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function j(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return M(n,[t],e)}else return ni(t)}class R1{constructor(){this.accessorCreators=[],this.register(e=>{if(Pr(e))try{const n=j(e.field);return n.constant=!1,n.fields=Pt(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>sa(e)?k1(e.expr):void 0),this.register(e=>{if(Lr(e)){const r=cd(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function k1(t){const e=ia(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
13
13
  Available via the MIT license.
14
- see: http://github.com/greggman/twgl.js for details */const ra=5120,wr=5121,ia=5122,sa=5123,oa=5124,aa=5125,ua=5126,Y1=32819,W1=32820,X1=33635,Z1=5131,K1=33640,q1=35899,J1=35902,_1=36269,$1=34042,ll={};{const t=ll;t[ra]=Int8Array,t[wr]=Uint8Array,t[ia]=Int16Array,t[sa]=Uint16Array,t[oa]=Int32Array,t[aa]=Uint32Array,t[ua]=Float32Array,t[Y1]=Uint16Array,t[W1]=Uint16Array,t[X1]=Uint16Array,t[Z1]=Uint16Array,t[K1]=Uint32Array,t[q1]=Uint32Array,t[J1]=Uint32Array,t[_1]=Uint32Array,t[$1]=Uint32Array}function ca(t){if(t instanceof Int8Array)return ra;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return wr;if(t instanceof Int16Array)return ia;if(t instanceof Uint16Array)return sa;if(t instanceof Int32Array)return oa;if(t instanceof Uint32Array)return aa;if(t instanceof Float32Array)return ua;throw new Error("unsupported typed array type")}function ex(t){if(t===Int8Array)return ra;if(t===Uint8Array||t===Uint8ClampedArray)return wr;if(t===Int16Array)return ia;if(t===Uint16Array)return sa;if(t===Int32Array)return oa;if(t===Uint32Array)return aa;if(t===Float32Array)return ua;throw new Error("unsupported typed array type")}function tx(t){const e=ll[t];if(!e)throw new Error("unknown gl type");return e}const Ri=typeof SharedArrayBuffer!="undefined"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function nx(...t){console.error(...t)}function hl(...t){console.warn(...t)}function rx(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function dl(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Ni(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function ix(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const pl=35044,_e=34962,sx=34963,ox=34660,ax=5120,ux=5121,cx=5122,fx=5123,lx=5124,hx=5125,dx=5126,gl={attribPrefix:""};function ml(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||pl)}function Al(t,e,n,r){if(rx(t,e))return e;n=n||_e;const i=t.createBuffer();return ml(t,n,i,e,r),i}function xl(t){return t==="indices"}function px(t){return t instanceof Int8Array||t instanceof Uint8Array}function gx(t){return t===Int8Array||t===Uint8Array}function mx(t){return t.length?t:t.data}const Ax=/coord|texture/i,xx=/color|colour/i;function yl(t,e){let n;if(Ax.test(t)?n=2:xx.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function yx(t,e){return t.numComponents||t.size||yl(e,mx(t).length)}function fa(t,e){if(Ri(t))return t;if(Ri(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(xl(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function bx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!xl(r)){const i=e[r],s=i.attrib||i.name||i.attribName||gl.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Ri(i.value))throw new Error("array.value is not array or typedarray");n[s]={value:i.value}}else{let o,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const l=i.data||i,f=i.type||Float32Array,h=l*f.BYTES_PER_ELEMENT;a=ex(f),u=i.normalize!==void 0?i.normalize:gx(f),c=i.numComponents||i.size||yl(r,l),o=t.createBuffer(),t.bindBuffer(_e,o),t.bufferData(_e,h,i.drawType||pl)}else{const l=fa(i,r);o=Al(t,l,void 0,i.drawType),a=ca(l),u=i.normalize!==void 0?i.normalize:px(l),c=yx(i,r)}n[s]={buffer:o,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(_e,null),n}function wx(t,e,n,r){n=fa(n),r!==void 0?(t.bindBuffer(_e,e.buffer),t.bufferSubData(_e,r,n)):ml(t,_e,e.buffer,n,e.drawType)}function vx(t,e){return e===ax||e===ux?1:e===cx||e===fx?2:e===lx||e===hx||e===dx?4:0}const la=["position","positions","a_position"];function Ex(t,e){let n,r;for(r=0;r<la.length&&(n=la[r],!(n in e||(n=gl.attribPrefix+n,n in e)));++r);r===la.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(_e,i.buffer);const s=t.getBufferParameter(_e,ox);t.bindBuffer(_e,null);const o=vx(t,i.type),a=s/o,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function Cx(t,e,n){const r=bx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const s=e.indices;if(s){const o=fa(s,"indices");i.indices=Al(t,o,sx),i.numElements=o.length,i.elementType=ca(o)}else i.numElements||(i.numElements=Ex(t,i.attribs));return i}function gn(t){return!!t.texStorage2D}const ha=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const s in r)if(typeof r[s]=="number"){const o=e[r[s]];e[r[s]]=o?`${o} | ${s}`:s}t[i]=!0}}return function(i,s){return n(i),e[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}}(),Ct={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},mn=Ri,bl=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),wl=6406,$e=6407,Q=6408,vl=6409,El=6410,vr=6402,Cl=34041,ki=33071,Dx=9728,Sx=9729,ct=3553,ft=34067,Dt=32879,St=35866,Oi=34069,Mx=34070,Bx=34071,Fx=34072,Ix=34073,Tx=34074,da=10241,pa=10240,zi=10242,Ui=10243,Dl=32882,Px=33082,Lx=33083,Rx=33084,Nx=33085,ga=3317,Sl=3314,Ml=32878,Bl=3316,Fl=3315,Il=32877,kx=37443,Ox=37441,zx=37440,Ux=33321,Gx=36756,Hx=33325,Vx=33326,Qx=33330,jx=33329,Yx=33338,Wx=33337,Xx=33340,Zx=33339,Kx=33323,qx=36757,Jx=33327,_x=33328,$x=33336,ey=33335,ty=33332,ny=33331,ry=33334,iy=33333,sy=32849,oy=35905,ay=36194,uy=36758,cy=35898,fy=35901,ly=34843,hy=34837,dy=36221,py=36239,gy=36215,my=36233,Ay=36209,xy=36227,yy=32856,by=35907,wy=36759,vy=32855,Ey=32854,Cy=32857,Dy=34842,Sy=34836,My=36220,By=36238,Fy=36975,Iy=36214,Ty=36232,Py=36226,Ly=36208,Ry=33189,Ny=33190,ky=36012,Oy=36013,zy=35056,Mt=5120,j=5121,Gi=5122,An=5123,Hi=5124,Xt=5125,ce=5126,Tl=32819,Pl=32820,Ll=33635,ze=5131,Er=36193,ma=33640,Uy=35899,Gy=35902,Hy=36269,Vy=34042,Vi=33319,xn=33320,Qi=6403,yn=36244,bn=36248,Zt=36249;let Aa;function ji(t){if(!Aa){const e={};e[wl]={textureFormat:wl,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[j,ze,Er,ce]},e[vl]={textureFormat:vl,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[j,ze,Er,ce]},e[El]={textureFormat:El,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[j,ze,Er,ce]},e[$e]={textureFormat:$e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[j,ze,Er,ce,Ll]},e[Q]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[j,ze,Er,ce,Tl,Pl]},e[vr]={textureFormat:vr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Xt,An]},e[Ux]={textureFormat:Qi,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[j]},e[Gx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Mt]},e[Hx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[ce,ze]},e[Vx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[ce]},e[Qx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[j]},e[jx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Mt]},e[ty]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[An]},e[ny]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Gi]},e[ry]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xt]},e[iy]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hi]},e[Kx]={textureFormat:Vi,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[j]},e[qx]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Mt]},e[Jx]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[ce,ze]},e[_x]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[ce]},e[$x]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[j]},e[ey]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Mt]},e[Yx]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[An]},e[Wx]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Gi]},e[Xx]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Xt]},e[Zx]={textureFormat:xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Hi]},e[sy]={textureFormat:$e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[j]},e[oy]={textureFormat:$e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[j]},e[ay]={textureFormat:$e,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[j,Ll]},e[uy]={textureFormat:$e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Mt]},e[cy]={textureFormat:$e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[ce,ze,Uy]},e[fy]={textureFormat:$e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[ce,ze,Gy]},e[ly]={textureFormat:$e,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[ce,ze]},e[hy]={textureFormat:$e,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ce]},e[dy]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[j]},e[py]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Mt]},e[gy]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[An]},e[my]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Gi]},e[Ay]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Xt]},e[xy]={textureFormat:bn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Hi]},e[yy]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[j]},e[by]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[j]},e[wy]={textureFormat:Q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Mt]},e[vy]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[j,Pl,ma]},e[Ey]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[j,Tl]},e[Cy]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ma]},e[Dy]={textureFormat:Q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[ce,ze]},e[Sy]={textureFormat:Q,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[ce]},e[My]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[j]},e[By]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Mt]},e[Fy]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ma]},e[Iy]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[An]},e[Ty]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Gi]},e[Py]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Hi]},e[Ly]={textureFormat:Zt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Xt]},e[Ry]={textureFormat:vr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[An,Xt]},e[Ny]={textureFormat:vr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xt]},e[ky]={textureFormat:vr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ce]},e[zy]={textureFormat:Cl,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Vy]},e[Oy]={textureFormat:Cl,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hy]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),Aa=e}return Aa[t]}function Qy(t,e){const n=ji(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function wn(t){const e=ji(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Rl(t){return(t&t-1)===0}function jy(t,e,n,r){if(!gn(t))return Rl(e)&&Rl(n);const i=ji(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Yy(t){const e=ji(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Nl(t,e,n){return mn(e)?ca(e):n||j}function Yi(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const s=Math.sqrt(i/(e===ft?6:1));s%1===0?(n=s,r=s):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function vn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(kx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Ox,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(zx,e.flipY)}function kl(t){t.pixelStorei(ga,4),gn(t)&&(t.pixelStorei(Sl,0),t.pixelStorei(Ml,0),t.pixelStorei(Bl,0),t.pixelStorei(Fl,0),t.pixelStorei(Il,0))}function Wy(t,e,n,r){r.minMag&&(n.call(t,e,da,r.minMag),n.call(t,e,pa,r.minMag)),r.min&&n.call(t,e,da,r.min),r.mag&&n.call(t,e,pa,r.mag),r.wrap&&(n.call(t,e,zi,r.wrap),n.call(t,e,Ui,r.wrap),(e===Dt||ix(t,e))&&n.call(t,e,Dl,r.wrap)),r.wrapR&&n.call(t,e,Dl,r.wrapR),r.wrapS&&n.call(t,e,zi,r.wrapS),r.wrapT&&n.call(t,e,Ui,r.wrapT),r.minLod&&n.call(t,e,Px,r.minLod),r.maxLod&&n.call(t,e,Lx,r.maxLod),r.baseLevel&&n.call(t,e,Rx,r.baseLevel),r.maxLevel&&n.call(t,e,Nx,r.maxLevel)}function Ol(t,e,n){const r=n.target||ct;t.bindTexture(r,e),Wy(t,r,t.texParameteri,n)}function Xy(t){return t=t||Ct.textureColor,mn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function xa(t,e,n,r,i,s){n=n||Ct.textureOptions,s=s||Q;const o=n.target||ct;if(r=r||n.width,i=i||n.height,t.bindTexture(o,e),jy(t,r,i,s))t.generateMipmap(o);else{const a=Yy(s)?Sx:Dx;t.texParameteri(o,da,a),t.texParameteri(o,pa,a),t.texParameteri(o,zi,ki),t.texParameteri(o,Ui,ki)}}function Cr(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function ya(t,e){return e=e||{},e.cubeFaceOrder||[Oi,Mx,Bx,Fx,Ix,Tx]}function ba(t,e){const r=ya(t,e).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function zl(t,e,n,r){r=r||Ct.textureOptions;const i=r.target||ct,s=r.level||0;let o=n.width,a=n.height;const u=r.internalFormat||r.format||Q,c=wn(u),l=r.format||c.format,f=r.type||c.type;if(vn(t,r),t.bindTexture(i,e),i===ft){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const m=bl();m?(m.canvas.width=d,m.canvas.height=d,o=d,a=d,ba(t,r).forEach(function(A){const b=g[A.ndx*2+0]*d,y=g[A.ndx*2+1]*d;m.drawImage(n,b,y,d,d,0,0,d,d),t.texImage2D(A.face,s,u,l,f,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(o=d,a=d,ba(t,r).forEach(function(A){const b=g[A.ndx*2+0]*d,y=g[A.ndx*2+1]*d;t.texImage2D(A.face,s,u,d,d,0,l,f,null),createImageBitmap(n,b,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(v){vn(t,r),t.bindTexture(i,e),t.texImage2D(A.face,s,u,l,f,v),Cr(r)&&xa(t,e,r,o,a,u)})}))}else if(i===Dt||i===St){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,m=n.height===p?1:0;t.pixelStorei(ga,1),t.pixelStorei(Sl,n.width),t.pixelStorei(Ml,0),t.pixelStorei(Il,0),t.texImage3D(i,s,u,h,h,h,0,l,f,null);for(let A=0;A<d;++A){const b=A*h*g,y=A*h*m;t.pixelStorei(Bl,b),t.pixelStorei(Fl,y),t.texSubImage3D(i,s,0,0,A,h,h,1,l,f,n)}kl(t)}else t.texImage2D(i,s,u,l,f,n);Cr(r)&&xa(t,e,r,o,a,u),Ol(t,e,r)}function Dr(){}function Zy(t){if(typeof document!="undefined"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Ky(t,e){return e===void 0&&!Zy(t)?"anonymous":e}function qy(t,e,n){n=n||Dr;let r;if(e=e!==void 0?e:Ct.crossOrigin,e=Ky(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const u="couldn't load image: "+t;nx(u),n(u,r),i()},o=function(){n(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,s;const o=function(){n(i,s)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){s=u,setTimeout(o)}).catch(function(u){i=u,setTimeout(o)}),r=null}return r}function Ul(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function wa(t,e,n){return Ul(t)?(setTimeout(function(){n(null,t)}),t):qy(t,e,n)}function va(t,e,n){n=n||Ct.textureOptions;const r=n.target||ct;if(t.bindTexture(r,e),n.color===!1)return;const i=Xy(n.color);if(r===ft)for(let s=0;s<6;++s)t.texImage2D(Oi+s,0,Q,1,1,0,Q,j,i);else r===Dt||r===St?t.texImage3D(r,0,Q,1,1,1,0,Q,j,i):t.texImage2D(r,0,Q,1,1,0,Q,j,i)}function Jy(t,e,n,r){return r=r||Dr,n=n||Ct.textureOptions,va(t,e,n),n=Object.assign({},n),wa(n.src,n.crossOrigin,function(s,o){s?r(s,e,o):(zl(t,e,o,n),r(null,e,o))})}function _y(t,e,n,r){r=r||Dr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=n.level||0,o=n.internalFormat||n.format||Q,a=wn(o),u=n.format||a.format,c=n.type||j,l=n.target||ct;if(l!==ft)throw"target must be TEXTURE_CUBE_MAP";va(t,e,n),n=Object.assign({},n);let f=6;const h=[],p=ya(t,n);let d;function g(m){return function(A,b){--f,A?h.push(A):b.width!==b.height?h.push("cubemap face img is not a square: "+b.src):(vn(t,n),t.bindTexture(l,e),f===5?ya().forEach(function(y){t.texImage2D(y,s,o,u,c,b)}):t.texImage2D(m,s,o,u,c,b),Cr(n)&&t.generateMipmap(l)),f===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(m,A){return wa(m,n.crossOrigin,g(p[A]))})}function $y(t,e,n,r){r=r||Dr;const i=n.src,s=n.internalFormat||n.format||Q,o=wn(s),a=n.format||o.format,u=n.type||j,c=n.target||St;if(c!==Dt&&c!==St)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";va(t,e,n),n=Object.assign({},n);let l=i.length;const f=[];let h;const p=n.level||0;let d=n.width,g=n.height;const m=i.length;let A=!0;function b(y){return function(v,D){if(--l,v)f.push(v);else{if(vn(t,n),t.bindTexture(c,e),A){A=!1,d=n.width||D.width,g=n.height||D.height,t.texImage3D(c,p,s,d,g,m,0,a,u,null);for(let C=0;C<m;++C)t.texSubImage3D(c,p,0,0,C,d,g,1,a,u,D)}else{let C=D,F;(D.width!==d||D.height!==g)&&(F=bl(),C=F.canvas,F.canvas.width=d,F.canvas.height=g,F.drawImage(D,0,0,d,g)),t.texSubImage3D(c,p,0,0,y,d,g,1,a,u,C),F&&C===F.canvas&&(F.canvas.width=0,F.canvas.height=0)}Cr(n)&&t.generateMipmap(c)}l===0&&r(f.length?f:void 0,e,h)}}h=i.map(function(y,v){return wa(y,n.crossOrigin,b(v))})}function Gl(t,e,n,r){r=r||Ct.textureOptions;const i=r.target||ct;t.bindTexture(i,e);let s=r.width,o=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||Q,l=wn(c),f=r.format||l.format,h=r.type||Nl(t,n,l.type);if(mn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=tx(h);n=new m(n)}const p=Qy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ha(t,f);let g;if(i===Dt||i===St)if(!s&&!o&&!a){const m=Math.cbrt(d);if(m%1!==0)throw"can't guess cube size of array of numElements: "+d;s=m,o=m,a=m}else s&&(!o||!a)?(g=Yi(t,i,o,a,d/s),o=g.width,a=g.height):o&&(!s||!a)?(g=Yi(t,i,s,a,d/o),s=g.width,a=g.height):(g=Yi(t,i,s,o,d/a),s=g.width,o=g.height);else g=Yi(t,i,s,o,d),s=g.width,o=g.height;if(kl(t),t.pixelStorei(ga,r.unpackAlignment||1),vn(t,r),i===ft){const m=p/n.BYTES_PER_ELEMENT,A=d/6*m;ba(t,r).forEach(b=>{const y=A*b.ndx,v=n.subarray(y,y+A);t.texImage2D(b.face,u,c,s,o,0,f,h,v)})}else i===Dt||i===St?t.texImage3D(i,u,c,s,o,a,0,f,h,n):t.texImage2D(i,u,c,s,o,0,f,h,n);return{width:s,height:o,depth:a,type:h}}function eb(t,e,n){const r=n.target||ct;t.bindTexture(r,e);const i=n.level||0,s=n.internalFormat||n.format||Q,o=wn(s),a=n.format||o.format,u=n.type||o.type;if(vn(t,n),r===ft)for(let c=0;c<6;++c)t.texImage2D(Oi+c,i,s,n.width,n.height,0,a,u,null);else r===Dt||r===St?t.texImage3D(r,i,s,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,s,n.width,n.height,0,a,u,null)}function Sr(t,e,n){n=n||Dr,e=e||Ct.textureOptions;const r=t.createTexture(),i=e.target||ct;let s=e.width||1,o=e.height||1;const a=e.internalFormat||Q;t.bindTexture(i,r),i===ft&&(t.texParameteri(i,zi,ki),t.texParameteri(i,Ui,ki));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Jy(t,r,e,n);else if(mn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||mn(u[0]))){const c=Gl(t,r,u,e);s=c.width,o=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Ul(u[0]))?i===ft?_y(t,r,e,n):$y(t,r,e,n):(zl(t,r,u,e),s=u.width,o=u.height);else eb(t,r,e);return Cr(e)&&xa(t,r,e,s,o,a),Ol(t,r,e),r}function tb(t,e,n,r,i,s){r=r||n.width,i=i||n.height,s=s||n.depth;const o=n.target||ct;t.bindTexture(o,e);const a=n.level||0,u=n.internalFormat||n.format||Q,c=wn(u),l=n.format||c.format;let f;const h=n.src;if(h&&(mn(h)||Array.isArray(h)&&typeof h[0]=="number")?f=n.type||Nl(t,h,c.type):f=n.type||c.type,o===ft)for(let p=0;p<6;++p)t.texImage2D(Oi+p,a,u,r,i,0,l,f,null);else o===Dt||o===St?t.texImage3D(o,a,u,r,i,s,0,l,f,null):t.texImage2D(o,a,u,r,i,0,l,f,null)}const nb=hl,Wi=33984,rb=35048,Xi=34962,ib=34963,Ea=35345,Hl=35718,sb=35721,ob=35971,ab=35382,ub=35396,cb=35398,fb=35392,lb=35395,Zi=5126,Vl=35664,Ql=35665,jl=35666,Ca=5124,Yl=35667,Wl=35668,Xl=35669,Zl=35670,Kl=35671,ql=35672,Jl=35673,_l=35674,$l=35675,e0=35676,hb=35678,db=35680,pb=35679,gb=35682,mb=35685,Ab=35686,xb=35687,yb=35688,bb=35689,wb=35690,vb=36289,Eb=36292,Cb=36293,Da=5125,t0=36294,n0=36295,r0=36296,Db=36298,Sb=36299,Mb=36300,Bb=36303,Fb=36306,Ib=36307,Tb=36308,Pb=36311,Ki=3553,qi=34067,Sa=32879,Ji=35866,I={};function i0(t,e){return I[e].bindPoint}function Lb(t,e){return function(n){t.uniform1f(e,n)}}function Rb(t,e){return function(n){t.uniform1fv(e,n)}}function Nb(t,e){return function(n){t.uniform2fv(e,n)}}function kb(t,e){return function(n){t.uniform3fv(e,n)}}function Ob(t,e){return function(n){t.uniform4fv(e,n)}}function s0(t,e){return function(n){t.uniform1i(e,n)}}function o0(t,e){return function(n){t.uniform1iv(e,n)}}function a0(t,e){return function(n){t.uniform2iv(e,n)}}function u0(t,e){return function(n){t.uniform3iv(e,n)}}function c0(t,e){return function(n){t.uniform4iv(e,n)}}function zb(t,e){return function(n){t.uniform1ui(e,n)}}function Ub(t,e){return function(n){t.uniform1uiv(e,n)}}function Gb(t,e){return function(n){t.uniform2uiv(e,n)}}function Hb(t,e){return function(n){t.uniform3uiv(e,n)}}function Vb(t,e){return function(n){t.uniform4uiv(e,n)}}function Qb(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function jb(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Yb(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function Wb(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function Xb(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function Zb(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function Kb(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function qb(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function Jb(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function he(t,e,n,r){const i=i0(t,e);return gn(t)?function(s){let o,a;Ni(t,s)?(o=s,a=null):(o=s.texture,a=s.sampler),t.uniform1i(r,n),t.activeTexture(Wi+n),t.bindTexture(i,o),t.bindSampler(n,a)}:function(s){t.uniform1i(r,n),t.activeTexture(Wi+n),t.bindTexture(i,s)}}function de(t,e,n,r,i){const s=i0(t,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=n+a;return gn(t)?function(a){t.uniform1iv(r,o),a.forEach(function(u,c){t.activeTexture(Wi+o[c]);let l,f;Ni(t,u)?(l=u,f=null):(l=u.texture,f=u.sampler),t.bindSampler(n,f),t.bindTexture(s,l)})}:function(a){t.uniform1iv(r,o),a.forEach(function(u,c){t.activeTexture(Wi+o[c]),t.bindTexture(s,u)})}}I[Zi]={Type:Float32Array,size:4,setter:Lb,arraySetter:Rb},I[Vl]={Type:Float32Array,size:8,setter:Nb,cols:2},I[Ql]={Type:Float32Array,size:12,setter:kb,cols:3},I[jl]={Type:Float32Array,size:16,setter:Ob,cols:4},I[Ca]={Type:Int32Array,size:4,setter:s0,arraySetter:o0},I[Yl]={Type:Int32Array,size:8,setter:a0,cols:2},I[Wl]={Type:Int32Array,size:12,setter:u0,cols:3},I[Xl]={Type:Int32Array,size:16,setter:c0,cols:4},I[Da]={Type:Uint32Array,size:4,setter:zb,arraySetter:Ub},I[t0]={Type:Uint32Array,size:8,setter:Gb,cols:2},I[n0]={Type:Uint32Array,size:12,setter:Hb,cols:3},I[r0]={Type:Uint32Array,size:16,setter:Vb,cols:4},I[Zl]={Type:Uint32Array,size:4,setter:s0,arraySetter:o0},I[Kl]={Type:Uint32Array,size:8,setter:a0,cols:2},I[ql]={Type:Uint32Array,size:12,setter:u0,cols:3},I[Jl]={Type:Uint32Array,size:16,setter:c0,cols:4},I[_l]={Type:Float32Array,size:32,setter:Qb,rows:2,cols:2},I[$l]={Type:Float32Array,size:48,setter:jb,rows:3,cols:3},I[e0]={Type:Float32Array,size:64,setter:Yb,rows:4,cols:4},I[mb]={Type:Float32Array,size:32,setter:Wb,rows:2,cols:3},I[Ab]={Type:Float32Array,size:32,setter:Zb,rows:2,cols:4},I[xb]={Type:Float32Array,size:48,setter:Xb,rows:3,cols:2},I[yb]={Type:Float32Array,size:48,setter:qb,rows:3,cols:4},I[bb]={Type:Float32Array,size:64,setter:Kb,rows:4,cols:2},I[wb]={Type:Float32Array,size:64,setter:Jb,rows:4,cols:3},I[hb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ki},I[db]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:qi},I[pb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Sa},I[gb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ki},I[vb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ji},I[Eb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ji},I[Cb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:qi},I[Db]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ki},I[Sb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Sa},I[Mb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:qi},I[Bb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ji},I[Fb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ki},I[Ib]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Sa},I[Tb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:qi},I[Pb]={Type:null,size:0,setter:he,arraySetter:de,bindPoint:Ji};function _i(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(Xi,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||Zi,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Bt(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(Xi,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ca,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $i(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(Xi,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Da,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ma(t,e,n){const r=n.size,i=n.count;return function(s){t.bindBuffer(Xi,s.buffer);const o=s.size||s.numComponents||r,a=o/i,u=s.type||Zi,l=I[u].size*o,f=s.normalize||!1,h=s.offset||0,p=l/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,f,l,h+p*d),s.divisor!==void 0&&t.vertexAttribDivisor(e+d,s.divisor)}}const K={};K[Zi]={size:4,setter:_i},K[Vl]={size:8,setter:_i},K[Ql]={size:12,setter:_i},K[jl]={size:16,setter:_i},K[Ca]={size:4,setter:Bt},K[Yl]={size:8,setter:Bt},K[Wl]={size:12,setter:Bt},K[Xl]={size:16,setter:Bt},K[Da]={size:4,setter:$i},K[t0]={size:8,setter:$i},K[n0]={size:12,setter:$i},K[r0]={size:16,setter:$i},K[Zl]={size:4,setter:Bt},K[Kl]={size:8,setter:Bt},K[ql]={size:12,setter:Bt},K[Jl]={size:16,setter:Bt},K[_l]={size:4,setter:Ma,count:2},K[$l]={size:9,setter:Ma,count:3},K[e0]={size:16,setter:Ma,count:4};function f0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const _b=/(\.|\[|]|\w+)/g,$b=t=>t>="0"&&t<="9";function l0(t,e,n,r){const i=t.split(_b).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const u=$b(a[0]),c=u?parseInt(a):a;if(u&&(o+=i[s++]),s===i.length){n[c]=e;break}else{const f=i[s++],h=f==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[o]=r[o]||function(d){return function(g){d0(d,g)}}(p),o+=f}}}function e2(t,e){let n=0;function r(a,u,c){const l=u.name.endsWith("[0]"),f=u.type,h=I[f];if(!h)throw new Error(`unknown type: 0x${f.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,l?p=h.arraySetter(t,f,d,c,u.size):p=h.setter(t,f,d,c,u.size)}else h.arraySetter&&l?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},s={},o=t.getProgramParameter(e,Hl);for(let a=0;a<o;++a){const u=t.getActiveUniform(e,a);if(f0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const l=t.getUniformLocation(e,u.name);if(l){const f=r(e,u,l);i[c]=f,l0(c,f,s,i)}}return i}function t2(t,e){const n={},r=t.getProgramParameter(e,ob);for(let i=0;i<r;++i){const s=t.getTransformFeedbackVarying(e,i);n[s.name]={index:i,type:s.type,size:s.size}}return n}function n2(t,e){const n=t.getProgramParameter(e,Hl),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(l,f){r[f][c]=l})});const s={},o=t.getProgramParameter(e,ab);for(let a=0;a<o;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,ub),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,cb),size:t.getActiveUniformBlockParameter(e,a,fb),uniformIndices:t.getActiveUniformBlockParameter(e,a,lb)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[u]=c}return{blockSpecs:s,uniformData:r}}const h0=/\[\d+\]\.$/,r2=(t,e)=>((t+(e-1))/e|0)*e;function i2(t,e,n,r){if(e||n){r=r||1;const s=t.length/4;return function(o){let a=0,u=0;for(let c=0;c<s;++c){for(let l=0;l<r;++l)t[a++]=o[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function s2(t,e,n,r){const i=n.blockSpecs,s=n.uniformData,o=i[r];if(!o)return nb("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),u=t.createBuffer(),c=o.index;t.bindBuffer(Ea,u),t.uniformBlockBinding(e,o.index,c);let l=r+".";h0.test(l)&&(l=l.replace(h0,"."));const f={},h={},p={};return o.uniformIndices.forEach(function(d){const g=s[d];let m=g.name;m.startsWith(l)&&(m=m.substr(l.length));const A=m.endsWith("[0]");A&&(m=m.substr(0,m.length-3));const b=I[g.type],y=b.Type,v=A?r2(b.size,16)*g.size:b.size*g.size,D=new y(a,g.offset,v/y.BYTES_PER_ELEMENT);f[m]=D;const C=i2(D,A,b.rows,b.cols);h[m]=C,l0(m,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:f,setters:h}}function o2(t,e,n){return s2(t,e.program,e.uniformBlockSpec,n)}function a2(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const s=i.index;return t.bindBufferRange(Ea,s,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function u2(t,e,n){a2(t,e,n)&&t.bufferData(Ea,n.array,rb)}function d0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):d0(t[n],e[n])}}function fe(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const s=e[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)fe(n,s[a])}else for(const o in s){const a=n[o];a&&a(s[o])}}}function c2(t,e){const n={},r=t.getProgramParameter(e,sb);for(let i=0;i<r;++i){const s=t.getActiveAttrib(e,i);if(f0(s))continue;const o=t.getAttribLocation(e,s.name),a=K[s.type],u=a.setter(t,o,a);u.location=o,n[s.name]=u}return n}function f2(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function En(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(f2(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(ib,n.indices))}function l2(t,e){const n=e2(t,e),r=c2(t,e),i={program:e,uniformSetters:n,attribSetters:r};return gn(t)&&(i.uniformBlockSpec=n2(t,e),i.transformFeedbackInfo=t2(t,e)),i}const h2=4,p0=5123;function Mr(t,e,n,r,i,s){n=n===void 0?h2:n;const o=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?t.drawElementsInstanced(n,u,a===void 0?p0:e.elementType,i,s):t.drawElements(n,u,a===void 0?p0:e.elementType,i):s!==void 0?t.drawArraysInstanced(n,i,u,s):t.drawArrays(n,i,u)}const d2=36160,Br=36161,p2=3553,g2=5121,m2=6402,A2=6408,x2=33190,y2=36012,b2=35056,w2=36013,v2=32854,E2=32855,C2=36194,g0=33189,m0=6401,A0=36168,Ba=34041,D2=36064,es=36096,x0=36128,Fa=33306,Ia=33071,Ta=9729,y0=[{format:A2,type:g2,min:Ta,wrap:Ia},{format:Ba}],Ue={};Ue[Ba]=Fa,Ue[m0]=x0,Ue[A0]=x0,Ue[m2]=es,Ue[g0]=es,Ue[x2]=es,Ue[y2]=es,Ue[b2]=Fa,Ue[w2]=Fa;function S2(t,e){return Ue[t]||Ue[e]}const Ft={};Ft[v2]=!0,Ft[E2]=!0,Ft[C2]=!0,Ft[Ba]=!0,Ft[g0]=!0,Ft[m0]=!0,Ft[A0]=!0;function M2(t){return Ft[t]}function B2(t,e,n,r){const i=d2,s=t.createFramebuffer();t.bindFramebuffer(i,s),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||y0;let o=0;const a={framebuffer:s,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const l=u.format;let f=u.attachmentPoint||S2(l,u.internalFormat);if(f||(f=D2+o++),!c)if(M2(l))c=t.createRenderbuffer(),t.bindRenderbuffer(Br,c),t.renderbufferStorage(Br,l,n,r);else{const h=Object.assign({},u);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||Ta,h.mag=h.mag||h.minMag||Ta,h.wrapS=h.wrapS||h.wrap||Ia,h.wrapT=h.wrapT||h.wrap||Ia),c=Sr(t,h)}if(dl(t,c))t.framebufferRenderbuffer(i,f,Br,c);else if(Ni(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,f,c,u.level||0,u.layer):t.framebufferTexture2D(i,f,u.target||p2,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function F2(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||y0,n.forEach(function(s,o){const a=e.attachments[o],u=s.format;if(dl(t,a))t.bindRenderbuffer(Br,a),t.renderbufferStorage(Br,u,r,i);else if(Ni(t,a))tb(t,a,s,r,i);else throw new Error("unknown attachment type")})}function I2(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){En(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const T2=/^(.*?)_/;function P2(t,e){ha(t,0);const n=t.getExtension(e);if(n){const r={},i=T2.exec(e)[1],s="_"+i;for(const o in n){const a=n[o],u=typeof a=="function",c=u?i:s;let l=o;o.endsWith(c)&&(l=o.substring(0,o.length-c.length)),t[l]!==void 0?!u&&t[l]!==a&&hl(l,t[l],a,o):u?t[l]=function(f){return function(){return f.apply(n,arguments)}}(a):(t[l]=a,r[l]=a)}r.constructor={name:n.constructor.name},ha(r,0)}return n}const b0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function w0(t){for(let e=0;e<b0.length;++e)P2(t,b0[e])}function L2(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){w0(r);break}return r}function R2(t,e){return L2(t,e)}var N2=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
14
+ see: http://github.com/greggman/twgl.js for details */const ua=5120,zr=5121,ca=5122,la=5123,fa=5124,ha=5125,da=5126,N1=32819,z1=32820,O1=33635,G1=5131,U1=33640,H1=35899,Q1=35902,j1=36269,V1=34042,gf={};{const t=gf;t[ua]=Int8Array,t[zr]=Uint8Array,t[ca]=Int16Array,t[la]=Uint16Array,t[fa]=Int32Array,t[ha]=Uint32Array,t[da]=Float32Array,t[N1]=Uint16Array,t[z1]=Uint16Array,t[O1]=Uint16Array,t[G1]=Uint16Array,t[U1]=Uint32Array,t[H1]=Uint32Array,t[Q1]=Uint32Array,t[j1]=Uint32Array,t[V1]=Uint32Array}function pa(t){if(t instanceof Int8Array)return ua;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return zr;if(t instanceof Int16Array)return ca;if(t instanceof Uint16Array)return la;if(t instanceof Int32Array)return fa;if(t instanceof Uint32Array)return ha;if(t instanceof Float32Array)return da;throw new Error("unsupported typed array type")}function Y1(t){if(t===Int8Array)return ua;if(t===Uint8Array||t===Uint8ClampedArray)return zr;if(t===Int16Array)return ca;if(t===Uint16Array)return la;if(t===Int32Array)return fa;if(t===Uint32Array)return ha;if(t===Float32Array)return da;throw new Error("unsupported typed array type")}function W1(t){const e=gf[t];if(!e)throw new Error("unknown gl type");return e}const Zi=typeof SharedArrayBuffer!="undefined"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function X1(...t){console.error(...t)}function mf(...t){console.warn(...t)}function Z1(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function Af(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Ki(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function K1(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const xf=35044,$e=34962,q1=34963,J1=34660,_1=5120,$1=5121,ex=5122,tx=5123,nx=5124,rx=5125,ix=5126,yf={attribPrefix:""};function bf(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||xf)}function wf(t,e,n,r){if(Z1(t,e))return e;n=n||$e;const i=t.createBuffer();return bf(t,n,i,e,r),i}function vf(t){return t==="indices"}function ox(t){return t instanceof Int8Array||t instanceof Uint8Array}function sx(t){return t===Int8Array||t===Uint8Array}function ax(t){return t.length?t:t.data}const ux=/coord|texture/i,cx=/color|colour/i;function Cf(t,e){let n;if(ux.test(t)?n=2:cx.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function lx(t,e){return t.numComponents||t.size||Cf(e,ax(t).length)}function ga(t,e){if(Zi(t))return t;if(Zi(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(vf(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function fx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!vf(r)){const i=e[r],o=i.attrib||i.name||i.attribName||yf.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Zi(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,u,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,c=i.numComponents||i.size,a=i.type,u=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,h=f*l.BYTES_PER_ELEMENT;a=Y1(l),u=i.normalize!==void 0?i.normalize:sx(l),c=i.numComponents||i.size||Cf(r,f),s=t.createBuffer(),t.bindBuffer($e,s),t.bufferData($e,h,i.drawType||xf)}else{const f=ga(i,r);s=wf(t,f,void 0,i.drawType),a=pa(f),u=i.normalize!==void 0?i.normalize:ox(f),c=lx(i,r)}n[o]={buffer:s,numComponents:c,type:a,normalize:u,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer($e,null),n}function hx(t,e,n,r){n=ga(n),r!==void 0?(t.bindBuffer($e,e.buffer),t.bufferSubData($e,r,n)):bf(t,$e,e.buffer,n,e.drawType)}function dx(t,e){return e===_1||e===$1?1:e===ex||e===tx?2:e===nx||e===rx||e===ix?4:0}const ma=["position","positions","a_position"];function px(t,e){let n,r;for(r=0;r<ma.length&&(n=ma[r],!(n in e||(n=yf.attribPrefix+n,n in e)));++r);r===ma.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer($e,i.buffer);const o=t.getBufferParameter($e,J1);t.bindBuffer($e,null);const s=dx(t,i.type),a=o/s,u=i.numComponents||i.size,c=a/u;if(c%1!==0)throw new Error(`numComponents ${u} not correct for length ${length}`);return c}function gx(t,e,n){const r=fx(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=ga(o,"indices");i.indices=wf(t,s,q1),i.numElements=s.length,i.elementType=pa(s)}else i.numElements||(i.numElements=px(t,i.attribs));return i}function Sn(t){return!!t.texStorage2D}const Aa=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),Et={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Dn=Zi,Ef=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Sf=6406,et=6407,W=6408,Df=6409,Bf=6410,Or=6402,Ff=34041,qi=33071,mx=9728,Ax=9729,ut=3553,ct=34067,St=32879,Dt=35866,Ji=34069,xx=34070,yx=34071,bx=34072,wx=34073,vx=34074,xa=10241,ya=10240,_i=10242,$i=10243,Mf=32882,Cx=33082,Ex=33083,Sx=33084,Dx=33085,ba=3317,If=3314,Tf=32878,Pf=3316,Lf=3315,Rf=32877,Bx=37443,Fx=37441,Mx=37440,Ix=33321,Tx=36756,Px=33325,Lx=33326,Rx=33330,kx=33329,Nx=33338,zx=33337,Ox=33340,Gx=33339,Ux=33323,Hx=36757,Qx=33327,jx=33328,Vx=33336,Yx=33335,Wx=33332,Xx=33331,Zx=33334,Kx=33333,qx=32849,Jx=35905,_x=36194,$x=36758,ey=35898,ty=35901,ny=34843,ry=34837,iy=36221,oy=36239,sy=36215,ay=36233,uy=36209,cy=36227,ly=32856,fy=35907,hy=36759,dy=32855,py=32854,gy=32857,my=34842,Ay=34836,xy=36220,yy=36238,by=36975,wy=36214,vy=36232,Cy=36226,Ey=36208,Sy=33189,Dy=33190,By=36012,Fy=36013,My=35056,Bt=5120,X=5121,eo=5122,Bn=5123,to=5124,$t=5125,he=5126,kf=32819,Nf=32820,zf=33635,je=5131,Gr=36193,wa=33640,Iy=35899,Ty=35902,Py=36269,Ly=34042,no=33319,Fn=33320,ro=6403,Mn=36244,In=36248,en=36249;let va;function io(t){if(!va){const e={};e[Sf]={textureFormat:Sf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[X,je,Gr,he]},e[Df]={textureFormat:Df,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[X,je,Gr,he]},e[Bf]={textureFormat:Bf,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[X,je,Gr,he]},e[et]={textureFormat:et,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[X,je,Gr,he,zf]},e[W]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[X,je,Gr,he,kf,Nf]},e[Or]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[$t,Bn]},e[Ix]={textureFormat:ro,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[X]},e[Tx]={textureFormat:ro,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[Bt]},e[Px]={textureFormat:ro,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[he,je]},e[Lx]={textureFormat:ro,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[he]},e[Rx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[X]},e[kx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Bt]},e[Wx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Bn]},e[Xx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[eo]},e[Zx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$t]},e[Kx]={textureFormat:Mn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[to]},e[Ux]={textureFormat:no,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[X]},e[Hx]={textureFormat:no,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[Bt]},e[Qx]={textureFormat:no,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[he,je]},e[jx]={textureFormat:no,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[he]},e[Vx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[X]},e[Yx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Bt]},e[Nx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bn]},e[zx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[eo]},e[Ox]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$t]},e[Gx]={textureFormat:Fn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[to]},e[qx]={textureFormat:et,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[X]},e[Jx]={textureFormat:et,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[X]},e[_x]={textureFormat:et,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[X,zf]},e[$x]={textureFormat:et,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Bt]},e[ey]={textureFormat:et,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[he,je,Iy]},e[ty]={textureFormat:et,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[he,je,Ty]},e[ny]={textureFormat:et,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[he,je]},e[ry]={textureFormat:et,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[he]},e[iy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[X]},e[oy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Bt]},e[sy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Bn]},e[ay]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[eo]},e[uy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[$t]},e[cy]={textureFormat:In,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[to]},e[ly]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[X]},e[fy]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[X]},e[hy]={textureFormat:W,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[Bt]},e[dy]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[X,Nf,wa]},e[py]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[X,kf]},e[gy]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[wa]},e[my]={textureFormat:W,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[he,je]},e[Ay]={textureFormat:W,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[he]},e[xy]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[X]},e[yy]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Bt]},e[by]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wa]},e[wy]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Bn]},e[vy]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[eo]},e[Cy]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[to]},e[Ey]={textureFormat:en,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[$t]},e[Sy]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Bn,$t]},e[Dy]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$t]},e[By]={textureFormat:Or,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[he]},e[My]={textureFormat:Ff,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ly]},e[Fy]={textureFormat:Ff,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Py]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),va=e}return va[t]}function Ry(t,e){const n=io(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Tn(t){const e=io(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Of(t){return(t&t-1)===0}function ky(t,e,n,r){if(!Sn(t))return Of(e)&&Of(n);const i=io(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Ny(t){const e=io(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Gf(t,e,n){return Dn(e)?pa(e):n||X}function oo(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===ct?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Pn(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Bx,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Fx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Mx,e.flipY)}function Uf(t){t.pixelStorei(ba,4),Sn(t)&&(t.pixelStorei(If,0),t.pixelStorei(Tf,0),t.pixelStorei(Pf,0),t.pixelStorei(Lf,0),t.pixelStorei(Rf,0))}function zy(t,e,n,r){r.minMag&&(n.call(t,e,xa,r.minMag),n.call(t,e,ya,r.minMag)),r.min&&n.call(t,e,xa,r.min),r.mag&&n.call(t,e,ya,r.mag),r.wrap&&(n.call(t,e,_i,r.wrap),n.call(t,e,$i,r.wrap),(e===St||K1(t,e))&&n.call(t,e,Mf,r.wrap)),r.wrapR&&n.call(t,e,Mf,r.wrapR),r.wrapS&&n.call(t,e,_i,r.wrapS),r.wrapT&&n.call(t,e,$i,r.wrapT),r.minLod&&n.call(t,e,Cx,r.minLod),r.maxLod&&n.call(t,e,Ex,r.maxLod),r.baseLevel&&n.call(t,e,Sx,r.baseLevel),r.maxLevel&&n.call(t,e,Dx,r.maxLevel)}function Hf(t,e,n){const r=n.target||ut;t.bindTexture(r,e),zy(t,r,t.texParameteri,n)}function Oy(t){return t=t||Et.textureColor,Dn(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Ca(t,e,n,r,i,o){n=n||Et.textureOptions,o=o||W;const s=n.target||ut;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),ky(t,r,i,o))t.generateMipmap(s);else{const a=Ny(o)?Ax:mx;t.texParameteri(s,xa,a),t.texParameteri(s,ya,a),t.texParameteri(s,_i,qi),t.texParameteri(s,$i,qi)}}function Ur(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Ea(t,e){return e=e||{},e.cubeFaceOrder||[Ji,xx,yx,bx,wx,vx]}function Sa(t,e){const r=Ea(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Qf(t,e,n,r){r=r||Et.textureOptions;const i=r.target||ut,o=r.level||0;let s=n.width,a=n.height;const u=r.internalFormat||r.format||W,c=Tn(u),f=r.format||c.format,l=r.type||c.type;if(Pn(t,r),t.bindTexture(i,e),i===ct){const h=n.width,p=n.height;let d,g;if(h/6===p)d=p,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===p/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===p/3)d=h/2,g=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(n.src?n.src:n.nodeName);const A=Ef();A?(A.canvas.width=d,A.canvas.height=d,s=d,a=d,Sa(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;A.drawImage(n,b,y,d,d,0,0,d,d),t.texImage2D(m.face,o,u,f,l,A.canvas)}),A.canvas.width=1,A.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=d,a=d,Sa(t,r).forEach(function(m){const b=g[m.ndx*2+0]*d,y=g[m.ndx*2+1]*d;t.texImage2D(m.face,o,u,d,d,0,f,l,null),createImageBitmap(n,b,y,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(v){Pn(t,r),t.bindTexture(i,e),t.texImage2D(m.face,o,u,f,l,v),Ur(r)&&Ca(t,e,r,s,a,u)})}))}else if(i===St||i===Dt){const h=Math.min(n.width,n.height),p=Math.max(n.width,n.height),d=p/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===p?1:0,A=n.height===p?1:0;t.pixelStorei(ba,1),t.pixelStorei(If,n.width),t.pixelStorei(Tf,0),t.pixelStorei(Rf,0),t.texImage3D(i,o,u,h,h,h,0,f,l,null);for(let m=0;m<d;++m){const b=m*h*g,y=m*h*A;t.pixelStorei(Pf,b),t.pixelStorei(Lf,y),t.texSubImage3D(i,o,0,0,m,h,h,1,f,l,n)}Uf(t)}else t.texImage2D(i,o,u,f,l,n);Ur(r)&&Ca(t,e,r,s,a,u),Hf(t,e,r)}function Hr(){}function Gy(t){if(typeof document!="undefined"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function Uy(t,e){return e===void 0&&!Gy(t)?"anonymous":e}function Hy(t,e,n){n=n||Hr;let r;if(e=e!==void 0?e:Et.crossOrigin,e=Uy(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const u="couldn't load image: "+t;X1(u),n(u,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).then(function(u){if(!u.ok)throw u;return u.blob()}).then(function(u){return createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(u){o=u,setTimeout(s)}).catch(function(u){i=u,setTimeout(s)}),r=null}return r}function jf(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Da(t,e,n){return jf(t)?(setTimeout(function(){n(null,t)}),t):Hy(t,e,n)}function Ba(t,e,n){n=n||Et.textureOptions;const r=n.target||ut;if(t.bindTexture(r,e),n.color===!1)return;const i=Oy(n.color);if(r===ct)for(let o=0;o<6;++o)t.texImage2D(Ji+o,0,W,1,1,0,W,X,i);else r===St||r===Dt?t.texImage3D(r,0,W,1,1,1,0,W,X,i):t.texImage2D(r,0,W,1,1,0,W,X,i)}function Qy(t,e,n,r){return r=r||Hr,n=n||Et.textureOptions,Ba(t,e,n),n=Object.assign({},n),Da(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(Qf(t,e,s,n),r(null,e,s))})}function jy(t,e,n,r){r=r||Hr;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||W,a=Tn(s),u=n.format||a.format,c=n.type||X,f=n.target||ut;if(f!==ct)throw"target must be TEXTURE_CUBE_MAP";Ba(t,e,n),n=Object.assign({},n);let l=6;const h=[],p=Ea(t,n);let d;function g(A){return function(m,b){--l,m?h.push(m):b.width!==b.height?h.push("cubemap face img is not a square: "+b.src):(Pn(t,n),t.bindTexture(f,e),l===5?Ea().forEach(function(y){t.texImage2D(y,o,s,u,c,b)}):t.texImage2D(A,o,s,u,c,b),Ur(n)&&t.generateMipmap(f)),l===0&&r(h.length?h:void 0,e,d)}}d=i.map(function(A,m){return Da(A,n.crossOrigin,g(p[m]))})}function Vy(t,e,n,r){r=r||Hr;const i=n.src,o=n.internalFormat||n.format||W,s=Tn(o),a=n.format||s.format,u=n.type||X,c=n.target||Dt;if(c!==St&&c!==Dt)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Ba(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let h;const p=n.level||0;let d=n.width,g=n.height;const A=i.length;let m=!0;function b(y){return function(v,E){if(--f,v)l.push(v);else{if(Pn(t,n),t.bindTexture(c,e),m){m=!1,d=n.width||E.width,g=n.height||E.height,t.texImage3D(c,p,o,d,g,A,0,a,u,null);for(let C=0;C<A;++C)t.texSubImage3D(c,p,0,0,C,d,g,1,a,u,E)}else{let C=E,B;(E.width!==d||E.height!==g)&&(B=Ef(),C=B.canvas,B.canvas.width=d,B.canvas.height=g,B.drawImage(E,0,0,d,g)),t.texSubImage3D(c,p,0,0,y,d,g,1,a,u,C),B&&C===B.canvas&&(B.canvas.width=0,B.canvas.height=0)}Ur(n)&&t.generateMipmap(c)}f===0&&r(l.length?l:void 0,e,h)}}h=i.map(function(y,v){return Da(y,n.crossOrigin,b(v))})}function Vf(t,e,n,r){r=r||Et.textureOptions;const i=r.target||ut;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||W,f=Tn(c),l=r.format||f.format,h=r.type||Gf(t,n,f.type);if(Dn(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const A=W1(h);n=new A(n)}const p=Ry(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+Aa(t,l);let g;if(i===St||i===Dt)if(!o&&!s&&!a){const A=Math.cbrt(d);if(A%1!==0)throw"can't guess cube size of array of numElements: "+d;o=A,s=A,a=A}else o&&(!s||!a)?(g=oo(t,i,s,a,d/o),s=g.width,a=g.height):s&&(!o||!a)?(g=oo(t,i,o,a,d/s),o=g.width,a=g.height):(g=oo(t,i,o,s,d/a),o=g.width,s=g.height);else g=oo(t,i,o,s,d),o=g.width,s=g.height;if(Uf(t),t.pixelStorei(ba,r.unpackAlignment||1),Pn(t,r),i===ct){const A=p/n.BYTES_PER_ELEMENT,m=d/6*A;Sa(t,r).forEach(b=>{const y=m*b.ndx,v=n.subarray(y,y+m);t.texImage2D(b.face,u,c,o,s,0,l,h,v)})}else i===St||i===Dt?t.texImage3D(i,u,c,o,s,a,0,l,h,n):t.texImage2D(i,u,c,o,s,0,l,h,n);return{width:o,height:s,depth:a,type:h}}function Yy(t,e,n){const r=n.target||ut;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||W,s=Tn(o),a=n.format||s.format,u=n.type||s.type;if(Pn(t,n),r===ct)for(let c=0;c<6;++c)t.texImage2D(Ji+c,i,o,n.width,n.height,0,a,u,null);else r===St||r===Dt?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,u,null):t.texImage2D(r,i,o,n.width,n.height,0,a,u,null)}function Qr(t,e,n){n=n||Hr,e=e||Et.textureOptions;const r=t.createTexture(),i=e.target||ut;let o=e.width||1,s=e.height||1;const a=e.internalFormat||W;t.bindTexture(i,r),i===ct&&(t.texParameteri(i,_i,qi),t.texParameteri(i,$i,qi));let u=e.src;if(u)if(typeof u=="function"&&(u=u(t,e)),typeof u=="string")Qy(t,r,e,n);else if(Dn(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||Dn(u[0]))){const c=Vf(t,r,u,e);o=c.width,s=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||jf(u[0]))?i===ct?jy(t,r,e,n):Vy(t,r,e,n):(Qf(t,r,u,e),o=u.width,s=u.height);else Yy(t,r,e);return Ur(e)&&Ca(t,r,e,o,s,a),Hf(t,r,e),r}function Wy(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||ut;t.bindTexture(s,e);const a=n.level||0,u=n.internalFormat||n.format||W,c=Tn(u),f=n.format||c.format;let l;const h=n.src;if(h&&(Dn(h)||Array.isArray(h)&&typeof h[0]=="number")?l=n.type||Gf(t,h,c.type):l=n.type||c.type,s===ct)for(let p=0;p<6;++p)t.texImage2D(Ji+p,a,u,r,i,0,f,l,null);else s===St||s===Dt?t.texImage3D(s,a,u,r,i,o,0,f,l,null):t.texImage2D(s,a,u,r,i,0,f,l,null)}const Xy=mf,so=33984,Zy=35048,ao=34962,Ky=34963,Fa=35345,Yf=35718,qy=35721,Jy=35971,_y=35382,$y=35396,e2=35398,t2=35392,n2=35395,uo=5126,Wf=35664,Xf=35665,Zf=35666,Ma=5124,Kf=35667,qf=35668,Jf=35669,_f=35670,$f=35671,e0=35672,t0=35673,n0=35674,r0=35675,i0=35676,r2=35678,i2=35680,o2=35679,s2=35682,a2=35685,u2=35686,c2=35687,l2=35688,f2=35689,h2=35690,d2=36289,p2=36292,g2=36293,Ia=5125,o0=36294,s0=36295,a0=36296,m2=36298,A2=36299,x2=36300,y2=36303,b2=36306,w2=36307,v2=36308,C2=36311,co=3553,lo=34067,Ta=32879,fo=35866,I={};function u0(t,e){return I[e].bindPoint}function E2(t,e){return function(n){t.uniform1f(e,n)}}function S2(t,e){return function(n){t.uniform1fv(e,n)}}function D2(t,e){return function(n){t.uniform2fv(e,n)}}function B2(t,e){return function(n){t.uniform3fv(e,n)}}function F2(t,e){return function(n){t.uniform4fv(e,n)}}function c0(t,e){return function(n){t.uniform1i(e,n)}}function l0(t,e){return function(n){t.uniform1iv(e,n)}}function f0(t,e){return function(n){t.uniform2iv(e,n)}}function h0(t,e){return function(n){t.uniform3iv(e,n)}}function d0(t,e){return function(n){t.uniform4iv(e,n)}}function M2(t,e){return function(n){t.uniform1ui(e,n)}}function I2(t,e){return function(n){t.uniform1uiv(e,n)}}function T2(t,e){return function(n){t.uniform2uiv(e,n)}}function P2(t,e){return function(n){t.uniform3uiv(e,n)}}function L2(t,e){return function(n){t.uniform4uiv(e,n)}}function R2(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function k2(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function N2(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function z2(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function O2(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function G2(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function U2(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function H2(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function Q2(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function de(t,e,n,r){const i=u0(t,e);return Sn(t)?function(o){let s,a;Ki(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(so+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(so+n),t.bindTexture(i,o)}}function pe(t,e,n,r,i){const o=u0(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return Sn(t)?function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(so+s[c]);let f,l;Ki(t,u)?(f=u,l=null):(f=u.texture,l=u.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(u,c){t.activeTexture(so+s[c]),t.bindTexture(o,u)})}}I[uo]={Type:Float32Array,size:4,setter:E2,arraySetter:S2},I[Wf]={Type:Float32Array,size:8,setter:D2,cols:2},I[Xf]={Type:Float32Array,size:12,setter:B2,cols:3},I[Zf]={Type:Float32Array,size:16,setter:F2,cols:4},I[Ma]={Type:Int32Array,size:4,setter:c0,arraySetter:l0},I[Kf]={Type:Int32Array,size:8,setter:f0,cols:2},I[qf]={Type:Int32Array,size:12,setter:h0,cols:3},I[Jf]={Type:Int32Array,size:16,setter:d0,cols:4},I[Ia]={Type:Uint32Array,size:4,setter:M2,arraySetter:I2},I[o0]={Type:Uint32Array,size:8,setter:T2,cols:2},I[s0]={Type:Uint32Array,size:12,setter:P2,cols:3},I[a0]={Type:Uint32Array,size:16,setter:L2,cols:4},I[_f]={Type:Uint32Array,size:4,setter:c0,arraySetter:l0},I[$f]={Type:Uint32Array,size:8,setter:f0,cols:2},I[e0]={Type:Uint32Array,size:12,setter:h0,cols:3},I[t0]={Type:Uint32Array,size:16,setter:d0,cols:4},I[n0]={Type:Float32Array,size:32,setter:R2,rows:2,cols:2},I[r0]={Type:Float32Array,size:48,setter:k2,rows:3,cols:3},I[i0]={Type:Float32Array,size:64,setter:N2,rows:4,cols:4},I[a2]={Type:Float32Array,size:32,setter:z2,rows:2,cols:3},I[u2]={Type:Float32Array,size:32,setter:G2,rows:2,cols:4},I[c2]={Type:Float32Array,size:48,setter:O2,rows:3,cols:2},I[l2]={Type:Float32Array,size:48,setter:H2,rows:3,cols:4},I[f2]={Type:Float32Array,size:64,setter:U2,rows:4,cols:2},I[h2]={Type:Float32Array,size:64,setter:Q2,rows:4,cols:3},I[r2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:co},I[i2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:lo},I[o2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ta},I[s2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:co},I[d2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:fo},I[p2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:fo},I[g2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:lo},I[m2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:co},I[A2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ta},I[x2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:lo},I[y2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:fo},I[b2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:co},I[w2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:Ta},I[v2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:lo},I[C2]={Type:null,size:0,setter:de,arraySetter:pe,bindPoint:fo};function ho(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(ao,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||uo,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ft(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(ao,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ma,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function po(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(ao,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ia,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Pa(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(ao,o.buffer);const s=o.size||o.numComponents||r,a=s/i,u=o.type||uo,f=I[u].size*s,l=o.normalize||!1,h=o.offset||0,p=f/i;for(let d=0;d<i;++d)t.enableVertexAttribArray(e+d),t.vertexAttribPointer(e+d,a,u,l,f,h+p*d),o.divisor!==void 0&&t.vertexAttribDivisor(e+d,o.divisor)}}const J={};J[uo]={size:4,setter:ho},J[Wf]={size:8,setter:ho},J[Xf]={size:12,setter:ho},J[Zf]={size:16,setter:ho},J[Ma]={size:4,setter:Ft},J[Kf]={size:8,setter:Ft},J[qf]={size:12,setter:Ft},J[Jf]={size:16,setter:Ft},J[Ia]={size:4,setter:po},J[o0]={size:8,setter:po},J[s0]={size:12,setter:po},J[a0]={size:16,setter:po},J[_f]={size:4,setter:Ft},J[$f]={size:8,setter:Ft},J[e0]={size:12,setter:Ft},J[t0]={size:16,setter:Ft},J[n0]={size:4,setter:Pa,count:2},J[r0]={size:9,setter:Pa,count:3},J[i0]={size:16,setter:Pa,count:4};function p0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const j2=/(\.|\[|]|\w+)/g,V2=t=>t>="0"&&t<="9";function g0(t,e,n,r){const i=t.split(j2).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const u=V2(a[0]),c=u?parseInt(a):a;if(u&&(s+=i[o++]),o===i.length){n[c]=e;break}else{const l=i[o++],h=l==="[",p=n[c]||(h?[]:{});n[c]=p,n=p,r[s]=r[s]||function(d){return function(g){b0(d,g)}}(p),s+=l}}}function Y2(t,e){let n=0;function r(a,u,c){const f=u.name.endsWith("[0]"),l=u.type,h=I[l];if(!h)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(h.bindPoint){const d=n;n+=u.size,f?p=h.arraySetter(t,l,d,c,u.size):p=h.setter(t,l,d,c,u.size)}else h.arraySetter&&f?p=h.arraySetter(t,c):p=h.setter(t,c);return p.location=c,p}const i={},o={},s=t.getProgramParameter(e,Yf);for(let a=0;a<s;++a){const u=t.getActiveUniform(e,a);if(p0(u))continue;let c=u.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const f=t.getUniformLocation(e,u.name);if(f){const l=r(e,u,f);i[c]=l,g0(c,l,o,i)}}return i}function W2(t,e){const n={},r=t.getProgramParameter(e,Jy);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function X2(t,e){const n=t.getProgramParameter(e,Yf),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const u=t.getActiveUniform(e,a);r[a].name=u.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const u=a[0],c=a[1];t.getActiveUniforms(e,i,t[u]).forEach(function(f,l){r[l][c]=f})});const o={},s=t.getProgramParameter(e,_y);for(let a=0;a<s;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,$y),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,e2),size:t.getActiveUniformBlockParameter(e,a,t2),uniformIndices:t.getActiveUniformBlockParameter(e,a,n2)};c.used=c.usedByVertexShader||c.usedByFragmentShader,o[u]=c}return{blockSpecs:o,uniformData:r}}const m0=/\[\d+\]\.$/,Z2=(t,e)=>((t+(e-1))/e|0)*e;function K2(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,u=0;for(let c=0;c<o;++c){for(let f=0;f<r;++f)t[a++]=s[u++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function q2(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return Xy("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),u=t.createBuffer(),c=s.index;t.bindBuffer(Fa,u),t.uniformBlockBinding(e,s.index,c);let f=r+".";m0.test(f)&&(f=f.replace(m0,"."));const l={},h={},p={};return s.uniformIndices.forEach(function(d){const g=o[d];let A=g.name;A.startsWith(f)&&(A=A.substr(f.length));const m=A.endsWith("[0]");m&&(A=A.substr(0,A.length-3));const b=I[g.type],y=b.Type,v=m?Z2(b.size,16)*g.size:b.size*g.size,E=new y(a,g.offset,v/y.BYTES_PER_ELEMENT);l[A]=E;const C=K2(E,m,b.rows,b.cols);h[A]=C,g0(A,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:l,setters:h}}function A0(t,e,n){return q2(t,e.program,e.uniformBlockSpec,n)}function J2(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Fa,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function x0(t,e,n){J2(t,e,n)&&t.bufferData(Fa,n.array,Zy)}function y0(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function b0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):b0(t[n],e[n])}}function De(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const s=o.length;for(let a=0;a<s;++a)De(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function _2(t,e){const n={},r=t.getProgramParameter(e,qy);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(p0(o))continue;const s=t.getAttribLocation(e,o.name),a=J[o.type],u=a.setter(t,s,a);u.location=s,n[o.name]=u}return n}function $2(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Ln(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):($2(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(Ky,n.indices))}function eb(t,e){const n=Y2(t,e),r=_2(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Sn(t)&&(i.uniformBlockSpec=X2(t,e),i.transformFeedbackInfo=W2(t,e)),i}const tb=4,w0=5123;function jr(t,e,n,r,i,o){n=n===void 0?tb:n;const s=e.indices,a=e.elementType,u=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,u,a===void 0?w0:e.elementType,i,o):t.drawElements(n,u,a===void 0?w0:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,u,o):t.drawArrays(n,i,u)}const nb=36160,tn=36161,rb=3553,ib=5121,ob=6402,sb=6408,ab=33190,ub=36012,cb=35056,lb=36013,fb=32854,hb=32855,db=36194,v0=33189,C0=6401,E0=36168,La=34041,pb=36064,go=36096,S0=36128,Ra=33306,ka=33071,Na=9729,D0=[{format:sb,type:ib,min:Na,wrap:ka},{format:La}],Ve={};Ve[La]=Ra,Ve[C0]=S0,Ve[E0]=S0,Ve[ob]=go,Ve[v0]=go,Ve[ab]=go,Ve[ub]=go,Ve[cb]=Ra,Ve[lb]=Ra;function gb(t,e){return Ve[t]||Ve[e]}const Mt={};Mt[fb]=!0,Mt[hb]=!0,Mt[db]=!0,Mt[La]=!0,Mt[v0]=!0,Mt[C0]=!0,Mt[E0]=!0;function mb(t){return Mt[t]}function Ab(t,e,n,r){const i=nb,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||D0;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(u){let c=u.attachment;const f=u.samples,l=u.format;let h=u.attachmentPoint||gb(l,u.internalFormat);if(h||(h=pb+s++),!c)if(f!==void 0||mb(l))c=t.createRenderbuffer(),t.bindRenderbuffer(tn,c),f>1?t.renderbufferStorageMultisample(tn,f,l,n,r):t.renderbufferStorage(tn,l,n,r);else{const p=Object.assign({},u);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Na,p.mag=p.mag||p.minMag||Na,p.wrapS=p.wrapS||p.wrap||ka,p.wrapT=p.wrapT||p.wrap||ka),c=Qr(t,p)}if(Af(t,c))t.framebufferRenderbuffer(i,h,tn,c);else if(Ki(t,c))u.layer!==void 0?t.framebufferTextureLayer(i,h,c,u.level||0,u.layer):t.framebufferTexture2D(i,h,u.target||rb,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function xb(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||D0,n.forEach(function(o,s){const a=e.attachments[s],u=o.format,c=o.samples;if(c!==void 0||Af(t,a))t.bindRenderbuffer(tn,a),c>1?t.renderbufferStorageMultisample(tn,c,u,r,i):t.renderbufferStorage(tn,u,r,i);else if(Ki(t,a))Wy(t,a,o,r,i);else throw new Error("unknown attachment type")})}function yb(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Ln(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const bb=/^(.*?)_/;function wb(t,e){Aa(t,0);const n=t.getExtension(e);if(n){const r={},i=bb.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],u=typeof a=="function",c=u?i:o;let f=s;s.endsWith(c)&&(f=s.substring(0,s.length-c.length)),t[f]!==void 0?!u&&t[f]!==a&&mf(f,t[f],a,s):u?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},Aa(r,0)}return n}const B0=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_color_buffer_float","EXT_color_buffer_half_float","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_frag_depth","EXT_sRGB","EXT_shader_texture_lod","EXT_texture_filter_anisotropic","OES_element_index_uint","OES_standard_derivatives","OES_texture_float","OES_texture_float_linear","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_depth_texture","WEBGL_draw_buffers"];function F0(t){for(let e=0;e<B0.length;++e)wb(t,B0[e])}function vb(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){F0(r);break}return r}function Cb(t,e){return vb(t,e)}var Eb=`/***The vertex position wrt the rectangle specified by(x,x2,y,y2).*[0,0]=[x,y],[1,1]=[x2,y2].*The x or y component may contain fractional values if the rectangle*have been tessellated.*/in vec2 frac;uniform vec2 uMinSize;uniform float uMinOpacity;uniform vec4 uCornerRadii;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
15
15
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
16
16
  out vec2 vPosInPixels;
17
17
  #endif
@@ -19,7 +19,7 @@ flat out vec2 vHalfSizeInPixels;/***Clamps the minimumSize and returns an opacit
19
19
  #if defined(ROUNDED_CORNERS) || defined(STROKED)
20
20
  float aaPadding=1.0/uDevicePixelRatio;float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(uCornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
21
21
  #endif
22
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,k2=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
22
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,Sb=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
23
23
  in vec2 vPosInPixels;
24
24
  #endif
25
25
  flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;float sdRoundedBox(vec2 p,vec2 b,vec4 r){r.xy=p.x>0.0 ? r.xy : r.zw;r.x=p.y>0.0 ? r.x : r.y;vec2 q=abs(p)-b+r.x;return min(max(q.x,q.y),0.0)+length(max(q,0.0))-r.x;}float sdSharpBox(vec2 p,vec2 b){vec2 q=abs(p)-b;return max(q.x,q.y);}void main(void){
@@ -33,38 +33,20 @@ fragColor=distanceToColor(d,vFillColor,vStrokeColor,vHalfStrokeWidth);if(fragCol
33
33
  #else
34
34
  fragColor=vFillColor;
35
35
  #endif
36
- if(uPickingEnabled){fragColor=vPickingColor;}}`;function Pa(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function O2(t){switch(V2(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
37
- // Nvidia optimizes away the calculation necessary for emulated fp64
38
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
39
- `;case"intel":return` #define INTEL_GPU
40
- // Intel optimizes away the calculation necessary for emulated fp64
41
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
42
- // Intel's built-in 'tan' function doesn't have acceptable precision
43
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
44
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
45
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
46
- `;case"amd":return` #define AMD_GPU
47
- `;default:return` #define DEFAULT_GPU
48
- // Prevent driver from optimizing away the calculation necessary for emulated fp64
49
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
50
- // Intel's built-in 'tan' function doesn't have acceptable precision
51
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
52
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
53
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
54
- `}}const z2=7936,U2=7937,G2=7938,H2=35724;function V2(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||z2),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||U2);return{gpuVendor:Q2(n,r),vendor:n,renderer:r,version:t.getParameter(G2),shadingLanguageVersion:t.getParameter(H2)}}function Q2(t,e){return t.match(/NVIDIA/i)||e.match(/NVIDIA/i)?"NVIDIA":t.match(/INTEL/i)||e.match(/INTEL/i)?"INTEL":t.match(/AMD/i)||e.match(/AMD/i)||t.match(/ATI/i)||e.match(/ATI/i)?"AMD":"UNKNOWN GPU"}function La(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function v0(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Fr(){}var Ir=.7,ts=1/Ir,Cn="\\s*([+-]?\\d+)\\s*",Tr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",et="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",j2=/^#([0-9a-f]{3,8})$/,Y2=new RegExp("^rgb\\("+[Cn,Cn,Cn]+"\\)$"),W2=new RegExp("^rgb\\("+[et,et,et]+"\\)$"),X2=new RegExp("^rgba\\("+[Cn,Cn,Cn,Tr]+"\\)$"),Z2=new RegExp("^rgba\\("+[et,et,et,Tr]+"\\)$"),K2=new RegExp("^hsl\\("+[Tr,et,et]+"\\)$"),q2=new RegExp("^hsla\\("+[Tr,et,et,Tr]+"\\)$"),E0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};La(Fr,Pr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:C0,formatHex:C0,formatHsl:J2,formatRgb:D0,toString:D0});function C0(){return this.rgb().formatHex()}function J2(){return I0(this).formatHsl()}function D0(){return this.rgb().formatRgb()}function Pr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=j2.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?S0(e):n===3?new Ee(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ns(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ns(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Y2.exec(t))?new Ee(e[1],e[2],e[3],1):(e=W2.exec(t))?new Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=X2.exec(t))?ns(e[1],e[2],e[3],e[4]):(e=Z2.exec(t))?ns(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=K2.exec(t))?F0(e[1],e[2]/100,e[3]/100,1):(e=q2.exec(t))?F0(e[1],e[2]/100,e[3]/100,e[4]):E0.hasOwnProperty(t)?S0(E0[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function S0(t){return new Ee(t>>16&255,t>>8&255,t&255,1)}function ns(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ee(t,e,n,r)}function _2(t){return t instanceof Fr||(t=Pr(t)),t?(t=t.rgb(),new Ee(t.r,t.g,t.b,t.opacity)):new Ee}function $2(t,e,n,r){return arguments.length===1?_2(t):new Ee(t,e,n,r==null?1:r)}function Ee(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}La(Ee,$2,v0(Fr,{brighter:function(t){return t=t==null?ts:Math.pow(ts,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ir:Math.pow(Ir,t),new Ee(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:M0,formatHex:M0,formatRgb:B0,toString:B0}));function M0(){return"#"+Ra(this.r)+Ra(this.g)+Ra(this.b)}function B0(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Ra(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function F0(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new tt(t,e,n,r)}function I0(t){if(t instanceof tt)return new tt(t.h,t.s,t.l,t.opacity);if(t instanceof Fr||(t=Pr(t)),!t)return new tt;if(t instanceof tt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,a=s-i,u=(s+i)/2;return a?(e===s?o=(n-r)/a+(n<r)*6:n===s?o=(r-e)/a+2:o=(e-n)/a+4,a/=u<.5?s+i:2-s-i,o*=60):a=u>0&&u<1?0:o,new tt(o,a,u,t.opacity)}function ew(t,e,n,r){return arguments.length===1?I0(t):new tt(t,e,n,r==null?1:r)}function tt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}La(tt,ew,v0(Fr,{brighter:function(t){return t=t==null?ts:Math.pow(ts,t),new tt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ir:Math.pow(Ir,t),new tt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ee(Na(t>=240?t-240:t+120,i,r),Na(t,i,r),Na(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Na(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const ka="attr_",T0="uDomain_",tw="range_",P0="scale_",L0="getScaled_",Oa="uRangeTexture_",R0=3402823466e29;function nw(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function rw(t,e){let n;if(Li(t))n=Kt(fl(t)(e));else if(X(e))if(Wt(t))n=sw(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(Qr(e))n=Kt(e?1:0);else if(e===null)if(Wt(t))n=Kt([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Kt(e);return`
36
+ if(uPickingEnabled){fragColor=vPickingColor;}}`;const za="attr_",M0="uDomain_",Db="range_",I0="scale_",T0="getScaled_",Oa="uRangeTexture_",P0=3402823466e29;function Bb(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function Fb(t,e){let n;if(Xi(t))n=nn(pf(t)(e));else if(q(e))if(_t(t))n=Ib(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(si(e))n=nn(e?1:0);else if(e===null)if(_t(t))n=nn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=nn(e);return`
55
37
  #define ${t}_DEFINED
56
- ${n.type} ${L0}${t}() {
38
+ ${n.type} ${T0}${t}() {
57
39
  // Constant value
58
40
  return ${n};
59
- }`}function iw(t,e,n){var F;if(Pe(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=pn(t),i=ka+t,s=T0+r,o=tw+r,a=!!e.fp64,u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let l;const f=[];f.push(""),f.push("/".repeat(70)),f.push(`// Channel: ${t}`),f.push(""),f.push(`#define ${t}_DEFINED`),a&&f.push(`#define ${t}_FP64`);const{transform:h}=nw(e.type),p=(S,...le)=>ow.apply(null,[S+(a?"Fp64":""),"value",...le]);let d;switch(h){case"linear":d=p("scaleLinear","domain",o);break;case"log":d=p("scaleLog","domain",o,e.base());break;case"symlog":d=p("scaleSymlog","domain",o,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",o,e.exponent());break;case"index":case"locus":case"point":case"band":d=p("scaleBand","domain",o,e.paddingInner(),e.paddingOuter(),e.align(),(F=n.band)!=null?F:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Di(e.type)||Ke(e.type)&&Wt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const S=N0(g);f.push(`const ${S.type} ${o} = ${S};`)}const m=Wt(t)?"vec3":"float";let A;if(Wt(t)){const S=Oa+r;if(t==r&&f.push(`uniform sampler2D ${S};`),Ke(e.type))A=`getInterpolatedColor(${S}, transformed)`;else if(Vt(e.type)||dn(e.type))A=`getDiscreteColor(${S}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||dn(e.type)){const S=Oa+r;t==r&&f.push(`uniform sampler2D ${S};`),A=`getDiscreteColor(${S}, int(transformed)).r`}Ar(n)?f.push(`uniform highp ${u} ${i};`):f.push(`in highp ${u} ${i};`);const b=[],y=Ke(e.type)&&c>2,v=dn(e.type)||y;if(b.push("int slot = 0;"),v){const S=s;b.push(y?`while (slot < ${S}.length() - 2 && value >= ${S}[slot + 1]) { slot++; }`:`while (slot < ${S}.length() && value >= ${S}[slot]) { slot++; }`)}const D=Ke(e.type)||dn(e.type)||["band","point"].includes(e.type);if(d){const S=s;if(D){const le=a?"vec4":"vec2";b.push(`${le} domain = ${le}(${S}[slot], ${S}[slot + 1]);`)}b.push(`float transformed = ${d};`),y&&b.push(`transformed = (float(slot) + transformed) / (float(${S}.length()) - 1.0);`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${N0(g)});`),b.push(`return ${A!=null?A:"transformed"};`),f.push(`
60
- ${m} ${P0}${t}(${u} value) {
61
- ${b.map(S=>` ${S}
41
+ }`}function Mb(t,e,n){var B,L;if(Qe(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=En(t),i=za+t,o=M0+r,s=Db+r,a=mo(e.type),u=a?"vec2":"float",c=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:h}=Bb(e.type),p=(R,...Q)=>Tb.apply(null,[R,"value",...Q]);let d;switch(h){case"linear":d=p("scaleLinear","domain",s);break;case"log":d=p("scaleLog","domain",s,e.base());break;case"symlog":d=p("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":d=p("scalePow","domain",s,e.exponent());break;case"index":case"locus":d=p("scaleBandHp","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(B=n.band)!=null?B:.5);break;case"point":case"band":d=p("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(L=n.band)!=null?L:.5);break;case"ordinal":case"null":case"identity":d=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Gi(e.type)||Re(e.type)&&_t(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(Ae)){const R=L0(g);l.push(`const ${R.type} ${s} = ${R};`)}const A=_t(t)?"vec3":"float";let m;if(_t(t)){const R=Oa+r;if(t==r&&l.push(`uniform sampler2D ${R};`),Re(e.type))m=`getInterpolatedColor(${R}, transformed)`;else if(Zt(e.type)||vn(e.type))m=`getDiscreteColor(${R}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||vn(e.type)){const R=Oa+r;t==r&&l.push(`uniform sampler2D ${R};`),m=`getDiscreteColor(${R}, int(transformed)).r`}Lr(n)?l.push(`uniform highp ${u} ${i};`):l.push(`in highp ${u} ${i};`);const b=[],y=Re(e.type)&&c>2,v=vn(e.type)||y;if(b.push("int slot = 0;"),v){const R=o;b.push(y?`while (slot < ${R}.length() - 2 && value >= ${R}[slot + 1]) { slot++; }`:`while (slot < ${R}.length() && value >= ${R}[slot]) { slot++; }`)}const E=Re(e.type)||vn(e.type)||["band","point"].includes(e.type);if(d){const R=o;E&&(a?b.push(`vec3 domain = ${R};`):b.push(`vec2 domain = vec2(${R}[slot], ${R}[slot + 1]);`)),b.push(`float transformed = ${d};`),y&&b.push(`transformed = (float(slot) + transformed) / (float(${R}.length()) - 1.0);`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${L0(g)});`),b.push(`return ${m!=null?m:"transformed"};`),l.push(`
42
+ ${A} ${I0}${t}(${u} value) {
43
+ ${b.map(R=>` ${R}
62
44
  `).join("")}
63
- }`),f.push(`
64
- ${m} ${L0}${t}() {
65
- return ${P0}${t}(${i});
66
- }`);const C=f.join(`
67
- `);if(D&&t==r){const S=Ke(e.type)||dn(e.type)?c:2;l=`${a?"vec2":"float"} ${s}[${S}];`}return{glsl:C,domainUniform:l}}function za(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+R0;if(t==-1/0)return""+-R0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Kt(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(za).join(", ")})`):(n="float",r=za(t[0])),Object.assign(r,{type:n,numComponents:e})}function sw(t){const e=Pr(t).rgb();return Kt([e.r,e.g,e.b].map(n=>n/255))}function N0(t){return Kt([t[0],Te(t)])}function ow(t,...e){const n=[];for(const r of e)me(r)?n.push(za(r)):Be(r)?n.push(Kt(r)):n.push(r);return`${t}(${n.join(", ")})`}class aw{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(ka+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?s=>r(i(s)):s=>r(i(s)))}createUpdater(e,n,r){if(!me(this.size))throw new Error("The number of vertices must be defined!");let i,s,o=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=l=>{u=+l};i=()=>{a[o++]=u},s=c}else{let u=r!=null?r:[0];const c=r?l=>{}:l=>{u=l};switch(n){case 1:break;case 2:i=()=>{a[o++]=u[0],a[o++]=u[1]},s=c;break;case 3:i=()=>{a[o++]=u[0],a[o++]=u[1],a[o++]=u[2]},s=c;break;case 4:i=()=>{a[o++]=u[0],a[o++]=u[1],a[o++]=u[2],a[o++]=u[3]},s=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),s}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
45
+ }`),l.push(`
46
+ ${A} ${T0}${t}() {
47
+ return ${I0}${t}(${i});
48
+ }`);const C=l.join(`
49
+ `);if(E&&t==r){const R=Re(e.type)||vn(e.type)?c:2;f=a?`highp vec3 ${o};`:`mediump float ${o}[${R}];`}return{glsl:C,domainUniform:f}}function Ga(t){if(!Ae(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+P0;if(t==-1/0)return""+-P0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function nn(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Ga).join(", ")})`):(n="float",r=Ga(t[0])),Object.assign(r,{type:n,numComponents:e})}function Ib(t){const e=jt(t).rgb();return nn([e.r,e.g,e.b].map(n=>n/255))}function L0(t){return nn([t[0],Cn(t)])}function Tb(t,...e){const n=[];for(const r of e)Ae(r)?n.push(Ga(r)):Te(r)?n.push(nn(r)):n.push(r);return`${t}(${n.join(", ")})`}function mo(t){return t=="index"||t=="locus"}function Ua(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function Pb(t){return[...Ua(t[0]),t[1]-t[0]]}class Lb{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(za+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!Ae(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let u=0;const c=f=>{u=+f};i=()=>{a[s++]=u},o=c}else{let u=r!=null?r:[0];const c=r?f=>{}:f=>{u=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=u[0],a[s++]=u[1]},o=c;break;case 3:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2]},o=c;break;case 4:i=()=>{a[s++]=u[0],a[s++]=u[1],a[s++]=u[2],a[s++]=u[3]},o=c;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
68
50
  `,n+=`p${i}();
69
51
  `;const r=new Function("that",`${e}
70
52
 
@@ -72,64 +54,8 @@ ${m} ${L0}${t}() {
72
54
  ${n}
73
55
  that.vertexCount++;
74
56
  };
75
- `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Dn=5,Ua=127;function Ga(t){const e=[];for(let d=0;d<=Ua;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=Ua?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=Ua?e[d]:n.get(d))||e[63]}function s(d){return i(d.charCodeAt(0))}const o=t.common.base,a=s("x"),u=s("X"),c=s("q"),l=a.height-Dn*2,f=u.height-Dn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let m=0;for(let A=0;A<d.length;A++)m+=i(d.charCodeAt(A)).xadvance;return m/o*g}return{measureWidth:p,getCharByCode:i,getChar:s,xHeight:l,capHeight:f,descent:h,common:t.common}}function uw(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const cw=2**31-1;function fw(t,e){const n=new Int32Array(t);n.fill(cw);const r=new Int32Array(t),i=e[0],o=(e[1]-e[0])/t,a=f=>uw(Math.floor((f-i)/o),0,t-1),u=(f,h,p,d)=>{const g=a(f),m=a(h);for(let A=g;A<=m;A++)n[A]>p&&(n[A]=p),r[A]<d&&(r[A]=d)},c=(f,h)=>[n[a(f)],r[a(h)]],l=()=>{for(let f=1;f<r.length;f++)r[f]<r[f-1]&&(r[f]=r[f-1]);for(let f=r.length-1;f>0;f--)r[f-1]>r[f]&&(r[f-1]=r[f]);return c};return u.getIndex=l,u}class Lr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[],buildXIndex:i=!1}){this.encoders=e,this._buildXIndex=i,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([s,o])=>r.includes(s)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new aw(n);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.accessor,u=[0,0],c=o.scale.fp64,l=o.indexer,f=l?h=>l(a(h)):c?h=>Pa(a(h),u):a;this.variableBuilder.addConverter(s,{f,numComponents:c?2:1,arrayReference:c?u:void 0})}this.lastOffset=0,this.rangeMap=new ai([],JSON.stringify)}registerBatch(e){var s;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(s=this.xIndexer)==null?void 0:s.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){for(let s=r;s<i;s++)this.variableBuilder.pushFromDatum(n[s]);this.registerBatch(e)}prepareXIndexer(e){if(!this._buildXIndex)return;const n=this.variableEncoders.x,r=this.variableEncoders.x2;if(n&&r){const i=n.accessor,s=r.accessor;this.xIndexer=fw(50,[i(e[0]),s(Te(e))]);let o=this.variableBuilder.vertexCount;this.addToXIndex=a=>{let u=this.variableBuilder.vertexCount;this.xIndexer(i(a),s(a),o,u),o=u}}else this.xIndexer=void 0,this.addToXIndex=i=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class lw extends Lr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s,buildXIndex:o=!1}){super({encoders:e,attributes:n,numVertices:r==1/0?s*6:void 0,buildXIndex:o});this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const s=this.encoders,[o,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(s.x),l=u(s.x2);this.prepareXIndexer(n);const f=[0,0];this.updateFrac(f);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=l(p);if(d>g&&([d,g]=[g,d]),g<o||d>a)continue;d<o&&(d=o),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),f[0]=0,f[1]=0;const m=1;this.variableBuilder.pushAll();for(let A=0;A<=m;A++)f[0]=A/m,f[1]=0,this.variableBuilder.pushAll(),f[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class hw extends Lr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s,buildXIndex:o}){super({encoders:e,attributes:n,numVertices:r==1/0?s*6:void 0,buildXIndex:o});this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n);for(let s=r;s<i;s++){const o=n[s];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(e)}}class dw extends Lr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class pw extends Lr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class gw extends Lr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:s=void 0,buildXIndex:o=!1}){super({encoders:e,attributes:n,numVertices:s*6,buildXIndex:o});this.metadata=r,this.metrics=r,this.properties=i;const u=e.text.channelDef;this.numberFormat=!Pe(u)&&u.format?xe(u.format):c=>c,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var p;const s=this.properties.align||"left",o=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Dn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const l=this.encoders.text.accessor||this.encoders.text,f=[0,0];this.updateVertexCoord(f);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n);for(let d=r;d<i;d++){const g=n[d],m=this.numberFormat(l(g)),A=X(m)?m:m===null?"":""+m;if(A.length==0)continue;this.variableBuilder.updateFromDatum(g);const b=o?A.length:this.metrics.measureWidth(A);this.updateWidth(b);let y=s=="right"?-b:s=="center"?-b/2:0;if(!o){const F=this.metrics.getCharByCode(A.charCodeAt(0));y-=(F.width-F.xadvance)/a/2}let v=-.5,D=1,C=1;for(let F=0;F<A.length;F++){const S=this.metrics.getCharByCode(A.charCodeAt(F)),le=o?1:S.xadvance/a;if(S.id==32){y+=le;continue}o?(C=(S.width+Dn*2)/S.width,y=-C/2,D=(S.height+Dn*2)/S.height,v=-.5-Dn/S.height):(D=S.height/a,v=-(S.height+S.yoffset+c)/a,C=S.width/a);const se=S.x,E=S.y;f[0]=y,f[1]=v+D,h[0]=se/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v+D,h[0]=(se+S.width)/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y,f[1]=v,h[0]=se/u,h[1]=(E+S.height)/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v+D,h[0]=(se+S.width)/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y,f[1]=v,h[0]=se/u,h[1]=(E+S.height)/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v,h[0]=(se+S.width)/u,h[1]=(E+S.height)/u,this.variableBuilder.pushAll(),y+=le}this.addToXIndex(n)}this.registerBatch(e)}}var mw=`uniform float ONE;/*About LUMA_FP64_CODE_ELIMINATION_WORKAROUNDThe purpose of this workaround is to prevent shader compilers fromoptimizing away necessary arithmetic operations by swapping their sequencesor transform the equation to some 'equivalent' from.The method is to multiply an artifical variable,ONE,which will be known tothe compiler to be 1 only at runtime. The whole expression is then representedas a polynomial with respective to ONE. In the coefficients of all terms,only one aand one b should appearerr=(a+b)*ONE^6-a*ONE^5-(a+b)*ONE^4+a*ONE^3-b-(a+b)*ONE^2+a*ONE*/vec2 split(float a){const float SPLIT=4097.0;float t=a*SPLIT;
76
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
77
- float a_hi=t*ONE-(t-a);float a_lo=a*ONE-a_hi;
78
- #else
79
- float a_hi=t-(t-a);float a_lo=a-a_hi;
80
- #endif
81
- return vec2(a_hi,a_lo);}vec2 split2(vec2 a){vec2 b=split(a.x);b.y+=a.y;return b;}vec2 quickTwoSum(float a,float b){
82
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
83
- float sum=(a+b)*ONE;float err=b-(sum-a)*ONE;
84
- #else
85
- float sum=a+b;float err=b-(sum-a);
86
- #endif
87
- return vec2(sum,err);}vec2 twoSum(float a,float b){float s=(a+b);
88
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
89
- float v=(s*ONE-a)*ONE;float err=(a-(s-v)*ONE)*ONE*ONE*ONE+(b-v);
90
- #else
91
- float v=s-a;float err=(a-(s-v))+(b-v);
92
- #endif
93
- return vec2(s,err);}vec2 twoSub(float a,float b){float s=(a-b);
94
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
95
- float v=(s*ONE-a)*ONE;float err=(a-(s-v)*ONE)*ONE*ONE*ONE-(b+v);
96
- #else
97
- float v=s-a;float err=(a-(s-v))-(b+v);
98
- #endif
99
- return vec2(s,err);}vec2 twoSqr(float a){float prod=a*a;vec2 a_fp64=split(a);
100
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
101
- float err=((a_fp64.x*a_fp64.x-prod)*ONE+2.0*a_fp64.x*a_fp64.y*ONE*ONE)+a_fp64.y*a_fp64.y*ONE*ONE*ONE;
102
- #else
103
- float err=((a_fp64.x*a_fp64.x-prod)+2.0*a_fp64.x*a_fp64.y)+a_fp64.y*a_fp64.y;
104
- #endif
105
- return vec2(prod,err);}vec2 twoProd(float a,float b){float prod=a*b;vec2 a_fp64=split(a);vec2 b_fp64=split(b);float err=((a_fp64.x*b_fp64.x-prod)+a_fp64.x*b_fp64.y+a_fp64.y*b_fp64.x)+a_fp64.y*b_fp64.y;return vec2(prod,err);}vec2 sum_fp64(vec2 a,vec2 b){vec2 s,t;s=twoSum(a.x,b.x);t=twoSum(a.y,b.y);s.y+=t.x;s=quickTwoSum(s.x,s.y);s.y+=t.y;s=quickTwoSum(s.x,s.y);return s;}vec2 sub_fp64(vec2 a,vec2 b){vec2 s,t;s=twoSub(a.x,b.x);t=twoSub(a.y,b.y);s.y+=t.x;s=quickTwoSum(s.x,s.y);s.y+=t.y;s=quickTwoSum(s.x,s.y);return s;}vec2 mul_fp64(vec2 a,vec2 b){vec2 prod=twoProd(a.x,b.x);prod.y+=a.x*b.y;
106
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
107
- prod=split2(prod);
108
- #endif
109
- prod=quickTwoSum(prod.x,prod.y);prod.y+=a.y*b.x;
110
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
111
- prod=split2(prod);
112
- #endif
113
- prod=quickTwoSum(prod.x,prod.y);return prod;}vec2 div_fp64(vec2 a,vec2 b){float xn=1.0/b.x;
114
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
115
- vec2 yn=mul_fp64(a,vec2(xn,0));
116
- #else
117
- vec2 yn=a*xn;
118
- #endif
119
- float diff=(sub_fp64(a,mul_fp64(b,yn))).x;vec2 prod=twoProd(xn,diff);return sum_fp64(yn,prod);}vec2 sqrt_fp64(vec2 a){if(a.x==0.0&&a.y==0.0)return vec2(0.0,0.0);if(a.x<0.0)return vec2(0.0/0.0,0.0/0.0);float x=1.0/sqrt(a.x);float yn=a.x*x;
120
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
121
- vec2 yn_sqr=twoSqr(yn)*ONE;
122
- #else
123
- vec2 yn_sqr=twoSqr(yn);
124
- #endif
125
- float diff=sub_fp64(a,yn_sqr).x;vec2 prod=twoProd(x*0.5,diff);
126
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
127
- return sum_fp64(split(yn),prod);
128
- #else
129
- return sum_fp64(vec2(yn,0.0),prod);
130
- #endif
131
- }`,k0=`#define PI 3.141593
132
- uniform vec2 uViewOffset;uniform vec2 uViewScale;uniform vec2 uViewportSize;uniform lowp float uDevicePixelRatio;uniform lowp float uViewOpacity;/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Aw="vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=(stop-start)/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(stop-start-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}",xw="float scaleIdentityFp64(vec2 value){return value[0];}float scaleLinearFp64(vec2 value,vec4 domain,vec2 range){vec2 domainSpan=sub_fp64(domain.zw,domain.xy);float rangeSpan=range[1]-range[0];float unitValue=div_fp64(sub_fp64(value,domain.xy),domainSpan).x;return unitValue*rangeSpan+range[0];}float scaleBandFp64(vec2 value,vec4 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];vec2 domainSpan=sub_fp64(domainExtent.zw,domainExtent.xy);float n=domainSpan.x;float step=(stop-start)/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(stop-start-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+sub_fp64(value,domainExtent.xy).x*step+bandwidth*band;}",yw=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
57
+ `);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Rn=5,Ha=127;function Qa(t){const e=[];for(let d=0;d<=Ha;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=Ha?e[d.id]=d:n.set(d.id,d);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(d){return(d<=Ha?e[d]:n.get(d))||e[63]}function o(d){return i(d.charCodeAt(0))}const s=t.common.base,a=o("x"),u=o("X"),c=o("q"),f=a.height-Rn*2,l=u.height-Rn*2,h=c.height-a.height+c.yoffset-a.yoffset;function p(d,g=1){let A=0;for(let m=0;m<d.length;m++)A+=i(d.charCodeAt(m)).xadvance;return A/s*g}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:h,common:t.common}}function Rb(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const R0=2**31-1,kb=-(2**31);function Nb(t,e,n,r=n){const i=new Int32Array(t);i.fill(R0);let o=kb,s=!1;const a=new Int32Array(t),u=e[0],f=(e[1]-e[0])/t,l=A=>Rb(Math.floor((A-u)/f),0,t-1);function h(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),v=l(y);i[v]>m&&(i[v]=m),a[v]<b&&(a[v]=b)}function p(A,m,b){m>o?o=m:s||(s=!0,console.debug("Items are not ordered properly. Disabling binned index."));const y=n(A),v=r(A),E=l(y),C=l(v);for(let B=E;B<=C;B++)i[B]>m&&(i[B]=m),a[B]<b&&(a[B]=b)}const d=(A,m,b=[0,0])=>(b[0]=i[l(A)],b[1]=Math.max(a[l(m)],b[0]),b),g=()=>{for(let m=1;m<a.length;m++)a[m]<a[m-1]&&(a[m]=a[m-1]);let A=!0;for(let m=i.length-1;m>0;m--)A&&i[m]==R0?(i[m]=a[m],A=!1):i[m-1]>i[m]&&(i[m-1]=i[m]);return d};if(h.getIndex=g,p.getIndex=g,!s)return n==r?h:p}class Vr{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new Lb(n);for(const[i,o]of Object.entries(this.variableEncoders)){const s=o.accessor,a=[0,0],u=mo(o.scale.type),c=o.indexer,f=c?l=>c(s(l)):u?l=>Ua(s(l),a):s;this.variableBuilder.addConverter(i,{f,numComponents:u?2:1,arrayReference:u?a:void 0})}this.lastOffset=0,this.rangeMap=new Rt([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.pushFromDatum(s),this.addToXIndex(s)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){if(!e.length||r-n<0){this.addToXIndex=a=>{};return}const i=a=>{var u;return a&&Re((u=a.scale)==null?void 0:u.type)&&a},o=i(this.variableEncoders.x),s=i(this.variableEncoders.x2);if(o){const a=o.accessor,u=s?s.accessor:a;this.xIndexer=Nb(50,[a(e[n]),u(e[r-1])],a,u);let c=this.variableBuilder.vertexCount;this.addToXIndex=f=>{let l=this.variableBuilder.vertexCount;this.xIndexer(f,c,l),c=l}}else this.xIndexer=void 0,this.addToXIndex=a=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class zb extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[s,a]=this.visibleRange,u=h=>h.accessor||(p=>0),c=u(o.x),f=u(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let h=r;h<i;h++){const p=n[h];let d=c(p),g=f(p);if(d>g&&([d,g]=[g,d]),g<s||d>a)continue;d<s&&(d=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const A=1;this.variableBuilder.pushAll();for(let m=0;m<=A;m++)l[0]=m/A,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class Ob extends Vr{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let u=0;u<=a;u++)this.updatePos(u/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class Gb extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class Ub extends Vr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class Hb extends Vr{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=e.text.channelDef;this.numberFormat=!Qe(a)&&a.format?ae(a.format):u=>u,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){var p;const o=this.properties.align||"left",s=(p=this.properties.logoLetters)!=null?p:!1,a=this.metadata.common.base,u=this.metadata.common.scaleH;let c=-Rn;switch(this.properties.baseline){case"top":c+=this.metrics.capHeight;break;case"middle":c+=this.metrics.capHeight/2;break;case"bottom":c-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(n,r,i);for(let d=r;d<i;d++){const g=n[d],A=this.numberFormat(f(g)),m=q(A)?A:A===null?"":""+A;if(m.length==0)continue;this.variableBuilder.updateFromDatum(g);const b=s?m.length:this.metrics.measureWidth(m);this.updateWidth(b);let y=o=="right"?-b:o=="center"?-b/2:0;if(!s){const B=this.metrics.getCharByCode(m.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let v=-.5,E=1,C=1;for(let B=0;B<m.length;B++){const L=this.metrics.getCharByCode(m.charCodeAt(B)),R=s?1:L.xadvance/a;if(L.id==32){y+=R;continue}s?(C=(L.width+Rn*2)/L.width,y=-C/2,E=(L.height+Rn*2)/L.height,v=-.5-Rn/L.height):(E=L.height/a,v=-(L.height+L.yoffset+c)/a,C=L.width/a);const Q=L.x,T=L.y;l[0]=y,l[1]=v+E,h[0]=Q/u,h[1]=T/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=v+E,h[0]=(Q+L.width)/u,h[1]=T/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=v,h[0]=Q/u,h[1]=(T+L.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=v+E,h[0]=(Q+L.width)/u,h[1]=T/u,this.variableBuilder.pushAll(),l[0]=y,l[1]=v,h[0]=Q/u,h[1]=(T+L.height)/u,this.variableBuilder.pushAll(),l[0]=y+C,l[1]=v,h[0]=(Q+L.width)/u,h[1]=(T+L.height)/u,this.variableBuilder.pushAll(),y+=R}this.addToXIndex(g)}this.registerBatch(e)}}var k0=`#define PI 3.141593
58
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : vec4(0.0),distanceToRatio(sd));}else{return fill*distanceToRatio(-d);}}`,Qb="const float inf=1.0/0.0;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(float value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(value-domainExtent[0])*step+bandwidth*band;}float scaleBandHp(vec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);float hi=max(value[0]-domainStart[0],-inf);float lo=max(value[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",jb=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
133
59
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
134
60
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
135
61
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -137,35 +63,36 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
137
63
  #elif defined(SAMPLE_FACET_TEXTURE)
138
64
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
139
65
  #endif
140
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,bw=`/**Based on concepts presented at:*https:*https:*/uniform bool uPickingEnabled;flat out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
66
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,Vb=`/**Based on concepts presented at:*https:*https:*/flat out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
141
67
  #ifdef uniqueId_DEFINED
142
68
  int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
143
69
  #else
144
70
  vPickingColor=vec4(1.0);
145
71
  #endif
146
- return true;}return false;}`,ww="uniform bool uPickingEnabled;flat in highp vec4 vPickingColor;";const rs=Symbol("cacheMap");function Sn(t,e,n){let r=Rr(t).get(e);return r===void 0&&(r=n(e),Rr(t).set(e,r)),r}function O0(t,e){Rr(t).delete(e)}function is(t,e){const n=Rr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Rr(t).delete(e)}function z0(t){t[rs]=new Map}function Rr(t){return t[rs]||z0(t),t[rs]}function vw(t,e,n,r){const i=X(t)?t:t.name,s=!X(t)&&t.extent||[0,1];if(n===void 0&&!X(t)&&(n=t.count),i){const o=jo(i);if(ge(o)){const a=G0(o,{extent:s,count:n});return ss(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Be(o))return U0(o,e);throw new Error("Unknown scheme: "+i)}}}function Ew(t,e="rgb",n,r){const i=Si(t,X(e)?e:e.type,X(e)?void 0:e.gamma),s=G0(i);return ss(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},s,r)}function Cw(t,e,n,r){const i=Math.max(t.length,n||0),s=new Float32Array(i);for(let o=0;o<i;o++)s[o]=t[o%t.length];return ss(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},s,r)}function U0(t,e,n,r){const i=H0(t,n);return ss(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function G0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],s=Te(e)-i,o=ci(r).map(a=>a/(r-1)).map(a=>i+a/s).map(t);return n&&o.reverse(),H0(o)}function H0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const s=Pr(t[i%t.length]).rgb();r[i*3+0]=s.r,r[i*3+1]=s.g,r[i*3+2]=s.b}return r}class Dw{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=R2(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!gn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");w0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=O2(i),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=B2(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(s=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Be(n)&&(n=n.join(`
72
+ return true;}return false;}`,Yb="flat in highp vec4 vPickingColor;";const Ao=Symbol("cacheMap");function kn(t,e,n){let r=Yr(t).get(e);return r===void 0&&(r=n(e),Yr(t).set(e,r)),r}function N0(t,e){Yr(t).delete(e)}function xo(t,e){const n=Yr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Yr(t).delete(e)}function z0(t){t[Ao]=new Map}function Yr(t){return t[Ao]||z0(t),t[Ao]}function Wb(t,e,n,r){const i=q(t)?t:t.name,o=!q(t)&&t.extent||[0,1];if(n===void 0&&!q(t)&&(n=t.count),i){const s=Ks(i);if(me(s)){const a=G0(s,{extent:o,count:n});return yo(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Te(s))return O0(s,e);throw new Error("Unknown scheme: "+i)}}}function Xb(t,e="rgb",n,r){const i=Ui(t,q(e)?e:e.type,q(e)?void 0:e.gamma),o=G0(i);return yo(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function Zb(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return yo(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function O0(t,e,n,r){const i=U0(t,n);return yo(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function G0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Cn(e)-i,s=Zn(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),U0(s)}function U0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=jt(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class Kb{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=Cb(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Sn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");F0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=Ab(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";Te(n)&&(n=n.join(`
147
73
 
148
- `));const s=this.gl,o=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(o);if(!a){const u=[r,i,n].join(`
74
+ `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const u=[r,i,n].join(`
149
75
 
150
- `);a=s.createShader(e),s.shaderSource(a,u),s.compileShader(a),this._shaderCache.set(o,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,F2(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var s,o,a,u;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(o=(s=this._sizeSource)==null?void 0:s.call(this))!=null?o:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(u=e.height)!=null?u:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,s=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,s),r.bindFramebuffer(r.FRAMEBUFFER,null),s}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(o,a){return Vt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?o!=null?o:4:o}const s=e.channel;if(Wt(s)){const o=e.getScaleProps(),a=e.getScale();let u;if(o.scheme){let c=X(o.scheme)?void 0:o.scheme.count;c=i(c,a),u=vw(o.scheme,this.gl,c,r)}else{const c=a.range();Di(a.type)?u=Ew(c,o.interpolate,this.gl,r):u=U0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const o=e.getScale();if(o.type==="ordinal"||dn(o.type)){const a=Li(s)?fl(s):c=>c,u=e.getScale().range();this.rangeTextures.set(e,Cw(u.map(a),this.gl,o.domain().length,r))}}}}function Sw(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],s=new Map(i.map((o,a)=>{const u=parseInt(o[1]),c=i[a+1],l=c?c.index:e.length,f=e.substring(o.index,l);return[u-1,f]}));return t.split(`
151
- `).map((o,a)=>{const u=s.get(a);return`${a+1+n}: ${o}${u?`
76
+ `);a=o.createShader(e),o.shaderSource(a,u),o.compileShader(a),this._shaderCache.set(s,a)}return a}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,xb(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o,s,a,u;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(u=e.height)!=null?u:this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(s,a){return Zt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(_t(o)){const s=e.getScaleProps(),a=e.getScale();let u;if(s.scheme){let c=q(s.scheme)?void 0:s.scheme.count;c=i(c,a),u=Wb(s.scheme,this.gl,c,r)}else{const c=a.range();Gi(a.type)?u=Xb(c,s.interpolate,this.gl,r):u=O0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const s=e.getScale();if(s.type==="ordinal"||vn(s.type)){const a=Xi(o)?pf(o):c=>c,u=e.getScale().range();this.rangeTextures.set(e,Zb(u.map(a),this.gl,s.domain().length,r))}}}}function qb(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const u=parseInt(s[1]),c=i[a+1],f=c?c.index:e.length,l=e.substring(s.index,f);return[u-1,l]}));return t.split(`
77
+ `).map((s,a)=>{const u=o.get(a);return`${a+1+n}: ${s}${u?`
152
78
 
153
79
  ^^^ ${u}`:""}`}).join(`
154
- `)}function Mw(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let s,o;if(!t.getProgramParameter(r,t.LINK_STATUS)){s=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(s=t.getShaderInfoLog(u),o=Sw(t.getShaderSource(u),s,0)+`
155
- Error compiling: ${s}`,t.deleteShader(u));t.deleteProgram(r)}if(s)return{message:s,detail:o}}return{program:r,getProgramErrors:i}}function ss(t,e,n,r){return r?Gl(t,r,n,e):r=Sr(t,Se(T({},e),{src:n})),r}function Bw(...t){const e={get(n,r,i){for(const s of t){const a=s()[r];if(a!==void 0)return a}},has(n,r,i){for(const s of t){const o=s();if(r in o)return!0}return!1}};return new Proxy({},e)}function Fw(t){return X(t)||me(t)||Qr(t)}const Iw="SAMPLE_FACET_UNIFORM",V0="SAMPLE_FACET_TEXTURE";class Nr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=Bw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return Sn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=o=>{const a=this.properties[o];return Fw(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(o=>[o,r(o)]).filter(o=>o[1].value!==void 0)),s=this.fixEncoding(T(T(T({},e),i),n));for(const o of Object.keys(s))this.getSupportedChannels().includes(o)||delete s[o];return s})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=z1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return V0;if(this.unitView.getFacetAccessor())return Iw}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let s=[];const o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);for(const f of i){let h;if(f in this.encoding)h=f;else continue;const p=this.encoding[h];if(!!p)if(Pe(p))s.push(rw(h,p.value));else{const d=Le(p)&&p.resolutionChannel||h,g=this.unitView.getScaleResolution(d).getScale(),m=iw(h,g,p);s.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
156
- `+this.domainUniforms.map(f=>` ${f}
80
+ `)}function Jb(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const u of[e,n])t.getShaderParameter(u,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(u),s=qb(t.getShaderSource(u),o,0)+`
81
+ Error compiling: ${o}`,t.deleteShader(u));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function yo(t,e,n,r){return r?Vf(t,r,n,e):r=Qr(t,Se(F({},e),{src:n})),r}function _b(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function $b(t){return q(t)||Ae(t)||si(t)}const ew="SAMPLE_FACET_UNIFORM",H0="SAMPLE_FACET_TEXTURE";class Wr{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new tw,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=_b(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return kn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return $b(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding(F(F(F({},e),i),n));for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=M1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return H0;if(this.unitView.getFacetAccessor())return ew}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const h of i){let p;if(h in this.encoding)p=h;else continue;const d=this.encoding[p];if(!!d)if(Qe(d))o.push(Fb(p,d.value));else{const g=ke(d)&&d.resolutionChannel||p,A=this.unitView.getScaleResolution(g).getScale(),m=Mb(p,A,d);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
82
+ `+this.domainUniforms.map(h=>` ${h}
157
83
  `).join("")+`};
158
84
 
159
- `:"",u=[...r,k0,Aw,a,...s,yw,bw,e];u.some(f=>/[Ff]p64/.test(f))&&(u.unshift(xw),u.unshift(mw));const c=[...r,k0,ww,n],l=this.gl;this.programStatus=Mw(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),this.glHelper.compileShader(l.FRAGMENT_SHADER,c))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=l2(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=o2(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Ar(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):r.scale.fp64?Pa(+n.datum):+n.datum;fe(this.programInfo,{[ka+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&wx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=Cx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var i;const n=this.glHelper,r=this.gl;if(this.vertexArrayInfo||(this.vertexArrayInfo=I2(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program),this.domainUniformInfo){for(const[s,o]of Object.entries(this.domainUniformInfo.setters)){const a=s.substring(T0.length),u=this.encoding[a],c=Le(u)&&u.resolutionChannel||a,l=this.unitView.getScaleResolution(c);if(l){const f=l.getScale(),h=Vt(f.type)?[0,f.domain().length]:f.domain();o(f.fp64?h.map(p=>Pa(p)).flat():h)}}u2(r,this.programInfo,this.domainUniformInfo)}for(const[s,o]of Object.entries(this.encoding))if(Le(o)){const a=Le(o)&&o.resolutionChannel||s,u=this.unitView.getScaleResolution(a),c=n.rangeTextures.get(u);c&&fe(this.programInfo,{[Oa+s]:c})}if(this.getSampleFacetMode()==V0){let s;for(const o of this.unitView.getAncestors())if(s=o.getSampleFacetTexture(),s)break;fe(this.programInfo,{uSampleFacetTexture:s})}fe(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),fe(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0}),this.opaque||e.picking?r.disable(r.BLEND):r.enable(r.BLEND)}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,s=n.locSize?n.locSize.size:1;if(i>1||i+s<0)return!1;const o=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:s;this.gl.uniform4f(r.location,i,s,o,a)}return!0}render(e){}createRenderCallback(e,n,r){var o;const i=this;let s;if(this.properties.buildIndex){const a=(o=this.unitView.getScaleResolution("x"))==null?void 0:o.getScale();s=u=>{if(a&&u.xIndex){const c=a.domain(),l=u.xIndex(c[0],c[1]),f=l[0],h=l[1]-f;h>0&&e(f,h)}else e(u.offset,u.count)}}else s=a=>e(a.offset,a.count);if(this.properties.dynamicData)return function(){const u=r().get(n.facetId);u&&u.count&&i.prepareSampleFacetRendering(n)&&s(u)};{const a=r().get(n.facetId);if(a&&a.count)return function(){i.prepareSampleFacetRendering(n)&&s(a)}}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,s=this.properties,o=this.glHelper.getLogicalCanvasSize(),a=.5,u=(s.xOffset||0)+a,c=(s.yOffset||0)+a;let l,f=e;if(s.clip||n){let h=0,p=0,d;n?(f=s.clip?e.intersect(n):n,d=[e.width/f.width,e.height/f.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,o.height-f.y2,Math.max(0,f.width),Math.max(0,f.height)].map(y=>y*r),m=g.map(y=>Math.floor(y)),[A,b]=g.map((y,v)=>y-m[v]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(u+h+A)/f.width,-(c+p-b)/f.height],uViewScale:d}}else i.viewport(0,0,o.width*r,o.height*r),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(e.x+u)/o.width,(o.height-e.y-c-e.height)/o.height],uViewScale:[e.width/o.width,e.height/o.height]};return fe(this.programInfo,l),fe(this.programInfo,{uViewportSize:[e.width,e.height]}),f.height>0&&f.width>0}findDatumAt(e,n){}}function Ha(t,e){var s;const n=V1(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(Pe(r)||Pe(i))){if(r){if(!Le(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i=T({},r);const o=(1-((s=r.band)!=null?s:1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Q0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Pe(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function j0(t,e){Pe(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class Tw extends Nr{constructor(e){super(e);Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return Sn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Pe(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ha(e,"x"),Ha(e,"y"),Q0(e,this.properties.filled),j0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Pe(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(N2,k2,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new lw({encoders:this.encoders,attributes:this.getAttributes(),numItems:n,buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){var r,i,s,o;super.prepareRender(e);const n=this.properties;fe(this.programInfo,{uMinSize:[n.minWidth,n.minHeight],uMinOpacity:n.minOpacity,uCornerRadii:[(r=n.cornerRadiusTopRight)!=null?r:n.cornerRadius,(i=n.cornerRadiusBottomRight)!=null?i:n.cornerRadius,(s=n.cornerRadiusTopLeft)!=null?s:n.cornerRadius,(o=n.cornerRadiusBottomLeft)!=null?o:n.cornerRadius]}),En(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Mr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=qe(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),s=r.x.accessor,o=r.x2.accessor;if(i)return i.find(a=>n>=s(a)&&n<o(a))}}var Pw=`precision mediump float;/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
85
+ `:"",c=[`precision highp float;
86
+ `,...r,k0,Qb,a,...o,jb,Vb,e],f=[...r,k0,Yb,n],l=this.gl;this.programStatus=Jb(l,this.glHelper.compileShader(l.VERTEX_SHADER,c),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=eb(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=A0(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=A0(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),De(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Lr(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):mo(r.scale.type)?Ua(+n.datum):+n.datum;De(this.programInfo,{[za+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&hx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=gx(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){var s;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=yb(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,u]of Object.entries(this.domainUniformInfo.setters)){const c=a.substring(M0.length),f=this.encoding[c],l=ke(f)&&f.resolutionChannel||c,h=this.unitView.getScaleResolution(l);if(h){const p=h.getScale();i.push(()=>{const d=Zt(p.type)?[0,p.domain().length]:p.domain();u(mo(p.type)?Pb(d):d)})}}i.push(()=>x0(r,this.programInfo,this.domainUniformInfo))}for(const[a,u]of Object.entries(this.encoding))if(ke(u)){const c=ke(u)&&u.resolutionChannel||a,f=this.unitView.getScaleResolution(c),l=n.rangeTextures.get(f);l&&i.push(()=>De(this.programInfo,{[Oa+a]:l}))}this.getSampleFacetMode()==H0&&i.push(()=>{let a;for(const u of this.unitView.getAncestors())if(a=u.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");De(this.programInfo,{uSampleFacetTexture:a})});const o=((s=e.picking)!=null?s:!1)&&this.isPickingParticipant();return i.push(()=>y0(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n){var f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),s=o&&Re(o.type),a=["index","locus"].includes(o==null?void 0:o.type)?-1:0,u=[0,0];i=l=>{if(s&&l.xIndex){const h=o.domain(),p=l.xIndex(h[0]+a,h[1],u),d=p[0],g=p[1]-d;g>0&&e(d,g)}else e(l.offset,l.count)};const c=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){c.count&&r.prepareSampleFacetRendering(n)&&i(c)}:function(){c.count&&i(c)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,u=(o.xOffset||0)+a,c=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let h=0,p=0,d;n?(l=o.clip?e.intersect(n):n,d=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),h=Math.max(0,e.x2-n.x2)):d=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(y=>y*r),A=g.map(y=>Math.floor(y)),[m,b]=g.map((y,v)=>y-A[v]);i.viewport(...A),i.scissor(...A),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(u+h+m)/l.width,-(c+p-b)/l.height],uViewScale:d}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+u)/s.width,(s.height-e.y-c-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return y0(this.viewUniformInfo,Se(F({},f),{uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr})),x0(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class tw extends Rt{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function ja(t,e){var o;const n=L1(e);let r=t[e]&&F({},t[e]),i=t[n]&&F({},t[n]);if(!(Qe(r)||Qe(i))){if(r){if(!ke(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i=F({},r);const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Q0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=F({resolutionChannel:"color"},t.color)),Qe(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=F({resolutionChannel:"opacity"},t.opacity))}function j0(t,e){Qe(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=F({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=F({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class nw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","fill","stroke","fillOpacity","strokeOpacity","strokeWidth"]}get opaque(){return kn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Qe(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return ja(e,"x"),ja(e,"y"),Q0(e,this.properties.filled),j0(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(Qe(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(Eb,Sb,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;De(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new zb({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Je(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}var rw=`/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){
160
87
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
161
88
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
162
89
  #else
163
90
  return vec2(0.0,0.0);
164
91
  #endif
165
- }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,Lw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}";const lt=1<<0,It=1<<1,Rw={};class q{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",ci(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
166
- `)+`return function propagate(datum) {${ci(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
92
+ }void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,iw="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}";const lt=1<<0,It=1<<1,ow={};class _{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",Zn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
93
+ `)+`return function propagate(datum) {${Zn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
167
94
  `)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
168
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():Rw}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function Y0(t){return t.type=="file"}function Nw(t){return t.type=="facet"}class W0 extends q{constructor(e){super();this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function kw(t,e,n){const r=new W0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const Ow={};class zw extends Nr{constructor(e){super(e);Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return T(T({},super.getDefaultEncoding()),Ow)}fixEncoding(e){return Q0(e,this.properties.filled),j0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(kw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Pw,Lw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;fe(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new dw({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Zg(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),fe(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),En(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=oi(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),s=hs(i,null,1.01);this._findIndices=o=>{const a=this.unitView.getCollector().facetBatches.get(o);return[r(a,s[0]),r(a,s[s.length-1])]}}}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{const[s,o]=this._findIndices?this._findIndices(e.facetId):[0,i],a=o-s;a&&Mr(n,this.vertexArrayInfo,n.POINTS,a,r+s)},e,()=>this.rangeMap)}}var Uw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform float uDashTextureSize;uniform lowp int uStrokeCap;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",Gw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Hw extends Nr{constructor(e){super(e);this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Le(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Le(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=Vw(this.properties.strokeDash);this.dashTexture=Sr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(Uw,Gw)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new hw({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){super.prepareRender(e),fe(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&fe(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),En(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Mr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function Vw(t){if(t.length==0||t.length%2||t.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((s,o)=>s+o),n=new Uint8Array(e);let r=!0,i=0;for(let s of t){for(;s;)n[i++]=r&&255||0,s--;r=!r}return n}var Qw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
95
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():ow}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function V0(t){return t.type=="file"}function sw(t){return t.type=="facet"}class Y0 extends _{constructor(e){super(),this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(const e of this.reservoir)this._propagate(e);super.complete()}}function aw(t,e,n){const r=new Y0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const uw={};class cw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,color:"#4c78a8",filled:!0,opacity:1,size:100,semanticScore:0,shape:"circle",strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"size","semanticScore","shape","strokeWidth","dx","dy","fill","stroke","fillOpacity","strokeOpacity","angle"]}getDefaultEncoding(){return F(F({},super.getDefaultEncoding()),uw)}fixEncoding(e){return Q0(e,this.properties.filled),j0(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(aw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(rw,iw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;De(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Gb({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Tu(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>De(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&jr(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}var lw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;uniform float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}",fw="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;uniform float uDashTextureSize;uniform float uStrokeDashOffset;uniform lowp int uStrokeCap;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class hw extends Wr{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&ke(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&ke(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=dw(this.properties.strokeDash);this.dashTexture=Qr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(lw,fw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;De(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Ob({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>De(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function dw(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,s)=>o+s),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}var pw=`uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);
169
96
  #ifdef size2_DEFINED
170
97
  float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
171
98
  #else
@@ -177,7 +104,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
177
104
  #else
178
105
  vec3 color=getScaled_color();
179
106
  #endif
180
- vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,jw="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class Yw extends Nr{constructor(e){super(e);Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Qw,jw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;fe(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new pw({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Ww(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([s,o])=>[s,Se(T({},o),{data:void 0})])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const s of Object.entries(this.bufferInfo.attribs)){const[o,a]=s;a.buffer&&this.arrays[o].numComponents&&(a.offset=r*this.arrays[o].numComponents*4)}En(n,this.programInfo,this.bufferInfo),Mr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function Ww(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var Xw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
107
+ vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,gw="in lowp vec4 vColor;in float vSize;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}";class mw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(pw,gw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;De(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new Ub({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Aw(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,Se(F({},s),{data:void 0})])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[s,a]=o;a.buffer&&this.arrays[s].numComponents&&(a.offset=r*this.arrays[s].numComponents*4)}Ln(n,this.programInfo,this.bufferInfo),jr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function Aw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var xw=`uniform float uSdfNumerator;uniform vec2 uD;in mediump vec2 vertexCoord;in lowp vec2 textureCoord;uniform vec4 uViewportEdgeFadeWidth;uniform vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;in float width;uniform ivec2 uAlign;
181
108
  #ifdef x2_DEFINED
182
109
  uniform float uPaddingX;uniform bool uFlushX;
183
110
  #endif
@@ -197,7 +124,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
197
124
  #ifdef y2_DEFINED
198
125
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
199
126
  #endif
200
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,Zw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}";const Kw={left:-1,center:0,right:1},qw={top:-1,middle:0,bottom:1,alphabetic:1};class Jw extends Nr{constructor(e){super(e);Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of xr)this.properties.fitToBand&&Ha(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Xw,Zw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;fe(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[Kw[e.align],qw[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let s=0;const o=r.text.format?xe(r.text.format):c=>c;for(const c of n){const l=o(i(c)),f=X(l)?l:l===null?"":""+l;s+=f&&f.length||0}const a=new gw({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap=u.rangeMap,this.updateBufferInfo(u)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),fe(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),En(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Mr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function _w(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:s}={}){n=n||0,i=i||0;let o=0,a=0;for(const d of t)o+=kr(d.px)+(os(d)?0:n),a+=kr(d.grow);o-=n;const u=Math.max(0,e-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,l=[],f=[],h=d=>{const g=l.length;if(!g)return;const m=(d?n:0)*(s?-1:1);p-=m;for(let A=0;A<g;A++)f.push({location:p+(A+1)/(g+1)*m,size:0});p+=m,l.length=0};let p=s?Math.max(e,o):0+i;if(t.length==1&&os(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(os(g))l.push(g);else{h(f.length>0);const m=kr(g.px)+(a?kr(g.grow)/a*u:0);s&&(p-=m),f.push({location:c(p),size:c(m)}),s?p-=n:p+=m+n}}return p+=s?n:-n,h(!1),f}function $w(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=kr(r.px)+(os(r)?0:e);return Math.max(0,n-e)}class Tt{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new Tt({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const X0=Object.freeze({px:0,grow:0}),Z0=new Tt(X0,X0);function os(t){return!t.px&&!t.grow}function kr(t){return t||0}function ev(t){return t&&(me(t.px)||me(t.grow))}function Va(t){if(J0(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(ev(t))return t;if(me(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Ge{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Ge(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ge(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Qa}static createFromRecord(e){return new Ge(e.top,e.right,e.bottom,e.left)}static zero(){return Qa}static createUniformPadding(e){return new Ge(e,e,e,e)}}const Qa=Ge.createUniformPadding(0);Object.freeze(Qa);const tv=/^([A-Za-z]+:)?\/\//;function nv(t,e){if(e&&tv.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const as="VISIT_SKIP",Or="VISIT_STOP",K0=t=>t;class q0{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},z0(this),this.opacityFunction=K0}getPadding(){return this._cache("size/padding",()=>Ge.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Z0)}getSizeFromSpec(){const e=n=>{var i,s;let r=this.spec[n];if(J0(r)){const o=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let u=0;if(Vt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const l=a.domain();u=Te(l)-l[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return u=zo(u,c.paddingInner(),c.paddingOuter()),{px:u*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(s=r&&Va(r))!=null?s:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new Tt(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const s of i[n.type]||[])s(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let s=i[e];s||(s=[],i[e]=s),s.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==Or)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===K0)&&(this.opacityFunction=iv(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(e){const n=this.parent?this.parent.getEncoding(this):{},r=this.spec.encoding||{},i=T(T({},n),r);for(const[s,o]of Object.entries(i))o===null&&delete i[s];return i}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return mr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=pn(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return nv(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}_cache(e,n){return Sn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":is(this,e);break;case"ancestors":for(const r of this.getAncestors())is(r,e);break;case"progeny":this.visit(r=>is(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function rv(t){return"unitsPerPixel"in t}function iv(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(rv(e)){const n=s=>{var a;const o=(a=t.getScaleResolution(s))==null?void 0:a.getScale();if(["linear","index","locus"].includes(o==null?void 0:o.type))return o},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=Io().domain(e.unitsPerPixel).range(e.values).clamp(!0);return s=>{const a=jr(r.domain())/1e3;return i(a)*s}}}return n=>n}const J0=t=>!!(t==null?void 0:t.step);class ht extends q0{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===Or)return n;if(n!==as){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Or)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof ht)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function us(t,e,n){if(n=n||[],t.some(o=>o===null)){if(t.every(o=>o===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||Mn(o)&&Mn(a)||Mn(o)&&a===!0||o===!0&&Re(a),s=o=>{for(let a in o){const u=o[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(Mn(c))Mn(u)&&(r[a]=us([c,u],a));else if(Mn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=us([{},u],a)}else r[a]=u}}};for(const o of t)s(o);return r}function Mn(t){return Re(t)&&!Array.isArray(t)}/*!
127
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator);vColor=vec4(getScaled_color()*opacity,opacity);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,yw="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}void main(){vec3 c=texture(uTexture,vTexCoord).rgb;float sigDist=1.0-median(c.r,c.g,c.b);float opa=clamp((sigDist-0.5)*vSlope+0.5,0.0,1.0);opa*=pow(clamp(vEdgeFadeOpacity,0.0,1.0),2.2);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}";const bw={left:-1,center:0,right:1},ww={top:-1,middle:0,bottom:1,alphabetic:1};class vw extends Wr{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of Rr)this.properties.fitToBand&&ja(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xw,yw)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;De(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[bw[e.align],ww[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const s=r.text.format?ae(r.text.format):c=>c;for(const c of n){const f=s(i(c)),l=q(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new Hb({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});a.addBatches(e.facetBatches);const u=a.toArrays();this.rangeMap.migrateEntries(u.rangeMap),this.updateBufferInfo(u)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>De(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Ln(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>jr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function W0(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const d of t)s+=bo(d.px)+(Va(d)?0:n),a+=bo(d.grow);s-=n;const u=Math.max(0,e-s),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,f=[],l=[],h=d=>{const g=f.length;if(!g)return;const A=(d?n:0)*(o?-1:1);p-=A;for(let m=0;m<g;m++)l.push({location:p+(m+1)/(g+1)*A,size:0});p+=A,f.length=0};let p=o?Math.max(e,s):0+i;if(t.length==1&&Va(t[0]))return[{location:p,size:0}];for(let d=0;d<t.length;d++){const g=t[d];if(Va(g))f.push(g);else{h(l.length>0);const A=bo(g.px)+(a?bo(g.grow)/a*u:0);o&&(p-=A),l.push({location:c(p),size:c(A)}),o?p-=n:p+=A+n}}return p+=o?n:-n,h(!1),l}function Cw(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const su=class{constructor(e,n){ge(this,Kr);this.width=e,this.height=n}addPadding(e){return ce(this,Kr,cu).call(this,e.width,e.height)}subtractPadding(e){return ce(this,Kr,cu).call(this,-e.width,-e.height)}};let rn=su;Kr=new WeakSet,cu=function(e,n){var r,i;return new su({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const Xr=Object.freeze({px:0,grow:0}),Ew=new rn(Xr,Xr);function Va(t){return!t.px&&!t.grow}function bo(t){return t||0}function Sw(t){return t&&(Ae(t.px)||Ae(t.grow))}function Dw(t){if(q0(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Sw(t))return t;if(Ae(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}class Ye{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Ye(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ye(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Ye(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Ya}static createFromRecord(e){return new Ye(e.top,e.right,e.bottom,e.left)}static zero(){return Ya}static createUniformPadding(e){return new Ye(e,e,e,e)}}const Ya=Ye.createUniformPadding(0);Object.freeze(Ya);const Bw=/^([A-Za-z]+:)?\/\//;function Fw(t,e){if(e&&Bw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const X0="VISIT_SKIP",wo="VISIT_STOP",Z0=t=>t;class K0{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},z0(this),this.opacityFunction=Z0,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Ye.createFromConfig(this.spec.padding))}getOverhang(){return Ye.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Ew)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(q0(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let u=0;if(Zt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();u=Cn(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return u=js(u,c.paddingInner(),c.paddingOuter()),{px:u*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&Dw(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new rn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n:1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==wo)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Z0)&&(this.opacityFunction=Iw(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r=F(F({},e),n);for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Pr(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=En(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return Fw(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return q(e)?e:e.text}_cache(e,n){return kn(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":xo(this,e);break;case"ancestors":for(const r of this.getAncestors())xo(r,e);break;case"progeny":this.visit(r=>xo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function Mw(t){return"unitsPerPixel"in t}function Iw(t){const e=t.spec.opacity;if(e!==void 0){if(Ae(e))return n=>n*e;if(Mw(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=ks().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=ai(r.domain())/1e3;return i(a)*o}}}return n=>n}const q0=t=>!!(t!=null&&t.step);class Nn extends K0{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===wo)return n;if(n!==X0){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===wo)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof Nn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function vo(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||zn(s)&&zn(a)||zn(s)&&a===!0||s===!0&&ze(a),o=s=>{for(let a in s){const u=s[a];if(!n.includes(a)&&u!==void 0)if(r[a]!==void 0&&!i(r[a],u))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(zn(c))zn(u)&&(r[a]=vo([c,u],a));else if(zn(u)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=vo([{},u],a)}else r[a]=u}}};for(const s of t)o(s);return r}function zn(t){return ze(t)&&!Array.isArray(t)}/*!
201
128
  * Adapted from vega-encode:
202
129
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
203
130
  *
@@ -205,7 +132,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
205
132
  * All rights reserved.
206
133
  *
207
134
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
208
- */function _0(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(jr(t.domain())/n)||1)),Re(e)&&(e=e.interval),e}function $0(t,e,n){var r=t.range(),i=Math.floor(r[0]),s=Math.ceil(Ne(r));if(i>s&&(r=s,s=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=s}),n>0&&e.length>1){for(var o=[e[0],Ne(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=o)}return e}function sv(t,e){return t.bins?$0(t,ov(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function ov(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,s){return!(s%r)})}function av(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?xe(n):String;if(Hf(t.type)){var i=cv(n);r=t.bins?i:uv(r,i)}return r}function uv(t,e){return function(n){return t(n)?e(n):""}}function cv(t){var e=hi(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return fv(xe(e),xe(".1f")(1)[1])}else return xe(e)}function fv(t,e){return function(n){var r=t(n),i=r.indexOf(e),s,o;if(i<0)return r;for(s=lv(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function lv(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
135
+ */function J0(t,e,n){return Ae(e)&&n!=null&&(e=Math.min(e,~~(ai(t.domain())/n)||1)),ze(e)&&(e=e.interval),e}function _0(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(Oe(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],Oe(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=s)}return e}function Tw(t,e){return t.bins?_0(t,Pw(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function Pw(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function Lw(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?ae(n):String;if(Vl(t.type)){var i=kw(n);r=t.bins?i:Rw(r,i)}return r}function Rw(t,e){return function(n){return t(n)?e(n):""}}function kw(t){var e=dt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return Nw(ae(e),ae(".1f")(1)[1])}else return ae(e)}function Nw(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=zw(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function zw(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
209
136
  * Adapted from vega-encode:
210
137
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
211
138
  *
@@ -213,12 +140,12 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
213
140
  * All rights reserved.
214
141
  *
215
142
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
216
- */const hv="locus",dv="index";var pv=5;function gv(t){const e=t.type;return!t.bins&&(e===ln||e===ir||e===sr)}function eh(t){return Ke(t)&&![Ze,dv,hv].includes(t)}function th(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var mv=Wr(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function nh(t,e,n){n=th(n);for(const r in t)if(!mv[r]){if(r==="padding"&&eh(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}Cv(e,t,Ev(e,t,bv(e,t,n)))}function Av(t,e){const n=xv(t),r=k(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return nh(t,i,e),i}function xv(t){var e=t.type,n="",r;return e===Ze?Ze+"-"+ln:(yv(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?Ze+"-":r===3?hn+"-":""),(n+e||ln).toLowerCase())}function yv(t){const e=t.type;return Ke(e)&&e!==Lf&&e!==Rf&&(t.scheme||t.range&&t.range.length&&t.range.every(X))}function bv(t,e,n){if(!t.domain)return 0;n=th(n);var r=wv(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,s=t.type,o=e.zero||e.zero===void 0&&gv(t),a,u;return i?(eh(s)&&e.padding&&i[0]!==Ne(i)&&(i=vv(s,i,e.range,e.padding,e.exponent,e.constant)),(o||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,o&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(rh(s,i,n)),s===Go&&t.unknown(e.domainImplicit?so:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&_0(t,e.nice)||null),i.length):0}function wv(t,e,n){return e?(t.domain(rh(t.type,e,n)),e.length):-1}function vv(t,e,n,r,i,s){var o=Math.abs(Ne(n)-n[0]),a=o/(o-2*r),u=t===vt?uu(e,null,a):t===sr?ds(e,null,a,.5):t===ir?ds(e,null,a,i||1):t===Ei?$h(e,null,a,s||1):hs(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function rh(t,e,n){if(Hf(t)){var r=Math.abs(e.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+Yr(e))}return e}function Ev(t,e,n){let r=e.bins;if(r&&!Be(r)){const i=(r.start==null||r.stop==null)&&t.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?Ne(i):r.stop,a=r.step;a||Y("Scale bins parameter missing step property."),r=ci(s,o+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Vo&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function Cv(t,e,n){var r=t.type,i=e.round||!1,s=e.range;if(e.rangeStep!=null)s=Dv(r,e,n);else if(e.scheme&&(s=Sv(r,e,n),ge(s))){if(t.interpolator)return t.interpolator(s);Y(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&Di(r))return t.interpolator(Si(ja(s,e.reverse),e.interpolate,e.interpolateGamma));s&&e.interpolate&&t.interpolate?t.interpolate(Vf(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?nr:bt),s&&t.range(ja(s,e.reverse))}function Dv(t,e,n){t!==Of&&t!==Ho&&Y("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Ho?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*zo(n,i,r)]}function Sv(t,e,n){var r=e.schemeExtent,i,s;return Be(e.scheme)?s=Si(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),s=jo(i),s||Y(`Unrecognized scheme name: ${e.scheme}`)),n=t===kf?n+1:t===Vo?n-1:t===Uo||t===Nf?+e.schemeCount||pv:n,Di(t)?ih(s,r,e.reverse):ge(s)?mA(ih(s,r),n):t===Go?s:s.slice(0,n)}function ih(t,e,n){return ge(t)&&(e||n)?gA(t,ja(e||[0,1],n)):t}function ja(t,e){return e?t.slice().reverse():t}const sh=xe(",d");function Mv(t,e){return t.chrom+":"+sh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+sh(Math.ceil(e.pos))}const Bv="https://genomespy.app/data/genomes/";class Fv{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=Bv;try{this.setChromSizes(Iv(await ii({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,s=Se(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,s);n+=s.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=Gg(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(!!n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return Mv(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,s,o;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(o=r.pos)!=null?o:(s=this.chromosomesByName.get(r.chrom))==null?void 0:s.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,s=parseInt(n[2].replace(/,/g,"")),o=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function Iv(t){return xd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function oh(t){return Re(t)&&"chrom"in t}function Tv(t){return t.every(oh)}class zr extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof zr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Ya extends zr{constructor(){super();this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class ah extends zr{constructor(){super();this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class uh extends ah{constructor(){super();this.type="nominal"}}class Pv extends zr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const ch={quantitative:Ya,index:Ya,locus:Ya,nominal:uh,ordinal:ah};function fh(t,e){if(t=="quantitative"&&Lv(e)){const n=new Pv(e);return n.type=t,n}else if(ch[t]){const n=new ch[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function Lv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Rv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const lh="quantitative",hh="ordinal",dh="nominal",Wa="locus",Nv="index";class kv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var o;const r=ea(e,n),i=r.type,s=(o=r==null?void 0:r.scale)==null?void 0:o.name;if(s){if(this.name!==void 0&&s!=this.name)throw new Error(`Shared scales have conflicting names: "${s}" vs. "${this.name}"!`);this.name=s}if(!this.type)this.type=i;else if(i!==this.type&&!br(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Sn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>ea(n.view,n.channel).scale).filter(n=>n!==void 0);return us(e,"scale",["domain"])})}getScaleProps(){return Sn(this,"scaleProps",()=>{var i,s;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=Ov(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Vt(n.type)&&(n.domain=new uh),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(s=n.domainMax)!=null?s:1]),n.type==Wa&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Vt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),zv(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Wa?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>br(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>br(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){O0(this,"scaleProps");const e=this.getScaleProps();nh(e,this._scale),Ke(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=Av(e);return this._scale=n,sm(n)&&n.genome(this.getGenome()),n.fp64=!!e.fp64,Ke(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&Wf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!al(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),s=i.domain();let o=[...s];const a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),i.type){case"linear":case"index":case"locus":o=qh(o,r||0),o=hs(o,a,e);break;case"log":o=Jh(o,r||0),o=uu(o,a,e);break;case"pow":case"sqrt":{const u=i;o=_h(o,r||0,u.exponent()),o=ds(o,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(o=ed(o,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>o[u]!=s[u])?(i.domain(o),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(Qr(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,s=this.getScale(),o=s.domain();if(n>0&&o.length==2){const u=o[1]-o[0],c=o[0]+u/2,l=r[1]-r[0],f=r[0]+l/2,h=uf([c,0,u],[f,0,l]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:Rv,onUpdate:p=>{const[d,,g]=h(p);s.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),s.domain(r),this._notifyDomainListeners()}else s.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?jr(this._zoomExtent)/jr(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(Uv(n)&&Be(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),yr(n)?r.nice=!this.isExplicitDomain():Wt(n)?r.scheme=e==dh?"tableau10":e==hh?"blues":"viridis":Li(n)?r.range=cl(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return oh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&Tv(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function Ov(t,e){if(e==Nv||e==Wa){if(al(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[dh,hh,lh].indexOf(e)]:e==lh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function zv(t,e){yr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ke(t.type)&&(t.clamp=!0)}function Uv(t){return Re(t)}function Xa(...t){for(const e of t)if(e!==void 0)return e}class Gv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Te(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Sn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:us(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=s=>{var a;const o=ea(s.view,s.channel);if(!Pe(o))return{member:s,explicitTitle:Xa((a=o.axis)==null?void 0:a.title,o.title),implicitTitle:Xa(mr(o)?o.field:void 0,ta(o)?o.expr:void 0)}},n=this.members.map(e),r=n.filter(s=>{var o;if(br(s.member.channel)&&!s.explicitTitle){const a=pn(s.member.channel);return((o=n.find(u=>u.member.view==s.member.view&&u.member.channel==a))==null?void 0:o.explicitTitle)===void 0}return!0}),i=new Set(r.map(s=>Xa(s.explicitTitle,s.implicitTitle)).filter(X));return i.size?[...i].join(", "):null}}class ph extends q0{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Za extends ht{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((s,o)=>{if(Ja(s)||qa(s))return n.createView(s,this,"layer"+o);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){n=n.shrink(this.getPadding()),e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}}function dt(t){return()=>t}class nt{static create(e,n,r,i){return new nt(dt(e),dt(n),dt(r),dt(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?dt(i):typeof i=="function"?i:this._passThrough(r)};return new nt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new nt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new nt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new nt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new nt(dt(this.x),dt(this.y),dt(this.width),dt(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}}class Ka extends ht{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=_a(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const s=_a(e)?e.hconcat:Ah(e)?e.vconcat:e.concat;this.children=s.map((o,a)=>n.createView(o,this,"concat"+a))}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.children.filter(s=>s.isVisible());if(!e.length)return this.getPadding();const n=e.map(s=>s.getEffectivePadding()).map(s=>this.mainDimension=="height"?[s.left,s.right]:[s.top,s.bottom]),r=gh(n),i=this.mainDimension=="height"?new Ge(e[0].getEffectivePadding().top,r[1],Te(e).getEffectivePadding().bottom,r[0]):new Ge(r[0],e[0].getEffectivePadding().left,r[1],Te(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=Va(this.spec[this.mainDimension]);else{const r=this.children.filter(i=>i.isVisible()).map(i=>i.getSize()[this.mainDimension]);e={grow:r.map(i=>+i.grow).reduce((i,s)=>i+s,0),px:$w(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&Va(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new Tt(n,e):new Tt(e,n)).addPadding(this.getPadding())})}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this.children.filter(c=>c.isVisible()),s=i.map(c=>c.getSize()[this.mainDimension]),o=_w(s,n[this.mainDimension],{spacing:this.spec.spacing,devicePixelRatio:this.context.glHelper.dpr}),a=i.map(c=>c.getEffectivePadding()).map(c=>this.mainDimension=="height"?[c.left,c.right]:[c.top,c.bottom]),u=gh(a);for(let c=0;c<i.length;c++){const l=i[c],f=o[c],h=u[0]-a[c][0],p=u[1]-a[c][1],d=n[this.secondaryDimension]-h-p,g=this.mainDimension=="height"?new nt(()=>n.x+h,()=>n.y+f.location,()=>d,()=>f.size):new nt(()=>n.x+f.location,()=>n.y+h,()=>f.size,()=>d);l.render(e,g,r)}e.popView(this)}*[Symbol.iterator](){for(const e of this.children)yield e}replaceChild(e,n){const r=this.children.indexOf(e);if(r>=0)this.children[r]=n;else throw new Error("Not my child view!")}addChildBySpec(e){const n=this.children.length,r=this.context.createView(e,this,"concat"+n);return this.children.push(r),r}addChild(e){const n=this.children.length;return e.name||(e.name="concat"+n),e.parent=this,this.children.push(e),e}getDefaultResolution(e,n){return"independent"}}function gh(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class Hv{constructor(){this.types=[];const e=n=>(r,i,s,o)=>{var a;return new n(r,i,s,(a=r.name)!=null?a:o)};this.addViewType(Vv,e(ph)),this.addViewType(Ja,e(Za)),this.addViewType(qa,e(rt)),this.addViewType(Ah,e(Ka)),this.addViewType(_a,e(Ka)),this.addViewType(Qv,e(Ka))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const s=this.types.find(o=>o.specGuard(e));if(s)return s.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function qa(t){return"mark"in t&&(X(t.mark)||Re(t.mark))}function Ja(t){return"layer"in t&&Re(t.layer)}function mh(t){return t&&(qa(t)||Ja(t))&&"aggregateSamples"in t}function Vv(t){return"import"in t}function Ah(t){return"vconcat"in t&&Be(t.vconcat)}function _a(t){return"hconcat"in t&&Be(t.hconcat)}function Qv(t){return"concat"in t&&Be(t.concat)}const jv={point:zw,rect:Tw,rule:Hw,link:Yw,text:Jw};class rt extends ht{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const s=jv[this.getMarkType()];if(s)this.mark=new s(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(n=n.shrink(this.getPadding()),this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){var r;const n=this.mark.encoding;for(const[i,s]of Object.entries(n)){if(!Le(s))continue;let o=pn((r=s.resolutionChannel)!=null?r:i);if(e=="axis"&&!yr(o))continue;let a=this;for(;a.parent instanceof ht&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(o,e))&&a.getConfiguredOrDefaultResolution(o,e)!="excluded";)a=a.parent;a.resolutions[e][o]||(a.resolutions[e][o]=e=="scale"?new kv(o):new Gv(o)),yr(i)?a.resolutions[e][o].pushUnitView(this,i):e=="scale"&&a.resolutions[e][o].pushUnitView(this,i)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(br(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Le(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,s;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const o=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return fh((s=n.type)!=null?s:"nominal",o.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=u=>{let c;const l=this.mark.encoding[u];if(l){const f=this.context.accessorFactory.createAccessor(l);if(f)if(c=fh(r),f.constant)c.extend(f({}));else{const h=this.getCollector();(h==null?void 0:h.completed)&&h.visitData(p=>c.extend(f(p)))}}return c};let s=i(e);const o=na[e];if(o){const u=i(o);u&&s.extendAll(u)}return s}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return xr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(mh(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Te(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=Se(T({},(n=r.encoding)!=null?n:{}),{sample:null});const s=this.context.createView(r,this,"summaryView");s.getFacetFields=o=>{},this.sampleAggregateViews.push(s)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function Yv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Bn extends q{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function xh(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=Kv(t)&&Wv(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function Wv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const cs=t=>typeof t!="object"?Xv:Zv,Xv=t=>({data:t}),Zv=t=>t;function Kv(t){return"url"in t}function qv(t){return"dynamicCallbackSource"in t}class yh extends Bn{constructor(e){super();this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=cs(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const bh="chromosome_ticks_and_labels",wh={x:"width",y:"height"};function $a(t){return t=="x"?"y":"x"}const vh=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function qt(t){return vh[t]}class Eh extends Za{constructor(e,n,r,i){const s=n=="locus",o=T(T(T({},s?$v:Ch),_v(n,e)),e);super(s?eE(o):Dh(o),r,i,`axis_${e.orient}`);if(this.axisProps=o,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new yh(()=>this.ticks),s){const a=qt(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(bh).getDynamicDataSource=()=>new yh(()=>u.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return vh[this.axisProps.orient]=="x"?new Tt(n,e):new Tt(e,n)}getPerpendicularSize(){return eu(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=qt(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Wf(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,s=Jv(this.axisProps,n,this.axisLength,i);s!==i&&(this.ticks=s,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[wh[qt(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function eu(t){const e=qt(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function Jv(t,e,n,r=[]){const i=a=>25+60*Yv(100,700,a);let s=me(t.tickCount)?t.tickCount:Math.round(n/i(n));s=_0(e,s,t.tickMinStep);const o=t.values?$0(e,t.values,s):sv(e,s);if(wA(o,r,a=>a,a=>a.value))return r;{const a=av(e,s,t.format);return o.map(u=>({value:u,label:a(u)}))}}const Ch={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function _v(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",s="middle",o=(a=e.labelAngle)!=null?a:(n=="top"||n=="bottom")&&r?-90:0;switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(n=="bottom")?"left":"right",s="middle"):s=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function Dh(t){const e=Se(T({},t),{extent:eu(t)}),n=qt(e.orient),r=$a(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,s=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:s,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:s,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500,dynamicData:!0},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300,dynamicData:!0},encoding:{[r]:{value:s},[r+"2"]:{value:s-e.tickSize/e.extent*(s?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-s}}),l=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},f={[wh[$a(qt(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&f.layer.push(o()),(e.ticks||e.labels)&&f.layer.push(l()),e.title&&f.layer.push(c()),f}const $v=Se(T({},Ch),{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7});function eE(t){const e=Se(T({},t),{extent:eu(t)}),n=qt(e.orient),r=$a(n),i=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth,dynamicData:!0}}),o=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},c),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=Dh(T(T({},t),a));if(t.chromTicks||t.chromLabels){const c={name:bh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(s()),t.chromLabels){c.layer.push(o());let l;u.layer.filter(f=>f.name=="ticks_and_labels").forEach(f=>f.layer.filter(h=>h.name=="labels").forEach(h=>{l=h.mark})),l&&(e.orient=="top"||e.orient=="bottom"?(l.viewportEdgeFadeWidthLeft=30,l.viewportEdgeFadeDistanceLeft=40):(l.viewportEdgeFadeWidthBottom=30,l.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const tE={x:["bottom","top"],y:["left","right"]};class nE extends ht{constructor(e,n){super({},e,n,"decorator");this.child=void 0,this.backgroundView=void 0,this.axisViews={top:void 0,right:void 0,bottom:void 0,left:void 0},["mousedown","wheel"].forEach(r=>this.addInteractionEventListener(r,this.handleMouseEvent.bind(this)))}initialize(){var n;Object.entries(tE).forEach(([r,i])=>this._initializeAxes(r,i)),this._invalidateCacheByPrefix("size/","ancestors");const e=(n=this.child.spec)==null?void 0:n.view;((e==null?void 0:e.fill)||(e==null?void 0:e.stroke))&&(this.backgroundView=new rt(rE(e),this.context,this,"background"))}getEncoding(e){return Object.values(this.axisViews).find(n=>e===n)||e==this.backgroundView?{}:super.getEncoding()}getFacetAccessor(e){if(e==this.child&&this.parent)return this.parent.getFacetAccessor(this)}*[Symbol.iterator](){yield this.child,this.backgroundView&&(yield this.backgroundView);for(const e of Object.values(this.axisViews))e&&(yield e)}_getAxisExtents(){return this._cache("size/axisExtents",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.getPerpendicularSize());return Ge.createFromRecord(e)})}_getAxisOffsets(){return this._cache("size/axisOffsets",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.axisProps.offset);return Ge.createFromRecord(e)})}getEffectivePadding(){return this._cache("size/effectivePadding",()=>this.getPadding().add(this._getAxisExtents()))}getSize(){return this._cache("size/size",()=>this.child.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()).addPadding(this.getAxisSizes()):Z0)}getAxisSizes(){return this._cache("size/axisSizes",()=>this._getAxisExtents().add(this._getAxisOffsets()))}render(e,n,r={}){if(!this.isVisible()||!this.child.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this._getAxisExtents(),s=n.shrink(i.add(this._getAxisOffsets()));this._childCoords=s,this.backgroundView&&this.backgroundView.render(e,s,r),this.child.render(e,s,r);const o=this._cache("axisViewEntries",()=>Object.entries(this.axisViews).filter(a=>!!a[1]));for(const[a,u]of o){const c=u.axisProps;let l;a=="bottom"?l=s.translate(0,s.height+c.offset).modify({height:i.bottom}):a=="top"?l=s.translate(0,-i.top-c.offset).modify({height:i.top}):a=="left"?l=s.translate(-i.left-c.offset,0).modify({width:i.left}):a=="right"&&(l=s.translate(s.width+c.offset,0).modify({width:i.right})),u.render(e,l)}e.popView(this)}_getResolutionParticipants(){return[...this.getAncestors(),...YE(this.child)]}_initializeAxes(e,n){const r=this._getResolutionParticipants().map(i=>i.resolutions.axis[e]).filter(i=>i);for(const i of r){const s=i.getAxisProps();if(s&&s.orient){if(!n.includes(s.orient))throw new Error(`Invalid axis orientation for '${e}' channel: ${s.orient}`);if(this.axisViews[s.orient])throw new Error(`The slot for ${s.orient} axis is already reserved!`);this.axisViews[s.orient]=new Eh(Se(T({},s),{title:i.getTitle()}),i.scaleResolution.type,this.context,this)}}e:for(const i of r){const s=i.getAxisProps();if(s&&!s.orient){for(const o of n)if(!this.axisViews[o]){s.orient=o,this.axisViews[o]=new Eh(Se(T({},s),{title:i.getTitle()}),i.scaleResolution.type,this.context,this);continue e}throw new Error("No room for axes. All slots are already reserved.")}}}handleMouseEvent(e,n){if(!!this.isZoomable()){if(n.type=="wheel"){n.uiEvent.preventDefault();const r=n.uiEvent,i=r.deltaMode?120:1;let{x:s,y:o}=n.point;const a=this.context.getCurrentHover();if(a){const u=e.shrink(this.getEffectivePadding()),c=a.mark.encoders;c.x&&!c.x2&&(s=+c.x(a.datum)*u.width+u.x),c.y&&!c.y2&&(o=(1-+c.y(a.datum))*u.height+u.y)}Math.abs(r.deltaX)<Math.abs(r.deltaY)?this._handleZoom(e,{x:s,y:o,xDelta:0,yDelta:0,zDelta:r.deltaY*i/300}):this._handleZoom(e,{x:s,y:o,xDelta:-r.deltaX*i,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.uiEvent.button===0){const r=n.uiEvent;r.preventDefault();let i=r;const s=a=>{this._handleZoom(e,{x:i.clientX,y:i.clientY,xDelta:a.clientX-i.clientX,yDelta:a.clientY-i.clientY,zDelta:0}),i=a},o=a=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",o)};document.addEventListener("mouseup",o,!1),document.addEventListener("mousemove",s,!1)}}}isZoomable(){return this._cache("zoomable",()=>Object.values(this._getZoomableResolutions()).some(e=>e.size))}_getZoomableResolutions(){return this._cache("zoomableResolutions",()=>{const e={x:new Set,y:new Set};return this.child.visit(n=>{for(const[r,i]of Object.entries(e)){const s=n.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),e})}_handleZoom(e,n){for(const[r,i]of Object.entries(this._getZoomableResolutions())){if(i.size<=0)continue;const s=this._getAxisExtents(),o=e.shrink(s.add(this._getAxisOffsets())),a=o.normalizePoint(n.x,n.y),u=o.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const l of i)l.zoom(2**n.zDelta,r=="y"?1-a[r]:a[r],r=="x"?c.x:-c.y)}this.context.animator.requestRender()}}function rE(t){return{configurableVisibility:!1,data:{values:[{}]},mark:Se(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*tu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of tu(r,[...e,n]))yield i;else yield[[...e,n],r]}class nu extends q{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new ai([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){Nw(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,s;const e=(i=this.params)==null?void 0:i.sort,n=e?cu(e.field,e.order):void 0,r=o=>{n&&o.sort(n)};if((s=this.params.groupby)==null?void 0:s.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const o=this.params.groupby.map(u=>U(u)),a=ui(this._data,...o);this.facetBatches.clear();for(const[u,c]of tu(a))this.facetBatches.set(u,c)}for(const o of this.facetBatches.values())r(o);if(this.children.length)for(const[o,a]of this.facetBatches.entries()){if(o){const u={type:"facet",facetId:o};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const o of this.observers)o(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class fs{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(this.ids[r]=e,this.values[r]=n;r>0;){const i=r-1>>1,s=this.values[i];if(n>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let s=0;for(;s<i;){let o=(s<<1)+1;const a=o+1;let u=this.ids[o],c=this.values[o];const l=this.values[a];if(a<this.length&&l<c&&(o=a,u=this.ids[a],c=l),c>=r)break;this.ids[s]=u,this.values[s]=c,s=o}this.ids[s]=n,this.values[s]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}}class iE extends q{get behavior(){return lt}constructor(e){super();this.params=e,this.startAccessor=U(e.start),this.endAccessor=U(e.end),this.chromAccessor=e.chrom?U(e.chrom):n=>{},this.weightAccessor=e.weight?U(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new fs}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let u,c,l,f=0,h;const p=this.ends;p.clear();const d=(m,A,b)=>{if(m==A)return;let y=!1;u&&(u[e]===b?(u[n]=A,y=!0):u[e]!=0&&this._propagate(u)),y||(u=this.createSegment(m,A,b,l))},g=()=>{let m;for(;(m=p.peekValue())!==void 0;)d(h,m,f),h=m,f-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=m=>{const A=i(m);let b;for(;(b=p.peekValue())!==void 0&&b<A;)d(h,b,f),h=b,f-=p.pop();if(r){let v=o(m);v!==c&&(g(),l=v,c=l)}h!==void 0&&d(h,A,f),h=A;const y=a(m);f+=y,p.push(y,s(m))},this.complete=()=>{g(),super.complete()}}}function sE(t,e,n=0,r=t.length){const i=new fs,s=r-n;let o;for(o=0;o<e&&o<s;o++)i.push(o,t[n+o]);for(;o<s;o++){const c=t[n+o];c>=i.peekValue()&&(i.push(o,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class oE{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(e,n,i);return s>=0?s:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[s]=n,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class aE extends q{constructor(e,n){super();var i,s;if(this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=U(this.params.pos),this.posBisector=oi(this.posAccessor),this.scoreAccessor=U(this.params.score),this.widthAccessor=U(this.params.width),this.laneAccessor=this.params.lane?U(this.params.lane):o=>0,this.padding=(s=this.params.padding)!=null?s:0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",o=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new oE(200));this.schedule(),super.complete()}_filterAndPropagate(){var o;super.reset();const e=this.resolution.getScale(),n=(o=this.resolution.members[0].view.coords)==null?void 0:o[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,s=sE(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of s){const u=this._data[a],c=e(this.posAccessor(u))*n,l=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-l,c+l)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class uE extends q{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=$o(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const cE="0".charCodeAt(0);function*fE(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const s=t.charCodeAt(i);s==n?(yield r,r=0):r=r*10+s-cE}yield r}class lE extends q{get behavior(){return lt}constructor(e){super();var o,a;const n=U((o=e.exons)!=null?o:"exons"),r=U((a=e.start)!=null?a:"start"),[i,s]=e.as||["exonStart","exonEnd"];this.handle=u=>{let c=r(u),l=c,f=!0;const h=n(u);for(const p of fE(h)){if(f)l=c+p;else{c=l+p;const d=Object.assign({},u);d[i]=l,d[s]=c,this._propagate(d)}f=!f}}}}class hE extends q{get behavior(){return lt}constructor(e){super();const n=qe(e.field).map(s=>U(s)),r=qe(e.separator),i=qe(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(n.some(u=>!u(s)))return;const o=n.map((u,c)=>u(s).split(r[c]));dE(o,s);const a=o[0].length;for(let u=0;u<a;u++){const c=Object.assign({},s);for(let l=0;l<n.length;l++)c[i[l]]=o[l][u];this._propagate(c)}}}}function dE(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class pE extends q{get behavior(){return It}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=$o(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Sh extends q{get behavior(){return It}constructor(e,n){super();var d;const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const s=U(e.chrom),o=qe(e.pos).map(g=>U(g)),a=qe(e.as);if(o.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=qe(e.offset);let c;if(u.length==0)c=new Array(o.length).fill(0);else if(u.length==1)c=new Array(o.length).fill(u[0]);else if(u.length==o.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const l=new Function("datum","chromOffset","posAccessors",a.map((g,m)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${m}](datum) - ${c[m]};`).join(`
217
- `));let f,h=0;const p=g=>{if(g!==f){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);f=g}return h};this.handle=g=>{l(g,p(s(g)),o),this._propagate(g)}}}var Mh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class gE extends q{get behavior(){return It}constructor(e){super();const n=Ga(Mh),r=U(e.field),i=e.as,s=e.fontSize;this.handle=o=>{const a=r(o);a!==void 0?o[i]=n.measureWidth(a,s):o[i]=0,this._propagate(o)}}}const mE=65536;class AE extends q{get behavior(){return It}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=me(e.spacing)?e.spacing:1,i=U(e.start),s=U(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const o=new Float64Array(mE),a=U(e.preference),u=e.preferredOrder;let c=1/0;this.handle=l=>{const f=i(l);f<c&&o.fill(-1/0),c=f;const h=u.indexOf(a(l));let p=-1;if(h>=0&&o[h]<f)p=h;else{const d=i(l);for(p=0;p<o.length&&!(o[p]<d);p++);if(p>=o.length)throw new Error("Out of lanes!")}o[p]=s(l)+r,l[n]=p,this._propagate(l)}}else{const o=new fs,a=new fs;let u=-1/0,c=0;this.handle=l=>{const f=i(l);for(;o.length&&(o.peekValue()<=f||f<u);){const p=o.pop();a.push(p,p)}u=f;let h=a.pop();h===void 0&&(h=c++),l[n]=h,this._propagate(l),o.push(h,s(l)+r)}}}}class xE extends q{get behavior(){return lt}constructor(e){super();if(e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>U(i)),r=e.as?e.as:n.map(Me);this.handle=i=>{const s={};for(let o=0;o<n.length;o++)s[r[o]]=n[o](i);this._propagate(s)}}}class yE extends q{get behavior(){return It}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=U(e.field);this.handle=s=>{const o=i(s);if(X(o)){const a=o.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)s[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)s[r[u]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class bE extends q{get behavior(){return lt}constructor(e){super();const n=qe(e.columnRegex).map(h=>new RegExp(h)),r=qe(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,s=e.asKey||"sample";let o,a,u;const c=h=>{var m;const p=Object.keys(h),d=new Map;for(const[A,b]of n.entries())for(const y of p){const v=(m=b.exec(y))==null?void 0:m[1];if(v!==void 0){let D=d.get(v);D||(D=[],d.set(v,D)),D[A]=y}}o=[...d.entries()],a=p.filter(A=>!n.some(b=>b.test(A))&&!(i&&i.test(A)));const g=[...a.map(A=>JSON.stringify(A)+": datum["+JSON.stringify(A)+"]"),JSON.stringify(s)+": sampleId",...r.map(A=>JSON.stringify(A)+": null")];u=new Function("datum","sampleId",`return {
143
+ */const Ow="locus",Gw="index";var Uw=5;function Hw(t){const e=t.type;return!t.bins&&(e===bn||e===br||e===wr)}function $0(t){return Re(t)&&![qe,Gw,Ow].includes(t)}function eh(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var Qw=ci(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma","zoom","fp64","name"]);function th(t,e,n){n=eh(n);for(const r in t)if(!Qw[r]){if(r==="padding"&&$0(e.type))continue;me(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}qw(e,t,Kw(e,t,Ww(e,t,n)))}function jw(t,e){const n=Vw(t),r=U(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return th(t,i,e),i}function Vw(t){var e=t.type,n="",r;return e===qe?qe+"-"+bn:(Yw(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?qe+"-":r===3?wn+"-":""),(n+e||bn).toLowerCase())}function Yw(t){const e=t.type;return Re(e)&&e!==Nl&&e!==zl&&(t.scheme||t.range&&t.range.length&&t.range.every(q))}function Ww(t,e,n){if(!t.domain)return 0;n=eh(n);var r=Xw(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&Hw(t),a,u;return i?($0(o)&&e.padding&&i[0]!==Oe(i)&&(i=Zw(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(u=e.domainMid,(u<i[0]||u>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",u),i.splice(a,0,u))),t.domain(nh(o,i,n)),o===Ys&&t.unknown(e.domainImplicit?hs:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&J0(t,e.nice)||null),i.length):0}function Xw(t,e,n){return e?(t.domain(nh(t.type,e,n)),e.length):-1}function Zw(t,e,n,r,i,o){var s=Math.abs(Oe(n)-n[0]),a=s/(s-2*r),u=t===vt?Au(e,null,a):t===wr?Io(e,null,a,.5):t===br?Io(e,null,a,i||1):t===zi?rd(e,null,a,o||1):mu(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function nh(t,e,n){if(Vl(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+ui(e))}return e}function Kw(t,e,n){let r=e.bins;if(r&&!Te(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?Oe(i):r.stop,a=r.step;a||K("Scale bins parameter missing step property."),r=Zn(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Xs&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function qw(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=Jw(r,e,n);else if(e.scheme&&(o=_w(r,e,n),me(o))){if(t.interpolator)return t.interpolator(o);K(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Gi(r))return t.interpolator(Ui(Wa(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Yl(e.interpolate,e.interpolateGamma)):me(t.round)?t.round(i):me(t.rangeRound)&&t.interpolate(i?xr:bt),o&&t.range(Wa(o,e.reverse))}function Jw(t,e,n){t!==Ul&&t!==Ws&&K("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Ws?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*js(n,i,r)]}function _w(t,e,n){var r=e.schemeExtent,i,o;return Te(e.scheme)?o=Ui(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Ks(i),o||K(`Unrecognized scheme name: ${e.scheme}`)),n=t===Gl?n+1:t===Xs?n-1:t===Vs||t===Ol?+e.schemeCount||Uw:n,Gi(t)?rh(o,r,e.reverse):me(o)?aA(rh(o,r),n):t===Ys?o:o.slice(0,n)}function rh(t,e,n){return me(t)&&(e||n)?sA(t,Wa(e||[0,1],n)):t}function Wa(t,e){return e?t.slice().reverse():t}const ih=ae(",d");function $w(t,e){return t.chrom+":"+ih(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ih(Math.ceil(e.pos))}const ev="https://genomespy.app/data/genomes/";class tv{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=ev;try{this.setChromSizes(nv(await Ci({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o=Se(F({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=cn(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(!!n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return $w(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.size)]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function nv(t){return vd(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function oh(t){return ze(t)&&"chrom"in t}function rv(t){return t.every(oh)}class Zr extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Zr&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Xa extends Zr{constructor(){super(),this.type="quantitative"}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}}class sh extends Zr{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class ah extends sh{constructor(){super(),this.type="nominal"}}class iv extends Zr{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const uh={quantitative:Xa,index:Xa,locus:Xa,nominal:ah,ordinal:sh};function ch(t,e){if(t=="quantitative"&&ov(e)){const n=new iv(e);return n.type=t,n}else if(uh[t]){const n=new uh[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function ov(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function sv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const lh="quantitative",fh="ordinal",hh="nominal",dh="locus",av="index";class uv{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var s;const r=oa(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!Nr(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return kn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>oa(n.view,n.channel).scale).filter(n=>n!==void 0);return vo(e,"scale",["domain"])})}getScaleProps(){return kn(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=F(F({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=cv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Zt(n.type)&&(n.domain=new ah),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),this.channel=="y"&&Zt(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),lv(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==dh?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>Nr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){N0(this,"scaleProps");const e=this.getScaleProps();th(e,this._scale),Re(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=jw(e);return this._scale=n,Zg(n)&&n.genome(this.getGenome()),Re(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&Kl(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!ff(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let s=[...o],a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(a+=i.align()),i.type){case"linear":case"index":case"locus":s=ed(s,r||0),s=mu(s,a,e);break;case"log":s=td(s,r||0),s=Au(s,a,e);break;case"pow":case"sqrt":{const u=i;s=nd(s,r||0,u.exponent()),s=Io(s,a,e,u.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=id(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(u=>s[u]!=o[u])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(si(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const u=s[1]-s[0],c=s[0]+u/2,f=r[1]-r[0],l=r[0]+f/2,h=fl([c,0,u],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*h.duration,easingFunction:sv,onUpdate:p=>{const[d,,g]=h(p);o.domain([d-g/2,d+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?ai(this._zoomExtent)/ai(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(fv(n)&&Te(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),kr(n)?r.nice=!this.isExplicitDomain():_t(n)?r.scheme=e==hh?"tableau10":e==fh?"blues":"viridis":Xi(n)?r.range=df(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return oh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&rv(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function cv(t,e){if(e==av||e==dh){if(ff(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={x:["band","band","linear"],y:["band","band","linear"],size:[void 0,"point","linear"],opacity:[void 0,"point","linear"],fillOpacity:[void 0,"point","linear"],strokeOpacity:[void 0,"point","linear"],color:["ordinal","ordinal","linear"],fill:["ordinal","ordinal","linear"],stroke:["ordinal","ordinal","linear"],strokeWidth:[void 0,void 0,"linear"],shape:["ordinal","ordinal",void 0],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[hh,fh,lh].indexOf(e)]:e==lh?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function lv(t,e){kr(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Re(t.type)&&(t.clamp=!0)}function fv(t){return ze(t)}function Za(...t){for(const e of t)if(e!==void 0)return e}class hv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Cn(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return kn(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:vo(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=oa(o.view,o.channel);if(!Qe(s))return{member:o,explicitTitle:Za((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:Za(Pr(s)?s.field:void 0,sa(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(Nr(o.member.channel)&&!o.explicitTitle){const a=En(o.member.channel);return((s=n.find(u=>u.member.view==o.member.view&&u.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Za(o.explicitTitle,o.implicitTitle)).filter(q));return i.size?[...i].join(", "):null}}class ph extends K0{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class on extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(eu(o)||$a(o))return n.createView(o,this,"layer"+s);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(!!this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class gh{constructor(e,n){this.n=e,this.maxCols=n!=null?n:1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let s=0;s<n;s++){const a=i*n+s;a<this.n&&o.push(a)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let s=0;s<r;s++){const a=s*n+i;a<this.n&&o.push(a)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function ft(t){return()=>t}const ht=class{static create(e,n,r,i){return new ht(ft(e),ft(n),ft(r),ft(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?ft(i):typeof i=="function"?i:this._passThrough(r)};return new ht(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new ht(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new ht(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new ht(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new ht(ft(this.x),ft(this.y),ft(this.width),ft(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let On=ht;Vh(On,"ZERO",ht.create(0,0,0,0));function dv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Gn extends _{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function mh(t){var n,r;const e=F({},t.format);if((n=e.type)!=null||(e.type=Av(t)&&pv(t.url)),(r=e.parse)!=null||(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function pv(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Co=t=>typeof t!="object"?gv:mv,gv=t=>({data:t}),mv=t=>t;function Av(t){return"url"in t}function xv(t){return"dynamicCallbackSource"in t}class Ah extends Gn{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Co(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const xh="chromosome_ticks_and_labels",yh={x:"width",y:"height"};function Ka(t){return t=="x"?"y":"x"}const qa={x:["bottom","top"],y:["left","right"]},bh=Object.fromEntries(Object.entries(qa).map(([t,e])=>e.map(n=>[n,t])).flat(1));function sn(t){return bh[t]}class yv extends on{constructor(e,n,r,i){const o=n=="locus",s=F(F(F({},o?vv:wh),wv(n,e)),e);if(super(o?Cv(s):vh(s),r,i,`axis_${e.orient}`),this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Ah(()=>this.ticks),o){const a=sn(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(xh).getDynamicDataSource=()=>new Ah(()=>u.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return bh[this.axisProps.orient]=="x"?new rn(n,e):new rn(e,n)}getPerpendicularSize(){return Ja(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=sn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Kl(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=bv(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){!this.isVisible()||(this.axisLength=n[yh[sn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Ja(t){const e=sn(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function bv(t,e,n,r=[]){const i=a=>25+60*dv(100,700,a);let o=Ae(t.tickCount)?t.tickCount:Math.round(n/i(n));o=J0(e,o,t.tickMinStep);const s=t.values?_0(e,t.values,o):Tw(e,o);if(hA(s,r,a=>a,a=>a.value))return r;{const a=Lw(e,o,t.format);return s.map(u=>({value:u,label:a(u)}))}}const wh={values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:"gray",domainDash:null,domainDashOffset:0,domainCap:"square",ticks:!0,tickSize:5,tickWidth:1,tickColor:"gray",tickDash:null,tickDashOffset:0,tickCap:"square",tickCount:null,tickMinStep:null,labels:!0,labelAlign:"center",labelBaseline:"middle",labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:"black",format:null,titleColor:"black",titleFont:"sans-serif",titleFontSize:10,titlePadding:3};function wv(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(n=="top"||n=="bottom")&&r?-90:0;switch(n){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function vh(t){const e=Se(F({},t),{extent:Ja(t)}),n=sn(e.orient),r=Ka(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),u=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),c=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const h={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&h.layer.push(u()),e.labels&&h.layer.push(a()),h},l={[yh[Ka(sn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(c()),l}const vv=Se(F({},wh),{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:"#989898",chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:"normal",chromLabelFontStyle:"normal",chromLabelColor:"black",chromLabelAlign:"left",chromLabelPadding:7});function Cv(t){const e=Se(F({},t),{extent:Ja(t)}),n=sn(e.orient),r=Ka(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),s=()=>{let c;switch(e.orient){case"top":c={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":c={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":c={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":c={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:c={}}return{name:"chromosome_labels",mark:F({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1},c),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const u=vh(F(F({},t),a));if(t.chromTicks||t.chromLabels){const c={name:xh,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&c.layer.push(o()),t.chromLabels){c.layer.push(s());let f;u.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(h=>h.name=="labels").forEach(h=>{f=h.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}u.layer.push(c)}return u}const Ch={anchor:"middle",frame:"group",offset:10,orient:"top",align:void 0,angle:0,baseline:"alphabetic",dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:"normal",fontWeight:"normal"},Ev={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},Sv={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},Dv={start:0,middle:.5,end:1},Bv={start:"left",middle:"center",end:"right"};function Fv(t){var c,f,l;if(!t)return;const e=q(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(c={"track-title":Ev,overlay:Sv}[e.style])!=null?c:{},r=F(F(F({},Ch),n),e);let i={},o={x:0,y:0};const s=Dv[(f=r.anchor)!=null?f:"middle"];switch(r.orient){case"top":o={x:s,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-s},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:s,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:s},i={baseline:"alphabetic",angle:-90};break}const a=F(F(F(F({},Ch),i),n),e),u={xOffset:0,yOffset:0};switch(r.orient){case"top":u.yOffset=-a.offset;break;case"right":u.xOffset=a.offset;break;case"bottom":u.yOffset=a.offset;break;case"left":u.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:Se(F(F({type:"text",tooltip:null,clip:!1},o),u),{text:a.text,align:(l=a.align)!=null?l:Bv[a.anchor],angle:a.angle,baseline:a.baseline,dx:a.dx,dy:a.dy,color:a.color,font:a.font,size:a.fontSize,fontStyle:a.fontStyle,fontWeight:a.fontWeight})}}function Mv(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:s,y:a}=t.point;if(r){const u=r.mark.encoders;u.x&&!u.x2&&(s=+u.x(r.datum)*e.width+e.x),u.y&&!u.y2&&(a=(1-+u.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:a,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:s,y:a,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const s=u=>{n({x:o.clientX,y:o.clientY,xDelta:u.clientX-o.clientX,yDelta:u.clientY-o.clientY,zDelta:0}),o=u},a=u=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a,!1),document.addEventListener("mousemove",s,!1)}}class Eh extends Nn{constructor(n,r,i,o,s){var a;super(n,r,i,o);ge(this,qr);ge(this,tt);ge(this,So);ge(this,Do);ge(this,an);ge(this,Jr);ge(this,_r);ge(this,$r);ge(this,Bo);ge(this,Un,1/0);ge(this,Hn,10);ge(this,Ne,[]);ge(this,Qn,0);this.spec=n,ei(this,Hn,(a=n.spacing)!=null?a:10),ei(this,Un,s),ei(this,Ne,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),Z(this,Ne).push(ce(this,qr,lu).call(this,n)),Yh(this,Qn)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=Z(this,Ne).findIndex(o=>o.view==n);if(i>=0)Z(this,Ne)[i]=ce(this,qr,lu).call(this,r);else throw new Error("Not my child view!")}get children(){return Z(this,Ne).map(n=>n.view)}get childCount(){return Z(this,Ne).length}onScalesResolved(){super.onScalesResolved(),ce(this,Do,Xh).call(this)}*[Symbol.iterator](){for(const n of Z(this,Ne)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=ce(this,an,ti).call(this,"column"),r=ce(this,an,ti).call(this,"row");return!n.length||!r.length?Ye.zero():new Ye(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new rn(ce(this,_r,hu).call(this,"column"),ce(this,_r,hu).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var c;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},s=W0(ce(this,Jr,fu).call(this,"column"),r.width,o),a=W0(ce(this,Jr,fu).call(this,"row"),r.height,o),u=new gh(Z(this,tt,Tt).length,(c=Z(this,Un))!=null?c:1/0);for(const[f,l]of Z(this,tt,Tt).entries()){const{view:h,axes:p,background:d,title:g}=l,[A,m]=u.getCellCoords(f),b=s[ce(this,$r,du).call(this,"column",A)],y=a[ce(this,$r,du).call(this,"row",m)],v=h.getSize(),E=h.getPadding().subtract(h.getOverhang()),C=b.location+E.left,B=y.location+E.top,L=(v.width.grow?b.size:v.width.px)-E.width,R=(v.height.grow?y.size:v.height.px)-E.height,Q=new On(()=>r.x+C,()=>r.y+B,()=>L,()=>R);l.coords=Q,d==null||d.render(n,Q,i);const T=Pv(h);T&&h.render(n,Q,i);for(const[Ce,se]of Object.entries(p)){const Be=se.axisProps;let nt;const Fe=se.getPerpendicularSize();Ce=="bottom"?nt=Q.translate(0,Q.height+Be.offset).modify({height:Fe}):Ce=="top"?nt=Q.translate(0,-Fe-Be.offset).modify({height:Fe}):Ce=="left"?nt=Q.translate(-Fe-Be.offset,0).modify({width:Fe}):Ce=="right"&&(nt=Q.translate(Q.width+Be.offset,0).modify({width:Fe})),se.render(n,nt)}T||h.render(n,Q,i),g==null||g.render(n,Q,Se(F({},i),{clipRect:void 0}))}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=Z(this,tt,Tt).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof ve||i instanceof on)&&Mv(n,r.coords,o=>ce(this,Bo,Zh).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}Un=new WeakMap,Hn=new WeakMap,Ne=new WeakMap,Qn=new WeakMap,qr=new WeakSet,lu=function(n){var i;const r={view:n,background:void 0,axes:{},coords:On.ZERO};if(n instanceof ve||n instanceof on){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const a=new ve(Iv(o),this.context,n,"background"+Z(this,Qn));a.blockEncodingInheritance=!0,r.background=a}const s=Fv(n.spec.title);if(s){const a=new ve(s,this.context,n,"title"+Z(this,Qn));a.blockEncodingInheritance=!0,r.title=a}}return r},tt=new WeakSet,Tt=function(){return Z(this,Ne).filter(n=>n.view.isVisible())},So=new WeakSet,Wh=function(){var n;return new gh(Z(this,tt,Tt).length,(n=Z(this,Un))!=null?n:1/0)},Do=new WeakSet,Xh=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of Z(this,Ne)){const{view:r,axes:i}=n,o=(s,a,u)=>{var f;const c=s.getAxisProps();if(c!==null){if(!c.orient){for(const l of qa[a])if(!i[l]){c.orient=l;break}if(!c.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=c.title)!=null||(c.title=s.getTitle()),!qa[a].includes(c.orient))throw new Error(`Invalid axis orientation "${c.orient}" on channel "${a}"!`);if(i[c.orient])throw new Error(`An axis with the orient "${c.orient}" already exists!`);i[c.orient]=new yv(c,s.scaleResolution.type,this.context,u)}};if(r instanceof ve||r instanceof on)for(const s of["x","y"]){const a=r.resolutions.axis[s];!a||o(a,s,r)}if(r instanceof on){for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&c.orient&&o(u,a,s)}for(const s of r.children)for(const[a,u]of Object.entries(s.resolutions.axis)){const c=u.getAxisProps();c&&!c.orient&&o(u,a,s)}}}},an=new WeakSet,ti=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(s,a)=>s.map(u=>{const c=Z(this,tt,Tt)[u].axes[r[a]];if(c)return Math.max(c.getPerpendicularSize()+c.axisProps.offset,0);const f=Z(this,tt,Tt)[u].view.getOverhang();return n=="column"?a?f.right:f.left:a?f.bottom:f.top}).reduce((u,c)=>Math.max(u,c),0);return Z(this,So,Wh)[n=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:o(s,0),axisAfter:o(s,1),view:Cw(s.map(a=>Z(this,tt,Tt)[a].view.getSize()[i]))}))},Jr=new WeakSet,fu=function(n){const r=ce(this,an,ti).call(this,n),i=[];i.push(Xr);for(const[o,s]of r.entries())o>0&&i.push({px:Z(this,Hn),grow:0}),(o==0||this.wrappingFacet)&&i.push(Xr),i.push({px:s.axisBefore,grow:0}),i.push(s.view),i.push({px:s.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(Xr);return i},_r=new WeakSet,hu=function(n){var s,a;let r=0,i=0;const o=ce(this,an,ti).call(this,n);for(const[u,c]of o.entries())u>0&&(i+=Z(this,Hn)),(u==0||this.wrappingFacet)&&(i+=0),i+=c.axisBefore,i+=(s=c.view.px)!=null?s:0,r+=(a=c.view.grow)!=null?a:0,i+=c.axisAfter,(u==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},$r=new WeakSet,du=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Bo=new WeakSet,Zh=function(n,r,i){for(const[o,s]of Object.entries(Tv(r))){if(s.size<=0)continue;const a=n.normalizePoint(i.x,i.y),u=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:u.x-a.x,y:u.y-a.y};for(const f of s)f.zoom(2**i.zDelta,o=="y"?1-a[o]:a[o],o=="x"?c.x:-c.y)}this.context.animator.requestRender()};function Iv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:Se(F({fill:null,strokeWidth:1,fillOpacity:t.fill?1:0},t),{type:"rect",clip:!1,tooltip:null})}}function Tv(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function Pv(t){let e=!0;return t.visit(n=>{n instanceof ve&&e&&(e=n.mark.properties.clip)}),e}class _a extends Eh{constructor(e,n,r,i){super(e,n,r,i,nu(e)?e.columns:tu(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=nu(e)?e.concat:tu(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class Lv{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(Rv,e(ph)),this.addViewType(eu,e(on)),this.addViewType($a,e(ve)),this.addViewType(tu,e(_a)),this.addViewType(kv,e(_a)),this.addViewType(nu,e(_a))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?i:"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function $a(t){return"mark"in t&&(q(t.mark)||ze(t.mark))}function eu(t){return"layer"in t&&ze(t.layer)}function Sh(t){return t&&($a(t)||eu(t))&&"aggregateSamples"in t}function Rv(t){return"import"in t}function tu(t){return"vconcat"in t&&Te(t.vconcat)}function kv(t){return"hconcat"in t&&Te(t.hconcat)}function nu(t){return"concat"in t&&Te(t.concat)}const Nv={point:cw,rect:nw,rule:hw,link:mw,text:vw};class ve extends Nn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=Nv[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){!this.isVisible()||(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!ke(o))continue;let s=En((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!kr(s))continue;let a=this;for(;a.parent instanceof Nn&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new uv(s):new hv(s)),kr(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(Nr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!ke(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return ch((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=u=>{let c;const f=this.mark.encoding[u];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(c=ch(r),l.constant)c.extend(l({}));else{const h=this.getCollector();h!=null&&h.completed&&h.visitData(p=>c.extend(l(p)))}}return c};let o=i(e);const s=aa[e];if(s){const u=i(s);u&&o.extendAll(u)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Rr.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(Sh(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&Cn(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=Se(F({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ru(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ru(r,[...e,n]))yield i;else yield[[...e,n],r]}class iu extends _{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Rt([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){sw(e)&&(this._data=[],this.facetBatches.set(Je(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?xu(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(u=>j(u)),a=fi(this._data,...s);this.facetBatches.clear();for(const[u,c]of ru(a))this.facetBatches.set(u,c)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const u={type:"facet",facetId:s};for(const c of this.children)c.beginBatch(u)}for(const u of a)this._propagate(u)}super.complete();for(const s of this.observers)s(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Eo{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let s=(o<<1)+1;const a=s+1;let u=this.ids[s],c=this.values[s];const f=this.values[a];if(a<this.length&&f<c&&(s=a,u=this.ids[a],c=f),c>=r)break;this.ids[o]=u,this.values[o]=c,o=s}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class zv extends _{get behavior(){return lt}constructor(e){super(),this.params=e,this.startAccessor=j(e.start),this.endAccessor=j(e.end),this.chromAccessor=e.chrom?j(e.chrom):n=>{},this.weightAccessor=e.weight?j(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Eo}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,s=this.chromAccessor,a=this.weightAccessor;let u,c,f,l=0,h;const p=this.ends;p.clear();const d=(A,m,b)=>{if(A==m)return;let y=!1;u&&(u[e]===b?(u[n]=m,y=!0):u[e]!=0&&this._propagate(u)),y||(u=this.createSegment(A,m,b,f))},g=()=>{let A;for(;(A=p.peekValue())!==void 0;)d(h,A,l),h=A,l-=p.pop();h=void 0,u&&(this._propagate(u),u=void 0)};this.handle=A=>{const m=i(A);let b;for(;(b=p.peekValue())!==void 0&&b<m;)d(h,b,l),h=b,l-=p.pop();if(r){let v=s(A);v!==c&&(g(),f=v,c=f)}h!==void 0&&d(h,m,l),h=m;const y=a(A);l+=y,p.push(y,o(A))},this.complete=()=>{g(),super.complete()}}}function Ov(t,e,n=0,r=t.length){const i=new Eo,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const c=t[n+s];c>=i.peekValue()&&(i.push(s,c),i.pop())}const a=[];let u;for(;(u=i.pop())!==void 0;)a.push(n+u);return a.reverse()}class Gv{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class Uv extends _{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=j(this.params.pos),this.posBisector=li(this.posAccessor),this.scoreAccessor=j(this.params.score),this.widthAccessor=j(this.params.width),this.laneAccessor=this.params.lane?j(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o:0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",s=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Gv(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=Ov(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const u=this._data[a],c=e(this.posAccessor(u))*n,f=this.widthAccessor(u)/2+this.padding;this.reservationMaps.get(this.laneAccessor(u)).reserve(c-f,c+f)&&this._propagate(u)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Hv extends _{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=ia(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const Qv="0".charCodeAt(0);function*jv(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-Qv}yield r}class Vv extends _{get behavior(){return lt}constructor(e){var s,a;super();const n=j((s=e.exons)!=null?s:"exons"),r=j((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=u=>{let c=r(u),f=c,l=!0;const h=n(u);for(const p of jv(h)){if(l)f=c+p;else{c=f+p;const d=Object.assign({},u);d[i]=f,d[o]=c,this._propagate(d)}l=!l}}}}class Yv extends _{get behavior(){return lt}constructor(e){super();const n=Je(e.field).map(o=>j(o)),r=Je(e.separator),i=Je(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(u=>!u(o)))return;const s=n.map((u,c)=>u(o).split(r[c]));Wv(s,o);const a=s[0].length;for(let u=0;u<a;u++){const c=Object.assign({},o);for(let f=0;f<n.length;f++)c[i[f]]=s[f][u];this._propagate(c)}}}}function Wv(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class Xv extends _{get behavior(){return It}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=ia(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Dh extends _{get behavior(){return It}constructor(e,n){var d;super();const r=(d=e.channel)!=null?d:"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=j(e.chrom),s=Je(e.pos).map(g=>j(g)),a=Je(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Je(e.offset);let c;if(u.length==0)c=new Array(s.length).fill(0);else if(u.length==1)c=new Array(s.length).fill(u[0]);else if(u.length==s.length)c=u;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,A)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${A}](datum) - ${c[A]};`).join(`
144
+ `));let l,h=0;const p=g=>{if(g!==l){if(h=i.cumulativeChromPositions.get(g),h===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return h};this.handle=g=>{f(g,p(o(g)),s),this._propagate(g)}}}var Bh={pages:["Lato-Regular.png"],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642000000000001,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153000000000002,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313000000000002,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182000000000002,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176000000000002,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874000000000002,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089000000000002,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278000000000002,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:"Lato Regular",size:42,bold:0,italic:0,charset:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]};class Zv extends _{get behavior(){return It}constructor(e){super();const n=Qa(Bh),r=j(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const Kv=65536;class qv extends _{get behavior(){return It}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=Ae(e.spacing)?e.spacing:1,i=j(e.start),o=j(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(Kv),a=j(e.preference),u=e.preferredOrder;let c=1/0;this.handle=f=>{const l=i(f);l<c&&s.fill(-1/0),c=l;const h=u.indexOf(a(f));let p=-1;if(h>=0&&s[h]<l)p=h;else{const d=i(f);for(p=0;p<s.length&&!(s[p]<d);p++);if(p>=s.length)throw new Error("Out of lanes!")}s[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const s=new Eo,a=new Eo;let u=-1/0,c=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<u);){const p=s.pop();a.push(p,p)}u=l;let h=a.pop();h===void 0&&(h=c++),f[n]=h,this._propagate(f),s.push(h,o(f)+r)}}}}class Jv extends _{get behavior(){return lt}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>j(i)),r=e.as?e.as:n.map(G);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class _v extends _{get behavior(){return It}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=j(e.field);this.handle=o=>{const s=i(o);if(q(s)){const a=s.match(n);if(a){if(a.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let u=0;u<r.length;u++)o[r[u]]=a[u+1]}else if(e.skipInvalidInput)for(let u=0;u<r.length;u++)o[r[u]]=void 0;else throw new Error(`"${s}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof s}, field content: "${s}".`);this._propagate(o)}}}class $v extends _{get behavior(){return lt}constructor(e){super();const n=Je(e.columnRegex).map(h=>new RegExp(h)),r=Je(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let s,a,u;const c=h=>{var A;const p=Object.keys(h),d=new Map;for(const[m,b]of n.entries())for(const y of p){const v=(A=b.exec(y))==null?void 0:A[1];if(v!==void 0){let E=d.get(v);E||(E=[],d.set(v,E)),E[m]=y}}s=[...d.entries()],a=p.filter(m=>!n.some(b=>b.test(m))&&!(i&&i.test(m)));const g=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(o)+": sampleId",...r.map(m=>JSON.stringify(m)+": null")];u=new Function("datum","sampleId",`return {
218
145
  `+g.join(`,
219
146
  `)+`
220
- };`)},l=h=>{o||c(h);for(const[p,d]of o){const g=u(h,p);for(let m=0;m<d.length;m++)g[r[m]]=h[d[m]];this._propagate(g)}},f=h=>{c(h),l(h),this.handle=l};this.handle=f,this.beginBatch=h=>{Y0(h)&&(this.handle=f),super.beginBatch(h)}}}class wE extends q{get behavior(){return It}constructor(e){super();this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var l;const e=this.params,n=e.as||["y0","y1"],r=e.sort?cu(e.sort.field,e.sort.order):void 0,i=e.field?U(e.field):()=>1,s=e.groupby.map(f=>U(f)),o=Yg(this.buffer,f=>s.map(h=>h(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=U(e.baseField);a=h=>f(h)!==null}let u,c;switch(e.offset){case"normalize":u=(f,h)=>f/h,c=(f,h)=>fi(f,h);break;case"center":u=(f,h)=>f-h/2,c=(f,h)=>fi(f,h);break;case"information":{const f=Math.log2((l=e.cardinality)!=null?l:4);u=(h,p)=>h/p,c=(h,p)=>{const g=fi(h,y=>+!a(y)),m=fi(h,p),A=m-g;let b=0;for(let y=0;y<h.length;y++){const v=h[y];if(a(v)){const D=p(v)/A;b-=D*Math.log2(D)}}return A/(f-(b+0))*(A/m)}}break;default:u=(f,h)=>f,c=(f,h)=>1}for(const f of o){r&&f.sort(r);const h=c(f,i);let p=0;for(const d of f){const g=p+i(d);a(d)&&(d[n[0]]=u(p,h),d[n[1]]=u(g,h),this._propagate(d),p=g)}}super.complete()}}class vE extends q{get behavior(){return lt}constructor(e){super();var s,o;const n=U((s=e.field)!=null?s:"sequence"),[r,i]=(o=e.as)!=null?o:["pos","sequence"];this.handle=a=>{const u=Object.assign({},a,{[i]:"",[r]:0}),c=n(a);for(let l=0;l<c.length;l++){const f=Object.assign({},u);f[r]=l,f[i]=c.charAt(l),this._propagate(f)}}}}class EE extends q{get behavior(){return lt}constructor(e){super();this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(s=>U(s)),i=ui(this.buffer,...r);for(const[s,o]of tu(i)){const a={count:o.length};for(let u=0;u<n.length;u++)a[n[u]]=s[u];this._propagate(a)}super.complete()}}const CE="_uniqueId",Bh=1e4,Fh=[null];class Ih extends q{get behavior(){return It}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:CE,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%Bh==0&&(this._id=this._getBlock()*Bh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Fh.length;return Fh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const DE={aggregate:EE,collect:nu,coverage:iE,filterScoredLabels:aE,filter:uE,flattenCompressedExons:lE,flattenDelimited:hE,flattenSequence:vE,formula:pE,identifier:Ih,linearizeGenomicCoordinate:Sh,measureText:gE,pileup:AE,project:xE,regexExtract:yE,regexFold:bE,sample:W0,stack:wE};function SE(t,e){const n=DE[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function ME(t){return"values"in t}class BE extends Bn{constructor(e){super();var n;if(this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)==null?void 0:n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=cs(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=rc(e,xh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function FE(t){return"url"in t}class IE extends Bn{constructor(e,n){super();this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async s=>ii({baseURL:this.baseUrl}).load(s).catch(o=>{throw new Error(`Cannot fetch: ${this.baseUrl}${s}: ${o.message}`)}),i=(s,o)=>{try{const a=rc(s,xh(this.params));this.beginBatch({type:"file",url:o});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${o}: ${a.message}`)}};this.reset(),await Promise.all(n.map(s=>r(s).then(i))),this.complete()}}function TE(t){return"sequence"in t}class PE extends Bn{constructor(e){super();if(this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function LE(t){return"dynamicSource"in t}class RE extends Bn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=cs(r)),this._propagate(n(r));this.complete()}async load(){}}function NE(t,e){if(ME(t))return new BE(t);if(FE(t))return new IE(t,e);if(TE(t))return new PE(t);if(LE(t))return new RE;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function kE(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
221
- `)+" };");return n.properties=e,n}class Th extends q{get behavior(){return lt}constructor(){super();const e=n=>{const r=kE(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Y0(n)&&(this.handle=e),super.beginBatch(n)}}}class Ph{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function OE(t){return"name"in t}class zE extends Bn{constructor(e,n){super();this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=cs(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function UE(t,e){const n=[];let r;const i=e!=null?e:new Ph,s=[];function o(l,f=()=>{}){if(!r)throw f()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(l),r=l,l}function a(l,f){return o(l,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${f?JSON.stringify(f):""}`))}function u(l,f){for(const h of l){let p;try{p=SE(h,f)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&It&&a(new Th),a(p)}}const c=l=>{if(n.push(r),l.spec.data){const f=qv(l.spec.data)?l.getDynamicDataSource():OE(l.spec.data)?new zE(l.spec.data,l.context.getNamedData):NE(l.spec.data,l.getBaseUrl());r=f,i.addDataSource(f,l)}if(l.spec.transform&&u(l.spec.transform,l),l instanceof rt){if(!r)throw new Error("A unit view has no (inherited) data source");const f=GE(l);if(f){s.push(f.rewrite);for(const p of f.transforms)a(p)}l.mark.isPickingParticipant()&&a(new Ih({type:"identifier"}));const h=new nu({type:"collect",groupby:l.getFacetFields(),sort:HE(l,f==null?void 0:f.rewrittenEncoding)});o(h),i.addCollector(h,l)}mh(l.spec)};return c.postOrder=l=>{r=n.pop()},t.visit(c),s.forEach(l=>l()),i}function GE(t){var s,o,a,u;const e=[],n={},r=[];for(const[c,l]of Object.entries(t.getEncoding())){const f=c;yr(f)&&ol(l)&&r.push({channel:f,chromPosDef:l})}const i=ui(r,c=>pn(c.channel),c=>c.chromPosDef.chrom);for(const[c,l]of i.entries())for(const[f,h]of l.entries()){const p=[],d=[],g=[];for(const{channel:m,chromPosDef:A}of h){const b=D=>D.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(A.chrom),"_",b(A.pos)].join(""),v=Se(T({},(a=(o=(s=t.spec.encoding)==null?void 0:s[m])!=null?o:t.getEncoding()[m])!=null?a:{}),{field:y});delete v.chrom,delete v.pos,!v.type&&A.type&&(v.type=A.type),n[m]=v,p.push(A.pos),g.push((u=A.offset)!=null?u:0),d.push(y)}e.push(new Sh({type:"linearizeGenomicCoordinate",channel:c,chrom:f,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),O0(t.mark,"encoding")}}:void 0}function HE(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Le(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(mr(n))return{field:n.field};if(!Ar(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Lh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Lh(n,t))return!1;return!0}function ru(t,e=!1){if(t instanceof nu&&(e=!0),t instanceof Th)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&ru(n,e);return}t.behavior&lt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)ru(t.children[n],e||n<r-1)}function VE(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const s=n.get(i.identifier);s&&(s.adoptChildrenOf(i),i=s),t.addDataSource(i,r)}}function QE(t){if(ru(t),!Lh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function jE(t){for(const e of t.dataSources)QE(e);VE(t)}function YE(t){const e=[];return t.visit(n=>{e.push(n)}),e}function WE(t){t.visit(n=>{n instanceof rt&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof rt&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function XE(t){for(const e of xr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function ZE(t){let e=t;const n=r=>r&&!Pe(r);return t.visit(r=>{if(r instanceof Za||r instanceof rt){const i=r.getEncoding();if(r instanceof rt&&!n(i.x)&&!n(i.y))return as;const s=r.parent,o=new nE(r.context,s);if(r.parent=o,o.child=r,o.name=r.name+"_decorator",s)if(s instanceof ht)s.replaceChild(r,o);else{let a;if(t.visit(qE((u,c)=>{if(u===r)return a=Te(c),Or})),a instanceof ht)a.replaceChild(r,o);else throw new Error("Cannot find parent while decorating: "+r.getPathString())}return o.resolutions=r.resolutions,r.resolutions={scale:{},axis:{}},o.spec.height=r.spec.height,r.spec.height="container",o.spec.width=r.spec.width,r.spec.width="container",o.spec.padding=r.spec.padding,r.spec.padding=void 0,r===t&&(e=o),o.initialize(),as}}),e}async function KE(t,e,n){var o;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=ii({baseURL:e}),i=t.import.url,s=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
222
- Reason: ${a.message}`)}));if(n.isViewSpec(s))return s.baseUrl=(o=i.match(/^[^?#]*\//))==null?void 0:o[0],s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Rh(t){const e=[];t.visit(n=>{if(n instanceof ph)return e.push(n),as});for(const n of e){const r=n.context,i=await KE(n.spec,n.getBaseUrl(),r),s=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,s),await Rh(s)}}function qE(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}class iu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Nh extends iu{constructor(e,n){super(e);this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=o=>()=>{e&&o()},i=o=>()=>{e&&n&&o()},s=ui(this.buffer,o=>o.mark);for(const[o,a]of s.entries()){if(!o.isReady())continue;this.batch.push(()=>{e=o.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>o.prepareRender(this.globalOptions)));let u;for(const c of a){const l=c.coords;l.equals(u)||this.batch.push(r(()=>{n=o.setViewport(l,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class JE extends iu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new _E(e,n);this.root?Te(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class _E{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=Te(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class $E extends iu{constructor(...e){super({});this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class eC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class tC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const nC=t=>new Promise(e=>setTimeout(e,t));function rC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,s)=>{if(n==null?void 0:n.aborted)return s("aborted");const o=performance.now(),a=o+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,l=t.easingFunction||(g=>g),f=g=>(g-o)/(a-o),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{(n==null?void 0:n.aborted)?s("aborted"):(t.onUpdate(h(l(p(f(g))))),g<a?e(d):(t.onUpdate(h(l(1))),i()))};e(d)});return t.delay?(n==null?void 0:n.aborted)?Promise.reject("aborted"):nC(t.delay).then(r):r()}class iC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return rC(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function kh(){const t=e=>e;return t.invert=e=>e,t.copy=kh,t.invertRange=()=>{},t}class sC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new Fv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}var oC="data:image/png;base64,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";const aC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class uC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new ai([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Ga(Mh),texture:this._createTextureNow(oC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(X(r)&&(r=aC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=fC(r,n),s=this.fontRepository+Oh(n.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");e.texture=await o,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Ga(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Oh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>cC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Sr(n,{src:e,min:n.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=Sr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?o(a):s(u)})});return this._promises.push(i),r}}function Oh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function cC(t){const e=t.split(`
223
- `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let s=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(s){const o=s[1];r[o]=s[2]}if(s=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),s){const o=s[1];r[o]=+s[2]}}return n}function fC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const s=Math.abs(e.weight-i.weight);s<r&&(r=s,n=i)}return n==null?void 0:n.filename}function lC(t,e){const n=[];let r;for(const i of t.split(`
224
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class hC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=cd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function dC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const s=i;!r.includes(i)&&n.includes(typeof t[s])&&(e[s]=t[s])}return e}function pC(t,e,n=!0){let r,i=o=>{};return function(...a){return new Promise((u,c)=>{const l=()=>{clearTimeout(r),i=f=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(l,e)})}}const zh=new Map;async function gC(t,e,n){var s;const r=t.symbol;let i=(s=zh.get(r))!=null?s:await xC(t.symbol);return i?(zh.set(r,i),ot`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function mC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(o=>o.json())).result[r]:null}const AC=pC(mC,500);function xC(t){return AC(t)}const yC=xe(".4~r"),bC=xe(".4~e");function wC(t){return t===null?ot`<span class="na">NA</span>`:X(t)?t.substring(0,30):Number.isInteger(t)?""+t:me(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?bC(t):yC(t):Qr(t)?t?"True":"False":"?"+typeof t+" "+t}async function vC(t,e,n){const r=(o,a)=>{var u;for(const[c,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)==null?void 0:u.fields.includes(o))switch(c){case"color":case"fill":case"stroke":return ot`<span class="color-legend" style="${`background-color: ${l(a)}`}"></span>`}return""},i=ot`<table class="attributes">${Object.entries(t).filter(([o,a])=>!o.startsWith("_")).map(([o,a])=>ot`<tr><th>${o}</th><td>${wC(a)} ${r(o,t)}</td></tr>`)}</table>`,s=e.unitView.spec.title?ot`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return ot`${s}${i}`}k("index",io,["continuous"]),k("locus",im,["continuous"]),k("null",kh,[]),nc("fasta",lC);class Uh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new Q1,this.viewFactory=new Hv,this.namedDataProviders=[],this.animator=new iC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=s=>s.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new hC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:vC,refseqgene:gC},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new Dw(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize(),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new vA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new sC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Ph,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new uC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Rh(this.viewRoot),WE(this.viewRoot),XE(this.viewRoot),this.viewRoot=ZE(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof rt&&i.push(a)});const s=UE(this.viewRoot,n.dataFlow);jE(s),this.broadcast("dataFlowBuilt",s),s.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const o=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)s.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),s.initialize(),await Promise.all(s.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await o,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>is(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),EC(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(this.layout&&r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const s=e.getBoundingClientRect(),o=new tC(r.clientX-s.left-e.clientLeft,r.clientY-s.top-e.clientTop),a=u=>{this.layout.dispatchInteractionEvent(new eC(o,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(o.x,o.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=dC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),l=>{const f=new WheelEvent("wheel",Se(T({},c),{deltaMode:0,deltaX:0,deltaY:l}));a(f)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var s;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((s=this._currentHover)==null?void 0:s.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(o=>{if(o instanceof rt){if(o.mark.isPickingParticipant()){const a=o.mark.encoders.uniqueId.accessor;o.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:o.mark,datum:u,uniqueId:i})})}if(this._currentHover)return Or}}),this._currentHover){const o=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var c;if(!o.isPickingParticipant())return;const u=o.properties.tooltip;if(u!==null){const l=(c=u==null?void 0:u.handler)!=null?c:"default",f=this.tooltipHandlers[l];if(!f)throw new Error("No such tooltip handler: "+l);return f(a,o,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Nh({picking:!1},this._glHelper),this._pickingContext=new Nh({picking:!0},this._glHelper);const r=new JE({});e.render(new $E(this._renderingContext,this._pickingContext,r),nt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof rt&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function EC(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}var CC="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function DC(t,e,n={}){var s,o,a;let r;if(X(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const u=Re(e)?e:await Gh(e);if((s=u.baseUrl)!=null||(u.baseUrl=""),(o=u.width)!=null||(u.width="container"),(a=u.padding)!=null||(u.padding=10),r==document.body){const c=document.createElement("div");c.style.position="fixed",c.style.inset="0",c.style.overflow="hidden",r.appendChild(c),r=c}i=new Uh(r,u,n),SC(i,n),await i.launch()}catch(u){r.innerText=u.toString(),console.error(u)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(u,c){const l=i._eventListeners;let f=l.get(u);f||(f=new Set,l.set(u,f)),f.add(c)},removeEventListener(u,c){var f;(f=i._eventListeners.get(u))==null||f.delete(c)},getScaleResolutionByName(u){return i.getNamedScaleResolutions().get(u)}}}function SC(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Gh(t){let e;try{e=JSON.parse(await ii().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}W.GenomeSpy=Uh,W.embed=DC,W.html=ot,W.icon=CC,W.loadSpec=Gh,Object.defineProperty(W,"__esModule",{value:!0}),W[Symbol.toStringTag]="Module"});
147
+ };`)},f=h=>{s||c(h);for(const[p,d]of s){const g=u(h,p);for(let A=0;A<d.length;A++)g[r[A]]=h[d[A]];this._propagate(g)}},l=h=>{c(h),f(h),this.handle=f};this.handle=l,this.beginBatch=h=>{V0(h)&&(this.handle=l),super.beginBatch(h)}}}class eC extends _{get behavior(){return It}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?xu(e.sort.field,e.sort.order):void 0,i=e.field?j(e.field):()=>1,o=e.groupby.map(l=>j(l)),s=zd(this.buffer,l=>o.map(h=>h(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=j(e.baseField);a=h=>l(h)!==null}let u,c;switch(e.offset){case"normalize":u=(l,h)=>l/h,c=(l,h)=>di(l,h);break;case"center":u=(l,h)=>l-h/2,c=(l,h)=>di(l,h);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);u=(h,p)=>h/p,c=(h,p)=>{const g=di(h,y=>+!a(y)),A=di(h,p),m=A-g;let b=0;for(let y=0;y<h.length;y++){const v=h[y];if(a(v)){const E=p(v)/m;b-=E*Math.log2(E)}}return m/(l-(b+0))*(m/A)}}break;default:u=(l,h)=>l,c=(l,h)=>1}for(const l of s){r&&l.sort(r);const h=c(l,i);let p=0;for(const d of l){const g=p+i(d);a(d)&&(d[n[0]]=u(p,h),d[n[1]]=u(g,h),this._propagate(d),p=g)}}super.complete()}}class tC extends _{get behavior(){return lt}constructor(e){var o,s;super();const n=j((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const u=Object.assign({},a,{[i]:"",[r]:0}),c=n(a);for(let f=0;f<c.length;f++){const l=Object.assign({},u);l[r]=f,l[i]=c.charAt(f),this._propagate(l)}}}}class nC extends _{get behavior(){return lt}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>j(o)),i=fi(this.buffer,...r);for(const[o,s]of ru(i)){const a={count:s.length};for(let u=0;u<n.length;u++)a[n[u]]=o[u];this._propagate(a)}super.complete()}}const rC="_uniqueId",Fh=1e4,Mh=[null];class Ih extends _{get behavior(){return It}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:rC,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%Fh==0&&(this._id=this._getBlock()*Fh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Mh.length;return Mh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const iC={aggregate:nC,collect:iu,coverage:zv,filterScoredLabels:Uv,filter:Hv,flattenCompressedExons:Vv,flattenDelimited:Yv,flattenSequence:tC,formula:Xv,identifier:Ih,linearizeGenomicCoordinate:Dh,measureText:Zv,pileup:qv,project:Jv,regexExtract:_v,regexFold:$v,sample:Y0,stack:eC};function oC(t,e){const n=iC[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function sC(t){return"values"in t}class aC extends Gn{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=Co(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=mc(e,mh(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function uC(t){return"url"in t}class cC extends Gn{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Ci({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=mc(o,mh(this.params));this.beginBatch({type:"file",url:s});for(const u of a)this._propagate(u)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function lC(t){return"sequence"in t}class fC extends Gn{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function hC(t){return"dynamicSource"in t}class dC extends Gn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Co(r)),this._propagate(n(r));this.complete()}async load(){}}function pC(t,e){if(sC(t))return new aC(t);if(uC(t))return new cC(t,e);if(lC(t))return new fC(t);if(hC(t))return new dC;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function gC(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
148
+ `)+" };");return n.properties=e,n}class Th extends _{get behavior(){return lt}constructor(){super();const e=n=>{const r=gC(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{V0(n)&&(this.handle=e),super.beginBatch(n)}}}class Ph{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function mC(t){return"name"in t}class AC extends Gn{constructor(e,n){super(),this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=Co(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function xC(t,e){const n=[];let r;const i=e!=null?e:new Ph,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function u(f,l){for(const h of f){let p;try{p=oC(h,l)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&It&&a(new Th),a(p)}}const c=f=>{if(n.push(r),f.spec.data){const l=xv(f.spec.data)?f.getDynamicDataSource():mC(f.spec.data)?new AC(f.spec.data,f.context.getNamedData):pC(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&u(f.spec.transform,f),f instanceof ve){if(!r)throw new Error("A unit view has no (inherited) data source");const l=yC(f);if(l){o.push(l.rewrite);for(const p of l.transforms)a(p)}f.mark.isPickingParticipant()&&a(new Ih({type:"identifier"}));const h=new iu({type:"collect",groupby:f.getFacetFields(),sort:bC(f,l==null?void 0:l.rewrittenEncoding)});s(h),i.addCollector(h,f)}Sh(f.spec)};return c.postOrder=f=>{r=n.pop()},t.visit(c),o.forEach(f=>f()),i}function yC(t){var o,s,a,u;const e=[],n={},r=[];for(const[c,f]of Object.entries(t.getEncoding())){const l=c;kr(l)&&lf(f)&&r.push({channel:l,chromPosDef:f})}const i=fi(r,c=>En(c.channel),c=>c.chromPosDef.chrom);for(const[c,f]of i.entries())for(const[l,h]of f.entries()){const p=[],d=[],g=[];for(const{channel:A,chromPosDef:m}of h){const b=E=>E.replace(/[^A-Za-z0-9_]/g,""),y=["_linearized_",b(m.chrom),"_",b(m.pos)].join(""),v=Se(F({},(a=(s=(o=t.spec.encoding)==null?void 0:o[A])!=null?s:t.getEncoding()[A])!=null?a:{}),{field:y});delete v.chrom,delete v.pos,!v.type&&m.type&&(v.type=m.type),n[A]=v,p.push(m.pos),g.push((u=m.offset)!=null?u:0),d.push(y)}e.push(new Dh({type:"linearizeGenomicCoordinate",channel:c,chrom:l,pos:p,offset:g,as:d},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=F(F({},t.spec.encoding),n),N0(t.mark,"encoding")}}:void 0}function bC(t,e){var r;const n=F(F({},t.getEncoding()),e).x;if(ke(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Pr(n))return{field:n.field};if(!Lr(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Lh(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Lh(n,t))return!1;return!0}function ou(t,e=!1){if(t instanceof iu&&(e=!0),t instanceof Th)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&ou(n,e);return}t.behavior&lt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)ou(t.children[n],e||n<r-1)}function wC(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function vC(t){if(ou(t),!Lh(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function CC(t){for(const e of t.dataSources)vC(e);wC(t)}function EC(t){t.visit(n=>{n instanceof ve&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof ve&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function SC(t){for(const e of Rr){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}async function DC(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Ci({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
149
+ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function Rh(t){const e=[];t.visit(n=>{if(n instanceof ph)return e.push(n),X0});for(const n of e){const r=n.context,i=await DC(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Rh(o)}}class kh{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Nh extends kh{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=fi(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(...s.prepareRender(this.globalOptions).map(c=>r(c)));let u;for(const c of a){const f=c.coords;f.equals(u)||this.batch.push(r(()=>{n=s.setViewport(f,c.clipRect)})),this.batch.push(i(c.callback)),u=c.coords}}}}class BC extends kh{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class FC{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class MC{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const IC=t=>new Promise(e=>setTimeout(e,t));function TC(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),u=typeof t.from=="number"?t.from:0,c=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),h=g=>g*(c-u)+u,p=g=>Math.max(0,Math.min(1,g)),d=g=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(h(f(p(l(g))))),g<a?e(d):(t.onUpdate(h(f(1))),i()))};e(d)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):IC(t.delay).then(r):r()}class PC{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return TC(F({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function zh(){const t=e=>e;return t.invert=e=>e,t.copy=zh,t.invertRange=()=>{},t}class LC{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new tv(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}var RC="data:image/png;base64,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";const kC={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class NC{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Rt([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Qa(Bh),texture:this._createTextureNow(RC)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(q(r)&&(r=kC[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=OC(r,n),o=this.fontRepository+Oh(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Qa(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Oh(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>zC(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{Qr(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=Qr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?s(a):o(u)})});return this._promises.push(i),r}}function Oh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function zC(t){const e=t.split(`
150
+ `),n=[];let r;for(const i of e)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function OC(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function GC(t,e){const n=[];let r;for(const i of t.split(`
151
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class UC{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=dd([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function HC(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function QC(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((u,c)=>{const f=()=>{clearTimeout(r),i=l=>{},u(t(...a))};n&&i("debounced"),clearTimeout(r),i=c,r=setTimeout(f,e)})}}const Gh=new Map;async function jC(t,e,n){var o;const r=t.symbol;let i=(o=Gh.get(r))!=null?o:await WC(t.symbol);return i?(Gh.set(r,i),ot`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function VC(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(s=>s.json())).result[r]:null}const YC=QC(VC,500);function WC(t){return YC(t)}const XC=ae(".4~r"),ZC=ae(".4~e");function KC(t){return t===null?ot`<span class="na">NA</span>`:q(t)?t.substring(0,30):Number.isInteger(t)?""+t:Ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?ZC(t):XC(t):si(t)?t?"True":"False":"?"+typeof t+" "+t}async function qC(t,e,n){const r=(a,u)=>{var c;for(const[f,l]of Object.entries(e.encoders))if((c=l==null?void 0:l.accessor)!=null&&c.fields.includes(a))switch(f){case"color":case"fill":case"stroke":return ot`<span class="color-legend" style="${`background-color: ${l(u)}`}"></span>`}return""},i=ot`<table class="attributes">${Object.entries(t).filter(([a,u])=>!a.startsWith("_")).map(([a,u])=>ot`<tr><th>${a}</th><td>${KC(u)} ${r(a,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),s=o?ot`<div class="title"><strong>${o}</strong></div>`:"";return ot`${s}${i}`}class JC extends Eh{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}U("index",fs,["continuous"]),U("locus",Xg,["continuous"]),U("null",zh,[]),gc("fasta",GC);class Uh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new R1,this.viewFactory=new Lv,this.namedDataProviders=[],this.animator=new PC(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new UC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=F({default:qC,refseqgene:jC},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new Kb(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new dA(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new LC(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Ph,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new NC(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,u)=>{document.addEventListener(a,u);let c=this._keyboardListeners.get(a);c||(c=[],this._keyboardListeners.set(a,c)),c.push(u)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,u,c){return e.viewFactory.createView(a,n,u,c)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await Rh(this.viewRoot),(this.viewRoot instanceof ve||this.viewRoot instanceof on)&&(this.viewRoot=new JC(n,this.viewRoot)),EC(this.viewRoot),SC(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof ve&&i.push(a)});const o=xC(this.viewRoot,n.dataFlow);CC(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(u=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))u.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const u of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(u)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>xo(a,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),_C(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new MC(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=u=>{this.viewRoot.propagateInteractionEvent(new FC(s,u)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const u=r;if(Math.abs(u.deltaX)>Math.abs(u.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const c=HC(u);this._wheelInertia.setMomentum(u.deltaY*(u.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",Se(F({},c),{deltaMode:0,deltaX:0,deltaY:f}));a(l)}),u.preventDefault();return}}if(r.type=="click"){const u=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(c=>c.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(c=>c(u))}a(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(s=>{if(s instanceof ve){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(u=>{a(u)==i&&(this._currentHover={mark:s.mark,datum:u,uniqueId:i})})}if(this._currentHover)return wo}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var c;if(!s.isPickingParticipant())return;const u=s.properties.tooltip;if(u!==null){const f=(c=u==null?void 0:u.handler)!=null?c:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,u==null?void 0:u.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new Nh({picking:!1},this._glHelper),this._pickingContext=new Nh({picking:!0},this._glHelper),e.render(new BC(this._renderingContext,this._pickingContext),On.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){!this._dirtyPickingBuffer||(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof ve&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function _C(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}var $C="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function eE(t,e,n={}){var o,s,a;let r;if(q(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const u=ze(e)?e:await Hh(e);if((o=u.baseUrl)!=null||(u.baseUrl=""),(s=u.width)!=null||(u.width="container"),(a=u.padding)!=null||(u.padding=10),r==document.body){const c=document.createElement("div");c.style.position="fixed",c.style.inset="0",c.style.overflow="hidden",r.appendChild(c),r=c}i=new Uh(r,u,n),tE(i,n),await i.launch()}catch(u){r.innerText=u.toString(),console.error(u)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(u,c){const f=i._eventListeners;let l=f.get(u);l||(l=new Set,f.set(u,l)),l.add(c)},removeEventListener(u,c){var l;(l=i._eventListeners.get(u))==null||l.delete(c)},getScaleResolutionByName(u){return i.getNamedScaleResolutions().get(u)}}}function tE(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Hh(t){let e;try{e=JSON.parse(await Ci().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}P.GenomeSpy=Uh,P.embed=eE,P.html=ot,P.icon=$C,P.loadSpec=Hh,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});