@genome-spy/core 0.14.2 → 0.18.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 (70) hide show
  1. package/LICENSE +7 -7
  2. package/README.md +16 -0
  3. package/dist/index.js +42 -42
  4. package/dist/{genome-spy-schema.json → schema.json} +1824 -652
  5. package/dist/style.css +1 -1
  6. package/package.json +9 -7
  7. package/src/data/sources/dataUtils.js +50 -3
  8. package/src/data/sources/dynamicCallbackSource.js +2 -1
  9. package/src/data/sources/dynamicSource.js +2 -1
  10. package/src/data/sources/inlineSource.js +3 -5
  11. package/src/data/sources/namedSource.js +3 -7
  12. package/src/data/sources/urlSource.js +1 -1
  13. package/src/data/transforms/aggregate.js +1 -0
  14. package/src/data/transforms/flattenDelimited.js +6 -0
  15. package/src/data/transforms/regexFold.js +1 -1
  16. package/src/data/transforms/stack.js +3 -3
  17. package/src/embedApi.d.ts +59 -0
  18. package/src/encoder/accessor.js +6 -6
  19. package/src/encoder/encoder.js +47 -22
  20. package/src/genome/scaleIndex.d.ts +38 -0
  21. package/src/genome/scaleIndex.js +18 -52
  22. package/src/genome/scaleLocus.d.ts +11 -0
  23. package/src/genome/scaleLocus.js +12 -16
  24. package/src/genomeSpy.js +1 -1
  25. package/src/gl/dataToVertices.js +14 -6
  26. package/src/gl/includes/fp64-utils.js +10 -0
  27. package/src/gl/includes/scales.glsl +2 -0
  28. package/src/gl/webGLHelper.js +3 -1
  29. package/src/index.js +6 -28
  30. package/src/marks/link.js +1 -12
  31. package/src/marks/mark.js +27 -5
  32. package/src/marks/markUtils.js +41 -25
  33. package/src/marks/pointMark.js +5 -2
  34. package/src/marks/rule.js +11 -2
  35. package/src/scale/glslScaleGenerator.js +16 -29
  36. package/src/scale/scale.js +10 -0
  37. package/src/scale/ticks.js +11 -6
  38. package/src/spec/channel.d.ts +343 -43
  39. package/src/spec/data.d.ts +14 -3
  40. package/src/spec/root.d.ts +3 -8
  41. package/src/spec/scale.d.ts +18 -1
  42. package/src/spec/view.d.ts +12 -6
  43. package/src/tooltip/refseqGeneTooltipHandler.js +1 -0
  44. package/src/types/filetypes.d.ts +10 -0
  45. package/src/types/internmap.d.ts +22 -0
  46. package/src/types/vega-loader.d.ts +1 -0
  47. package/src/utils/addBaseUrl.js +19 -0
  48. package/src/utils/addBaseUrl.test.js +21 -0
  49. package/src/utils/arrayUtils.js +12 -6
  50. package/src/utils/cloner.js +5 -3
  51. package/src/utils/concatIterables.js +2 -2
  52. package/src/utils/domainArray.js +0 -8
  53. package/src/utils/propertyCoalescer.js +9 -4
  54. package/src/view/axisResolution.js +11 -6
  55. package/src/view/axisView.js +8 -5
  56. package/src/view/decoratorView.js +6 -3
  57. package/src/view/facetView.js +3 -0
  58. package/src/view/flowBuilder.js +2 -1
  59. package/src/view/renderingContext/svgViewRenderingContext.js +7 -3
  60. package/src/view/scaleResolution.js +52 -32
  61. package/src/view/testUtils.js +7 -4
  62. package/src/view/unitView.js +15 -9
  63. package/src/view/view.js +10 -8
  64. package/src/view/viewFactory.js +2 -0
  65. package/src/view/viewUtils.js +4 -5
  66. package/src/options.d.ts +0 -15
  67. package/src/utils/fisheye.js +0 -60
  68. package/src/utils/html.js +0 -23
  69. package/src/utils/html.test.js +0 -13
  70. package/src/view/channel.js +0 -5
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var SC=Object.defineProperty,MC=Object.defineProperties;var BC=Object.getOwnPropertyDescriptors;var Gh=Object.getOwnPropertySymbols;var FC=Object.prototype.hasOwnProperty,IC=Object.prototype.propertyIsEnumerable;var Hh=(Z,V,Me)=>V in Z?SC(Z,V,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Z[V]=Me,T=(Z,V)=>{for(var Me in V||(V={}))FC.call(V,Me)&&Hh(Z,Me,V[Me]);if(Gh)for(var Me of Gh(V))IC.call(V,Me)&&Hh(Z,Me,V[Me]);return Z},Se=(Z,V)=>MC(Z,BC(V));(function(Z,V){typeof exports=="object"&&typeof module!="undefined"?V(exports):typeof define=="function"&&define.amd?define(["exports"],V):(Z=typeof globalThis!="undefined"?globalThis:Z||self,V(Z.genomeSpyEmbed={}))})(this,function(Z){"use strict";function V(t,e,n){return t.fields=e||[],t.fname=n,t}function Me(t){return t==null?null:t.fname}function ru(t){return t==null?null:t.fields}function Vh(t){return t.length===1?Qh(t[0]):jh(t)}const Qh=t=>function(e){return e[t]},jh=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function W(t){throw Error(t)}function Yh(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||W("Access path missing open bracket: "+t),i>0&&c(),i=0,o=a+1)}return i&&W("Access path missing closing bracket: "+t),r&&W("Access path missing closing quote: "+t),a>o&&(a++,c()),e}function Or(t,e,n){const r=Yh(t);return t=r.length===1?r[0]:t,V((n&&n.get||Vh)(r),[t],e||t)}Or("id");const zr=V(t=>t,[],"identity");V(()=>0,[],"zero"),V(()=>1,[],"one"),V(()=>!0,[],"true"),V(()=>!1,[],"false");var Be=Array.isArray;function Te(t){return t===Object(t)}function Pe(t){return t[t.length-1]}function In(t){return t==null||t===""?null:+t}const iu=t=>e=>t*Math.exp(e),su=t=>e=>Math.log(t*e),Wh=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),Xh=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,Ur=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function fs(t,e,n,r){const i=n(t[0]),s=n(Pe(t)),o=(s-i)*e;return[r(i-o),r(s-o)]}function Zh(t,e){return fs(t,e,In,zr)}function Kh(t,e){var n=Math.sign(t[0]);return fs(t,e,su(n),iu(n))}function qh(t,e,n){return fs(t,e,Ur(n),Ur(1/n))}function Gr(t,e,n,r,i){const s=r(t[0]),o=r(Pe(t)),a=e!=null?r(e):(s+o)/2;return[i(a+(s-a)*n),i(a+(o-a)*n)]}function ls(t,e,n){return Gr(t,e,n,In,zr)}function ou(t,e,n){const r=Math.sign(t[0]);return Gr(t,e,n,su(r),iu(r))}function hs(t,e,n,r){return Gr(t,e,n,Ur(r),Ur(1/r))}function Jh(t,e,n,r){return Gr(t,e,n,Wh(r),Xh(r))}function ds(t){return t!=null?Be(t)?t:[t]:[]}function _h(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 $h="descending";function au(t,e,n){n=n||{},e=ds(e)||[];const r=[],i=[],s={},o=n.comparator||ed;return ds(t).forEach((a,u)=>{a!=null&&(r.push(e[u]===$h?-1:1),i.push(a=ge(a)?a:Or(a,null,n)),(ru(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:V(o(i,r),Object.keys(s))}const uu=(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),ed=(t,e)=>t.length===1?td(t[0],e[0]):nd(t,e,t.length),td=(t,e)=>function(n,r){return uu(t(n),t(r))*e},nd=(t,e,n)=>(e.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<n;)s=t[a],o=uu(s(r),s(i));return o*e[a]});function rd(t){return ge(t)?t:()=>t}function ps(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 id=Object.prototype.hasOwnProperty;function Pt(t,e){return id.call(t,e)}function gs(t){return typeof t=="boolean"}function sd(t){return Object.prototype.toString.call(t)==="[object Date]"}function od(t){return t&&ge(t[Symbol.iterator])}function me(t){return typeof t=="number"}function q(t){return typeof t=="string"}function ad(t,e){const n=t[0],r=Pe(t),i=+e;return i?i===1?r:n+i*(r-n):n}function Hr(t){return t&&Pe(t)-t[0]||0}function Vr(t){return Be(t)?"["+t.map(Vr)+"]":Te(t)||q(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function ud(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const cd=t=>me(t)||sd(t)?t:Date.parse(t);function fd(t,e){return e=e||cd,t==null||t===""?null:e(t)}function ld(t){return t==null||t===""?null:t+""}function Qr(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var cu={},ms={},As=34,Tn=10,xs=13;function fu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function hd(t,e){var n=fu(t);return function(r,i){return e(n(r),i,t)}}function lu(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 dd(t){return t<0?"-"+Ae(-t,6):t>9999?"+"+Ae(t,6):Ae(t,4)}function pd(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":dd(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 hu(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?hd(m,h):fu(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)===Tn&&--d,f.charCodeAt(d-1)===xs&&--d;function v(){if(b)return ms;if(y)return y=!1,cu;var C,B=g,I;if(f.charCodeAt(B)===As){for(;g++<d&&f.charCodeAt(g)!==As||f.charCodeAt(++g)===As;);return(C=g)>=d?b=!0:(I=f.charCodeAt(g++))===Tn?y=!0:I===xs&&(y=!0,f.charCodeAt(g)===Tn&&++g),f.slice(B+1,C-1).replace(/""/g,'"')}for(;g<d;){if((I=f.charCodeAt(C=g++))===Tn)y=!0;else if(I===xs)y=!0,f.charCodeAt(g)===Tn&&++g;else if(I!==n)continue;return f.slice(B,C)}return b=!0,f.slice(B,d)}for(;(A=v())!==ms;){for(var D=[];A!==cu&&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=lu(f)),[h.map(l).join(t)].concat(s(f,h)).join(`
3
- `)}function a(f,h){return h==null&&(h=lu(f)),s(f,h).join(`
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 iu(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 Le(t){return t===Object(t)}function Re(t){return t[t.length-1]}function Fn(t){return t==null||t===""?null:+t}const su=t=>e=>t*Math.exp(e),ou=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(Re(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,ou(n),su(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(Re(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 au(t,e,n){const r=Math.sign(t[0]);return Vr(t,e,n,ou(r),su(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 uu(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)),(iu(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:H(o(i,r),Object.keys(s))}const cu=(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 cu(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=cu(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=Re(t),i=+e;return i?i===1?r:n+i*(r-n):n}function jr(t){return t&&Re(t)-t[0]||0}function Yr(t){return Be(t)?"["+t.map(Yr)+"]":Le(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 fu={},ms={},As=34,In=10,xs=13;function lu(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function pd(t,e){var n=lu(t);return function(r,i){return e(n(r),i,t)}}function hu(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 du(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):lu(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,fu;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!==fu&&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=hu(f)),[h.map(l).join(t)].concat(s(f,h)).join(`
3
+ `)}function a(f,h){return h==null&&(h=hu(f)),s(f,h).join(`
4
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?pd(f):e.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:u,formatRow:c,formatValue:l}}var gd=hu(" "),md=gd.parseRows;function Ad(t){return t}function xd(t){if(t==null)return Ad;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 yd(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function bd(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return du(t,n)})}:du(t,e)}function du(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,s=pu(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 pu(t,e){var n=xd(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&&yd(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 wd(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 vd(t){return pu(t,Ed.apply(this,arguments))}function Ed(t,e,n){var r,i,s;if(arguments.length>1)r=Cd(t,e,n);else for(i=0,r=new Array(s=t.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:wd(t,r)}}function Cd(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=Dd(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 Dd(t){return(e,n)=>ys(t(e),n)}function gu(t){return t===null?NaN:+t}const ws=bs(ys).right;bs(gu).center;var Pn=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=mu(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 mu(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 jr(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 Sd(t,e,n=gu){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 Md(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 Bd(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Yr(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 en(t){return t=Yr(Math.abs(t)),t?t[1]:NaN}function Fd(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 Id(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Td=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function tn(t){if(!(e=Td.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]})}tn.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 Pd(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 Au;function Ld(t,e){var n=Yr(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(Au=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")+Yr(t,Math.max(0,e+s-1))[0]}function xu(t,e){var n=Yr(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 yu={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Bd,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)=>xu(t*100,e),r:xu,s:Ld,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function bu(t){return t}var wu=Array.prototype.map,vu=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Rd(t){var e=t.grouping===void 0||t.thousands===void 0?bu:Fd(wu.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?bu:Id(wu.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=tn(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"):yu[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():"",B=g==="$"?r:/[%p]/.test(D)?o:"",I=yu[D],P=/[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 X(E){var ae=C,U=B,pe,_t,Ue;if(D==="c")U=I(E)+U,E="";else{E=+E;var Ge=E<0||1/E<0;if(E=isNaN(E)?u:I(Math.abs(E),y),v&&(E=Pd(E)),Ge&&+E==0&&d!=="+"&&(Ge=!1),ae=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+ae,U=(D==="s"?vu[8+Au/3]:"")+U+(Ge&&d==="("?")":""),P){for(pe=-1,_t=E.length;++pe<_t;)if(Ue=E.charCodeAt(pe),48>Ue||Ue>57){U=(Ue===46?i+E.slice(pe+1):E.slice(pe))+U,E=E.slice(0,pe);break}}}b&&!m&&(E=e(E,1/0));var He=ae.length+E.length+U.length,K=He<A?new Array(A-He+1).join(h):"";switch(b&&m&&(E=e(K+E,K.length?A-U.length:1/0),K=""),p){case"<":E=ae+E+U+K;break;case"=":E=ae+K+E+U;break;case"^":E=K.slice(0,He=K.length>>1)+ae+E+U+K.slice(He);break;default:E=K+ae+E+U;break}return s(E)}return X.toString=function(){return f+""},X}function l(f,h){var p=c((f=tn(f),f.type="f",f)),d=Math.max(-8,Math.min(8,Math.floor(en(h)/3)))*3,g=Math.pow(10,-d),m=vu[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:l}}var Wr,Xr,Ms;Nd({thousands:",",grouping:[3],currency:["$",""]});function Nd(t){return Wr=Rd(t),Xr=Wr.format,Ms=Wr.formatPrefix,Wr}function Eu(t){return Math.max(0,-en(Math.abs(t)))}function Cu(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(en(e)/3)))*3-en(Math.abs(t)))}function Du(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,en(e)-en(t))+1}var Bs=new Date,Fs=new Date;function ee(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 ee(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=ee(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?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}):Is};var Ts=Is;const nt=1e3,Fe=nt*60,rt=Fe*60,Lt=rt*24,Ps=Lt*7,Su=Lt*30,Ls=Lt*365;var kd=ee(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*nt)},function(t,e){return(e-t)/nt},function(t){return t.getUTCSeconds()}),dt=kd,Od=ee(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*nt)},function(t,e){t.setTime(+t+e*Fe)},function(t,e){return(e-t)/Fe},function(t){return t.getMinutes()}),Rs=Od,zd=ee(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*nt-t.getMinutes()*Fe)},function(t,e){t.setTime(+t+e*rt)},function(t,e){return(e-t)/rt},function(t){return t.getHours()}),Ns=zd,Ud=ee(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=Ud;function Nt(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())*Fe)/Ps})}var Zr=Nt(0),ks=Nt(1);Nt(2),Nt(3);var Ln=Nt(4);Nt(5),Nt(6);var Gd=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()}),Kr=Gd,Mu=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()});Mu.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 pt=Mu,Hd=ee(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=Hd,Vd=ee(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*rt)},function(t,e){return(e-t)/rt},function(t){return t.getUTCHours()}),zs=Vd,Qd=ee(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=Qd;function Ot(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)/Ps})}var qr=Ot(0),Us=Ot(1);Ot(2),Ot(3);var Rn=Ot(4);Ot(5),Ot(6);var jd=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()}),Jr=jd,Bu=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()});Bu.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 gt=Bu;function Fu(t,e,n,r,i,s){const o=[[dt,1,nt],[dt,5,5*nt],[dt,15,15*nt],[dt,30,30*nt],[s,1,Fe],[s,5,5*Fe],[s,15,15*Fe],[s,30,30*Fe],[i,1,rt],[i,3,3*rt],[i,6,6*rt],[i,12,12*rt],[r,1,Lt],[r,2,2*Lt],[n,1,Ps],[e,1,Su],[e,3,3*Su],[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(jr(c/Ls,l/Ls,f));if(p===0)return Ts.every(Math.max(jr(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[Yd,Wd]=Fu(gt,Jr,qr,kt,zs,Os),[Xd,Zd]=Fu(pt,Kr,Zr,Rt,Ns,Rs),Nn="year",kn="quarter",On="month",zn="week",Un="date",_r="day",Gs="dayofyear",Gn="hours",Hn="minutes",Vn="seconds",$r="milliseconds";[Nn,kn,On,zn,Un,_r,Gs,Gn,Hn,Vn,$r].reduce((t,e,n)=>(t[e]=1+n,t),{});const Kd={[Nn]:pt,[kn]:Kr.every(3),[On]:Kr,[zn]:Zr,[Un]:Rt,[_r]:Rt,[Gs]:Rt,[Gn]:Ns,[Hn]:Rs,[Vn]:dt,[$r]:Ts},qd={[Nn]:gt,[kn]:Jr.every(3),[On]:Jr,[zn]:qr,[Un]:kt,[_r]:kt,[Gs]:kt,[Gn]:zs,[Hn]:Os,[Vn]:dt,[$r]:Ts};function Jd(t){return Kd[t]}function _d(t){return qd[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 Qn(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Iu(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=jn(i),l=Yn(i),f=jn(s),h=Yn(s),p=jn(o),d=Yn(o),g=jn(a),m=Yn(a),A=jn(u),b=Yn(u),y={a:Ge,A:He,b:K,B:AC,c:null,d:ku,e:ku,f:wp,g:Tp,G:Lp,H:xp,I:yp,j:bp,L:Ou,m:vp,M:Ep,p:xC,q:yC,Q:Qu,s:ju,S:Cp,u:Dp,U:Sp,V:Mp,w:Bp,W:Fp,x:null,X:null,y:Ip,Y:Pp,Z:Rp,"%":Vu},v={a:bC,A:wC,b:vC,B:EC,c:null,d:Uu,e:Uu,f:zp,g:Zp,G:qp,H:Np,I:kp,j:Op,L:Gu,m:Up,M:Gp,p:CC,q:DC,Q:Qu,s:ju,S:Hp,u:Vp,U:Qp,V:jp,w:Yp,W:Wp,x:null,X:null,y:Xp,Y:Kp,Z:Jp,"%":Vu},D={a:X,A:E,b:ae,B:U,c:pe,d:Ru,e:Ru,f:pp,g:Lu,G:Pu,H:Nu,I:Nu,j:fp,L:dp,m:cp,M:lp,p:P,q:up,Q:mp,s:Ap,S:hp,u:rp,U:ip,V:sp,w:np,W:op,x:_t,X:Ue,y:Lu,Y:Pu,Z:ap,"%":gp};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(M,L){return function(k){var w=[],ve=-1,H=0,Ce=M.length,De,$t,Uh;for(k instanceof Date||(k=new Date(+k));++ve<Ce;)M.charCodeAt(ve)===37&&(w.push(M.slice(H,ve)),($t=Tu[De=M.charAt(++ve)])!=null?De=M.charAt(++ve):$t=De==="e"?" ":"0",(Uh=L[De])&&(De=Uh(k,$t)),w.push(De),H=ve+1);return w.push(M.slice(H,ve)),w.join("")}}function B(M,L){return function(k){var w=Qn(1900,void 0,1),ve=I(w,M,k+="",0),H,Ce;if(ve!=k.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(L&&!("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?(H=Vs(Qn(w.y,0,1)),Ce=H.getUTCDay(),H=Ce>4||Ce===0?Us.ceil(H):Us(H),H=kt.offset(H,(w.V-1)*7),w.y=H.getUTCFullYear(),w.m=H.getUTCMonth(),w.d=H.getUTCDate()+(w.w+6)%7):(H=Hs(Qn(w.y,0,1)),Ce=H.getDay(),H=Ce>4||Ce===0?ks.ceil(H):ks(H),H=Rt.offset(H,(w.V-1)*7),w.y=H.getFullYear(),w.m=H.getMonth(),w.d=H.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(Qn(w.y,0,1)).getUTCDay():Hs(Qn(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 I(M,L,k,w){for(var ve=0,H=L.length,Ce=k.length,De,$t;ve<H;){if(w>=Ce)return-1;if(De=L.charCodeAt(ve++),De===37){if(De=L.charAt(ve++),$t=D[De in Tu?L.charAt(ve++):De],!$t||(w=$t(M,k,w))<0)return-1}else if(De!=k.charCodeAt(w++))return-1}return w}function P(M,L,k){var w=c.exec(L.slice(k));return w?(M.p=l.get(w[0].toLowerCase()),k+w[0].length):-1}function X(M,L,k){var w=p.exec(L.slice(k));return w?(M.w=d.get(w[0].toLowerCase()),k+w[0].length):-1}function E(M,L,k){var w=f.exec(L.slice(k));return w?(M.w=h.get(w[0].toLowerCase()),k+w[0].length):-1}function ae(M,L,k){var w=A.exec(L.slice(k));return w?(M.m=b.get(w[0].toLowerCase()),k+w[0].length):-1}function U(M,L,k){var w=g.exec(L.slice(k));return w?(M.m=m.get(w[0].toLowerCase()),k+w[0].length):-1}function pe(M,L,k){return I(M,e,L,k)}function _t(M,L,k){return I(M,n,L,k)}function Ue(M,L,k){return I(M,r,L,k)}function Ge(M){return o[M.getDay()]}function He(M){return s[M.getDay()]}function K(M){return u[M.getMonth()]}function AC(M){return a[M.getMonth()]}function xC(M){return i[+(M.getHours()>=12)]}function yC(M){return 1+~~(M.getMonth()/3)}function bC(M){return o[M.getUTCDay()]}function wC(M){return s[M.getUTCDay()]}function vC(M){return u[M.getUTCMonth()]}function EC(M){return a[M.getUTCMonth()]}function CC(M){return i[+(M.getUTCHours()>=12)]}function DC(M){return 1+~~(M.getUTCMonth()/3)}return{format:function(M){var L=C(M+="",y);return L.toString=function(){return M},L},parse:function(M){var L=B(M+="",!1);return L.toString=function(){return M},L},utcFormat:function(M){var L=C(M+="",v);return L.toString=function(){return M},L},utcParse:function(M){var L=B(M+="",!0);return L.toString=function(){return M},L}}}var Tu={"-":"",_:" ","0":"0"},te=/^\s*\d+/,$d=/^%/,ep=/[\\^$*+?|[\]().{}]/g;function R(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 tp(t){return t.replace(ep,"\\$&")}function jn(t){return new RegExp("^(?:"+t.map(tp).join("|")+")","i")}function Yn(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function np(t,e,n){var r=te.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function rp(t,e,n){var r=te.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function ip(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function sp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function op(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Pu(t,e,n){var r=te.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Lu(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 up(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 cp(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 Ru(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function fp(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 Nu(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function lp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function hp(t,e,n){var r=te.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function dp(t,e,n){var r=te.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function pp(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 gp(t,e,n){var r=$d.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function mp(t,e,n){var r=te.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ap(t,e,n){var r=te.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function ku(t,e){return R(t.getDate(),e,2)}function xp(t,e){return R(t.getHours(),e,2)}function yp(t,e){return R(t.getHours()%12||12,e,2)}function bp(t,e){return R(1+Rt.count(pt(t),t),e,3)}function Ou(t,e){return R(t.getMilliseconds(),e,3)}function wp(t,e){return Ou(t,e)+"000"}function vp(t,e){return R(t.getMonth()+1,e,2)}function Ep(t,e){return R(t.getMinutes(),e,2)}function Cp(t,e){return R(t.getSeconds(),e,2)}function Dp(t){var e=t.getDay();return e===0?7:e}function Sp(t,e){return R(Zr.count(pt(t)-1,t),e,2)}function zu(t){var e=t.getDay();return e>=4||e===0?Ln(t):Ln.ceil(t)}function Mp(t,e){return t=zu(t),R(Ln.count(pt(t),t)+(pt(t).getDay()===4),e,2)}function Bp(t){return t.getDay()}function Fp(t,e){return R(ks.count(pt(t)-1,t),e,2)}function Ip(t,e){return R(t.getFullYear()%100,e,2)}function Tp(t,e){return t=zu(t),R(t.getFullYear()%100,e,2)}function Pp(t,e){return R(t.getFullYear()%1e4,e,4)}function Lp(t,e){var n=t.getDay();return t=n>=4||n===0?Ln(t):Ln.ceil(t),R(t.getFullYear()%1e4,e,4)}function Rp(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+R(e/60|0,"0",2)+R(e%60,"0",2)}function Uu(t,e){return R(t.getUTCDate(),e,2)}function Np(t,e){return R(t.getUTCHours(),e,2)}function kp(t,e){return R(t.getUTCHours()%12||12,e,2)}function Op(t,e){return R(1+kt.count(gt(t),t),e,3)}function Gu(t,e){return R(t.getUTCMilliseconds(),e,3)}function zp(t,e){return Gu(t,e)+"000"}function Up(t,e){return R(t.getUTCMonth()+1,e,2)}function Gp(t,e){return R(t.getUTCMinutes(),e,2)}function Hp(t,e){return R(t.getUTCSeconds(),e,2)}function Vp(t){var e=t.getUTCDay();return e===0?7:e}function Qp(t,e){return R(qr.count(gt(t)-1,t),e,2)}function Hu(t){var e=t.getUTCDay();return e>=4||e===0?Rn(t):Rn.ceil(t)}function jp(t,e){return t=Hu(t),R(Rn.count(gt(t),t)+(gt(t).getUTCDay()===4),e,2)}function Yp(t){return t.getUTCDay()}function Wp(t,e){return R(Us.count(gt(t)-1,t),e,2)}function Xp(t,e){return R(t.getUTCFullYear()%100,e,2)}function Zp(t,e){return t=Hu(t),R(t.getUTCFullYear()%100,e,2)}function Kp(t,e){return R(t.getUTCFullYear()%1e4,e,4)}function qp(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Rn(t):Rn.ceil(t),R(t.getUTCFullYear()%1e4,e,4)}function Jp(){return"+0000"}function Vu(){return"%"}function Qu(t){return+t}function ju(t){return Math.floor(+t/1e3)}var nn,Qs,Yu,js,Wu;_p({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 _p(t){return nn=Iu(t),Qs=nn.format,Yu=nn.parse,js=nn.utcFormat,Wu=nn.utcParse,nn}function Wn(t){const e={};return n=>e[n]||(e[n]=t(n))}function $p(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let s=eg(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 eg(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 tg(t){const e=Wn(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=tn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return $p(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,s,o){o=tn(o==null?",f":o);const a=jr(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=Cu(a,u))||(o.precision=c),n(o,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Du(a,u))||(o.precision=c-(o.type==="e"));break}case"f":case"%":{isNaN(c=Eu(a))||(o.precision=c-(o.type==="%")*2);break}}return e(o)}}}ng();function ng(){return tg({format:Xr,formatPrefix:Ms})}function Xu(t,e,n){n=n||{},Te(n)||W("Invalid time multi-format specifier: ".concat(n));const r=e(Vn),i=e(Hn),s=e(Gn),o=e(Un),a=e(zn),u=e(On),c=e(kn),l=e(Nn),f=t(n[$r]||".%L"),h=t(n[Vn]||":%S"),p=t(n[Hn]||"%I:%M"),d=t(n[Gn]||"%I %p"),g=t(n[Un]||n[_r]||"%a %d"),m=t(n[zn]||"%b %d"),A=t(n[On]||"%B"),b=t(n[kn]||"%B"),y=t(n[Nn]||"%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 Zu(t){const e=Wn(t.format),n=Wn(t.utcFormat);return{timeFormat:r=>q(r)?e(r):Xu(e,Jd,r),utcFormat:r=>q(r)?n(r):Xu(n,_d,r),timeParse:Wn(t.parse),utcParse:Wn(t.utcParse)}}let Ys;rg();function rg(){return Ys=Zu({format:Qs,parse:Yu,utcFormat:js,utcParse:Wu})}function ig(t){return Zu(Iu(t))}function sg(t){return arguments.length?Ys=ig(t):Ys}const og=/^(data:|([A-Za-z]+:)?\/\/)/,ag=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,ug=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ku="file://";function cg(t,e){return n=>({options:n||{},sanitize:lg,load:fg,fileAccess:!!e,file:hg(e),http:pg(t)})}async function fg(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function lg(t,e){e=ps({},this.options,e);const n=this.fileAccess,r={href:null};let i,s,o;const a=ag.test(t.replace(ug,""));(t==null||typeof t!="string"||!a)&&W("Sanitize failure, invalid URI: "+Vr(t));const u=og.test(t);return(o=e.baseURL)&&!u&&(!t.startsWith("/")&&!o.endsWith("/")&&(t="/"+t),t=o+t),s=(i=t.startsWith(Ku))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(Ku.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 hg(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,s)=>{i?r(i):n(s)})}):dg}async function dg(){W("No file system access.")}function pg(t){return t?async function(e,n){const r=ps({},this.options.http,n),i=n&&n.response,s=await t(e,r);return s.ok?ge(s[i])?s[i]():s.text():W(s.status+""+s.statusText)}:gg}async function gg(){W("No HTTP fetch method available.")}const mg=t=>t!=null&&t===t,Ag=t=>t==="true"||t==="false"||t===!0||t===!1,xg=t=>!Number.isNaN(Date.parse(t)),qu=t=>!Number.isNaN(+t)&&!(t instanceof Date),yg=t=>qu(t)&&Number.isInteger(+t),Ju={boolean:ud,integer:In,number:In,date:fd,string:ld,unknown:zr},ei=[Ag,yg,qu,xg],bg=["boolean","integer","number","date"];function wg(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=ei.length,i=ei.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]&&mg(u)&&!ei[a](u)&&(i[a]=0,++o,o===ei.length))return"string";return bg[i.reduce((s,o)=>s===0?o:s,0)-1]}function vg(t,e){return e.reduce((n,r)=>(n[r]=wg(t,r),n),{})}function _u(t){const e=function(n,r){const i={delimiter:t};return Ws(n,r?ps(r,i):i)};return e.responseType="text",e}function Ws(t,e){return e.header&&(t=e.header.map(Vr).join(e.delimiter)+`
6
- `+t),hu(e.delimiter).parse(t+"")}Ws.responseType="text";function Eg(t){return typeof Buffer=="function"&&ge(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Xs(t,e){const n=e&&e.property?Or(e.property):zr;return Te(t)&&!Eg(t)?Cg(n(t),e):n(JSON.parse(t))}Xs.responseType="json";function Cg(t,e){return!Be(t)&&od(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Dg={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function $u(t,e){let n,r,i,s;return t=Xs(t,e),e&&e.feature?(n=bd,i=e.feature):e&&e.mesh?(n=vd,i=e.mesh,s=Dg[e.filter]):W("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,s):W("Invalid TopoJSON object: "+i),r&&r.features||[r]}$u.responseType="json";const Zs={dsv:Ws,csv:_u(","),tsv:_u(" "),json:Xs,topojson:$u};function ec(t,e){return arguments.length>1?(Zs[t]=e,this):Pt(Zs,t)?Zs[t]:null}function tc(t,e,n,r){e=e||{};const i=ec(e.type||"json");return i||W("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Sg(t,e.parse,n,r),Pt(t,"columns")&&delete t.columns,t}function Sg(t,e,n,r){if(!t.length)return;const i=sg();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=vg(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(!Ju[d])throw Error("Illegal format pattern: "+p+":"+d);return Ju[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 ti=cg(typeof fetch!="undefined"&&fetch,null);/**
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=du(" "),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 pu(t,n)})}:pu(t,e)}function pu(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,s=gu(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 gu(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 gu(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 mu(t){return t===null?NaN:+t}const ws=bs(ys).right;bs(mu).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=Au(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 Au(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=mu){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 xu;function Nd(t,e){var n=Zr(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(xu=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 yu(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 bu={"%":(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)=>yu(t*100,e),r:yu,s:Nd,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function wu(t){return t}var vu=Array.prototype.map,Eu=["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?wu:Td(vu.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?wu:Pd(vu.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"):bu[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=bu[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"?Eu[8+xu/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=Eu[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 Cu(t){return Math.max(0,-$t(Math.abs(t)))}function Du(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor($t(e)/3)))*3-$t(Math.abs(t)))}function Su(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,Mu=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,Bu=_(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()});Bu.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=Bu,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,Fu=_(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()});Fu.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=Fu;function Iu(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,Mu],[e,3,3*Mu],[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]=Iu(mt,ei,$r,kt,zs,Os),[Kd,qd]=Iu(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 Tu(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:Ou,e:Ou,f:Ep,g:Lp,G:Np,H:bp,I:wp,j:vp,L:zu,m:Cp,M:Dp,p:BC,q:FC,Q:ju,s:Yu,S:Sp,u:Mp,U:Bp,V:Fp,w:Ip,W:Tp,x:null,X:null,y:Pp,Y:Rp,Z:kp,"%":Qu},v={a:IC,A:TC,b:PC,B:LC,c:null,d:Gu,e:Gu,f:Gp,g:qp,G:_p,H:Op,I:zp,j:Up,L:Hu,m:Hp,M:Vp,p:RC,q:NC,Q:ju,s:Yu,S:Qp,u:jp,U:Yp,V:Wp,w:Xp,W:Zp,x:null,X:null,y:Kp,Y:Jp,Z:$p,"%":Qu},D={a:se,A:E,b:oe,B:z,c:pe,d:Nu,e:Nu,f:mp,g:Ru,G:Lu,H:ku,I:ku,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:Ru,Y:Lu,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=Pu[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 Pu?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 Pu={"-":"",_:" ","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 Lu(t,e,n){var r=$.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ru(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 Nu(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 ku(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 Ou(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 zu(t,e){return L(t.getMilliseconds(),e,3)}function Ep(t,e){return zu(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 Uu(t){var e=t.getDay();return e>=4||e===0?Pn(t):Pn.ceil(t)}function Fp(t,e){return t=Uu(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=Uu(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 Gu(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 Hu(t,e){return L(t.getUTCMilliseconds(),e,3)}function Gp(t,e){return Hu(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 Vu(t){var e=t.getUTCDay();return e>=4||e===0?Ln(t):Ln.ceil(t)}function Wp(t,e){return t=Vu(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=Vu(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 Qu(){return"%"}function ju(t){return+t}function Yu(t){return Math.floor(+t/1e3)}var tn,Qs,Wu,js,Xu;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=Tu(t),Qs=tn.format,Wu=tn.parse,js=tn.utcFormat,Xu=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=Du(a,u))||(o.precision=c),n(o,u);case"":case"e":case"g":case"p":case"r":{isNaN(c=Su(a,u))||(o.precision=c-(o.type==="e"));break}case"f":case"%":{isNaN(c=Cu(a))||(o.precision=c-(o.type==="%")*2);break}}return e(o)}}}ig();function ig(){return rg({format:qr,formatPrefix:Ms})}function Zu(t,e,n){n=n||{},Le(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 Ku(t){const e=Yn(t.format),n=Yn(t.utcFormat);return{timeFormat:r=>X(r)?e(r):Zu(e,$d,r),utcFormat:r=>X(r)?n(r):Zu(n,ep,r),timeParse:Yn(t.parse),utcParse:Yn(t.utcParse)}}let Ys;sg();function sg(){return Ys=Ku({format:Qs,parse:Wu,utcFormat:js,utcParse:Xu})}function og(t){return Ku(Tu(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,qu="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(qu))||e.mode==="file"||e.mode!=="http"&&!u&&n,i?t=t.slice(qu.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)),Ju=t=>!Number.isNaN(+t)&&!(t instanceof Date),wg=t=>Ju(t)&&Number.isInteger(+t),_u={boolean:fd,integer:Fn,number:Fn,date:hd,string:dd,unknown:Gr},ri=[yg,wg,Ju,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 $u(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),du(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 Le(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 ec(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]}ec.responseType="json";const Zs={dsv:Ws,csv:$u(","),tsv:$u(" "),json:Xs,topojson:ec};function tc(t,e){return arguments.length>1?(Zs[t]=e,this):Pt(Zs,t)?Zs[t]:null}function nc(t,e,n,r){e=e||{};const i=tc(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);/**
7
7
  * @license
8
8
  * Copyright 2017 Google LLC
9
9
  * SPDX-License-Identifier: BSD-3-Clause
10
- */var Ks;const rn=globalThis.trustedTypes,nc=rn?rn.createPolicy("lit-html",{createHTML:t=>t}):void 0,mt=`lit$${(Math.random()+"").slice(9)}$`,rc="?"+mt,Mg=`<${rc}>`,sn=document,Xn=(t="")=>sn.createComment(t),Zn=t=>t===null||typeof t!="object"&&typeof t!="function",ic=Array.isArray,Bg=t=>{var e;return ic(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Kn=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,sc=/-->/g,oc=/>/g,zt=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,ac=/'/g,uc=/"/g,cc=/^(?:script|style|textarea)$/i,Fg=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),it=Fg(1),qn=Symbol.for("lit-noChange"),ne=Symbol.for("lit-nothing"),fc=new WeakMap,lc=(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 _n(e.insertBefore(Xn(),a),a,void 0,n!=null?n:{})}return o._$AI(t),o},on=sn.createTreeWalker(sn,129,null,!1),Ig=(t,e)=>{const n=t.length-1,r=[];let i,s=e===2?"<svg>":"",o=Kn;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===Kn?f[1]==="!--"?o=sc:f[1]!==void 0?o=oc:f[2]!==void 0?(cc.test(f[2])&&(i=RegExp("</"+f[2],"g")),o=zt):f[3]!==void 0&&(o=zt):o===zt?f[0]===">"?(o=i!=null?i:Kn,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]==='"'?uc:ac):o===uc||o===ac?o=zt:o===sc||o===oc?o=Kn:(o=zt,i=void 0);const d=o===zt&&t[u+1].startsWith("/>")?" ":"";s+=o===Kn?c+Mg:h>=0?(r.push(l),c.slice(0,h)+"$lit$"+c.slice(h)+mt+d):c+mt+(h===-2?(r.push(void 0),u):d)}const a=s+(t[n]||"<?>")+(e===2?"</svg>":"");return[nc!==void 0?nc.createHTML(a):a,r]};class Jn{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]=Ig(e,n);if(this.el=Jn.createElement(c,r),on.currentNode=this.el.content,n===2){const f=this.el.content,h=f.firstChild;h.remove(),f.append(...h.childNodes)}for(;(i=on.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(mt)){const p=l[o++];if(f.push(h),p!==void 0){const d=i.getAttribute(p.toLowerCase()+"$lit$").split(mt),g=/([.?@])?(.*)/.exec(p);u.push({type:1,index:s,name:g[2],strings:d,ctor:g[1]==="."?Pg:g[1]==="?"?Rg:g[1]==="@"?Ng:ni})}else u.push({type:6,index:s})}for(const h of f)i.removeAttribute(h)}if(cc.test(i.tagName)){const f=i.textContent.split(mt),h=f.length-1;if(h>0){i.textContent=rn?rn.emptyScript:"";for(let p=0;p<h;p++)i.append(f[p],Xn()),on.nextNode(),u.push({type:2,index:++s});i.append(f[h],Xn())}}}else if(i.nodeType===8)if(i.data===rc)u.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(mt,f+1))!==-1;)u.push({type:7,index:s}),f+=mt.length-1}s++}}static createElement(e,n){const r=sn.createElement("template");return r.innerHTML=e,r}}function an(t,e,n=t,r){var i,s,o,a;if(e===qn)return e;let u=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const c=Zn(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=an(t,u._$AS(t,e.values),u,r)),e}class Tg{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:sn).importNode(r,!0);on.currentNode=s;let o=on.nextNode(),a=0,u=0,c=i[0];for(;c!==void 0;){if(a===c.index){let l;c.type===2?l=new _n(o,o.nextSibling,this,e):c.type===1?l=new c.ctor(o,c.name,c.strings,this,e):c.type===6&&(l=new kg(o,this,e)),this.v.push(l),c=i[++u]}a!==(c==null?void 0:c.index)&&(o=on.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 _n{constructor(e,n,r,i){var s;this.type=2,this._$AH=ne,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=an(this,e,n),Zn(e)?e===ne||e==null||e===""?(this._$AH!==ne&&this._$AR(),this._$AH=ne):e!==this._$AH&&e!==qn&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):Bg(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!==ne&&Zn(this._$AH)?this._$AA.nextSibling.data=e:this.S(sn.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=Jn.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 Tg(s,this),a=o.p(this.options);o.m(r),this.S(a),this._$AH=o}}_$AC(e){let n=fc.get(e.strings);return n===void 0&&fc.set(e.strings,n=new Jn(e)),n}M(e){ic(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 _n(this.A(Xn()),this.A(Xn()),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 ni{constructor(e,n,r,i,s){this.type=1,this._$AH=ne,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=ne}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=an(this,e,n,0),o=!Zn(e)||e!==this._$AH&&e!==qn,o&&(this._$AH=e);else{const a=e;let u,c;for(e=s[0],u=0;u<s.length-1;u++)c=an(this,a[r+u],n,u),c===qn&&(c=this._$AH[u]),o||(o=!Zn(c)||c!==this._$AH[u]),c===ne?e=ne:e!==ne&&(e+=(c!=null?c:"")+s[u+1]),this._$AH[u]=c}o&&!i&&this.k(e)}k(e){e===ne?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Pg extends ni{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===ne?void 0:e}}const Lg=rn?rn.emptyScript:"";class Rg extends ni{constructor(){super(...arguments),this.type=4}k(e){e&&e!==ne?this.element.setAttribute(this.name,Lg):this.element.removeAttribute(this.name)}}class Ng extends ni{constructor(e,n,r,i,s){super(e,n,r,i,s),this.type=5}_$AI(e,n=this){var r;if((e=(r=an(this,e,n,0))!==null&&r!==void 0?r:ne)===qn)return;const i=this._$AH,s=e===ne&&i!==ne||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,o=e!==ne&&(i===ne||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 kg{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){an(this,e)}}const hc=window.litHtmlPolyfillSupport;hc==null||hc(Jn,_n),((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 ri(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 dc(t){return t===null?NaN:+t}const pc=ri(qs),Og=pc.right;pc.left,ri(dc).center;var zg=Og;function Ug(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 ii extends Map{constructor(e,n=Vg){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(gc(this,e))}has(e){return super.has(gc(this,e))}set(e,n){return super.set(Gg(this,e),n)}delete(e){return super.delete(Hg(this,e))}}function gc({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Gg({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Hg({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Vg(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Js(t){return t}function si(t,...e){return mc(t,Js,Js,e)}function Qg(t,...e){return mc(t,Array.from,Js,e)}function mc(t,e,n,r){return function i(s,o){if(o>=r.length)return n(s);const a=new ii,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 jg(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=Yg(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 Yg(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 Wg(t,e,n=dc){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 oi(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 ai(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 Xg(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function ui(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 Zg(t){return t=ui(Math.abs(t)),t?t[1]:NaN}function Kg(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 qg(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Jg=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ci(t){if(!(e=Jg.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]})}ci.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 _g(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 Ac;function $g(t,e){var n=ui(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(Ac=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")+ui(t,Math.max(0,e+s-1))[0]}function xc(t,e){var n=ui(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 yc={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Xg,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)=>xc(t*100,e),r:xc,s:$g,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function bc(t){return t}var wc=Array.prototype.map,vc=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function em(t){var e=t.grouping===void 0||t.thousands===void 0?bc:Kg(wc.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?bc:qg(wc.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=ci(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"):yc[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():"",B=g==="$"?r:/[%p]/.test(D)?o:"",I=yc[D],P=/[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 X(E){var ae=C,U=B,pe,_t,Ue;if(D==="c")U=I(E)+U,E="";else{E=+E;var Ge=E<0||1/E<0;if(E=isNaN(E)?u:I(Math.abs(E),y),v&&(E=_g(E)),Ge&&+E==0&&d!=="+"&&(Ge=!1),ae=(Ge?d==="("?d:a:d==="-"||d==="("?"":d)+ae,U=(D==="s"?vc[8+Ac/3]:"")+U+(Ge&&d==="("?")":""),P){for(pe=-1,_t=E.length;++pe<_t;)if(Ue=E.charCodeAt(pe),48>Ue||Ue>57){U=(Ue===46?i+E.slice(pe+1):E.slice(pe))+U,E=E.slice(0,pe);break}}}b&&!m&&(E=e(E,1/0));var He=ae.length+E.length+U.length,K=He<A?new Array(A-He+1).join(h):"";switch(b&&m&&(E=e(K+E,K.length?A-U.length:1/0),K=""),p){case"<":E=ae+E+U+K;break;case"=":E=ae+K+E+U;break;case"^":E=K.slice(0,He=K.length>>1)+ae+E+U+K.slice(He);break;default:E=K+ae+E+U;break}return s(E)}return X.toString=function(){return f+""},X}function l(f,h){var p=c((f=ci(f),f.type="f",f)),d=Math.max(-8,Math.min(8,Math.floor(Zg(h)/3)))*3,g=Math.pow(10,-d),m=vc[8+d/3];return function(A){return p(g*A)+m}}return{format:c,formatPrefix:l}}var ro,xe;tm({thousands:",",grouping:[3],currency:["$",""]});function tm(t){return ro=em(t),xe=ro.format,ro}const Ec=1;function io(){let t=[0,1],e=[0,1],n=1,r=1,i=0,s=0,o=.5,a=0;function u(c){return(c-t[0])/n*r+e[0]}return u.invert=function(c){return(c-e[0])/r*n+t[0]},u.domain=function(c){if(arguments.length){if(t=Ug(c),n=t[1]-t[0],n<Ec){n=Ec;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(c){return arguments.length?(e=[...c],r=e[1]-e[0],u):e},u.numberingOffset=function(c){return arguments.length?(a=c,u):a},u.padding=function(c){return arguments.length?(s=c,i=Math.min(1,c),u):i},u.paddingInner=function(c){return arguments.length?(i=Math.min(1,c),u):i},u.paddingOuter=function(c){return arguments.length?(s=c,u):s},u.align=function(c){return arguments.length?(o=Math.max(0,Math.min(1,c)),u):o},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=c=>{const l=u.align(),f=u.numberingOffset();return jg(t[0]-l+f,t[1]-l+f,Math.min(c,Math.ceil(n))).filter(Number.isInteger).map(h=>h-a)},u.tickFormat=function(c,l){if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=to(t[0],t[1],Math.min(c,Math.ceil(n)))<1e5?xe(","):xe(".3s");return p=>h(p+a)},u.copy=()=>io().domain(t).range(e).paddingInner(i).paddingOuter(s).numberingOffset(a),u}function nm(){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 Ve(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function At(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)},Ve.apply(i,arguments),i}function un(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 xt(){}var Ut=.7,cn=1/Ut,fn="\\s*([+-]?\\d+)\\s*",er="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Qe="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",rm=/^#([0-9a-f]{3,8})$/,im=new RegExp("^rgb\\("+[fn,fn,fn]+"\\)$"),sm=new RegExp("^rgb\\("+[Qe,Qe,Qe]+"\\)$"),om=new RegExp("^rgba\\("+[fn,fn,fn,er]+"\\)$"),am=new RegExp("^rgba\\("+[Qe,Qe,Qe,er]+"\\)$"),um=new RegExp("^hsl\\("+[er,Qe,Qe]+"\\)$"),cm=new RegExp("^hsla\\("+[er,Qe,Qe,er]+"\\)$"),Cc={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};un(xt,tr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Dc,formatHex:Dc,formatHsl:fm,formatRgb:Sc,toString:Sc});function Dc(){return this.rgb().formatHex()}function fm(){return Tc(this).formatHsl()}function Sc(){return this.rgb().formatRgb()}function tr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=rm.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Mc(e):n===3?new se(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?fi(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?fi(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=im.exec(t))?new se(e[1],e[2],e[3],1):(e=sm.exec(t))?new se(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=om.exec(t))?fi(e[1],e[2],e[3],e[4]):(e=am.exec(t))?fi(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=um.exec(t))?Ic(e[1],e[2]/100,e[3]/100,1):(e=cm.exec(t))?Ic(e[1],e[2]/100,e[3]/100,e[4]):Cc.hasOwnProperty(t)?Mc(Cc[t]):t==="transparent"?new se(NaN,NaN,NaN,0):null}function Mc(t){return new se(t>>16&255,t>>8&255,t&255,1)}function fi(t,e,n,r){return r<=0&&(t=e=n=NaN),new se(t,e,n,r)}function ao(t){return t instanceof xt||(t=tr(t)),t?(t=t.rgb(),new se(t.r,t.g,t.b,t.opacity)):new se}function li(t,e,n,r){return arguments.length===1?ao(t):new se(t,e,n,r==null?1:r)}function se(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}un(se,li,$n(xt,{brighter:function(t){return t=t==null?cn:Math.pow(cn,t),new se(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ut:Math.pow(Ut,t),new se(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:Bc,formatHex:Bc,formatRgb:Fc,toString:Fc}));function Bc(){return"#"+uo(this.r)+uo(this.g)+uo(this.b)}function Fc(){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 Ic(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new je(t,e,n,r)}function Tc(t){if(t instanceof je)return new je(t.h,t.s,t.l,t.opacity);if(t instanceof xt||(t=tr(t)),!t)return new je;if(t instanceof je)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 je(o,a,u,t.opacity)}function co(t,e,n,r){return arguments.length===1?Tc(t):new je(t,e,n,r==null?1:r)}function je(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}un(je,co,$n(xt,{brighter:function(t){return t=t==null?cn:Math.pow(cn,t),new je(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ut:Math.pow(Ut,t),new je(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 se(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 Pc=Math.PI/180,Lc=180/Math.PI,hi=18,Rc=.96422,Nc=1,kc=.82521,Oc=4/29,ln=6/29,zc=3*ln*ln,lm=ln*ln*ln;function Uc(t){if(t instanceof Ye)return new Ye(t.l,t.a,t.b,t.opacity);if(t instanceof st)return Gc(t);t instanceof se||(t=ao(t));var e=mo(t.r),n=mo(t.g),r=mo(t.b),i=ho((.2225045*e+.7168786*n+.0606169*r)/Nc),s,o;return e===n&&n===r?s=o=i:(s=ho((.4360747*e+.3850649*n+.1430804*r)/Rc),o=ho((.0139322*e+.0971045*n+.7141733*r)/kc)),new Ye(116*i-16,500*(s-i),200*(i-o),t.opacity)}function lo(t,e,n,r){return arguments.length===1?Uc(t):new Ye(t,e,n,r==null?1:r)}function Ye(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}un(Ye,lo,$n(xt,{brighter:function(t){return new Ye(this.l+hi*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Ye(this.l-hi*(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=Rc*po(e),t=Nc*po(t),n=kc*po(n),new se(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>lm?Math.pow(t,1/3):t/zc+Oc}function po(t){return t>ln?t*t*t:zc*(t-Oc)}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 hm(t){if(t instanceof st)return new st(t.h,t.c,t.l,t.opacity);if(t instanceof Ye||(t=Uc(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)*Lc;return new st(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?hm(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 Gc(t){if(isNaN(t.h))return new Ye(t.l,0,0,t.opacity);var e=t.h*Pc;return new Ye(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}un(st,Ao,$n(xt,{brighter:function(t){return new st(this.h,this.c,this.l+hi*(t==null?1:t),this.opacity)},darker:function(t){return new st(this.h,this.c,this.l-hi*(t==null?1:t),this.opacity)},rgb:function(){return Gc(this).rgb()}}));var Hc=-.14861,xo=1.78277,yo=-.29227,di=-.90649,nr=1.97294,Vc=nr*di,Qc=nr*xo,jc=xo*yo-di*Hc;function dm(t){if(t instanceof Gt)return new Gt(t.h,t.s,t.l,t.opacity);t instanceof se||(t=ao(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(jc*r+Vc*e-Qc*n)/(jc+Vc-Qc),s=r-i,o=(nr*(n-i)-yo*s)/di,a=Math.sqrt(o*o+s*s)/(nr*i*(1-i)),u=a?Math.atan2(o,s)*Lc-120:NaN;return new Gt(u<0?u+360:u,a,i,t.opacity)}function bo(t,e,n,r){return arguments.length===1?dm(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}un(Gt,bo,$n(xt,{brighter:function(t){return t=t==null?cn:Math.pow(cn,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)*Pc,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new se(255*(e+n*(Hc*r+xo*i)),255*(e+n*(yo*r+di*i)),255*(e+n*(nr*r)),this.opacity)}}));function Yc(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 Wc(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 Yc((n-r/e)*e,o,i,s,a)}}function Xc(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 Yc((n-r/e)*e,i,s,o,a)}}var pi=t=>()=>t;function Zc(t,e){return function(n){return t+n*e}}function pm(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 gi(t,e){var n=e-t;return n?Zc(t,n>180||n<-180?n-360*Math.round(n/360):n):pi(isNaN(t)?e:t)}function gm(t){return(t=+t)==1?re:function(e,n){return n-e?pm(e,n,t):pi(isNaN(e)?n:e)}}function re(t,e){var n=e-t;return n?Zc(t,n):pi(isNaN(t)?e:t)}var wo=function t(e){var n=gm(e);function r(i,s){var o=n((i=li(i)).r,(s=li(s)).r),a=n(i.g,s.g),u=n(i.b,s.b),c=re(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 Kc(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=li(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 mm=Kc(Wc),Am=Kc(Xc);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 qc(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function xm(t,e){return(qc(e)?vo:Jc)(t,e)}function Jc(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]=yt(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 _c(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Le(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function $c(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]=yt(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 ym(t){return function(){return t}}function bm(t){return function(e){return t(e)+""}}function ef(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:Le(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]?bm(u[0].x):ym(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 yt(t,e){var n=typeof e,r;return e==null||n==="boolean"?pi(e):(n==="number"?Le:n==="string"?(r=tr(e))?(e=r,wo):ef:e instanceof tr?wo:e instanceof Date?_c:qc(e)?vo:Array.isArray(e)?Jc:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?$c:Le)(t,e)}function wm(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function vm(t,e){var n=gi(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function rr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var tf=180/Math.PI,Do={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function nf(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)*tf,skewX:Math.atan(u)*tf,scaleX:o,scaleY:a}}var mi;function Em(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Do:nf(e.a,e.b,e.c,e.d,e.e,e.f)}function Cm(t){return t==null||(mi||(mi=document.createElementNS("http://www.w3.org/2000/svg","g")),mi.setAttribute("transform",t),!(t=mi.transform.baseVal.consolidate()))?Do:(t=t.matrix,nf(t.a,t.b,t.c,t.d,t.e,t.f))}function rf(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:Le(c,f)},{i:g-2,x:Le(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:Le(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:Le(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:Le(c,f)},{i:g-2,x:Le(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 Dm=rf(Em,"px, ","px)","deg)"),Sm=rf(Cm,", ",")",")"),Mm=1e-12;function sf(t){return((t=Math.exp(t))+1/t)/2}function Bm(t){return((t=Math.exp(t))-1/t)/2}function Fm(t){return((t=Math.exp(2*t))-1)/(t+1)}var of=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<Mm)A=Math.log(h/c)/e,m=function(B){return[a+B*p,u+B*d,c*Math.exp(e*B*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(B){var I=B*A,P=sf(D),X=c/(n*b)*(P*Fm(e*I+D)-Bm(D));return[a+X*p,u+X*d,c*P/sf(e*I+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 af(t){return function(e,n){var r=t((e=co(e)).h,(n=co(n)).h),i=re(e.s,n.s),s=re(e.l,n.l),o=re(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 Im=af(gi),Tm=af(re);function Pm(t,e){var n=re((t=lo(t)).l,(e=lo(e)).l),r=re(t.a,e.a),i=re(t.b,e.b),s=re(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 uf(t){return function(e,n){var r=t((e=Ao(e)).h,(n=Ao(n)).h),i=re(e.c,n.c),s=re(e.l,n.l),o=re(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 Lm=uf(gi),Rm=uf(re);function cf(t){return function e(n){n=+n;function r(i,s){var o=t((i=bo(i)).h,(s=bo(s)).h),a=re(i.s,s.s),u=re(i.l,s.l),c=re(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 Nm=cf(gi),km=cf(re);function So(t,e){e===void 0&&(e=t,t=yt);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 Om(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var zm=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:yt,interpolateArray:xm,interpolateBasis:Wc,interpolateBasisClosed:Xc,interpolateDate:_c,interpolateDiscrete:wm,interpolateHue:vm,interpolateNumber:Le,interpolateNumberArray:vo,interpolateObject:$c,interpolateRound:rr,interpolateString:ef,interpolateTransformCss:Dm,interpolateTransformSvg:Sm,interpolateZoom:of,interpolateRgb:wo,interpolateRgbBasis:mm,interpolateRgbBasisClosed:Am,interpolateHsl:Im,interpolateHslLong:Tm,interpolateLab:Pm,interpolateHcl:Lm,interpolateHclLong:Rm,interpolateCubehelix:Nm,interpolateCubehelixLong:km,piecewise:So,quantize:Om});function Um(t){return function(){return t}}function Mo(t){return+t}var ff=[0,1];function ye(t){return t}function Bo(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Um(isNaN(e)?NaN:.5)}function Gm(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Hm(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 Vm(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=Pn(t,a,1,r)-1;return s[u](i[u](a))}}function ir(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ai(){var t=ff,e=ff,n=yt,r,i,s,o=ye,a,u,c;function l(){var h=Math.min(t.length,e.length);return o!==ye&&(o=Gm(t[0],t[h-1])),a=h>2?Vm:Hm,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),Le)))(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=rr,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 lf(){return Ai()(ye,ye)}function hf(t,e,n,r){var i=jr(t,e,n),s;switch(r=tn(r==null?",f":r),r.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(s=Cu(i,o))&&(r.precision=s),Ms(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Du(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Eu(i))&&(r.precision=s-(r.type==="%")*2);break}}return Xr(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 hf(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=mu(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 df(){var t=lf();return t.copy=function(){return ir(t,df())},Ve.apply(t,arguments),Ht(t)}function pf(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 pf(t).unknown(e)},t=arguments.length?Array.from(t,Mo):[0,1],Ht(n)}function gf(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 mf(t){return Math.log(t)}function Af(t){return Math.exp(t)}function Qm(t){return-Math.log(-t)}function jm(t){return-Math.exp(-t)}function Ym(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Wm(t){return t===10?Ym:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function Xm(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 xf(t){return function(e){return-t(-e)}}function Fo(t){var e=t(mf,Af),n=e.domain,r=10,i,s;function o(){return i=Xm(r),s=Wm(r),n()[0]<0?(i=xf(i),s=xf(s),t(Qm,jm)):t(mf,Af),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=Xr(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(gf(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(Ai()).domain([1,10]);return t.copy=function(){return ir(t,Io()).base(t.base())},Ve.apply(t,arguments),t}function yf(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function bf(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function To(t){var e=1,n=t(yf(e),bf(e));return n.constant=function(r){return arguments.length?t(yf(e=+r),bf(e)):e},Ht(n)}function wf(){var t=To(Ai());return t.copy=function(){return ir(t,wf()).constant(t.constant())},Ve.apply(t,arguments)}function vf(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Zm(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Km(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(Zm,Km):t(vf(n),vf(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Ht(e)}function Lo(){var t=Po(Ai());return t.copy=function(){return ir(t,Lo()).exponent(t.exponent())},Ve.apply(t,arguments),t}function qm(){return Lo.apply(null,arguments).exponent(.5)}function Ef(){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]=Sd(t,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:e[Pn(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 Ef().domain(t).range(e).unknown(r)},Ve.apply(s,arguments)}function Cf(){var t=0,e=1,n=1,r=[.5],i=[0,1],s;function o(u){return u!=null&&u<=u?i[Pn(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 Cf().domain([t,e]).range(i).unknown(s)},Ve.apply(Ht(o),arguments)}function Df(){var t=[.5],e=[0,1],n,r=1;function i(s){return s!=null&&s<=s?e[Pn(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 Df().domain(t).range(e).unknown(n)},Ve.apply(i,arguments)}function Jm(t){return new Date(t)}function _m(t){return t instanceof Date?+t:+new Date(+t)}function Ro(t,e,n,r,i,s,o,a,u,c){var l=lf(),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,_m)):h().map(Jm)},l.ticks=function(C){var B=h();return t(B[0],B[B.length-1],C==null?10:C)},l.tickFormat=function(C,B){return B==null?D:c(B)},l.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(gf(B,C)):l},l.copy=function(){return ir(l,Ro(t,e,n,r,i,s,o,a,u,c))},l}function $m(){return Ve.apply(Ro(Xd,Zd,pt,Kr,Zr,Rt,Ns,Rs,dt,Qs).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function eA(){return Ve.apply(Ro(Yd,Wd,gt,Jr,qr,kt,zs,Os,dt,js).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function xi(){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(yt),c.rangeRound=l(rr),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 bt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function No(){var t=Ht(xi()(ye));return t.copy=function(){return bt(t,No())},At.apply(t,arguments)}function Sf(){var t=Fo(xi()).domain([1,10]);return t.copy=function(){return bt(t,Sf()).base(t.base())},At.apply(t,arguments)}function Mf(){var t=To(xi());return t.copy=function(){return bt(t,Mf()).constant(t.constant())},At.apply(t,arguments)}function ko(){var t=Po(xi());return t.copy=function(){return bt(t,ko()).exponent(t.exponent())},At.apply(t,arguments)}function tA(){return ko.apply(null,arguments).exponent(.5)}function yi(){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(yt),p.rangeRound=d(rr),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 Bf(){var t=Ht(yi()(ye));return t.copy=function(){return bt(t,Bf())},At.apply(t,arguments)}function Ff(){var t=Fo(yi()).domain([.1,1,10]);return t.copy=function(){return bt(t,Ff()).base(t.base())},At.apply(t,arguments)}function If(){var t=To(yi());return t.copy=function(){return bt(t,If()).constant(t.constant())},At.apply(t,arguments)}function Oo(){var t=Po(yi());return t.copy=function(){return bt(t,Oo()).exponent(t.exponent())},At.apply(t,arguments)}function nA(){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 rA="identity",hn="linear",wt="log",sr="pow",or="sqrt",bi="symlog",Tf="time",Pf="utc",We="sequential",dn="diverging",Uo="quantile",Lf="quantize",Rf="threshold",Go="ordinal",Ho="point",Nf="band",Vo="bin-ordinal",$="continuous",ar="discrete",ur="discretizing",Ie="interpolating",kf="temporal";function iA(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 sA(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=Md(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 Of(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Of(e())},t}function oA(){return Of(Qo().paddingInner(1))}var aA=Array.prototype.map;function uA(t){return aA.call(t,In)}const cA=Array.prototype.slice;function zf(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Pn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=uA(r),n):t.slice()},n.range=function(r){return arguments.length?(e=cA.call(r),n):e.slice()},n.tickFormat=function(r,i){return hf(t[0],Pe(t),r==null?10:r,i)},n.copy=function(){return zf().domain(n.domain()).range(n.range())},n}const wi={};function fA(t,e,n){const r=function(){const s=e();return s.invertRange||(s.invertRange=s.invert?iA(s):s.invertExtent?sA(s):void 0),s.type=t,s};return r.metadata=Qr(ds(n)),r}function O(t,e,n){return arguments.length>1?(wi[t]=fA(t,e,n),this):lA(t)?wi[t]:void 0}O(rA,pf),O(hn,df,$),O(wt,Io,[$,wt]),O(sr,Lo,$),O(or,qm,$),O(bi,wf,$),O(Tf,$m,[$,kf]),O(Pf,eA,[$,kf]),O(We,No,[$,Ie]),O("".concat(We,"-").concat(hn),No,[$,Ie]),O("".concat(We,"-").concat(wt),Sf,[$,Ie,wt]),O("".concat(We,"-").concat(sr),ko,[$,Ie]),O("".concat(We,"-").concat(or),tA,[$,Ie]),O("".concat(We,"-").concat(bi),Mf,[$,Ie]),O("".concat(dn,"-").concat(hn),Bf,[$,Ie]),O("".concat(dn,"-").concat(wt),Ff,[$,Ie,wt]),O("".concat(dn,"-").concat(sr),Oo,[$,Ie]),O("".concat(dn,"-").concat(or),nA,[$,Ie]),O("".concat(dn,"-").concat(bi),If,[$,Ie]),O(Uo,Ef,[ur,Uo]),O(Lf,Cf,ur),O(Rf,Df,ur),O(Vo,zf,[ar,ur]),O(Go,oo,ar),O(Nf,Qo,ar),O(Ho,oA,ar);function lA(t){return Pt(wi,t)}function cr(t,e){const n=wi[t];return n&&n.metadata[e]}function Xe(t){return cr(t,$)}function Vt(t){return cr(t,ar)}function pn(t){return cr(t,ur)}function Uf(t){return cr(t,wt)}function vi(t){return cr(t,Ie)}function hA(t,e){const n=e[0],r=Pe(e)-n;return function(i){return t(n+i*r)}}function Ei(t,e,n){return So(Gf(e||"rgb",n),t)}function dA(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Gf(t,e){const n=zm[pA(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function pA(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const gA={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"},mA={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 Hf(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 Vf(t,e){for(const n in t)jo(n,e(t[n]))}const Qf={};Vf(mA,Hf),Vf(gA,t=>Ei(Hf(t)));function jo(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Qf[t]=e,this):Qf[t]}var LC="";function AA(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}function Yo(t,e,n,r){return n=n||(i=>i),r=r||(i=>i),t.length==e.length&&t.every((i,s)=>n(t[s])===r(e[s]))}function Ze(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function Re(t){return t[t.length-1]}class xA{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=Re(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=AA(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&yA(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const e=20,[n,r]=this.mouseCoords;let i=n+e;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-e-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+e,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(lc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}lc(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(it`${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 yA(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const bA="RawCode",wA="Literal",vA="Property",EA="Identifier",CA="ArrayExpression",DA="BinaryExpression",SA="CallExpression",MA="ConditionalExpression",BA="LogicalExpression",FA="MemberExpression",IA="ObjectExpression",TA="UnaryExpression";function Ne(t){this.type=t}Ne.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=PA(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function PA(t){switch(t.type){case CA:return t.elements;case DA:case BA:return[t.left,t.right];case SA:return[t.callee].concat(t.arguments);case MA:return[t.test,t.consequent,t.alternate];case FA:return[t.object,t.property];case IA:return t.properties;case vA:return[t.key,t.value];case TA:return[t.argument];case EA:case wA:case bA:default:return[]}}var Ke,S,x,ue,z,Ci=1,fr=2,Qt=3,vt=4,Di=5,jt=6,be=7,lr=8,LA=9;Ke={},Ke[Ci]="Boolean",Ke[fr]="<end>",Ke[Qt]="Identifier",Ke[vt]="Keyword",Ke[Di]="Null",Ke[jt]="Numeric",Ke[be]="Punctuator",Ke[lr]="String",Ke[LA]="RegularExpression";var RA="ArrayExpression",NA="BinaryExpression",kA="CallExpression",OA="ConditionalExpression",jf="Identifier",zA="Literal",UA="LogicalExpression",GA="MemberExpression",HA="ObjectExpression",VA="Property",QA="UnaryExpression",ie="Unexpected token %0",jA="Unexpected number",YA="Unexpected string",WA="Unexpected identifier",XA="Unexpected reserved word",ZA="Unexpected end of input",Wo="Invalid regular expression",Xo="Invalid regular expression: missing /",Yf="Octal literals are not allowed in strict mode.",KA="Duplicate data property in object literal not allowed in strict mode",oe="ILLEGAL",hr="Disabled.",qA=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]"),JA=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 Si(t,e){if(!t)throw new Error("ASSERT: "+e)}function ot(t){return t>=48&&t<=57}function Zo(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function dr(t){return"01234567".indexOf(t)>=0}function _A(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 pr(t){return t===10||t===13||t===8232||t===8233}function gr(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&qA.test(String.fromCharCode(t))}function Mi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&JA.test(String.fromCharCode(t))}const $A={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 Wf(){for(;x<ue;){const t=S.charCodeAt(x);if(_A(t)||pr(t))++x;else break}}function Ko(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)x<ue&&Zo(S[x])?(r=S[x++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):N({},ie,oe);return String.fromCharCode(i)}function e1(){var t,e,n,r;for(t=S[x],e=0,t==="}"&&N({},ie,oe);x<ue&&(t=S[x++],!!Zo(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&N({},ie,oe),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Xf(){var t,e;for(t=S.charCodeAt(x++),e=String.fromCharCode(t),t===92&&(S.charCodeAt(x)!==117&&N({},ie,oe),++x,t=Ko("u"),(!t||t==="\\"||!gr(t.charCodeAt(0)))&&N({},ie,oe),e=t);x<ue&&(t=S.charCodeAt(x),!!Mi(t));)++x,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),S.charCodeAt(x)!==117&&N({},ie,oe),++x,t=Ko("u"),(!t||t==="\\"||!Mi(t.charCodeAt(0)))&&N({},ie,oe),e+=t);return e}function t1(){var t,e;for(t=x++;x<ue;){if(e=S.charCodeAt(x),e===92)return x=t,Xf();if(Mi(e))++x;else break}return S.slice(t,x)}function n1(){var t,e,n;return t=x,e=S.charCodeAt(x)===92?Xf():t1(),e.length===1?n=Qt:$A.hasOwnProperty(e)?n=vt:e==="null"?n=Di:e==="true"||e==="false"?n=Ci:n=Qt,{type:n,value:e,start:t,end:x}}function qo(){var t=x,e=S.charCodeAt(x),n,r=S[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=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(o=S.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==="//"&&N({},ie,oe),"<>=!+-*%&|^/".indexOf(r)>=0)return++x,{type:be,value:r,start:t,end:x};N({},ie,oe)}function r1(t){let e="";for(;x<ue&&Zo(S[x]);)e+=S[x++];return e.length===0&&N({},ie,oe),gr(S.charCodeAt(x))&&N({},ie,oe),{type:jt,value:parseInt("0x"+e,16),start:t,end:x}}function i1(t){let e="0"+S[x++];for(;x<ue&&dr(S[x]);)e+=S[x++];return(gr(S.charCodeAt(x))||ot(S.charCodeAt(x)))&&N({},ie,oe),{type:jt,value:parseInt(e,8),octal:!0,start:t,end:x}}function Zf(){var t,e,n;if(n=S[x],Si(ot(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,r1(e);if(dr(n))return i1(e);n&&ot(n.charCodeAt(0))&&N({},ie,oe)}for(;ot(S.charCodeAt(x));)t+=S[x++];n=S[x]}if(n==="."){for(t+=S[x++];ot(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++]),ot(S.charCodeAt(x)))for(;ot(S.charCodeAt(x));)t+=S[x++];else N({},ie,oe);return gr(S.charCodeAt(x))&&N({},ie,oe),{type:jt,value:parseFloat(t),start:e,end:x}}function s1(){var t="",e,n,r,i,s=!1;for(e=S[x],Si(e==="'"||e==='"',"String literal must starts with a quote"),n=x,++x;x<ue;)if(r=S[x++],r===e){e="";break}else if(r==="\\")if(r=S[x++],!r||!pr(r.charCodeAt(0)))switch(r){case"u":case"x":S[x]==="{"?(++x,t+=e1()):t+=Ko(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:dr(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),x<ue&&dr(S[x])&&(s=!0,i=i*8+"01234567".indexOf(S[x++]),"0123".indexOf(r)>=0&&x<ue&&dr(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(pr(r.charCodeAt(0)))break;t+=r}return e!==""&&N({},ie,oe),{type:lr,value:t,octal:s,start:n,end:x}}function o1(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";N({},Wo)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{N({},Wo)}try{return new RegExp(t,e)}catch{return null}}function a1(){var t,e,n,r,i;for(t=S[x],Si(t==="/","Regular expression literal must start with a slash"),e=S[x++],n=!1,r=!1;x<ue;)if(t=S[x++],e+=t,t==="\\")t=S[x++],pr(t.charCodeAt(0))&&N({},Xo),e+=t;else if(pr(t.charCodeAt(0)))N({},Xo);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||N({},Xo),i=e.substr(1,e.length-2),{value:i,literal:e}}function u1(){var t,e,n;for(e="",n="";x<ue&&(t=S[x],!!Mi(t.charCodeAt(0)));)++x,t==="\\"&&x<ue?N({},ie,oe):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&N({},Wo,n),{value:n,literal:e}}function c1(){var t,e,n,r;return z=null,Wf(),t=x,e=a1(),n=u1(),r=o1(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:x}}function f1(t){return t.type===Qt||t.type===vt||t.type===Ci||t.type===Di}function Kf(){if(Wf(),x>=ue)return{type:fr,start:x,end:x};const t=S.charCodeAt(x);return gr(t)?n1():t===40||t===41||t===59?qo():t===39||t===34?s1():t===46?ot(S.charCodeAt(x+1))?Zf():qo():ot(t)?Zf():qo()}function we(){const t=z;return x=t.end,z=Kf(),x=t.end,t}function qf(){const t=x;z=Kf(),x=t}function l1(t){const e=new Ne(RA);return e.elements=t,e}function Jf(t,e,n){const r=new Ne(t==="||"||t==="&&"?UA:NA);return r.operator=t,r.left=e,r.right=n,r}function h1(t,e){const n=new Ne(kA);return n.callee=t,n.arguments=e,n}function d1(t,e,n){const r=new Ne(OA);return r.test=t,r.consequent=e,r.alternate=n,r}function Jo(t){const e=new Ne(jf);return e.name=t,e}function mr(t){const e=new Ne(zA);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 _f(t,e,n){const r=new Ne(GA);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function p1(t){const e=new Ne(HA);return e.properties=t,e}function $f(t,e,n){const r=new Ne(VA);return r.key=e,r.value=n,r.kind=t,r}function g1(t,e){const n=new Ne(QA);return n.operator=t,n.argument=e,n.prefix=!0,n}function N(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(s,o)=>(Si(o<r.length,"Message reference must be in range"),r[o]));throw n=new Error(i),n.index=x,n.description=i,n}function Bi(t){t.type===fr&&N(t,ZA),t.type===jt&&N(t,jA),t.type===lr&&N(t,YA),t.type===Qt&&N(t,WA),t.type===vt&&N(t,XA),N(t,ie,t.value)}function ce(t){const e=we();(e.type!==be||e.value!==t)&&Bi(e)}function Q(t){return z.type===be&&z.value===t}function _o(t){return z.type===vt&&z.value===t}function m1(){const t=[];for(x=z.start,ce("[");!Q("]");)Q(",")?(we(),t.push(null)):(t.push(Yt()),Q("]")||ce(","));return we(),l1(t)}function el(){x=z.start;const t=we();return t.type===lr||t.type===jt?(t.octal&&N(t,Yf),mr(t)):Jo(t.value)}function A1(){var t,e,n,r;if(x=z.start,t=z,t.type===Qt)return n=el(),ce(":"),r=Yt(),$f("init",n,r);if(t.type===fr||t.type===be)Bi(t);else return e=el(),ce(":"),r=Yt(),$f("init",e,r)}function x1(){var t=[],e,n,r,i={},s=String;for(x=z.start,ce("{");!Q("}");)e=A1(),e.key.type===jf?n=e.key.name:n=s(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?N({},KA):i[r]=!0,t.push(e),Q("}")||ce(",");return ce("}"),p1(t)}function y1(){ce("(");const t=$o();return ce(")"),t}const b1={if:1};function w1(){var t,e,n;if(Q("("))return y1();if(Q("["))return m1();if(Q("{"))return x1();if(t=z.type,x=z.start,t===Qt||b1[z.value])n=Jo(we().value);else if(t===lr||t===jt)z.octal&&N(z,Yf),n=mr(we());else{if(t===vt)throw new Error(hr);t===Ci?(e=we(),e.value=e.value==="true",n=mr(e)):t===Di?(e=we(),e.value=null,n=mr(e)):Q("/")||Q("/=")?(n=mr(c1()),qf()):Bi(we())}return n}function v1(){const t=[];if(ce("("),!Q(")"))for(;x<ue&&(t.push(Yt()),!Q(")"));)ce(",");return ce(")"),t}function E1(){x=z.start;const t=we();return f1(t)||Bi(t),Jo(t.value)}function C1(){return ce("."),E1()}function D1(){ce("[");const t=$o();return ce("]"),t}function S1(){var t,e,n;for(t=w1();;)if(Q("."))n=C1(),t=_f(".",t,n);else if(Q("("))e=v1(),t=h1(t,e);else if(Q("["))n=D1(),t=_f("[",t,n);else break;return t}function tl(){const t=S1();if(z.type===be&&(Q("++")||Q("--")))throw new Error(hr);return t}function Fi(){var t,e;if(z.type!==be&&z.type!==vt)e=tl();else{if(Q("++")||Q("--"))throw new Error(hr);if(Q("+")||Q("-")||Q("~")||Q("!"))t=we(),e=Fi(),e=g1(t.value,e);else{if(_o("delete")||_o("void")||_o("typeof"))throw new Error(hr);e=tl()}}return e}function nl(t){let e=0;if(t.type!==be&&t.type!==vt)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 M1(){var t,e,n,r,i,s,o,a,u,c;if(t=z,u=Fi(),r=z,i=nl(r),i===0)return u;for(r.prec=i,we(),e=[t,z],o=Fi(),s=[u,r,o];(i=nl(z))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,u=s.pop(),e.pop(),n=Jf(a,u,o),s.push(n);r=we(),r.prec=i,s.push(r),e.push(z),n=Fi(),s.push(n)}for(c=s.length-1,n=s[c],e.pop();c>1;)e.pop(),n=Jf(s[c-1].value,s[c-2],n),c-=2;return n}function Yt(){var t,e,n;return t=M1(),Q("?")&&(we(),e=Yt(),ce(":"),n=Yt(),t=d1(t,e,n)),t}function $o(){const t=Yt();if(Q(","))throw new Error(hr);return t}function B1(t){S=t,x=0,ue=S.length,z=null,qf();const e=$o();if(z.type!==fr)throw new Error("Unexpect token after expression.");return e}var F1={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 I1(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&&W("Missing arguments to clamp function."),o.length>3&&W("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&&W("Missing arguments to if function."),o.length>3&&W("Too many arguments to if function.");const a=o.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function T1(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function P1(t){t=t||{};const e=t.allowed?Qr(t.allowed):{},n=t.forbidden?Qr(t.forbidden):{},r=t.constants||F1,i=(t.functions||I1)(f),s=t.globalvar,o=t.fieldvar,a=ge(s)?s:d=>`${s}["${d}"]`;let u={},c={},l=0;function f(d){if(q(d))return d;const g=h[d.type];return g==null&&W("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)?W("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[T1(A)]=1),g&&(l-=1),m+(g?"."+A:"["+A+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&W("Illegal callee type: "+d.callee.type);const g=d.callee.name,m=d.arguments,A=Pt(i,g)&&i[g];return A||W("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 ea(t,e={}){const n=P1({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=B1(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 L1(){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 R1(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const s=t.unitView.getScaleResolution(at(i)&&i.resolutionChannel||r);n[r]=N1(e[r],s==null?void 0:s.getScale(),t.unitView.getAccessor(r),r)}return n}function N1(t,e,n,r){let i;if(Wt(t))i=s=>t.value,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=L1();s.addAll(e.domain()),i.indexer=o=>s(n(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?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 Wt(t){return t&&"value"in t}function Ar(t){return t&&"field"in t}function Ii(t){return t&&"datum"in t}function at(t){return Ar(t)||Ii(t)||ta(t)||rl(t)}function Ti(t,e){const n=t.mark.encoding[e];if(at(n))return n;throw new Error("Not a channel def with scale!")}function rl(t){return t&&"chrom"in t}function ta(t){return t&&"expr"in t}const gn=["x","y"],na={x:"x2",y:"y2",size:"size2",color:"color2"},il=Object.fromEntries(Object.entries(na).map(t=>[t[1],t[0]]));function xr(t){return t in il}function k1(t){const e=na[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Xt(t){return il[t]||t}function Pi(t){return gn.includes(Xt(t))}function Zt(t){return["color","fill","stroke"].includes(Xt(t))}function Li(t){return["shape","squeeze"].includes(t)}function sl(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function ol(t){if(!Li(t))throw new Error("Not a discrete channel: "+t);const e=new Map(sl(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 G(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return V(n,[t],e)}else return Or(t)}class O1{constructor(){this.accessorCreators=[],this.register(e=>{if(Ar(e))try{const n=G(e.field);return n.constant=!1,n.fields=ru(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>ta(e)?z1(e.expr):void 0),this.register(e=>{if(Ii(e)){const n=rd(e.datum);return n.constant=!0,n.fields=[],n}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function z1(t){const e=ea(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 Ks;const nn=globalThis.trustedTypes,rc=nn?nn.createPolicy("lit-html",{createHTML:t=>t}):void 0,At=`lit$${(Math.random()+"").slice(9)}$`,ic="?"+At,Fg=`<${ic}>`,rn=document,Wn=(t="")=>rn.createComment(t),Xn=t=>t===null||typeof t!="object"&&typeof t!="function",sc=Array.isArray,Ig=t=>{var e;return sc(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Zn=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,oc=/-->/g,ac=/>/g,zt=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,uc=/'/g,cc=/"/g,fc=/^(?: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"),lc=new WeakMap,hc=(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=oc:f[1]!==void 0?o=ac:f[2]!==void 0?(fc.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]==='"'?cc:uc):o===cc||o===uc?o=zt:o===oc||o===ac?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[rc!==void 0?rc.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(fc.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===ic)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=lc.get(e.strings);return n===void 0&&lc.set(e.strings,n=new qn(e)),n}M(e){sc(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 dc=window.litHtmlPolyfillSupport;dc==null||dc(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 pc(t){return t===null?NaN:+t}const gc=oi(qs),Ug=gc.right;gc.left,oi(pc).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(mc(this,e))}has(e){return super.has(mc(this,e))}set(e,n){return super.set(Vg(this,e),n)}delete(e){return super.delete(Qg(this,e))}}function mc({_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 Ac(t,Js,Js,e)}function Yg(t,...e){return Ac(t,Array.from,Js,e)}function Ac(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=pc){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 xc;function tm(t,e){var n=li(t,e);if(!n)return t+"";var r=n[0],i=n[1],s=i-(xc=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 yc(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 bc={"%":(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)=>yc(t*100,e),r:yc,s:tm,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function wc(t){return t}var vc=Array.prototype.map,Ec=["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?wc:Jg(vc.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?wc:_g(vc.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"):bc[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=bc[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"?Ec[8+xc/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=Ec[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 Cc=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<Cc){n=Cc;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]+"\\)$"),Dc={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:Sc,formatHex:Sc,formatHsl:dm,formatRgb:Mc,toString:Mc});function Sc(){return this.rgb().formatHex()}function dm(){return Pc(this).formatHsl()}function Mc(){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?Bc(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))?Tc(e[1],e[2]/100,e[3]/100,1):(e=hm.exec(t))?Tc(e[1],e[2]/100,e[3]/100,e[4]):Dc.hasOwnProperty(t)?Bc(Dc[t]):t==="transparent"?new re(NaN,NaN,NaN,0):null}function Bc(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:Fc,formatHex:Fc,formatRgb:Ic,toString:Ic}));function Fc(){return"#"+uo(this.r)+uo(this.g)+uo(this.b)}function Ic(){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 Tc(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 Pc(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?Pc(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 Lc=Math.PI/180,Rc=180/Math.PI,gi=18,Nc=.96422,kc=1,Oc=.82521,zc=4/29,fn=6/29,Uc=3*fn*fn,pm=fn*fn*fn;function Gc(t){if(t instanceof Xe)return new Xe(t.l,t.a,t.b,t.opacity);if(t instanceof at)return Hc(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)/kc),s,o;return e===n&&n===r?s=o=i:(s=ho((.4360747*e+.3850649*n+.1430804*r)/Nc),o=ho((.0139322*e+.0971045*n+.7141733*r)/Oc)),new Xe(116*i-16,500*(s-i),200*(i-o),t.opacity)}function lo(t,e,n,r){return arguments.length===1?Gc(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=Nc*po(e),t=kc*po(t),n=Oc*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/Uc+zc}function po(t){return t>fn?t*t*t:Uc*(t-zc)}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=Gc(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)*Rc;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 Hc(t){if(isNaN(t.h))return new Xe(t.l,0,0,t.opacity);var e=t.h*Lc;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 Hc(this).rgb()}}));var Vc=-.14861,xo=1.78277,yo=-.29227,mi=-.90649,tr=1.97294,Qc=tr*mi,jc=tr*xo,Yc=xo*yo-mi*Vc;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=(Yc*r+Qc*e-jc*n)/(Yc+Qc-jc),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)*Rc-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)*Lc,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*(Vc*r+xo*i)),255*(e+n*(yo*r+mi*i)),255*(e+n*(tr*r)),this.opacity)}}));function Wc(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 Xc(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 Wc((n-r/e)*e,o,i,s,a)}}function Zc(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 Wc((n-r/e)*e,i,s,o,a)}}var Ai=t=>()=>t;function Kc(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?Kc(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?Kc(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 qc(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=qc(Xc),bm=qc(Zc);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 Jc(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function wm(t,e){return(Jc(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 $c(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ne(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function ef(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 tf(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:Ne(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"?Ne:n==="string"?(r=er(e))?(e=r,wo):tf:e instanceof er?wo:e instanceof Date?$c:Jc(e)?vo:Array.isArray(e)?_c:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?ef:Ne)(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 nf=180/Math.PI,Do={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function rf(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)*nf,skewX:Math.atan(u)*nf,scaleX:o,scaleY:a}}var yi;function Sm(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Do:rf(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,rf(t.a,t.b,t.c,t.d,t.e,t.f))}function sf(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:Ne(c,f)},{i:g-2,x:Ne(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:Ne(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:Ne(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:Ne(c,f)},{i:g-2,x:Ne(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=sf(Sm,"px, ","px)","deg)"),Fm=sf(Mm,", ",")",")"),Im=1e-12;function of(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 af=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=of(D),se=c/(n*b)*(le*Pm(e*S+D)-Tm(D));return[a+se*p,u+se*d,c*le/of(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 uf(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=uf(xi),Rm=uf(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 cf(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=cf(xi),Om=cf(te);function ff(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=ff(xi),Um=ff(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:Xc,interpolateBasisClosed:Zc,interpolateDate:$c,interpolateDiscrete:Cm,interpolateHue:Dm,interpolateNumber:Ne,interpolateNumberArray:vo,interpolateObject:ef,interpolateRound:nr,interpolateString:tf,interpolateTransformCss:Bm,interpolateTransformSvg:Fm,interpolateZoom:af,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 lf=[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=lf,e=lf,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),Ne)))(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 hf(){return bi()(ye,ye)}function df(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=Du(i,o))&&(r.precision=s),Ms(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Su(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Cu(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 df(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=Au(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 pf(){var t=hf();return t.copy=function(){return rr(t,pf())},je.apply(t,arguments),Ht(t)}function gf(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 gf(t).unknown(e)},t=arguments.length?Array.from(t,Mo):[0,1],Ht(n)}function mf(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 Af(t){return Math.log(t)}function xf(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 yf(t){return function(e){return-t(-e)}}function Fo(t){var e=t(Af,xf),n=e.domain,r=10,i,s;function o(){return i=qm(r),s=Km(r),n()[0]<0?(i=yf(i),s=yf(s),t(Wm,Xm)):t(Af,xf),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(mf(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 bf(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function wf(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function To(t){var e=1,n=t(bf(e),wf(e));return n.constant=function(r){return arguments.length?t(bf(e=+r),wf(e)):e},Ht(n)}function vf(){var t=To(bi());return t.copy=function(){return rr(t,vf()).constant(t.constant())},je.apply(t,arguments)}function Ef(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(Ef(n),Ef(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 Cf(){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 Cf().domain(t).range(e).unknown(r)},je.apply(s,arguments)}function Df(){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 Df().domain([t,e]).range(i).unknown(s)},je.apply(Ht(o),arguments)}function Sf(){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 Sf().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=hf(),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(mf(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 Mf(){var t=Fo(wi()).domain([1,10]);return t.copy=function(){return wt(t,Mf()).base(t.base())},xt.apply(t,arguments)}function Bf(){var t=To(wi());return t.copy=function(){return wt(t,Bf()).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 Ff(){var t=Ht(vi()(ye));return t.copy=function(){return wt(t,Ff())},xt.apply(t,arguments)}function If(){var t=Fo(vi()).domain([.1,1,10]);return t.copy=function(){return wt(t,If()).base(t.base())},xt.apply(t,arguments)}function Tf(){var t=To(vi());return t.copy=function(){return wt(t,Tf()).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",Pf="time",Lf="utc",Ze="sequential",hn="diverging",Uo="quantile",Rf="quantize",Nf="threshold",Go="ordinal",Ho="point",kf="band",Vo="bin-ordinal",J="continuous",or="discrete",ar="discretizing",Ie="interpolating",Of="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 zf(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return zf(e())},t}function cA(){return zf(Qo().paddingInner(1))}var fA=Array.prototype.map;function lA(t){return fA.call(t,Fn)}const hA=Array.prototype.slice;function Uf(){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 df(t[0],Re(t),r==null?10:r,i)},n.copy=function(){return Uf().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,gf),k(ln,pf,J),k(vt,Io,[J,vt]),k(ir,Lo,J),k(sr,$m,J),k(Ei,vf,J),k(Pf,nA,[J,Of]),k(Lf,rA,[J,Of]),k(Ze,No,[J,Ie]),k("".concat(Ze,"-").concat(ln),No,[J,Ie]),k("".concat(Ze,"-").concat(vt),Mf,[J,Ie,vt]),k("".concat(Ze,"-").concat(ir),ko,[J,Ie]),k("".concat(Ze,"-").concat(sr),iA,[J,Ie]),k("".concat(Ze,"-").concat(Ei),Bf,[J,Ie]),k("".concat(hn,"-").concat(ln),Ff,[J,Ie]),k("".concat(hn,"-").concat(vt),If,[J,Ie,vt]),k("".concat(hn,"-").concat(ir),Oo,[J,Ie]),k("".concat(hn,"-").concat(sr),sA,[J,Ie]),k("".concat(hn,"-").concat(Ei),Tf,[J,Ie]),k(Uo,Cf,[ar,Uo]),k(Rf,Df,ar),k(Nf,Sf,ar),k(Vo,Uf,[or,ar]),k(Go,oo,or),k(kf,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 Gf(t){return ur(t,vt)}function Di(t){return ur(t,Ie)}function gA(t,e){const n=e[0],r=Re(e)-n;return function(i){return t(n+i*r)}}function Si(t,e,n){return So(Hf(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 Hf(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 Vf(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 Qf(t,e){for(const n in t)jo(n,e(t[n]))}const jf={};Qf(yA,Vf),Qf(xA,t=>Si(Vf(t)));function jo(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(jf[t]=e,this):jf[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 Yf(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 ke(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=ke(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&&(hc("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}hc(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",Wf="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 /",Xf="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 Zf(){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 Kf(){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,Kf();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?Kf():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 qf(){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,Zf(),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 Jf(){if(Zf(),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))?qf():Ko():ut(t)?qf():Ko()}function we(){const t=O;return x=t.end,O=Jf(),x=t.end,t}function _f(){const t=x;O=Jf(),x=t}function g1(t){const e=new Oe(zA);return e.elements=t,e}function $f(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(Wf);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 el(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 tl(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 nl(){x=O.start;const t=we();return t.type===fr||t.type===jt?(t.octal&&R(t,Xf),gr(t)):qo(t.value)}function w1(){var t,e,n,r;if(x=O.start,t=O,t.type===Qt)return n=nl(),ue(":"),r=Yt(),tl("init",n,r);if(t.type===cr||t.type===be)Ti(t);else return e=nl(),ue(":"),r=Yt(),tl("init",e,r)}function v1(){var t=[],e,n,r,i={},s=String;for(x=O.start,ue("{");!V("}");)e=w1(),e.key.type===Wf?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,Xf),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=el(".",t,n);else if(V("("))e=S1(),t=m1(t,e);else if(V("["))n=F1(),t=el("[",t,n);else break;return t}function rl(){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=rl();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=rl()}}return e}function il(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=il(r),i===0)return u;for(r.prec=i,we(),e=[t,O],o=Pi(),s=[u,r,o];(i=il(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=$f(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=$f(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(Pe(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(Te(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 Te(t){return t&&"value"in t}function mr(t){return t&&"field"in t}function Ar(t){return t&&"datum"in t}function Pe(t){return mr(t)||Ar(t)||ta(t)||sl(t)}function ea(t,e){const n=t.mark.encoding[e];if(Pe(n))return n;throw new Error("Not a channel def with scale!")}function sl(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 ol(t){return xr.includes(t)}function yr(t){return H1.includes(t)}const na={x:"x2",y:"y2"},al=Object.fromEntries(Object.entries(na).map(t=>[t[1],t[0]]));function br(t){return t in al}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=al[t])!=null?e:t}function Wt(t){return["color","fill","stroke"].includes(pn(t))}function Li(t){return["shape","squeeze"].includes(t)}function ul(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function cl(t){if(!Li(t))throw new Error("Not a discrete channel: "+t);const e=new Map(ul(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=iu(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.
13
13
  Available via the MIT license.
14
- see: http://github.com/greggman/twgl.js for details */const ra=5120,yr=5121,ia=5122,sa=5123,oa=5124,aa=5125,ua=5126,U1=32819,G1=32820,H1=33635,V1=5131,Q1=33640,j1=35899,Y1=35902,W1=36269,X1=34042,al={};{const t=al;t[ra]=Int8Array,t[yr]=Uint8Array,t[ia]=Int16Array,t[sa]=Uint16Array,t[oa]=Int32Array,t[aa]=Uint32Array,t[ua]=Float32Array,t[U1]=Uint16Array,t[G1]=Uint16Array,t[H1]=Uint16Array,t[V1]=Uint16Array,t[Q1]=Uint32Array,t[j1]=Uint32Array,t[Y1]=Uint32Array,t[W1]=Uint32Array,t[X1]=Uint32Array}function ca(t){if(t instanceof Int8Array)return ra;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return yr;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 Z1(t){if(t===Int8Array)return ra;if(t===Uint8Array||t===Uint8ClampedArray)return yr;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 K1(t){const e=al[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 q1(...t){console.error(...t)}function ul(...t){console.warn(...t)}function J1(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function cl(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Ni(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function _1(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const fl=35044,qe=34962,$1=34963,ex=34660,tx=5120,nx=5121,rx=5122,ix=5123,sx=5124,ox=5125,ax=5126,ll={attribPrefix:""};function hl(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||fl)}function dl(t,e,n,r){if(J1(t,e))return e;n=n||qe;const i=t.createBuffer();return hl(t,n,i,e,r),i}function pl(t){return t==="indices"}function ux(t){return t instanceof Int8Array||t instanceof Uint8Array}function cx(t){return t===Int8Array||t===Uint8Array}function fx(t){return t.length?t:t.data}const lx=/coord|texture/i,hx=/color|colour/i;function gl(t,e){let n;if(lx.test(t)?n=2:hx.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 dx(t,e){return t.numComponents||t.size||gl(e,fx(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||(pl(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function px(t,e){const n={};return Object.keys(e).forEach(function(r){if(!pl(r)){const i=e[r],s=i.attrib||i.name||i.attribName||ll.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=Z1(f),u=i.normalize!==void 0?i.normalize:cx(f),c=i.numComponents||i.size||gl(r,l),o=t.createBuffer(),t.bindBuffer(qe,o),t.bufferData(qe,h,i.drawType||fl)}else{const l=fa(i,r);o=dl(t,l,void 0,i.drawType),a=ca(l),u=i.normalize!==void 0?i.normalize:ux(l),c=dx(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(qe,null),n}function gx(t,e,n,r){n=fa(n),r!==void 0?(t.bindBuffer(qe,e.buffer),t.bufferSubData(qe,r,n)):hl(t,qe,e.buffer,n,e.drawType)}function mx(t,e){return e===tx||e===nx?1:e===rx||e===ix?2:e===sx||e===ox||e===ax?4:0}const la=["position","positions","a_position"];function Ax(t,e){let n,r;for(r=0;r<la.length&&(n=la[r],!(n in e||(n=ll.attribPrefix+n,n in e)));++r);r===la.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(qe,i.buffer);const s=t.getBufferParameter(qe,ex);t.bindBuffer(qe,null);const o=mx(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 xx(t,e,n){const r=px(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=dl(t,o,$1),i.numElements=o.length,i.elementType=ca(o)}else i.numElements||(i.numElements=Ax(t,i.attribs));return i}function mn(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)}}(),Et={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},An=Ri,ml=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),Al=6406,Je=6407,j=6408,xl=6409,yl=6410,br=6402,bl=34041,ki=33071,yx=9728,bx=9729,ut=3553,ct=34067,Ct=32879,Dt=35866,Oi=34069,wx=34070,vx=34071,Ex=34072,Cx=34073,Dx=34074,da=10241,pa=10240,zi=10242,Ui=10243,wl=32882,Sx=33082,Mx=33083,Bx=33084,Fx=33085,ga=3317,vl=3314,El=32878,Cl=3316,Dl=3315,Sl=32877,Ix=37443,Tx=37441,Px=37440,Lx=33321,Rx=36756,Nx=33325,kx=33326,Ox=33330,zx=33329,Ux=33338,Gx=33337,Hx=33340,Vx=33339,Qx=33323,jx=36757,Yx=33327,Wx=33328,Xx=33336,Zx=33335,Kx=33332,qx=33331,Jx=33334,_x=33333,$x=32849,ey=35905,ty=36194,ny=36758,ry=35898,iy=35901,sy=34843,oy=34837,ay=36221,uy=36239,cy=36215,fy=36233,ly=36209,hy=36227,dy=32856,py=35907,gy=36759,my=32855,Ay=32854,xy=32857,yy=34842,by=34836,wy=36220,vy=36238,Ey=36975,Cy=36214,Dy=36232,Sy=36226,My=36208,By=33189,Fy=33190,Iy=36012,Ty=36013,Py=35056,St=5120,Y=5121,Gi=5122,xn=5123,Hi=5124,Kt=5125,fe=5126,Ml=32819,Bl=32820,Fl=33635,ke=5131,wr=36193,ma=33640,Ly=35899,Ry=35902,Ny=36269,ky=34042,Vi=33319,yn=33320,Qi=6403,bn=36244,wn=36248,qt=36249;let Aa;function ji(t){if(!Aa){const e={};e[Al]={textureFormat:Al,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,ke,wr,fe]},e[xl]={textureFormat:xl,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Y,ke,wr,fe]},e[yl]={textureFormat:yl,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Y,ke,wr,fe]},e[Je]={textureFormat:Je,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Y,ke,wr,fe,Fl]},e[j]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Y,ke,wr,fe,Ml,Bl]},e[br]={textureFormat:br,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Kt,xn]},e[Lx]={textureFormat:Qi,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Y]},e[Rx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[St]},e[Nx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[fe,ke]},e[kx]={textureFormat:Qi,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Ox]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Y]},e[zx]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[St]},e[Kx]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[xn]},e[qx]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Gi]},e[Jx]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kt]},e[_x]={textureFormat:bn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hi]},e[Qx]={textureFormat:Vi,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Y]},e[jx]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[St]},e[Yx]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[fe,ke]},e[Wx]={textureFormat:Vi,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[fe]},e[Xx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Y]},e[Zx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[St]},e[Ux]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xn]},e[Gx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Gi]},e[Hx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Kt]},e[Vx]={textureFormat:yn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Hi]},e[$x]={textureFormat:Je,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[ey]={textureFormat:Je,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Y]},e[ty]={textureFormat:Je,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Y,Fl]},e[ny]={textureFormat:Je,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[St]},e[ry]={textureFormat:Je,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,ke,Ly]},e[iy]={textureFormat:Je,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[fe,ke,Ry]},e[sy]={textureFormat:Je,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[fe,ke]},e[oy]={textureFormat:Je,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[fe]},e[ay]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Y]},e[uy]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[St]},e[cy]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[xn]},e[fy]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Gi]},e[ly]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Kt]},e[hy]={textureFormat:wn,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Hi]},e[dy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[py]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Y]},e[gy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[St]},e[my]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Y,Bl,ma]},e[Ay]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Y,Ml]},e[xy]={textureFormat:j,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ma]},e[yy]={textureFormat:j,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[fe,ke]},e[by]={textureFormat:j,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[fe]},e[wy]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Y]},e[vy]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[St]},e[Ey]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ma]},e[Cy]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[xn]},e[Dy]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Gi]},e[Sy]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Hi]},e[My]={textureFormat:qt,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Kt]},e[By]={textureFormat:br,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[xn,Kt]},e[Fy]={textureFormat:br,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Kt]},e[Iy]={textureFormat:br,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fe]},e[Py]={textureFormat:bl,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ky]},e[Ty]={textureFormat:bl,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ny]},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 Oy(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 vn(t){const e=ji(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Il(t){return(t&t-1)==0}function zy(t,e,n,r){if(!mn(t))return Il(e)&&Il(n);const i=ji(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function Uy(t){const e=ji(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Tl(t,e,n){return An(e)?ca(e):n||Y}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===ct?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 En(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(Ix,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(Tx,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(Px,e.flipY)}function Pl(t){t.pixelStorei(ga,4),mn(t)&&(t.pixelStorei(vl,0),t.pixelStorei(El,0),t.pixelStorei(Cl,0),t.pixelStorei(Dl,0),t.pixelStorei(Sl,0))}function Gy(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===Ct||_1(t,e))&&n.call(t,e,wl,r.wrap)),r.wrapR&&n.call(t,e,wl,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,Sx,r.minLod),r.maxLod&&n.call(t,e,Mx,r.maxLod),r.baseLevel&&n.call(t,e,Bx,r.baseLevel),r.maxLevel&&n.call(t,e,Fx,r.maxLevel)}function Ll(t,e,n){const r=n.target||ut;t.bindTexture(r,e),Gy(t,r,t.texParameteri,n)}function Hy(t){return t=t||Et.textureColor,An(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||Et.textureOptions,s=s||j;const o=n.target||ut;if(r=r||n.width,i=i||n.height,t.bindTexture(o,e),zy(t,r,i,s))t.generateMipmap(o);else{const a=Uy(s)?bx:yx;t.texParameteri(o,da,a),t.texParameteri(o,pa,a),t.texParameteri(o,zi,ki),t.texParameteri(o,Ui,ki)}}function vr(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function ya(t,e){return e=e||{},e.cubeFaceOrder||[Oi,wx,vx,Ex,Cx,Dx]}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 Rl(t,e,n,r){r=r||Et.textureOptions;const i=r.target||ut,s=r.level||0;let o=n.width,a=n.height;const u=r.internalFormat||r.format||j,c=vn(u),l=r.format||c.format,f=r.type||c.type;if(En(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 m=ml();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){En(t,r),t.bindTexture(i,e),t.texImage2D(A.face,s,u,l,f,v),vr(r)&&xa(t,e,r,o,a,u)})}))}else if(i===Ct||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,m=n.height===p?1:0;t.pixelStorei(ga,1),t.pixelStorei(vl,n.width),t.pixelStorei(El,0),t.pixelStorei(Sl,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(Cl,b),t.pixelStorei(Dl,y),t.texSubImage3D(i,s,0,0,A,h,h,1,l,f,n)}Pl(t)}else t.texImage2D(i,s,u,l,f,n);vr(r)&&xa(t,e,r,o,a,u),Ll(t,e,r)}function Er(){}function Vy(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 Qy(t,e){return e===void 0&&!Vy(t)?"anonymous":e}function jy(t,e,n){n=n||Er;let r;if(e=e!==void 0?e:Et.crossOrigin,e=Qy(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;q1(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 Nl(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 Nl(t)?(setTimeout(function(){n(null,t)}),t):jy(t,e,n)}function va(t,e,n){n=n||Et.textureOptions;const r=n.target||ut;if(t.bindTexture(r,e),n.color===!1)return;const i=Hy(n.color);if(r===ct)for(let s=0;s<6;++s)t.texImage2D(Oi+s,0,j,1,1,0,j,Y,i);else r===Ct||r===Dt?t.texImage3D(r,0,j,1,1,1,0,j,Y,i):t.texImage2D(r,0,j,1,1,0,j,Y,i)}function Yy(t,e,n,r){return r=r||Er,n=n||Et.textureOptions,va(t,e,n),n=Object.assign({},n),wa(n.src,n.crossOrigin,function(s,o){s?r(s,e,o):(Rl(t,e,o,n),r(null,e,o))})}function Wy(t,e,n,r){r=r||Er;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||j,a=vn(o),u=n.format||a.format,c=n.type||Y,l=n.target||ut;if(l!==ct)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):(En(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),vr(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 Xy(t,e,n,r){r=r||Er;const i=n.src,s=n.internalFormat||n.format||j,o=vn(s),a=n.format||o.format,u=n.type||Y,c=n.target||Dt;if(c!==Ct&&c!==Dt)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(En(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,B;(D.width!==d||D.height!==g)&&(B=ml(),C=B.canvas,B.canvas.width=d,B.canvas.height=g,B.drawImage(D,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)}vr(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 kl(t,e,n,r){r=r||Et.textureOptions;const i=r.target||ut;t.bindTexture(i,e);let s=r.width,o=r.height,a=r.depth;const u=r.level||0,c=r.internalFormat||r.format||j,l=vn(c),f=r.format||l.format,h=r.type||Tl(t,n,l.type);if(An(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=K1(h);n=new m(n)}const p=Oy(c,h),d=n.byteLength/p;if(d%1)throw"length wrong size for format: "+ha(t,f);let g;if(i===Ct||i===Dt)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(Pl(t),t.pixelStorei(ga,r.unpackAlignment||1),En(t,r),i===ct){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===Ct||i===Dt?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 Zy(t,e,n){const r=n.target||ut;t.bindTexture(r,e);const i=n.level||0,s=n.internalFormat||n.format||j,o=vn(s),a=n.format||o.format,u=n.type||o.type;if(En(t,n),r===ct)for(let c=0;c<6;++c)t.texImage2D(Oi+c,i,s,n.width,n.height,0,a,u,null);else r===Ct||r===Dt?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 Cr(t,e,n){n=n||Er,e=e||Et.textureOptions;const r=t.createTexture(),i=e.target||ut;let s=e.width||1,o=e.height||1;const a=e.internalFormat||j;t.bindTexture(i,r),i===ct&&(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")Yy(t,r,e,n);else if(An(u)||Array.isArray(u)&&(typeof u[0]=="number"||Array.isArray(u[0])||An(u[0]))){const c=kl(t,r,u,e);s=c.width,o=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||Nl(u[0]))?i===ct?Wy(t,r,e,n):Xy(t,r,e,n):(Rl(t,r,u,e),s=u.width,o=u.height);else Zy(t,r,e);return vr(e)&&xa(t,r,e,s,o,a),Ll(t,r,e),r}function Ky(t,e,n,r,i,s){r=r||n.width,i=i||n.height,s=s||n.depth;const o=n.target||ut;t.bindTexture(o,e);const a=n.level||0,u=n.internalFormat||n.format||j,c=vn(u),l=n.format||c.format;let f;const h=n.src;if(h&&(An(h)||Array.isArray(h)&&typeof h[0]=="number")?f=n.type||Tl(t,h,c.type):f=n.type||c.type,o===ct)for(let p=0;p<6;++p)t.texImage2D(Oi+p,a,u,r,i,0,l,f,null);else o===Ct||o===Dt?t.texImage3D(o,a,u,r,i,s,0,l,f,null):t.texImage2D(o,a,u,r,i,0,l,f,null)}const qy=ul,Wi=33984,Jy=35048,Xi=34962,_y=34963,Ea=35345,Ol=35718,$y=35721,eb=35971,tb=35382,nb=35396,rb=35398,ib=35392,sb=35395,Zi=5126,zl=35664,Ul=35665,Gl=35666,Ca=5124,Hl=35667,Vl=35668,Ql=35669,jl=35670,Yl=35671,Wl=35672,Xl=35673,Zl=35674,Kl=35675,ql=35676,ob=35678,ab=35680,ub=35679,cb=35682,fb=35685,lb=35686,hb=35687,db=35688,pb=35689,gb=35690,mb=36289,Ab=36292,xb=36293,Da=5125,Jl=36294,_l=36295,$l=36296,yb=36298,bb=36299,wb=36300,vb=36303,Eb=36306,Cb=36307,Db=36308,Sb=36311,Ki=3553,qi=34067,Sa=32879,Ji=35866,F={};function e0(t,e){return F[e].bindPoint}function Mb(t,e){return function(n){t.uniform1f(e,n)}}function Bb(t,e){return function(n){t.uniform1fv(e,n)}}function Fb(t,e){return function(n){t.uniform2fv(e,n)}}function Ib(t,e){return function(n){t.uniform3fv(e,n)}}function Tb(t,e){return function(n){t.uniform4fv(e,n)}}function t0(t,e){return function(n){t.uniform1i(e,n)}}function n0(t,e){return function(n){t.uniform1iv(e,n)}}function r0(t,e){return function(n){t.uniform2iv(e,n)}}function i0(t,e){return function(n){t.uniform3iv(e,n)}}function s0(t,e){return function(n){t.uniform4iv(e,n)}}function Pb(t,e){return function(n){t.uniform1ui(e,n)}}function Lb(t,e){return function(n){t.uniform1uiv(e,n)}}function Rb(t,e){return function(n){t.uniform2uiv(e,n)}}function Nb(t,e){return function(n){t.uniform3uiv(e,n)}}function kb(t,e){return function(n){t.uniform4uiv(e,n)}}function Ob(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function zb(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function Ub(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function Gb(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function Hb(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function Vb(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function Qb(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function jb(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function Yb(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function le(t,e,n,r){const i=e0(t,e);return mn(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 he(t,e,n,r,i){const s=e0(t,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=n+a;return mn(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)})}}F[Zi]={Type:Float32Array,size:4,setter:Mb,arraySetter:Bb},F[zl]={Type:Float32Array,size:8,setter:Fb,cols:2},F[Ul]={Type:Float32Array,size:12,setter:Ib,cols:3},F[Gl]={Type:Float32Array,size:16,setter:Tb,cols:4},F[Ca]={Type:Int32Array,size:4,setter:t0,arraySetter:n0},F[Hl]={Type:Int32Array,size:8,setter:r0,cols:2},F[Vl]={Type:Int32Array,size:12,setter:i0,cols:3},F[Ql]={Type:Int32Array,size:16,setter:s0,cols:4},F[Da]={Type:Uint32Array,size:4,setter:Pb,arraySetter:Lb},F[Jl]={Type:Uint32Array,size:8,setter:Rb,cols:2},F[_l]={Type:Uint32Array,size:12,setter:Nb,cols:3},F[$l]={Type:Uint32Array,size:16,setter:kb,cols:4},F[jl]={Type:Uint32Array,size:4,setter:t0,arraySetter:n0},F[Yl]={Type:Uint32Array,size:8,setter:r0,cols:2},F[Wl]={Type:Uint32Array,size:12,setter:i0,cols:3},F[Xl]={Type:Uint32Array,size:16,setter:s0,cols:4},F[Zl]={Type:Float32Array,size:32,setter:Ob,rows:2,cols:2},F[Kl]={Type:Float32Array,size:48,setter:zb,rows:3,cols:3},F[ql]={Type:Float32Array,size:64,setter:Ub,rows:4,cols:4},F[fb]={Type:Float32Array,size:32,setter:Gb,rows:2,cols:3},F[lb]={Type:Float32Array,size:32,setter:Vb,rows:2,cols:4},F[hb]={Type:Float32Array,size:48,setter:Hb,rows:3,cols:2},F[db]={Type:Float32Array,size:48,setter:jb,rows:3,cols:4},F[pb]={Type:Float32Array,size:64,setter:Qb,rows:4,cols:2},F[gb]={Type:Float32Array,size:64,setter:Yb,rows:4,cols:3},F[ob]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ki},F[ab]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:qi},F[ub]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Sa},F[cb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ki},F[mb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ji},F[Ab]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ji},F[xb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:qi},F[yb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ki},F[bb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Sa},F[wb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:qi},F[vb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ji},F[Eb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Ki},F[Cb]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:Sa},F[Db]={Type:null,size:0,setter:le,arraySetter:he,bindPoint:qi},F[Sb]={Type:null,size:0,setter:le,arraySetter:he,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 Mt(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=F[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 J={};J[Zi]={size:4,setter:_i},J[zl]={size:8,setter:_i},J[Ul]={size:12,setter:_i},J[Gl]={size:16,setter:_i},J[Ca]={size:4,setter:Mt},J[Hl]={size:8,setter:Mt},J[Vl]={size:12,setter:Mt},J[Ql]={size:16,setter:Mt},J[Da]={size:4,setter:$i},J[Jl]={size:8,setter:$i},J[_l]={size:12,setter:$i},J[$l]={size:16,setter:$i},J[jl]={size:4,setter:Mt},J[Yl]={size:8,setter:Mt},J[Wl]={size:12,setter:Mt},J[Xl]={size:16,setter:Mt},J[Zl]={size:4,setter:Ma,count:2},J[Kl]={size:9,setter:Ma,count:3},J[ql]={size:16,setter:Ma,count:4};function o0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const Wb=/(\.|\[|]|\w+)/g,Xb=t=>t>="0"&&t<="9";function a0(t,e,n,r){const i=t.split(Wb).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const u=Xb(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){c0(d,g)}}(p),o+=f}}}function Zb(t,e){let n=0;function r(a,u,c){const l=u.name.endsWith("[0]"),f=u.type,h=F[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,Ol);for(let a=0;a<o;++a){const u=t.getActiveUniform(e,a);if(o0(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,a0(c,f,s,i)}}return i}function Kb(t,e){const n={},r=t.getProgramParameter(e,eb);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 qb(t,e){const n=t.getProgramParameter(e,Ol),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,tb);for(let a=0;a<o;++a){const u=t.getActiveUniformBlockName(e,a),c={index:t.getUniformBlockIndex(e,u),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,nb),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,rb),size:t.getActiveUniformBlockParameter(e,a,ib),uniformIndices:t.getActiveUniformBlockParameter(e,a,sb)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[u]=c}return{blockSpecs:s,uniformData:r}}const u0=/\[\d+\]\.$/,Jb=(t,e)=>((t+(e-1))/e|0)*e;function _b(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 $b(t,e,n,r){const i=n.blockSpecs,s=n.uniformData,o=i[r];if(!o)return qy("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+".";u0.test(l)&&(l=l.replace(u0,"."));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=F[g.type],y=b.Type,v=A?Jb(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=_b(D,A,b.rows,b.cols);h[m]=C,a0(m,C,p,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:u,uniforms:f,setters:h}}function e2(t,e,n){return $b(t,e.program,e.uniformBlockSpec,n)}function t2(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 n2(t,e,n){t2(t,e,n)&&t.bufferData(Ea,n.array,Jy)}function c0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):c0(t[n],e[n])}}function de(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)de(n,s[a])}else for(const o in s){const a=n[o];a&&a(s[o])}}}function r2(t,e){const n={},r=t.getProgramParameter(e,$y);for(let i=0;i<r;++i){const s=t.getActiveAttrib(e,i);if(o0(s))continue;const o=t.getAttribLocation(e,s.name),a=J[s.type],u=a.setter(t,o,a);u.location=o,n[s.name]=u}return n}function i2(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Cn(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(i2(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(_y,n.indices))}function s2(t,e){const n=Zb(t,e),r=r2(t,e),i={program:e,uniformSetters:n,attribSetters:r};return mn(t)&&(i.uniformBlockSpec=qb(t,e),i.transformFeedbackInfo=Kb(t,e)),i}const o2=4,f0=5123;function Dr(t,e,n,r,i,s){n=n===void 0?o2: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?f0:e.elementType,i,s):t.drawElements(n,u,a===void 0?f0:e.elementType,i):s!==void 0?t.drawArraysInstanced(n,i,u,s):t.drawArrays(n,i,u)}const a2=36160,Sr=36161,u2=3553,c2=5121,f2=6402,l2=6408,h2=33190,d2=36012,p2=35056,g2=36013,m2=32854,A2=32855,x2=36194,l0=33189,h0=6401,d0=36168,Ba=34041,y2=36064,es=36096,p0=36128,Fa=33306,Ia=33071,Ta=9729,g0=[{format:l2,type:c2,min:Ta,wrap:Ia},{format:Ba}],Oe={};Oe[Ba]=Fa,Oe[h0]=p0,Oe[d0]=p0,Oe[f2]=es,Oe[l0]=es,Oe[h2]=es,Oe[d2]=es,Oe[p2]=Fa,Oe[g2]=Fa;function b2(t,e){return Oe[t]||Oe[e]}const Bt={};Bt[m2]=!0,Bt[A2]=!0,Bt[x2]=!0,Bt[Ba]=!0,Bt[l0]=!0,Bt[h0]=!0,Bt[d0]=!0;function w2(t){return Bt[t]}function v2(t,e,n,r){const i=a2,s=t.createFramebuffer();t.bindFramebuffer(i,s),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||g0;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||b2(l,u.internalFormat);if(f||(f=y2+o++),!c)if(w2(l))c=t.createRenderbuffer(),t.bindRenderbuffer(Sr,c),t.renderbufferStorage(Sr,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=Cr(t,h)}if(cl(t,c))t.framebufferRenderbuffer(i,f,Sr,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||u2,c,u.level||0);else throw new Error("unknown attachment type");a.attachments.push(c)}),a}function E2(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||g0,n.forEach(function(s,o){const a=e.attachments[o],u=s.format;if(cl(t,a))t.bindRenderbuffer(Sr,a),t.renderbufferStorage(Sr,u,r,i);else if(Ni(t,a))Ky(t,a,s,r,i);else throw new Error("unknown attachment type")})}function C2(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Cn(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const D2=/^(.*?)_/;function S2(t,e){ha(t,0);const n=t.getExtension(e);if(n){const r={},i=D2.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&&ul(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 m0=["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 A0(t){for(let e=0;e<m0.length;++e)S2(t,m0[e])}function M2(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){A0(r);break}return r}function B2(t,e){return M2(t,e)}var F2=`/***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 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,fl={};{const t=fl;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=fl[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 ll(...t){console.warn(...t)}function rx(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function hl(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 dl=35044,_e=34962,sx=34963,ox=34660,ax=5120,ux=5121,cx=5122,fx=5123,lx=5124,hx=5125,dx=5126,pl={attribPrefix:""};function gl(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||dl)}function ml(t,e,n,r){if(rx(t,e))return e;n=n||_e;const i=t.createBuffer();return gl(t,n,i,e,r),i}function Al(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 xl(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||xl(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||(Al(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function bx(t,e){const n={};return Object.keys(e).forEach(function(r){if(!Al(r)){const i=e[r],s=i.attrib||i.name||i.attribName||pl.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||xl(r,l),o=t.createBuffer(),t.bindBuffer(_e,o),t.bufferData(_e,h,i.drawType||dl)}else{const l=fa(i,r);o=ml(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)):gl(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=pl.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=ml(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,yl=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),bl=6406,$e=6407,Q=6408,wl=6409,vl=6410,vr=6402,El=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,Cl=32882,Px=33082,Lx=33083,Rx=33084,Nx=33085,ga=3317,Dl=3314,Sl=32878,Ml=3316,Bl=3315,Fl=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,Il=32819,Tl=32820,Pl=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[bl]={textureFormat:bl,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[j,ze,Er,ce]},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:[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,Pl]},e[Q]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[j,ze,Er,ce,Il,Tl]},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,Pl]},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,Tl,ma]},e[Ey]={textureFormat:Q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[j,Il]},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:El,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Vy]},e[Oy]={textureFormat:El,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 Ll(t){return(t&t-1)===0}function jy(t,e,n,r){if(!gn(t))return Ll(e)&&Ll(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 Rl(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 Nl(t){t.pixelStorei(ga,4),gn(t)&&(t.pixelStorei(Dl,0),t.pixelStorei(Sl,0),t.pixelStorei(Ml,0),t.pixelStorei(Bl,0),t.pixelStorei(Fl,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,Cl,r.wrap)),r.wrapR&&n.call(t,e,Cl,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 kl(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 Ol(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=yl();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(Dl,n.width),t.pixelStorei(Sl,0),t.pixelStorei(Fl,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(Ml,b),t.pixelStorei(Bl,y),t.texSubImage3D(i,s,0,0,A,h,h,1,l,f,n)}Nl(t)}else t.texImage2D(i,s,u,l,f,n);Cr(r)&&xa(t,e,r,o,a,u),kl(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 zl(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 zl(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):(Ol(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=yl(),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 Ul(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||Rl(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(Nl(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=Ul(t,r,u,e);s=c.width,o=c.height}else Array.isArray(u)&&(typeof u[0]=="string"||zl(u[0]))?i===ft?_y(t,r,e,n):$y(t,r,e,n):(Ol(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),kl(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||Rl(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=ll,Wi=33984,rb=35048,Xi=34962,ib=34963,Ea=35345,Gl=35718,sb=35721,ob=35971,ab=35382,ub=35396,cb=35398,fb=35392,lb=35395,Zi=5126,Hl=35664,Vl=35665,Ql=35666,Ca=5124,jl=35667,Yl=35668,Wl=35669,Xl=35670,Zl=35671,Kl=35672,ql=35673,Jl=35674,_l=35675,$l=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,e0=36294,t0=36295,n0=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 r0(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 i0(t,e){return function(n){t.uniform1i(e,n)}}function s0(t,e){return function(n){t.uniform1iv(e,n)}}function o0(t,e){return function(n){t.uniform2iv(e,n)}}function a0(t,e){return function(n){t.uniform3iv(e,n)}}function u0(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=r0(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=r0(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[Hl]={Type:Float32Array,size:8,setter:Nb,cols:2},I[Vl]={Type:Float32Array,size:12,setter:kb,cols:3},I[Ql]={Type:Float32Array,size:16,setter:Ob,cols:4},I[Ca]={Type:Int32Array,size:4,setter:i0,arraySetter:s0},I[jl]={Type:Int32Array,size:8,setter:o0,cols:2},I[Yl]={Type:Int32Array,size:12,setter:a0,cols:3},I[Wl]={Type:Int32Array,size:16,setter:u0,cols:4},I[Da]={Type:Uint32Array,size:4,setter:zb,arraySetter:Ub},I[e0]={Type:Uint32Array,size:8,setter:Gb,cols:2},I[t0]={Type:Uint32Array,size:12,setter:Hb,cols:3},I[n0]={Type:Uint32Array,size:16,setter:Vb,cols:4},I[Xl]={Type:Uint32Array,size:4,setter:i0,arraySetter:s0},I[Zl]={Type:Uint32Array,size:8,setter:o0,cols:2},I[Kl]={Type:Uint32Array,size:12,setter:a0,cols:3},I[ql]={Type:Uint32Array,size:16,setter:u0,cols:4},I[Jl]={Type:Float32Array,size:32,setter:Qb,rows:2,cols:2},I[_l]={Type:Float32Array,size:48,setter:jb,rows:3,cols:3},I[$l]={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[Hl]={size:8,setter:_i},K[Vl]={size:12,setter:_i},K[Ql]={size:16,setter:_i},K[Ca]={size:4,setter:Bt},K[jl]={size:8,setter:Bt},K[Yl]={size:12,setter:Bt},K[Wl]={size:16,setter:Bt},K[Da]={size:4,setter:$i},K[e0]={size:8,setter:$i},K[t0]={size:12,setter:$i},K[n0]={size:16,setter:$i},K[Xl]={size:4,setter:Bt},K[Zl]={size:8,setter:Bt},K[Kl]={size:12,setter:Bt},K[ql]={size:16,setter:Bt},K[Jl]={size:4,setter:Ma,count:2},K[_l]={size:9,setter:Ma,count:3},K[$l]={size:16,setter:Ma,count:4};function c0(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const _b=/(\.|\[|]|\w+)/g,$b=t=>t>="0"&&t<="9";function f0(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){h0(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,Gl);for(let a=0;a<o;++a){const u=t.getActiveUniform(e,a);if(c0(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,f0(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,Gl),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 l0=/\[\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+".";l0.test(l)&&(l=l.replace(l0,"."));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,f0(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 h0(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):h0(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(c0(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,d0=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?d0:e.elementType,i,s):t.drawElements(n,u,a===void 0?d0: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,p0=33189,g0=6401,m0=36168,Ba=34041,D2=36064,es=36096,A0=36128,Fa=33306,Ia=33071,Ta=9729,x0=[{format:A2,type:g2,min:Ta,wrap:Ia},{format:Ba}],Ue={};Ue[Ba]=Fa,Ue[g0]=A0,Ue[m0]=A0,Ue[m2]=es,Ue[p0]=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[p0]=!0,Ft[g0]=!0,Ft[m0]=!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||x0;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(hl(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||x0,n.forEach(function(s,o){const a=e.attachments[o],u=s.format;if(hl(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&&ll(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 y0=["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 b0(t){for(let e=0;e<y0.length;++e)P2(t,y0[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){b0(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;
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();}`,I2=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
22
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,k2=`#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,7 +33,7 @@ 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 T2(t){switch(k2(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
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
37
  // Nvidia optimizes away the calculation necessary for emulated fp64
38
38
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
39
39
  `;case"intel":return` #define INTEL_GPU
@@ -51,20 +51,20 @@ if(uPickingEnabled){fragColor=vPickingColor;}}`;function Pa(t,e=[],n=0){const r=
51
51
  #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
52
52
  // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
53
53
  #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
54
- `}}const P2=7936,L2=7937,R2=7938,N2=35724;function k2(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||P2),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||L2);return{gpuVendor:O2(n,r),vendor:n,renderer:r,version:t.getParameter(R2),shadingLanguageVersion:t.getParameter(N2)}}function O2(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 x0(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Mr(){}var Br=.7,ts=1/Br,Dn="\\s*([+-]?\\d+)\\s*",Fr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",_e="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",z2=/^#([0-9a-f]{3,8})$/,U2=new RegExp("^rgb\\("+[Dn,Dn,Dn]+"\\)$"),G2=new RegExp("^rgb\\("+[_e,_e,_e]+"\\)$"),H2=new RegExp("^rgba\\("+[Dn,Dn,Dn,Fr]+"\\)$"),V2=new RegExp("^rgba\\("+[_e,_e,_e,Fr]+"\\)$"),Q2=new RegExp("^hsl\\("+[Fr,_e,_e]+"\\)$"),j2=new RegExp("^hsla\\("+[Fr,_e,_e,Fr]+"\\)$"),y0={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(Mr,Ir,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:b0,formatHex:b0,formatHsl:Y2,formatRgb:w0,toString:w0});function b0(){return this.rgb().formatHex()}function Y2(){return S0(this).formatHsl()}function w0(){return this.rgb().formatRgb()}function Ir(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=z2.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?v0(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=U2.exec(t))?new Ee(e[1],e[2],e[3],1):(e=G2.exec(t))?new Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=H2.exec(t))?ns(e[1],e[2],e[3],e[4]):(e=V2.exec(t))?ns(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Q2.exec(t))?D0(e[1],e[2]/100,e[3]/100,1):(e=j2.exec(t))?D0(e[1],e[2]/100,e[3]/100,e[4]):y0.hasOwnProperty(t)?v0(y0[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function v0(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 W2(t){return t instanceof Mr||(t=Ir(t)),t?(t=t.rgb(),new Ee(t.r,t.g,t.b,t.opacity)):new Ee}function X2(t,e,n,r){return arguments.length===1?W2(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,X2,x0(Mr,{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?Br:Math.pow(Br,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:E0,formatHex:E0,formatRgb:C0,toString:C0}));function E0(){return"#"+Ra(this.r)+Ra(this.g)+Ra(this.b)}function C0(){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 D0(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,r)}function S0(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof Mr||(t=Ir(t)),!t)return new $e;if(t instanceof $e)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 $e(o,a,u,t.opacity)}function Z2(t,e,n,r){return arguments.length===1?S0(t):new $e(t,e,n,r==null?1:r)}function $e(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}La($e,Z2,x0(Mr,{brighter:function(t){return t=t==null?ts:Math.pow(ts,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Br:Math.pow(Br,t),new $e(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 M0="attr_",B0="uDomain_",K2="range_",F0="scale_",I0="getScaled_",ka="uRangeTexture_",T0=3402823466e29;function q2(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 J2(t,e){let n;if(Li(t))n=Ft(ol(t)(e));else if(q(e))if(Zt(t))n=$2(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(gs(e))n=Ft(e?1:0);else if(e===null)if(Zt(t))n=Ft([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Ft(e);return`
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 w0(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]+"\\)$"),v0={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:E0,formatHex:E0,formatHsl:J2,formatRgb:C0,toString:C0});function E0(){return this.rgb().formatHex()}function J2(){return F0(this).formatHsl()}function C0(){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?D0(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))?B0(e[1],e[2]/100,e[3]/100,1):(e=q2.exec(t))?B0(e[1],e[2]/100,e[3]/100,e[4]):v0.hasOwnProperty(t)?D0(v0[t]):t==="transparent"?new Ee(NaN,NaN,NaN,0):null}function D0(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,w0(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:S0,formatHex:S0,formatRgb:M0,toString:M0}));function S0(){return"#"+Ra(this.r)+Ra(this.g)+Ra(this.b)}function M0(){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 B0(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 F0(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?F0(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,w0(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_",I0="uDomain_",tw="range_",T0="scale_",P0="getScaled_",Oa="uRangeTexture_",L0=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(cl(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`
55
55
  #define ${t}_DEFINED
56
- ${n.type} ${I0}${t}() {
56
+ ${n.type} ${P0}${t}() {
57
57
  // Constant value
58
58
  return ${n};
59
- }`}function _2(t,e,n){var I;const r=Xt(t),i=M0+t,s=B0+r,o=K2+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}=q2(e.type),p=(P,...X)=>ew.apply(null,[P+(a?"Fp64":""),"value",...X]);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(),(I=n.band)!=null?I:.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=vi(e.type)||Xe(e.type)&&Zt(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(me)){const P=P0(g);f.push(`const ${P.type} ${o} = ${P};`)}let m;if(Ii(n))if(me(n.datum))m=n.datum;else throw new Error(`Only quantitative datums are currently supported in the encoding definition: ${JSON.stringify(n)}`);const A=Zt(t)?"vec3":"float";let b;if(Zt(t)){const P=ka+r;if(t==r&&f.push(`uniform sampler2D ${P};`),Xe(e.type))b=`getInterpolatedColor(${P}, transformed)`;else if(Vt(e.type)||pn(e.type))b=`getDiscreteColor(${P}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||pn(e.type)){const P=ka+r;t==r&&f.push(`uniform sampler2D ${P};`),b=`getDiscreteColor(${P}, int(transformed)).r`}m!==void 0?f.push(`const highp ${u} ${i} = ${Ft(a?Pa(m):m)};`):f.push(`in highp ${u} ${i};`);const y=[],v=Xe(e.type)&&c>2,D=pn(e.type)||v;if(y.push("int slot = 0;"),D){const P=s;y.push(v?`while (slot < ${P}.length() - 2 && value >= ${P}[slot + 1]) { slot++; }`:`while (slot < ${P}.length() && value >= ${P}[slot]) { slot++; }`)}const C=Xe(e.type)||pn(e.type)||["band","point"].includes(e.type);if(d){const P=s;if(C){const X=a?"vec4":"vec2";y.push(`${X} domain = ${X}(${P}[slot], ${P}[slot + 1]);`)}y.push(`float transformed = ${d};`),v&&y.push(`transformed = (float(slot) + transformed) / (float(${P}.length()) - 1.0);`)}else y.push("float transformed = float(slot);");e.clamp&&e.clamp()&&y.push(`transformed = clampToRange(transformed, ${P0(g)});`),y.push(`return ${b!=null?b:"transformed"};`),f.push(`
60
- ${A} ${F0}${t}(${u} value) {
61
- ${y.map(P=>` ${P}
59
+ }`}function iw(t,e,n){var F;if(Te(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=pn(t),i=ka+t,s=I0+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=R0(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, ${R0(g)});`),b.push(`return ${A!=null?A:"transformed"};`),f.push(`
60
+ ${m} ${T0}${t}(${u} value) {
61
+ ${b.map(S=>` ${S}
62
62
  `).join("")}
63
63
  }`),f.push(`
64
- ${A} ${I0}${t}() {
65
- return ${F0}${t}(${i});
66
- }`);const B=f.join(`
67
- `);if(C&&t==r){const P=Xe(e.type)||pn(e.type)?c:2;l=`${a?"vec2":"float"} ${s}[${P}];`}return{glsl:B,domainUniform:l}}function Oa(t){if(!me(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+T0;if(t==-1/0)return""+-T0;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Ft(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(Oa).join(", ")})`):(n="float",r=Oa(t[0])),Object.assign(r,{type:n,numComponents:e})}function $2(t){const e=Ir(t).rgb();return Ft([e.r,e.g,e.b].map(n=>n/255))}function P0(t){return Ft([t[0],Re(t)])}function ew(t,...e){const n=[];for(const r of e)me(r)?n.push(Oa(r)):Be(r)?n.push(Ft(r)):n.push(r);return`${t}(${n.join(", ")})`}class tw{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(M0+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}];
64
+ ${m} ${P0}${t}() {
65
+ return ${T0}${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""+L0;if(t==-1/0)return""+-L0;{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 R0(t){return Kt([t[0],ke(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}];
68
68
  `,n+=`p${i}();
69
69
  `;const r=new Function("that",`${e}
70
70
 
@@ -72,7 +72,7 @@ ${A} ${I0}${t}() {
72
72
  ${n}
73
73
  that.vertexCount++;
74
74
  };
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 Sn=5,za=127;function Ua(t){const e=[];for(let d=0;d<=za;d++)e.push(void 0);const n=new Map;for(const d of t.chars)d.id<=za?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<=za?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-Sn*2,f=u.height-Sn*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 nw(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const rw=2**31-1;function iw(t,e){const n=new Int32Array(t);n.fill(rw);const r=new Int32Array(t),i=e[0],o=(e[1]-e[0])/t,a=f=>nw(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 Tr{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 tw(n);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.accessor,u=[0,0],c=o.scale.fp64,l=o.indexer?o.indexer:c?f=>Pa(a(f),u):a;this.variableBuilder.addConverter(s,{f:l,numComponents:c?2:1,arrayReference:c?u:void 0})}this.lastOffset=0,this.rangeMap=new ii([],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=iw(50,[i(e[0]),s(Re(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 sw extends Tr{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 ow extends Tr{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 aw extends Tr{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class uw extends Tr{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 cw extends Tr{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 a=e;this.numberFormat=a.text.channelDef.format?xe(a.text.channelDef.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 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=-Sn;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=q(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 B=this.metrics.getCharByCode(A.charCodeAt(0));y-=(B.width-B.xadvance)/a/2}let v=-.5,D=1,C=1;for(let B=0;B<A.length;B++){const I=this.metrics.getCharByCode(A.charCodeAt(B)),P=o?1:I.xadvance/a;if(I.id==32){y+=P;continue}o?(C=(I.width+Sn*2)/I.width,y=-C/2,D=(I.height+Sn*2)/I.height,v=-.5-Sn/I.height):(D=I.height/a,v=-(I.height+I.yoffset+c)/a,C=I.width/a);const X=I.x,E=I.y;f[0]=y,f[1]=v+D,h[0]=X/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v+D,h[0]=(X+I.width)/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y,f[1]=v,h[0]=X/u,h[1]=(E+I.height)/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v+D,h[0]=(X+I.width)/u,h[1]=E/u,this.variableBuilder.pushAll(),f[0]=y,f[1]=v,h[0]=X/u,h[1]=(E+I.height)/u,this.variableBuilder.pushAll(),f[0]=y+C,f[1]=v,h[0]=(X+I.width)/u,h[1]=(E+I.height)/u,this.variableBuilder.pushAll(),y+=P}this.addToXIndex(n)}this.registerBatch(e)}}var fw=`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;
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(ke(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=!Te(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
76
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
77
77
  float a_hi=t*ONE-(t-a);float a_lo=a*ONE-a_hi;
78
78
  #else
@@ -128,8 +128,8 @@ return sum_fp64(split(yn),prod);
128
128
  #else
129
129
  return sum_fp64(vec2(yn,0.0),prod);
130
130
  #endif
131
- }`,L0=`#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);}}`,lw="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];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;}",hw="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;}",dw=`/***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;
131
+ }`,N0=`#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;
133
133
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
134
134
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
135
135
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -137,35 +137,35 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
137
137
  #elif defined(SAMPLE_FACET_TEXTURE)
138
138
  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
139
  #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;}}`,pw=`/**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){
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){
141
141
  #ifdef uniqueId_DEFINED
142
142
  int id=int(getScaled_uniqueId());vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,0xFF)&0xFF)/float(0xFF);
143
143
  #else
144
144
  vPickingColor=vec4(1.0);
145
145
  #endif
146
- return true;}return false;}`,gw="uniform bool uPickingEnabled;flat in highp vec4 vPickingColor;";const rs=Symbol("cacheMap");function Mn(t,e,n){let r=Pr(t).get(e);return r===void 0&&(r=n(e),Pr(t).set(e,r)),r}function R0(t,e){Pr(t).delete(e)}function is(t,e){const n=Pr(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Pr(t).delete(e)}function N0(t){t[rs]=new Map}function Pr(t){return t[rs]||N0(t),t[rs]}function mw(t,e,n,r){const i=q(t)?t:t.name,s=!q(t)&&t.extent||[0,1];if(n===void 0&&!q(t)&&(n=t.count),i){const o=jo(i);if(ge(o)){const a=O0(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 k0(o,e);throw new Error("Unknown scheme: "+i)}}}function Aw(t,e="rgb",n,r){const i=Ei(t,q(e)?e:e.type,q(e)?void 0:e.gamma),s=O0(i);return ss(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},s,r)}function xw(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 k0(t,e,n,r){const i=z0(t,n);return ss(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function O0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],s=Re(e)-i,o=oi(r).map(a=>a/(r-1)).map(a=>i+a/s).map(t);return n&&o.reverse(),z0(o)}function z0(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const s=Ir(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 yw{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=B2(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(!mn(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");A0(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=T2(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=v2(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(`
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 k0(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 O0(t){t[rs]=new Map}function Rr(t){return t[rs]||O0(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=U0(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 z0(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=U0(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 z0(t,e,n,r){const i=G0(t,n);return ss(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function U0(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],s=ke(e)-i,o=ci(r).map(a=>a/(r-1)).map(a=>i+a/s).map(t);return n&&o.reverse(),G0(o)}function G0(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.");b0(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(`
147
147
 
148
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(`
149
149
 
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,E2(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(Zt(s)){const o=e.getScaleProps(),a=e.getScale();let u;if(o.scheme){let c=q(o.scheme)?void 0:o.scheme.count;c=i(c,a),u=mw(o.scheme,this.gl,c,r)}else{const c=a.range();vi(a.type)?u=Aw(c,o.interpolate,this.gl,r):u=k0(c,this.gl,a.domain().length,r)}this.rangeTextures.set(e,u)}else{const o=e.getScale();if(o.type==="ordinal"||pn(o.type)){const a=Li(s)?ol(s):c=>c,u=e.getScale().range();this.rangeTextures.set(e,xw(u.map(a),this.gl,o.domain().length,r))}}}}function bw(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(`
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=z0(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)?cl(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
151
  `).map((o,a)=>{const u=s.get(a);return`${a+1+n}: ${o}${u?`
152
152
 
153
153
  ^^^ ${u}`:""}`}).join(`
154
- `)}function ww(t,e,n){var 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=bw(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?kl(t,r,n,e):r=Cr(t,Se(T({},e),{src:n})),r}function vw(...t){const e={get:function(n,r,i){for(const s of t){const a=s()[r];if(a!==void 0)return a}},has:function(n,r,i){for(const s of t){const o=s();if(r in o)return!0}return!1}};return new Proxy({},e)}const Ew="SAMPLE_FACET_UNIFORM",U0="SAMPLE_FACET_TEXTURE";class Lr{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=vw(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",type:"nominal",scale:null}),e}fixEncoding(e){return e}get encoding(){return Mn(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=o=>({value:this.properties[o]}),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=R1(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return U0;if(this.unitView.getFacetAccessor())return Ew}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(Wt(p))s.push(J2(h,p.value));else{const d=at(p)&&p.resolutionChannel||h,g=this.unitView.getScaleResolution(d).getScale(),m=_2(h,g,p);s.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
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?Ul(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",H0="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 H0;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(Te(p))s.push(rw(h,p.value));else{const d=Pe(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
156
  `+this.domainUniforms.map(f=>` ${f}
157
157
  `).join("")+`};
158
158
 
159
- `:"",u=[...r,L0,lw,a,...s,dw,pw,e];u.some(f=>/[Ff]p64/.test(f))&&(u.unshift(hw),u.unshift(fw));const c=[...r,L0,gw,n],l=this.gl;this.programStatus=ww(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=s2(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=e2(this.gl,this.programInfo,"Domains"))}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&&gx(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=xx(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=C2(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(B0.length),u=this.encoding[a],c=at(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)}}n2(r,this.programInfo,this.domainUniformInfo)}for(const[s,o]of Object.entries(this.encoding))if(at(o)){const a=at(o)&&o.resolutionChannel||s,u=this.unitView.getScaleResolution(a),c=n.rangeTextures.get(u);c&&de(this.programInfo,{[ka+s]:c})}if(this.getSampleFacetMode()==U0){let s;for(const o of this.unitView.getAncestors())if(s=o.getSampleFacetTexture(),s)break;de(this.programInfo,{uSampleFacetTexture:s})}de(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),de(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 de(this.programInfo,l),de(this.programInfo,{uViewportSize:[e.width,e.height]}),f.height>0&&f.width>0}findDatumAt(e,n){}}function Ga(t,e){const n=k1(e);if(t[e])if(t[n]){if(t[e].type!="quantitative"){const r=(1-(t[e].band||1))/2;t[e].band=r,t[n].band=-r}}else if(t[e].type=="quantitative")t[n]={datum:0};else{t[e]=T({},t[e]),t[n]=T({},t[e]);const r=(1-(t[e].band||1))/2;t[e].band=0+r,t[n].band=1-r}else{if(t[n])throw new Error(`Only secondary channel ${n} has been specified!`);t[e]={value:0},t[n]={value:1}}}function G0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Wt(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function H0(t,e){Wt(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 Cw extends Lr{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 Mn(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Wt(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Ga(e,"x"),Ga(e,"y"),G0(e,this.properties.filled),H0(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!(Wt(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(F2,I2,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new sw({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;de(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]}),Cn(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Dr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=Ze(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 Dw=`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(){
159
+ `:"",u=[...r,N0,Aw,a,...s,yw,bw,e];u.some(f=>/[Ff]p64/.test(f))&&(u.unshift(xw),u.unshift(mw));const c=[...r,N0,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(I0.length),u=this.encoding[a],c=Pe(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(Pe(o)){const a=Pe(o)&&o.resolutionChannel||s,u=this.unitView.getScaleResolution(a),c=n.rangeTextures.get(u);c&&fe(this.programInfo,{[Oa+s]:c})}if(this.getSampleFacetMode()==H0){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(!(Te(r)||Te(i))){if(r){if(!Pe(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 V0(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Te(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Q0(t,e){Te(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()&&Te(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"),V0(e,this.properties.filled),Q0(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!(Te(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(){
160
160
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
161
161
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
162
162
  #else
163
163
  return vec2(0.0,0.0);
164
164
  #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();}`,Sw="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 ft=1<<0,It=1<<1,Mw={};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",oi(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
166
- `)+`return function propagate(datum) {${oi(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
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(`
167
167
  `)}}`)(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():Mw}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 Bw(t){return t.type=="facet"}class Q0 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 Fw(t,e,n){const r=new Q0({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const Iw={};class Tw extends Lr{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()),Iw)}fixEncoding(e){return G0(e,this.properties.filled),H0(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(Fw(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Dw,Sw)}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 aw({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());return e<=0?-1/0:e>=1?1/0:Wg(this.sampledSemanticScores,e)}else return-1}prepareRender(e){super.prepareRender(e),de(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),Cn(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=ri(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),s=ls(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&&Dr(n,this.vertexArrayInfo,n.POINTS,a,r+s)},e,()=>this.rangeMap)}}var Pw="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();}",Lw="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 Rw extends Lr{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&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&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=Nw(this.properties.strokeDash);this.dashTexture=Cr(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(Pw,Lw)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new ow({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),de(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&de(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),Cn(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Dr(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function Nw(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 kw=`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);
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 j0(t){return t.type=="file"}function Nw(t){return t.type=="facet"}class Y0 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 Y0({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 V0(e,this.properties.filled),Q0(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&&Pe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Pe(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);
169
169
  #ifdef size2_DEFINED
170
170
  float mixedSize=mix(getScaled_size(),getScaled_size2(),t);
171
171
  #else
@@ -177,7 +177,7 @@ vec3 color=mix(getScaled_color(),getScaled_color2(),t);
177
177
  #else
178
178
  vec3 color=getScaled_color();
179
179
  #endif
180
- vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}`,Ow="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 zw extends Lr{constructor(e){super(e);Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,size2:void 0,color:"black",color2:void 0,opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","size2","height","color","color2","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","size2","color2"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(kw,Ow)}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 uw({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:Uw(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)}Cn(n,this.programInfo,this.bufferInfo),Dr(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function Uw(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var Gw=`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;
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;
181
181
  #ifdef x2_DEFINED
182
182
  uniform float uPaddingX;uniform bool uFlushX;
183
183
  #endif
@@ -197,7 +197,7 @@ vec2 pos=applySampleFacet(vec2(x,y));
197
197
  #ifdef y2_DEFINED
198
198
  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
199
  #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();}`,Hw="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 Vw={left:-1,center:0,right:1},Qw={top:-1,middle:0,bottom:1,alphabetic:1};class jw extends Lr{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 gn)this.properties.fitToBand&&Ga(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(Gw,Hw)}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:[Vw[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=q(l)?l:l===null?"":""+l;s+=f&&f.length||0}const a=new cw({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),de(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),Cn(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Dr(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function Yw(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+=Rr(d.px)+(os(d)?0:n),a+=Rr(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=Rr(g.px)+(a?Rr(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 Ww(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Rr(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 j0=Object.freeze({px:0,grow:0}),Y0=new Tt(j0,j0);function os(t){return!t.px&&!t.grow}function Rr(t){return t||0}function Xw(t){return t&&(me(t.px)||me(t.grow))}function Ha(t){if(Z0(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(Xw(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 ze{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 ze(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new ze(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):Va}static createFromRecord(e){return new ze(e.top,e.right,e.bottom,e.left)}static zero(){return Va}static createUniformPadding(e){return new ze(e,e,e,e)}}const Va=ze.createUniformPadding(0);Object.freeze(Va);const Zw=/^([A-Za-z]+:)?\/\//;function Kw(t,e){if(e&&Zw.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const as="VISIT_SKIP",Nr="VISIT_STOP",W0=t=>t;class X0{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={},N0(this),this.opacityFunction=W0}getPadding(){return this._cache("size/padding",()=>ze.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Y0)}getSizeFromSpec(){const e=n=>{var s;let r,i=this.spec[n];if(Z0(i)){const o=i.step,a=(s=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:s.getScale();if(a){let u=0;if(Vt(a.type))u=a.domain().length;else if(["locus","index"].includes(a.type)){const c=a.domain();u=Re(c)-c[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);u=zo(u,a.paddingInner(),a.paddingOuter()),r={px:u*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else r=i&&Ha(i)||{px:0,grow:1};return r};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!==Nr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===W0)&&(this.opacityFunction=Jw(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 Ar(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Xt(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 Kw(()=>{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 Mn(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 qw(t){return"unitsPerPixel"in t}function Jw(t){const e=t.spec.opacity;if(e!==void 0){if(me(e))return n=>n*e;if(qw(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 o=1e3,a=Hr(r.domain())/o;return i(a)*s}}}return n=>n}const Z0=t=>!!(t==null?void 0:t.step);class lt extends X0{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===Nr)return n;if(n!==as){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===Nr)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 lt)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||Bn(o)&&Bn(a)||Bn(o)&&a===!0||o===!0&&Te(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(Bn(c))Bn(u)&&(r[a]=us([c,u],a));else if(Bn(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 Bn(t){return Te(t)&&!Array.isArray(t)}/*!
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 W0=Object.freeze({px:0,grow:0}),X0=new Tt(W0,W0);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(q0(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",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={},O0(this),this.opacityFunction=Z0}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()):X0)}getSizeFromSpec(){const e=n=>{var i,s;let r=this.spec[n];if(q0(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=ke(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===Z0)&&(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 q0=t=>!!(t==null?void 0:t.step);class ht 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===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&&Le(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 Le(t)&&!Array.isArray(t)}/*!
201
201
  * Adapted from vega-encode:
202
202
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
203
203
  *
@@ -205,7 +205,7 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
205
205
  * All rights reserved.
206
206
  *
207
207
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
208
- */function K0(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(Hr(t.domain())/n)||1)),Te(e)&&(e=e.interval),e}function q0(t,e,n){var r=t.range(),i=Math.floor(r[0]),s=Math.ceil(Pe(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],Pe(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,u){return!(u%2)});e.length<3&&(e=o)}return e}function _w(t,e){return t.bins?q0(t,$w(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function $w(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,s){return!(s%r)})}function ev(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?xe(n):String;if(Uf(t.type)){var i=nv(n);r=t.bins?i:tv(r,i)}return r}function tv(t,e){return function(n){return t(n)?e(n):""}}function nv(t){var e=ci(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return rv(xe(e),xe(".1f")(1)[1])}else return xe(e)}function rv(t,e){return function(n){var r=t(n),i=r.indexOf(e),s,o;if(i<0)return r;for(s=iv(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function iv(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}/*!
208
+ */function J0(t,e,n){return me(e)&&n!=null&&(e=Math.min(e,~~(jr(t.domain())/n)||1)),Le(e)&&(e=e.interval),e}function _0(t,e,n){var r=t.range(),i=Math.floor(r[0]),s=Math.ceil(Re(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],Re(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(Gf(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}/*!
209
209
  * Adapted from vega-encode:
210
210
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
211
211
  *
@@ -213,12 +213,12 @@ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scal
213
213
  * All rights reserved.
214
214
  *
215
215
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
216
- */const sv="locus",ov="index";var av=5;function uv(t){const e=t.type;return!t.bins&&(e===hn||e===sr||e===or)}function J0(t){return Xe(t)&&![We,ov,sv].includes(t)}function _0(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var cv=Qr(["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 $0(t,e,n){n=_0(n);for(const r in t)if(!cv[r]){if(r==="padding"&&J0(e.type))continue;ge(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}Av(e,t,mv(e,t,dv(e,t,n)))}function fv(t,e){const n=lv(t),r=O(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return $0(t,i,e),i}function lv(t){var e=t.type,n="",r;return e===We?We+"-"+hn:(hv(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?We+"-":r===3?dn+"-":""),(n+e||hn).toLowerCase())}function hv(t){const e=t.type;return Xe(e)&&e!==Tf&&e!==Pf&&(t.scheme||t.range&&t.range.length&&t.range.every(q))}function dv(t,e,n){if(!t.domain)return 0;n=_0(n);var r=pv(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,s=t.type,o=e.zero||e.zero===void 0&&uv(t),a,u;return i?(J0(s)&&e.padding&&i[0]!==Pe(i)&&(i=gv(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(eh(s,i,n)),s===Go&&t.unknown(e.domainImplicit?so:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&K0(t,e.nice)||null),i.length):0}function pv(t,e,n){return e?(t.domain(eh(t.type,e,n)),e.length):-1}function gv(t,e,n,r,i,s){var o=Math.abs(Pe(n)-n[0]),a=o/(o-2*r),u=t===wt?ou(e,null,a):t===or?hs(e,null,a,.5):t===sr?hs(e,null,a,i||1):t===bi?Jh(e,null,a,s||1):ls(e,null,a);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}function eh(t,e,n){if(Uf(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: "+Vr(e))}return e}function mv(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?Pe(i):r.stop,a=r.step;a||W("Scale bins parameter missing step property."),r=oi(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 Av(t,e,n){var r=t.type,i=e.round||!1,s=e.range;if(e.rangeStep!=null)s=xv(r,e,n);else if(e.scheme&&(s=yv(r,e,n),ge(s))){if(t.interpolator)return t.interpolator(s);W(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&vi(r))return t.interpolator(Ei(Qa(s,e.reverse),e.interpolate,e.interpolateGamma));s&&e.interpolate&&t.interpolate?t.interpolate(Gf(e.interpolate,e.interpolateGamma)):ge(t.round)?t.round(i):ge(t.rangeRound)&&t.interpolate(i?rr:yt),s&&t.range(Qa(s,e.reverse))}function xv(t,e,n){t!==Nf&&t!==Ho&&W("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 yv(t,e,n){var r=e.schemeExtent,i,s;return Be(e.scheme)?s=Ei(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),s=jo(i),s||W(`Unrecognized scheme name: ${e.scheme}`)),n=t===Rf?n+1:t===Vo?n-1:t===Uo||t===Lf?+e.schemeCount||av:n,vi(t)?th(s,r,e.reverse):ge(s)?dA(th(s,r),n):t===Go?s:s.slice(0,n)}function th(t,e,n){return ge(t)&&(e||n)?hA(t,Qa(e||[0,1],n)):t}function Qa(t,e){return e?t.slice().reverse():t}const nh=xe(",d");function bv(t,e){return t.chrom+":"+nh(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+nh(Math.ceil(e.pos))}const wv="https://genomespy.app/data/genomes/";class vv{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=wv;try{this.setChromSizes(Ev(await ti({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=zg(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 bv(...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],i=n[3]||r,s=parseInt(n[2].replace(/,/g,"")),o=parseInt(n[4].replace(/,/g,""));return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function Ev(t){return md(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function rh(t){return Te(t)&&"chrom"in t}function Cv(t){return t.every(rh)}class kr extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof kr&&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 ja extends kr{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 ih extends kr{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 sh extends ih{constructor(){super();this.type="nominal"}}class Dv extends kr{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 oh={quantitative:ja,index:ja,locus:ja,nominal:sh,ordinal:ih};function ah(t,e){if(t=="quantitative"&&Sv(e)){const n=new Dv(e);return n.type=t,n}else if(oh[t]){const n=new oh[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function Sv(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Mv(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}const uh="quantitative",ch="ordinal",fh="nominal",Ya="locus",Bv="index";class Fv{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=Ti(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&&!xr(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 Mn(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Ti(n.view,n.channel).scale).filter(n=>n!==void 0);return us(e,"scale",["domain"])})}getScaleProps(){return Mn(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=Iv(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Vt(n.type)&&(n.domain=new sh),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(s=n.domainMax)!=null?s:1]),n.type==Ya&&!("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),Tv(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Ya?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>xr(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>xr(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){R0(this,"scaleProps");const e=this.getScaleProps();$0(e,this._scale),Xe(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=fv(e);return this._scale=n,n.type=="locus"&&n.genome(this.getGenome()),n.fp64=!!e.fp64,Xe(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()&&Yo(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!gn.includes(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=Zh(o,r||0),o=ls(o,a,e);break;case"log":o=Kh(o,r||0),o=ou(o,a,e);break;case"pow":case"sqrt":o=qh(o,r||0,i.exponent()),o=hs(o,a,e,i.exponent());break;default:throw new Error("Unsupported scale type: "+i.type)}return this._zoomExtent&&(o=_h(o,...this._zoomExtent)),[0,1].some(u=>o[u]!=s[u])?(i.domain(o),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(gs(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=of.rho(.7)([c,0,u],[f,0,l]);await i.transition({duration:n/1e3*h.duration,easingFunction:Mv,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()?Hr(this._zoomExtent)/Hr(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(Pv(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),Pi(n)?r.nice=!this.isExplicitDomain():Zt(n)?r.scheme=e==fh?"tableau10":e==ch?"blues":"viridis":Li(n)?r.range=sl(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 rh(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&Cv(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 Iv(t,e){if([Bv,Ya].includes(e)){if(gn.includes(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const n={uniqueId:["null",void 0,void 0],facetIndex:["null",void 0,void 0],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],sample:["null","null",void 0],semanticScore:[void 0,void 0,"null"],search:["null",void 0,void 0],text:["null","null","null"],dx:[void 0,void 0,"null"],dy:[void 0,void 0,"null"],angle:[void 0,void 0,"linear"]},r=n[t]?n[t][[fh,ch,uh].indexOf(e)]:e==uh?"linear":"ordinal";if(r===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return r}function Tv(t,e){Pi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Xe(t.type)&&(t.clamp=!0)}function Pv(t){return Te(t)}function Wa(...t){for(const e of t)if(e!==void 0)return e}class Lv{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Re(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 Mn(this,"axisProps",()=>{const e=this.members.map(n=>Ti(n.view,n.channel).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=Ti(s.view,s.channel);return{member:s,explicitTitle:Wa((a=o.axis)==null?void 0:a.title,o.title),implicitTitle:Wa(Ar(o)?o.field:void 0,ta(o)?o.expr:void 0)}},n=this.members.map(e),r=n.filter(s=>{var o;if(xr(s.member.channel)&&!s.explicitTitle){const a=Xt(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=>Wa(s.explicitTitle,s.implicitTitle)).filter(q));return i.size?[...i].join(", "):null}}class lh extends X0{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class Xa extends lt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((s,o)=>{if(qa(s)||Ka(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 ht(t){return()=>t}class et{static create(e,n,r,i){return new et(ht(e),ht(n),ht(r),ht(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"?ht(i):typeof i=="function"?i:this._passThrough(r)};return new et(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new et(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 et(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 et(()=>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 et(ht(this.x),ht(this.y),ht(this.width),ht(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 Za extends lt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Ja(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const s=Ja(e)?e.hconcat:ph(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=hh(n),i=this.mainDimension=="height"?new ze(e[0].getEffectivePadding().top,r[1],Re(e).getEffectivePadding().bottom,r[0]):new ze(r[0],e[0].getEffectivePadding().left,r[1],Re(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=Ha(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:Ww(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&Ha(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=Yw(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=hh(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 et(()=>n.x+h,()=>n.y+f.location,()=>d,()=>f.size):new et(()=>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 hh(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class Rv{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(Nv,e(lh)),this.addViewType(qa,e(Xa)),this.addViewType(Ka,e(tt)),this.addViewType(ph,e(Za)),this.addViewType(Ja,e(Za)),this.addViewType(kv,e(Za))}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 Ka(t){return"mark"in t&&(q(t.mark)||Te(t.mark))}function qa(t){return"layer"in t&&Te(t.layer)}function dh(t){return t&&(Ka(t)||qa(t))&&"aggregateSamples"in t}function Nv(t){return"import"in t}function ph(t){return"vconcat"in t&&Be(t.vconcat)}function Ja(t){return"hconcat"in t&&Be(t.hconcat)}function kv(t){return"concat"in t&&Be(t.concat)}const Ov={point:Tw,rect:Cw,rule:Rw,link:zw,text:jw};class tt extends lt{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const s=Ov[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(!at(s))continue;let o=Xt((r=s.resolutionChannel)!=null?r:i);if(e=="axis"&&!Pi(o))continue;let a=this;for(;a.parent instanceof lt&&["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 Fv(o):new Lv(o)),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(xr(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!at(n))throw new Error("The channel has no scale, cannot get domain!");if(!n.type)throw new Error(`No data type for channel "${e}"!`);return n}getConfiguredDomain(e){var i;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 ah(n.type,s.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type,i=a=>{let u;const c=this.mark.encoding[a];if(c){const l=this.context.accessorFactory.createAccessor(c);if(l)if(u=ah(r),l.constant)u.extend(l({}));else{const f=this.getCollector();(f==null?void 0:f.completed)&&f.visitData(h=>u.extend(l(h)))}}return u};let s=i(e);const o=na[e];if(o){const a=i(o);a&&s.extendAll(a)}return s}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return gn.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(dh(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=Se(T({},(n=r.encoding)!=null?n:{}),{sample:null});const i=this.context.createView(r,this,"summaryView");i.getFacetFields=s=>{},this.sampleAggregateViews.push(i)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function zv(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class Fn extends _{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Uv(t){return"dynamicCallbackSource"in t}class gh extends Fn{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=typeof r!="object"?i=>({data:i}):i=>i),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const mh="chromosome_ticks_and_labels",Ah={x:"width",y:"height"};function _a(t){return t=="x"?"y":"x"}const xh=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Jt(t){return xh[t]}class yh extends Xa{constructor(e,n,r,i){const s=n=="locus",o=T(T(T({},s?Vv:bh),Hv(n,e)),e);super(s?Qv(o):wh(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 gh(()=>this.ticks),s){const a=Jt(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(mh).getDynamicDataSource=()=>new gh(()=>u.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return xh[this.axisProps.orient]=="x"?new Tt(n,e):new Tt(e,n)}getPerpendicularSize(){return $a(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Jt(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Yo(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,s=Gv(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[Ah[Jt(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function $a(t){const e=Jt(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 Gv(t,e,n,r=[]){const i=a=>25+60*zv(100,700,a);let s=me(t.tickCount)?t.tickCount:Math.round(n/i(n));s=K0(e,s,t.tickMinStep);const o=t.values?q0(e,t.values,s):_w(e,s);if(Yo(o,r,a=>a,a=>a.value))return r;{const a=ev(e,s,t.format);return o.map(u=>({value:u,label:a(u)}))}}const bh={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 Hv(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 wh(t){const e=Se(T({},t),{extent:$a(t)}),n=Jt(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",type:"quantitative"}}}),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={[Ah[_a(Jt(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 Vv=Se(T({},bh),{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 Qv(t){const e=Se(T({},t),{extent:$a(t)}),n=Jt(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",type:"ordinal"}}}};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=wh(T(T({},t),a));if(t.chromTicks||t.chromLabels){const c={name:mh,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 jv={x:["bottom","top"],y:["left","right"]};class Yv extends lt{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(jv).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 tt(Wv(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 ze.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 ze.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()):Y0)}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(),...NE(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 yh(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 yh(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 Wv(t){return{configurableVisibility:!1,data:{values:[{}]},mark:Se(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*eu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of eu(r,[...e,n]))yield i;else yield[[...e,n],r]}class vh 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 ii([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){Bw(e)&&(this._data=[],this.facetBatches.set(Ze(e.facetId),this._data))}complete(){var i,s;const e=(i=this.params)==null?void 0:i.sort,n=e?au(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=>G(u)),a=si(this._data,...o);this.facetBatches.clear();for(const[u,c]of eu(a))this.facetBatches.set(u,c)}for(const o of this.facetBatches.values())r(o);if(this.children.length)for(const o of this.facetBatches.values())for(const a of o)this._propagate(a);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 cs{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 Xv extends _{get behavior(){return ft}constructor(e){super();this.params=e,this.startAccessor=G(e.start),this.endAccessor=G(e.end),this.chromAccessor=e.chrom?G(e.chrom):n=>{},this.weightAccessor=e.weight?G(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 cs}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 Zv(t,e,n=0,r=t.length){const i=new cs,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 Kv{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 qv extends _{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=G(this.params.pos),this.posBisector=ri(this.posAccessor),this.scoreAccessor=G(this.params.score),this.widthAccessor=G(this.params.width),this.laneAccessor=this.params.lane?G(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 Kv(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=Zv(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 Jv extends _{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=ea(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const _v="0".charCodeAt(0);function*$v(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-_v}yield r}class eE extends _{get behavior(){return ft}constructor(e){super();var o,a;const n=G((o=e.exons)!=null?o:"exons"),r=G((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 $v(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 tE extends _{get behavior(){return ft}constructor(e){super();const n=Ze(e.field).map(s=>G(s)),r=Ze(e.separator),i=Ze(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]));nE(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 nE(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 rE extends _{get behavior(){return It}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=ea(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Eh extends _{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=G(e.chrom),o=Ze(e.pos).map(g=>G(g)),a=Ze(e.as);if(o.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const u=Ze(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 Ch={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 iE extends _{get behavior(){return It}constructor(e){super();const n=Ua(Ch),r=G(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 sE=65536;class oE extends _{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=G(e.start),s=G(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const o=new Float64Array(sE),a=G(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 cs,a=new cs;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 aE extends _{get behavior(){return ft}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=>G(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 uE extends _{get behavior(){return It}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=G(e.field);this.handle=s=>{const o=i(s);if(q(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 cE extends _{get behavior(){return ft}constructor(e){super();const n=Ze(e.columnRegex).map(h=>new RegExp(h)),r=Ze(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 {
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 $0(t){return Ke(t)&&![Ze,dv,hv].includes(t)}function eh(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 th(t,e,n){n=eh(n);for(const r in t)if(!mv[r]){if(r==="padding"&&$0(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 th(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!==Pf&&e!==Lf&&(t.scheme||t.range&&t.range.length&&t.range.every(X))}function bv(t,e,n){if(!t.domain)return 0;n=eh(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?($0(s)&&e.padding&&i[0]!==Re(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(nh(s,i,n)),s===Go&&t.unknown(e.domainImplicit?so:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&J0(t,e.nice)||null),i.length):0}function wv(t,e,n){return e?(t.domain(nh(t.type,e,n)),e.length):-1}function vv(t,e,n,r,i,s){var o=Math.abs(Re(n)-n[0]),a=o/(o-2*r),u=t===vt?au(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 nh(t,e,n){if(Gf(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?Re(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(Hf(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!==kf&&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===Nf?n+1:t===Vo?n-1:t===Uo||t===Rf?+e.schemeCount||pv:n,Di(t)?rh(s,r,e.reverse):ge(s)?mA(rh(s,r),n):t===Go?s:s.slice(0,n)}function rh(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 ih=xe(",d");function Mv(t,e){return t.chrom+":"+ih(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ih(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],i=n[3]||r,s=parseInt(n[2].replace(/,/g,"")),o=parseInt(n[4].replace(/,/g,""));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 sh(t){return Le(t)&&"chrom"in t}function Tv(t){return t.every(sh)}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 oh 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 oh{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 uh={quantitative:Ya,index:Ya,locus:Ya,nominal:ah,ordinal:oh};function ch(t,e){if(t=="quantitative"&&Lv(e)){const n=new Pv(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 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 fh="quantitative",lh="ordinal",hh="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 ah),!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"){k0(this,"scaleProps");const e=this.getScaleProps();th(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()&&Yf(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!ol(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=au(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=af([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==hh?"tableau10":e==lh?"blues":"viridis":Li(n)?r.range=ul(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 sh(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(ol(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,lh,fh].indexOf(e)]:e==fh?"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 Le(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=ke(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(!Te(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 dh extends K0{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:mh(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=ph(n),i=this.mainDimension=="height"?new Ge(e[0].getEffectivePadding().top,r[1],ke(e).getEffectivePadding().bottom,r[0]):new Ge(r[0],e[0].getEffectivePadding().left,r[1],ke(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=ph(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 ph(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(dh)),this.addViewType(Ja,e(Za)),this.addViewType(qa,e(rt)),this.addViewType(mh,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)||Le(t.mark))}function Ja(t){return"layer"in t&&Le(t.layer)}function gh(t){return t&&(qa(t)||Ja(t))&&"aggregateSamples"in t}function Vv(t){return"import"in t}function mh(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(!Pe(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(!Pe(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 ch((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=ch(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(gh(this.spec))for(const r of this.spec.aggregateSamples){r.transform=[...(e=r.transform)!=null?e:[],{type:"mergeFacets"}],r.encoding=Se(T({},(n=r.encoding)!=null?n:{}),{sample:null});const i=this.context.createView(r,this,"summaryView");i.getFacetFields=s=>{},this.sampleAggregateViews.push(i)}}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 Ah(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 xh 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 yh="chromosome_ticks_and_labels",bh={x:"width",y:"height"};function $a(t){return t=="x"?"y":"x"}const wh=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function qt(t){return wh[t]}class vh extends Za{constructor(e,n,r,i){const s=n=="locus",o=T(T(T({},s?$v:Eh),_v(n,e)),e);super(s?eE(o):Ch(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 xh(()=>this.ticks),s){const a=qt(this.axisProps.orient),u=this.getScaleResolution(a).getGenome();this.findChildByName(yh).getDynamicDataSource=()=>new xh(()=>u.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return wh[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(Yf(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[bh[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=J0(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 Eh={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 Ch(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={[bh[$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({},Eh),{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=Ch(T(T({},t),a));if(t.chromTicks||t.chromLabels){const c={name:yh,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()):X0)}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 vh(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 vh(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 Dh 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?uu(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 of this.facetBatches.values())for(const a of o)this._propagate(a);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 {
218
218
  `+g.join(`,
219
219
  `)+`
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=>{V0(h)&&(this.handle=f),super.beginBatch(h)}}}class fE extends _{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?au(e.sort.field,e.sort.order):void 0,i=e.field?G(e.field):f=>1,s=e.groupby.map(f=>G(f)),o=Qg(this.buffer,f=>s.map(h=>h(f)).join()).map(f=>f[1]);let a=f=>!0;if(e.baseField){const f=G(e.baseField);a=h=>f(h)!==null}let u,c;switch(e.offset){case"normalize":u=(f,h)=>f/h,c=(f,h)=>ai(f,h);break;case"center":u=(f,h)=>f-h/2,c=(f,h)=>ai(f,h);break;case"information":{const f=Math.log2((l=e.cardinality)!=null?l:4);u=(h,p)=>h/p,c=(h,p)=>{const d=0,g=ai(h,y=>+!a(y)),m=ai(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+d))*(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 lE extends _{get behavior(){return ft}constructor(e){super();var s,o;const n=G((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 hE extends _{get behavior(){return ft}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=>G(s)),i=si(this.buffer,...r);for(const[s,o]of eu(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 dE="_uniqueId",Dh=1e4,Sh=[null];class Mh extends _{get behavior(){return It}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:dE,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%Dh==0&&(this._id=this._getBlock()*Dh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Sh.length;return Sh[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const pE={aggregate:hE,collect:vh,coverage:Xv,filterScoredLabels:qv,filter:Jv,flattenCompressedExons:eE,flattenDelimited:tE,flattenSequence:lE,formula:rE,identifier:Mh,linearizeGenomicCoordinate:Eh,measureText:iE,pileup:oE,project:aE,regexExtract:uE,regexFold:cE,sample:Q0,stack:fE};function gE(t,e){const n=pE[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function Bh(t){const e=T({},t.format);if(e.type=e.type||mE(t.url),e.parse=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 mE(t){var e;if(t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}function AE(t){return"values"in t}class xE extends Fn{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,typeof e[0]!="object"&&(r=i=>({data:i})));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=tc(e,Bh(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 yE(t){return"url"in t}class bE extends Fn{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=>ti({baseURL:this.baseUrl}).load(s).catch(o=>{throw new Error(`Cannot fetch: ${this.baseUrl}${s}: ${o.message}`)}),i=(s,o)=>{try{const a=tc(s,Bh(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 wE(t){return"sequence"in t}class vE extends Fn{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 EE(t){return"dynamicSource"in t}class CE extends Fn{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=typeof r!="object"?i=>({data:i}):i=>i),this._propagate(n(r));this.complete()}async load(){}}function DE(t,e){if(AE(t))return new xE(t);if(yE(t))return new bE(t,e);if(wE(t))return new vE(t);if(EE(t))return new CE;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function SE(t){const e=Object.keys(t),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
221
- `)+" };");return n.properties=e,n}class Fh extends _{get behavior(){return ft}constructor(){super();const e=n=>{const r=SE(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 Ih{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 ME(t){return"name"in t}class BE extends Fn{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&&typeof e[0]!="object"&&(n=r=>({data:r}));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 FE(t,e){const n=[];let r;const i=e!=null?e:new Ih,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=gE(h,f)}catch(d){throw console.warn(d),new Error(`Cannot initialize "${h.type}" transform: ${d}`)}p.behavior&It&&a(new Fh),a(p)}}const c=l=>{if(n.push(r),l.spec.data){const f=Uv(l.spec.data)?l.getDynamicDataSource():ME(l.spec.data)?new BE(l.spec.data,l.context.getNamedData):DE(l.spec.data,l.getBaseUrl());r=f,i.addDataSource(f,l)}if(l.spec.transform&&u(l.spec.transform,l),l instanceof tt){if(!r)throw new Error("A unit view has no (inherited) data source");const f=IE(l);if(f){s.push(f.rewrite);for(const p of f.transforms)a(p)}l.mark.isPickingParticipant()&&a(new Mh({type:"identifier"}));const h=new vh({type:"collect",groupby:l.getFacetFields(),sort:TE(l,f==null?void 0:f.rewrittenEncoding)});o(h),i.addCollector(h,l)}dh(l.spec)};return c.postOrder=l=>{r=n.pop()},t.visit(c),s.forEach(l=>l()),i}function IE(t){var s,o,a,u;const e=[],n={},r=[];for(const[c,l]of Object.entries(t.getEncoding())){const f=c;Pi(f)&&rl(l)&&r.push({channel:f,chromPosDef:l})}const i=si(r,c=>Xt(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 Eh({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),R0(t.mark,"encoding")}}:void 0}function TE(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(at(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(Ar(n))return{field:n.field};if(!Ii(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function Th(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Th(n,t))return!1;return!0}function tu(t,e=!1){if(t instanceof Fh)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&tu(n,e);return}t.behavior&ft&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)tu(t.children[n],e||n<r-1)}function PE(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 LE(t){if(tu(t),!Th(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function RE(t){for(const e of t.dataSources)LE(e);PE(t)}function NE(t){const e=[];return t.visit(n=>{e.push(n)}),e}function kE(t){t.visit(n=>{n instanceof tt&&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 tt&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function OE(t){for(const e of gn){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&&!Wt(r);return t.visit(r=>{if(r instanceof Xa||r instanceof tt){const i=r.getEncoding();if(r instanceof tt&&!n(i.x)&&!n(i.y))return as;const s=r.parent,o=new Yv(r.context,s);if(r.parent=o,o.child=r,o.name=r.name+"_decorator",s)if(s instanceof lt)s.replaceChild(r,o);else{let a;if(t.visit(GE((u,c)=>{if(u===r)return a=Re(c),Nr})),a instanceof lt)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 UE(t,e,n){var o;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=ti({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 Ph(t){const e=[];t.visit(n=>{if(n instanceof lh)return e.push(n),as});for(const n of e){const r=n.context,i=await UE(n.spec,n.getBaseUrl(),r),s=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,s),await Ph(s)}}function GE(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}class nu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Lh extends nu{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=si(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 HE extends nu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new VE(e,n);this.root?Re(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class VE{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=Re(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 QE extends nu{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 jE{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 YE{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 WE=t=>new Promise(e=>setTimeout(e,t));function XE(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"):WE(t.delay).then(r):r()}class ZE{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 XE(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function Rh(){const t=e=>e;return t.invert=e=>e,t.copy=Rh,t.invertRange=()=>{},t}class KE{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new vv(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 qE="data:image/png;base64,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";const JE={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class _E{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new ii([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Ua(Ch),texture:this._createTextureNow(qE)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(q(r)&&(r=JE[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=eC(r,n),s=this.fontRepository+Nh(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=>Ua(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Nh(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=>$E(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)=>{Cr(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=Cr(n,{src:e,min:n.LINEAR},(a,u,c)=>{a?o(a):s(u)})});return this._promises.push(i),r}}function Nh(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function $E(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 eC(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 tC(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 nC{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=ad([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 rC(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 iC(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 kh=new Map;async function sC(t,e,n){var s;const r=t.symbol;let i=(s=kh.get(r))!=null?s:await uC(t.symbol);return i?(kh.set(r,i),it`<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 oC(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=iC(oC,500);function uC(t){return aC(t)}const cC=xe(".4~r"),fC=xe(".4~e");function lC(t){return t===null?it`<span class="na">NA</span>`:q(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)?fC(t):cC(t):gs(t)?t?"True":"False":"?"+typeof t+" "+t}async function hC(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 it`<span class="color-legend" style="${`background-color: ${l(a)}`}"></span>`}return""},i=it`<table class="attributes">${Object.entries(t).filter(([o,a])=>!o.startsWith("_")).map(([o,a])=>it`<tr><th>${o}</th><td>${lC(a)} ${r(o,t)}</td></tr>`)}</table>`,s=e.unitView.spec.title?it`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return it`${s}${i}`}O("index",io,["continuous"]),O("locus",nm,["continuous"]),O("null",Rh,[]),ec("fasta",tC);class Oh{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new O1,this.viewFactory=new Rv,this.namedDataProviders=[],this.animator=new ZE(()=>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 nC(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:hC,refseqgene:sC},(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 yw(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 xA(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 KE(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Ih,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new _E(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 Ph(this.viewRoot),kE(this.viewRoot),OE(this.viewRoot),this.viewRoot=zE(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof tt&&i.push(a)});const s=FE(this.viewRoot,n.dataFlow);RE(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),dC(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 YE(r.clientX-s.left-e.clientLeft,r.clientY-s.top-e.clientTop),a=u=>{this.layout.dispatchInteractionEvent(new jE(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=rC(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 tt){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 Nr}}),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 Lh({picking:!1},this._glHelper),this._pickingContext=new Lh({picking:!0},this._glHelper);const r=new HE({});e.render(new QE(this._renderingContext,this._pickingContext,r),et.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 tt&&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 dC(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 pC="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";async function gC(t,e,n={}){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 s=Te(e)?e:await zh(e);if(s.baseUrl=s.baseUrl||"","width"in s||(s.width="container"),"padding"in s||(s.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new Oh(r,s,n),mC(i,n),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){const a=i._eventListeners;let u=a.get(s);u||(u=new Set,a.set(s,u)),u.add(o)},removeEventListener(s,o){var u;(u=i._eventListeners.get(s))==null||u.delete(o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)}}}function mC(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function zh(t){let e;try{e=JSON.parse(await ti().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}Z.GenomeSpy=Oh,Z.embed=gC,Z.html=it,Z.icon=pC,Z.loadSpec=zh,Object.defineProperty(Z,"__esModule",{value:!0}),Z[Symbol.toStringTag]="Module"});
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=>{j0(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?uu(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:Dh,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:Y0,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=nc(e,Ah(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=nc(s,Ah(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=>{j0(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 Dh({type:"collect",groupby:l.getFacetFields(),sort:HE(l,f==null?void 0:f.rewrittenEncoding)});o(h),i.addCollector(h,l)}gh(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)&&sl(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),k0(t.mark,"encoding")}}:void 0}function HE(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Pe(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 nu(t,e=!1){if(t instanceof Th)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&nu(n,e);return}t.behavior&lt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)nu(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(nu(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&&!Te(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=ke(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 dh)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 ru{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Nh extends ru{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 ru{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?ke(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=ke(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 ru{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,[]),tc("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=Le(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"});