]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-138122: Add some screenshots to the profiling.sampling docs (#142676)
authorPablo Galindo Salgado <Pablogsal@gmail.com>
Sun, 14 Dec 2025 17:43:03 +0000 (17:43 +0000)
committerGitHub <noreply@github.com>
Sun, 14 Dec 2025 17:43:03 +0000 (17:43 +0000)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
15 files changed:
.gitattributes
Doc/_static/tachyon-example-flamegraph.html [new file with mode: 0644]
Doc/_static/tachyon-example-heatmap.html [new file with mode: 0644]
Doc/conf.py
Doc/library/profiling.sampling.rst
Doc/library/tachyon-flamegraph.png [new file with mode: 0644]
Doc/library/tachyon-gecko-calltree.png [new file with mode: 0644]
Doc/library/tachyon-gecko-flamegraph.png [new file with mode: 0644]
Doc/library/tachyon-gecko-opcodes.png [new file with mode: 0644]
Doc/library/tachyon-heatmap-with-opcodes.png [new file with mode: 0644]
Doc/library/tachyon-heatmap.png [new file with mode: 0644]
Doc/library/tachyon-live-mode-1.gif [new file with mode: 0644]
Doc/library/tachyon-live-mode-2.gif [new file with mode: 0644]
Doc/library/tachyon-logo.png
Doc/library/tachyon-pstats.png [new file with mode: 0644]

index b4b178d7870510c267e05cc0e4d6f9364f6db953..767ec620fbabc37e7451ed5800b584612612e3f7 100644 (file)
@@ -68,6 +68,7 @@ PCbuild/readme.txt  dos
 **/clinic/*.cpp.h                                   generated
 **/clinic/*.h.h                                     generated
 *_db.h                                              generated
+Doc/_static/tachyon-example-*.html                  generated
 Doc/c-api/lifecycle.dot.svg                         generated
 Doc/data/stable_abi.dat                             generated
 Doc/library/token-list.inc                          generated
diff --git a/Doc/_static/tachyon-example-flamegraph.html b/Doc/_static/tachyon-example-flamegraph.html
new file mode 100644 (file)
index 0000000..701c959
--- /dev/null
@@ -0,0 +1,3260 @@
+<!doctype html>
+<html lang="en" data-theme="light">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Tachyon Profiler - Flamegraph Report</title>
+    <script>
+// https://d3js.org v7.8.5 Copyright 2010-2023 Mike Bostock
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<0?e=r+1:i=r}while(e<i)}return e}return 2!==t.length?(r=n,o=(e,r)=>n(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<=0?e=r+1:i=r}while(e<i)}return e}}}function i(){return 0}function o(t){return null===t?NaN:+t}const a=r(n),u=a.right,c=a.left,f=r(o).center;var s=u;const l=d(y),h=d((function(t){const n=y(t);return(t,e,r,i,o)=>{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o<a;)t(n,e,o,o+=r,1)}function g(t,n,e,r,i){for(let o=0,a=r*i;o<r;++o)t(n,e,o,o+a,r)}function y(t){const n=Math.floor(t);if(n===t)return function(t){const n=2*t+1;return(e,r,i,o,a)=>{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t<n;t+=a)u+=r[Math.min(o,t)];for(let t=i,f=o;t<=f;t+=a)u+=r[Math.min(o,t+c)],e[t]=u/n,u-=r[Math.max(i,t-c)]}}(t);const e=t-n,r=2*t+1;return(t,i,o,a,u)=>{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t<n;t+=u)c+=i[Math.min(a,t)];for(let n=o,l=a;n<=l;n+=u)c+=i[Math.min(a,n+f)],t[n]=(c+e*(i[Math.max(o,n-s)]+i[Math.min(a,n+s)]))/r,c-=i[Math.max(o,n-f)]}}function v(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}class T{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap((t=>t.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/f<t&&++u,c/f>n&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*f<t&&++u,c*f>n&&--c),c<u&&.5<=e&&e<2?X(t,n,2*e):[u,c,f]}function G(t,n,e){if(!((e=+e)>0))return[];if((t=+t)===(n=+n))return[t];const r=n<t,[i,o,a]=r?X(n,t,e):X(t,n,e);if(!(o>=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t<u;++t)c[t]=(o-t)/-a;else for(let t=0;t<u;++t)c[t]=(o-t)*a;else if(a<0)for(let t=0;t<u;++t)c[t]=(i+t)/-a;else for(let t=0;t<u;++t)c[t]=(i+t)*a;return c}function V(t,n,e){return X(t=+t,n=+n,e=+e)[2]}function W(t,n,e){e=+e;const r=(n=+n)<(t=+t),i=r?V(n,t,e):V(t,n,e);return(r?-1:1)*(i<0?1/-i:i)}function Z(t,n,e){let r;for(;;){const i=V(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i<u;++i)c[i]=t(r[i],i,r);var f=n(c),l=f[0],h=f[1],d=e(c,l,h);if(!Array.isArray(d)){const t=h,e=+d;if(n===M&&([l,h]=Z(l,h,e)),(d=G(l,h,e))[0]<=l&&(a=V(l,h,e)),d[d.length-1]>=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y<p)&&(d=d.slice(g,y),p=y-g);var v,_=new Array(p+1);for(i=0;i<=p;++i)(v=_[i]=[]).x0=i>0?d[i-1]:l,v.x1=i<p?d[i]:h;if(isFinite(a)){if(a>0)for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[Math.min(p,Math.floor((o-l)/a))].push(r[i]);else if(a<0)for(i=0;i<u;++i)if(null!=(o=c[i])&&l<=o&&o<=h){const t=Math.floor((l-o)*a);_[Math.min(p,t+(d[t]<=o))].push(r[i])}}else for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[s(d,o,0,p)].push(r[i]);return _}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:Y(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:Y([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Y(Array.isArray(t)?B.call(t):t),r):e},r}function J(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e<o||void 0===e&&o>=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a<u;){for(it(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function ht(t,e=n){if(1===e.length)return et(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)<0)&&(r=n,i=o);return i}var dt=pt(Math.random);function pt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,o=n[i+e];n[i+e]=n[r+e],n[r+e]=o}return n}}function gt(t){if(!(i=t.length))return[];for(var n=-1,e=nt(t,yt),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function yt(t){return t.length}function vt(t){return t instanceof InternSet?t:new InternSet(t)}function _t(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=bt(t);if(r.has(n))continue;let i,o;for(;({value:i,done:o}=e.next());){if(o)return!1;const t=bt(i);if(r.add(t),Object.is(n,t))break}}return!0}function bt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function mt(t){return t}var xt=1,wt=2,Mt=3,Tt=4,At=1e-6;function St(t){return"translate("+t+",0)"}function Et(t){return"translate(0,"+t+")"}function Nt(t){return n=>+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Dt(r)}function Dt(t){this._=t}function Rt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function Ft(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=zt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}Dt.prototype=$t.prototype={constructor:Dt,on:function(t,n){var e,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a<u;)if(e=(t=o[a]).type)i[e]=Ft(i[e],t.name,n);else if(null==n)for(e in i)i[e]=Ft(i[e],t.name,null);return this}for(;++a<u;)if((e=(t=o[a]).type)&&(e=Rt(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Dt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var qt="http://www.w3.org/1999/xhtml",Ut={svg:"http://www.w3.org/2000/svg",xhtml:qt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function It(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new nn(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function rn(t,n,e,r,i,o,a){var u,c,f,s=new Map,l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=a.call(c,c.__data__,u,n)+"",s.has(f)?i[u]=c:s.set(f,c));for(u=0;u<h;++u)f=a.call(t,o[u],u,o)+"",(c=s.get(f))?(r[u]=c,c.__data__=o[u],s.delete(f)):e[u]=new nn(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s.get(d[u])===c&&(i[u]=c)}function on(t){return t.__data__}function an(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function un(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function Sn(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function En(t){return function(){An(this,t)}}function Nn(t){return function(){Sn(this,t)}}function kn(t,n){return function(){(n.apply(this,arguments)?An:Sn)(this,t)}}function Cn(){this.textContent=""}function Pn(t){return function(){this.textContent=t}}function zn(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function $n(){this.innerHTML=""}function Dn(t){return function(){this.innerHTML=t}}function Rn(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Fn(){this.nextSibling&&this.parentNode.appendChild(this)}function qn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Un(){return null}function In(){var t=this.parentNode;t&&t.removeChild(this)}function On(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Bn(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Yn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function Ln(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function jn(t,n,e){var r=pn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function Hn(t,n){return function(){return jn(this,t,n)}}function Xn(t,n){return function(){return jn(this,t,n.apply(this,arguments))}}nn.prototype={constructor:nn,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},Tn.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Vn(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Ht(t.apply(this,arguments))}}(t):Gt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Vn(r,i)},selectChild:function(t){return this.select(null==t?Kt:function(t){return function(){return Zt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},selectChildren:function(t){return this.selectAll(null==t?Jt:function(t){return function(){return Qt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Vn(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,on);var e=n?rn:en,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=an(t.call(s,s&&s.__data__,f,r)),p=d.length,g=u[f]=new Array(p),y=a[f]=new Array(p);e(s,l,g,y,c[f]=new Array(h),d,n);for(var v,_,b=0,m=0;b<p;++b)if(v=g[b]){for(b>=m&&(m=b+1);!(_=y[m])&&++m<p;);v._next=_||null}}return(a=new Vn(a,r))._enter=u,a._exit=c,a},enter:function(){return new Vn(this._enter||this._groups.map(tn),this._parents)},exit:function(){return new Vn(this._exit||this._groups.map(tn),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var f,s=e[c],l=r[c],h=s.length,d=u[c]=new Array(h),p=0;p<h;++p)(f=s[p]||l[p])&&(d[p]=f);for(;c<i;++c)u[c]=e[c];return new Vn(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Vn(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=It(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?fn:cn:"function"==typeof n?e.local?dn:hn:e.local?ln:sn)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?kn:n?En:Nn)(e,n))},text:function(t){return arguments.length?this.each(null==t?Cn:("function"==typeof t?zn:Pn)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?$n:("function"==typeof t?Rn:Dn)(t)):this.node().innerHTML},raise:function(){return this.each(Fn)},lower:function(){return this.each(qn)},append:function(t){var n="function"==typeof t?t:Yt(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:Yt(t),r=null==n?Un:"function"==typeof n?n:jt(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(In)},clone:function(t){return this.select(t?Bn:On)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?Xn:Hn)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};var Kn=0;function Qn(){return new Jn}function Jn(){this._="@"+(++Kn).toString(36)}function te(t){let n;for(;n=t.sourceEvent;)t=n;return t}function ne(t,n){if(t=te(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Jn.prototype=Qn.prototype={constructor:Jn,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};const ee={passive:!1},re={capture:!0,passive:!1};function ie(t){t.stopImmediatePropagation()}function oe(t){t.preventDefault(),t.stopImmediatePropagation()}function ae(t){var n=t.document.documentElement,e=Zn(t).on("dragstart.drag",oe,re);"onselectstart"in n?e.on("selectstart.drag",oe,re):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function ue(t,n){var e=t.document.documentElement,r=Zn(t).on("dragstart.drag",null);n&&(r.on("click.drag",oe,re),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var ce=t=>()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={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};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Ke;return new pr(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function dr(t,n,e,r){return 1===arguments.length?hr(t):new pr(t,n,e,null==r?1:r)}function pr(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function gr(t){if(isNaN(t.h))return new ur(t.l,0,0,t.opacity);var n=t.h*Ze;return new ur(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}pe(ur,ar,ge(ye,{brighter(t){return new ur(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ur(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new qe(sr(3.1338561*(n=Qe*fr(n))-1.6168667*(t=Je*fr(t))-.4906146*(e=tr*fr(e))),sr(-.9787684*n+1.9161415*t+.033454*e),sr(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),pe(pr,dr,ge(ye,{brighter(t){return new pr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new pr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return gr(this).rgb()}}));var yr=-.14861,vr=1.78277,_r=-.29227,br=-.90649,mr=1.97294,xr=mr*br,wr=mr*vr,Mr=vr*_r-br*yr;function Tr(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ar)return new Ar(t.h,t.s,t.l,t.opacity);t instanceof qe||(t=Re(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Mr*r+xr*n-wr*e)/(Mr+xr-wr),o=r-i,a=(mr*(e-i)-_r*o)/br,u=Math.sqrt(a*a+o*o)/(mr*i*(1-i)),c=u?Math.atan2(a,o)*Ke-120:NaN;return new Ar(c<0?c+360:c,u,i,t.opacity)}(t):new Ar(t,n,e,null==r?1:r)}function Ar(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sr(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function Er(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return Sr((e-r/n)*n,a,i,o,u)}}function Nr(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return Sr((e-r/n)*n,i,o,a,u)}}pe(Ar,Tr,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ar(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Ar(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ze,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new qe(255*(n+e*(yr*r+vr*i)),255*(n+e*(_r*r+br*i)),255*(n+e*(mr*r)),this.opacity)}}));var kr=t=>()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=Fe(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var Fr=Rr(Er),qr=Rr(Nr);function Ur(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Ir(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Or(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Gr(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function Br(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Yr(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Lr(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Gr(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var jr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hr=new RegExp(jr.source,"g");function Xr(t,n){var e,r,i,o=jr.lastIndex=Hr.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=jr.exec(t))&&(r=Hr.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Gr(t,n){var e,r=typeof n;return null==n||"boolean"===r?kr(n):("number"===r?Yr:"string"===r?(e=ze(n))?(n=e,Dr):Xr:n instanceof ze?Dr:n instanceof Date?Br:Ir(n)?Ur:Array.isArray(n)?Or:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Lr:Yr)(t,n)}function Vr(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Wr,Zr=180/Math.PI,Kr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qr(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Zr,skewX:Math.atan(c)*Zr,scaleX:a,scaleY:u}}function Jr(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:Yr(t,i)},{i:c-2,x:Yr(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var ti=Jr((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Kr:Qr(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),ni=Jr((function(t){return null==t?Kr:(Wr||(Wr=document.createElementNS("http://www.w3.org/2000/svg","g")),Wr.setAttribute("transform",t),(t=Wr.transform.baseVal.consolidate())?Qr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Kr)}),", ",")",")");function ei(t){return((t=Math.exp(t))+1/t)/2}var ri=function t(n,e,r){function i(t,i){var o,a,u=t[0],c=t[1],f=t[2],s=i[0],l=i[1],h=i[2],d=s-u,p=l-c,g=d*d+p*p;if(g<1e-12)a=Math.log(h/f)/n,o=function(t){return[u+t*d,c+t*p,f*Math.exp(n*t*a)]};else{var y=Math.sqrt(g),v=(h*h-f*f+r*g)/(2*f*e*y),_=(h*h-f*f-r*g)/(2*h*e*y),b=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(_*_+1)-_);a=(m-b)/n,o=function(t){var r=t*a,i=ei(b),o=f/(e*y)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+b)-function(t){return((t=Math.exp(t))-1/t)/2}(b));return[u+o*d,c+o*p,f*i/ei(n*r+b)]}}return o.duration=1e3*a*n/Math.SQRT2,o}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function ii(t){return function(n,e){var r=t((n=He(n)).h,(e=He(e)).h),i=$r(n.s,e.s),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var oi=ii(Pr),ai=ii($r);function ui(t){return function(n,e){var r=t((n=dr(n)).h,(e=dr(e)).h),i=$r(n.c,e.c),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var ci=ui(Pr),fi=ui($r);function si(t){return function n(e){function r(n,r){var i=t((n=Tr(n)).h,(r=Tr(r)).h),o=$r(n.s,r.s),a=$r(n.l,r.l),u=$r(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var li=si(Pr),hi=si($r);function di(t,n){void 0===n&&(n=t,t=Gr);for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}}var pi,gi,yi=0,vi=0,_i=0,bi=1e3,mi=0,xi=0,wi=0,Mi="object"==typeof performance&&performance.now?performance:Date,Ti="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ai(){return xi||(Ti(Si),xi=Mi.now()+wi)}function Si(){xi=0}function Ei(){this._call=this._time=this._next=null}function Ni(t,n,e){var r=new Ei;return r.restart(t,n,e),r}function ki(){Ai(),++yi;for(var t,n=pi;n;)(t=xi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Yi,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if($i((function(){e.state===Ii&&(e.state=Oi,e.timer.restart(u,e.delay,e.time),u(o))})),e.state=Ui,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Ui){for(e.state=Ii,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function u(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(c),e.state=Bi,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Bi&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){for(var r in e.state=Yi,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=Ni(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Di,tween:Ri,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Fi})}function ji(t,n){var e=Xi(t,n);if(e.state>Fi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state<Bi,e.state=Yi,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Vi(t,n){var e,r;return function(){var i=Hi(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}function Wi(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Hi(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}}function Zi(t,n,e){var r=t._id;return t.each((function(){var t=Hi(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Xi(t,r).value[n]}}function Ki(t,n){var e;return("number"==typeof n?Yr:n instanceof ze?Dr:(e=ze(n))?(n=e,Dr):Xr)(t,n)}function Qi(t){return function(){this.removeAttribute(t)}}function Ji(t){return function(){this.removeAttributeNS(t.space,t.local)}}function to(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}}function no(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}function eo(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}}function ro(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}function io(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}function oo(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i}function ao(t,n){return function(){ji(this,t).delay=+n.apply(this,arguments)}}function uo(t,n){return n=+n,function(){ji(this,t).delay=n}}function co(t,n){return function(){Hi(this,t).duration=+n.apply(this,arguments)}}function fo(t,n){return n=+n,function(){Hi(this,t).duration=n}}var so=Wn.prototype.constructor;function lo(t){return function(){this.style.removeProperty(t)}}var ho=0;function po(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function go(t){return Wn().transition(t)}function yo(){return++ho}var vo=Wn.prototype;po.prototype=go.prototype={constructor:po,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=jt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Li(l[h],n,e,h,l,Xi(u,e)));return new po(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Gt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Xi(c,e),g=0,y=d.length;g<y;++g)(h=d[g])&&Li(h,n,e,g,d,p);o.push(d),a.push(c)}return new po(o,a,n,e)},selectChild:vo.selectChild,selectChildren:vo.selectChildren,filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new po(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new po(a,this._parents,this._name,this._id)},selection:function(){return new so(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=yo(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Xi(a,n);Li(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new po(r,this._parents,t,e)},call:vo.call,nodes:vo.nodes,node:vo.node,size:vo.size,empty:vo.empty,each:vo.each,on:function(t,n){var e=this._id;return arguments.length<2?Xi(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Xi(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Vi:Wi)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ao:uo)(n,t)):Xi(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?co:fo)(n,t)):Xi(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Hi(this,t).ease=n}}(n,t)):Xi(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Hi(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each((function(){var e=Hi(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:vo[Symbol.iterator]};function _o(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function bo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mo=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),xo=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),wo=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Mo=Math.PI,To=Mo/2;function Ao(t){return(1-Math.cos(Mo*t))/2}function So(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Eo(t){return((t*=2)<=1?So(1-t):2-So(t-1))/2}function No(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var ko=4/11,Co=6/11,Po=8/11,zo=3/4,$o=9/11,Do=10/11,Ro=15/16,Fo=21/22,qo=63/64,Uo=1/ko/ko;function Io(t){return(t=+t)<ko?Uo*t*t:t<Po?Uo*(t-=Co)*t+zo:t<Do?Uo*(t-=$o)*t+Ro:Uo*(t-=Fo)*t+qo}var Oo=1.70158,Bo=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(Oo),Yo=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(Oo),Lo=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(Oo),jo=2*Math.PI,Ho=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return n*So(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Xo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return 1-n*So(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Go=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return((t=2*t-1)<0?n*So(-t)*Math.sin((r-t)/e):2-n*So(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Vo={time:null,delay:0,duration:250,ease:bo};function Wo(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}Wn.prototype.interrupt=function(t){return this.each((function(){Gi(this,t)}))},Wn.prototype.transition=function(t){var n,e;t instanceof po?(n=t._id,t=t._name):(n=yo(),(e=Vo).time=Ai(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Li(a,t,n,f,u,e||Wo(a,n));return new po(r,this._parents,t,n)};var Zo=[null];var Ko=t=>()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}h<a&&(x*=-1,r=i,i=l,l=r,r=a,a=h,h=r,b in da&&F.attr("cursor",ha[b=da[b]])),p<c&&(w*=-1,r=u,u=d,d=r,r=c,c=p,p=r,b in pa&&F.attr("cursor",ha[b=pa[b]])),M.selection&&(A=M.selection),y&&(a=A[0][0],h=A[1][0]),v&&(c=A[0][1],p=A[1][1]),A[0][0]===a&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(M.selection=[[a,c],[h,p]],f.call(_),D.brush(t,m.name))}function O(t){if(function(t){t.stopImmediatePropagation()}(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout((function(){n=null}),500)}else ue(t.view,g),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",ha.overlay),M.selection&&(A=M.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(M.selection=null,f.call(_)),D.end(t,m.name)}}function d(t){s(this,arguments).moved(t)}function p(t){s(this,arguments).ended(t)}function g(){var n=this.__brush||{selection:null};return n.extent=ca(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e,r){n.tween?n.on("start.brush",(function(t){s(this,arguments).beforestart().start(t)})).on("interrupt.brush end.brush",(function(t){s(this,arguments).end(t)})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Gr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,i=arguments,o=n.__brush,a=t.input("function"==typeof e?e.apply(n,i):e,o.extent),u=s(n,i).beforestart();Gi(n),o.selection=null===a?null:a,f.call(n),u.start(r).brush(r).end(r)}))},c.clear=function(t,n){c.move(t,null,n)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Zn(this.that).datum();a.call(n,this.that,new Qo(n,{sourceEvent:e,target:c,selection:t.output(this.state.selection),mode:r,dispatch:a}),i)}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:Ko(ca(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ko(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Ko(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var Ma=Math.abs,Ta=Math.cos,Aa=Math.sin,Sa=Math.PI,Ea=Sa/2,Na=2*Sa,ka=Math.max,Ca=1e-12;function Pa(t,n){return Array.from({length:n-t},((n,e)=>t+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;n<c;++n){let e=0;for(let r=0;r<c;++r)e+=a[n*c+r]+t*a[r*c+n];d+=f[n]=e}u=(d=ka(0,Na-e*c)/d)?e:Na/c;{let n=0;r&&s.sort(((t,n)=>r(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e<r?(t=l[e*c+r]||(l[e*c+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}):(t=l[r*c+e]||(l[r*c+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}n+=u}}return(l=Object.values(l)).groups=h,o?l.sort(o):l}return a.padAngle=function(t){return arguments.length?(e=ka(0,t),a):e},a.sortGroups=function(t){return arguments.length?(r=t,a):r},a.sortSubgroups=function(t){return arguments.length?(i=t,a):i},a.sortChords=function(t){return arguments.length?(null==t?o=null:(n=t,o=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,a):o&&o._;var n},a}const $a=Math.PI,Da=2*$a,Ra=1e-6,Fa=Da-Ra;function qa(t){this._+=t[0];for(let n=1,e=t.length;n<e;++n)this._+=arguments[n]+t[n]}let Ua=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?qa:function(t){let n=Math.floor(t);if(!(n>=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;n<r;++n)this._+=Math.round(arguments[n]*e)/e+t[n]}}(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,e,r){this._append`Q${+t},${+n},${this._x1=+e},${this._y1=+r}`}bezierCurveTo(t,n,e,r,i,o){this._append`C${+t},${+n},${+e},${+r},${this._x1=+i},${this._y1=+o}`}arcTo(t,n,e,r,i){if(t=+t,n=+n,e=+e,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(null===this._x1)this._append`M${this._x1=t},${this._y1=n}`;else if(l>Ra)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=tu(t,n[r]))return e;return 0}function tu(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(nu(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]<e[0];)n.shift()}return n.map((n=>o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o<t-1;)c=f,f=au(e[o+1],r),ru[c|f<<1].forEach(p);ru[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=au(e[u*t+t],r),s=au(e[u*t],r),ru[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=au(e[u*t+t+o+1],r),l=s,s=au(e[u*t+o+1],r),ru[c|f<<1|s<<2|l<<3].forEach(p);ru[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,ru[s<<2].forEach(p);for(;++o<t-1;)l=s,s=au(e[u*t+o+1],r),ru[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}ru[s<<3].forEach(p)}(e,o,(function(t){r(t,e,o),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e<r;++e)if(-1!==Ja((n=u[e])[0],t))return void n.push(t)})),{type:"MultiPolygon",value:i,coordinates:u}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach((function(e){var o=e[0],a=e[1],u=0|o,c=0|a,f=uu(r[c*t+u]);o>0&&o<t&&u===o&&(e[0]=cu(o,uu(r[c*t+u-1]),f,i)),a>0&&a<n&&c===a&&(e[1]=cu(a,uu(r[(c-1)*t+u]),f,i))}))}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),o=Math.floor(e[1]);if(!(r>=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(l<t&&h<e)for(s>f==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);l<t&&h<e;)s>f==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l<t;)a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l],o=a,0!==u&&(i[d++]=u);for(;h<e;)a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h],o=a,0!==u&&(i[d++]=u);return 0===o&&0!==d||(i[d++]=o),d}function gu(t){return new Float64Array(t)}const yu=22204460492503146e-32,vu=11093356479670487e-47,_u=gu(4),bu=gu(8),mu=gu(12),xu=gu(16),wu=gu(4);function Mu(t,n,e,r,i,o){const a=(n-o)*(e-i),u=(t-i)*(r-o),c=a-u,f=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,_u),C=yu*a;if(k>=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new Su(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<a&&(a=e),r<u&&(u=r),e>c&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p,g=1/0;for(let n=0;n<o;n++){const e=Eu(s,l,t[2*n],t[2*n+1]);e<g&&(h=n,g=e)}const y=t[2*h],v=t[2*h+1];g=1/0;for(let n=0;n<o;n++){if(n===h)continue;const e=Eu(y,v,t[2*n],t[2*n+1]);e<g&&e>0&&(d=n,g=e)}let _=t[2*d],b=t[2*d+1],m=1/0;for(let n=0;n<o;n++){if(n===h||n===d)continue;const e=ku(y,v,_,b,t[2*n],t[2*n+1]);e<m&&(p=n,m=e)}let x=t[2*p],w=t[2*p+1];if(m===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];Cu(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t];this._dists[i]>r&&(n[e++]=i,r=this._dists[i])}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(y,v,_,b,x,w)<0){const t=d,n=_,e=b;d=p,_=x,b=w,p=t,x=n,w=e}const M=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(y,v,_,b,x,w);this._cx=M.x,this._cy=M.y;for(let n=0;n<o;n++)this._dists[n]=Eu(t[2*n],t[2*n+1],M.x,M.y);Cu(this._ids,this._dists,0,o-1),this._hullStart=h;let T=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(y,v)]=h,i[this._hashKey(_,b)]=d,i[this._hashKey(x,w)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let o,a,u=0;u<this._ids.length;u++){const c=this._ids[u],f=t[2*c],s=t[2*c+1];if(u>0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t<this._hashSize&&(l=i[(n+t)%this._hashSize],-1===l||l===e[l]);t++);l=n[l];let g,y=l;for(;g=e[y],Mu(f,s,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,T++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,T--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,T--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(T);for(let t=0,n=this._hullStart;t<T;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i<Au.length&&(Au[i++]=u)}else{if(0===i)break;t=Au[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const a=this.trianglesLen;return this._triangles[a]=t,this._triangles[a+1]=n,this._triangles[a+2]=e,this._link(a,r),this._link(a+1,i),this._link(a+2,o),this.trianglesLen+=3,a}}function Eu(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function Nu(t,n,e,r,i,o,a,u){const c=t-a,f=n-u,s=e-a,l=r-u,h=i-a,d=o-u,p=s*s+l*l,g=h*h+d*d;return c*(l*g-p*d)-f*(s*g-p*h)+(c*c+f*f)*(s*d-l*h)<0}function ku(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=(f*s-u*l)*h,p=(a*l-c*s)*h;return d*d+p*p}function Cu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let a=i-1;for(;a>=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]<u);do{o--}while(n[t[o]]>u);if(o<i)break;Pu(t,i,o)}t[e+1]=t[o],t[o]=a,r-i+1>=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c<s;c+=3,f+=2){const s=2*e[c],l=2*e[c+1],h=2*e[c+2],d=t[s],p=t[s+1],g=t[l],y=t[l+1],v=t[h],_=t[h+1],b=g-d,m=y-p,x=v-d,w=_-p,M=2*(b*w-m*x);if(Math.abs(M)<1e-9){if(void 0===i){i=o=0;for(const e of n)i+=t[2*e],o+=t[2*e+1];i/=n.length,o/=n.length}const e=1e9*Math.sign((i-d)*w-(o-p)*x);r=(d+v)/2-e*w,u=(p+_)/2+e*x}else{const t=1/M,n=b*b+m*m,e=x*x+w*w;r=d+(w*n-m*e)*t,u=p+(b*e-x*n)*t}a[f]=r,a[f+1]=u}let u,c,f,s=n[n.length-1],l=4*s,h=t[2*s],d=t[2*s+1];r.fill(0);for(let e=0;e<n.length;++e)s=n[e],u=l,c=h,f=d,l=4*s,h=t[2*s],d=t[2*s+1],r[u+2]=r[l]=f-d,r[u+3]=r[l+1]=h-c}render(t){const n=null==t?t=new Ru:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:a}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),a=2*Math.floor(r/3),u=o[i],c=o[i+1],f=o[a],s=o[a+1];this._renderSegment(u,c,f,s,t)}let u,c=i[i.length-1];for(let n=0;n<i.length;++n){u=c,c=i[n];const e=2*Math.floor(r[c]/3),f=o[e],s=o[e+1],l=4*u,h=this._project(f,s,a[l+2],a[l+3]);h&&this._renderSegment(f,s,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new Ru:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new Ru:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new Fu;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const a=this._regioncode(t,n),u=this._regioncode(e,r);0===a&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,a,u))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,a=t.length;o<a;o+=2)if(n[r]===t[o]&&n[r+1]===t[o+1]&&n[(r+2)%i]===t[(o+a-2)%a]&&n[(r+3)%i]===t[(o+a-1)%a]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const a=[];let u=o;do{const e=Math.floor(u/3);if(a.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==o&&-1!==u);return a}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,o,a,u=null,c=n[e-2],f=n[e-1],s=this._regioncode(c,f),l=0;for(let h=0;h<e;h+=2)if(r=c,i=f,c=n[h],f=n[h+1],o=s,s=this._regioncode(c,f),0===o&&0===s)a=l,l=0,u?u.push(c,f):u=[c,f];else{let n,e,h,d,p;if(0===o){if(null===(n=this._clipSegment(r,i,c,f,o,s)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(c,f,r,i,s,o)))continue;[d,p,e,h]=n,a=l,l=this._edgecode(e,h),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(e,h):u=[e,h]}a=l,l=this._edgecode(d,p),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(d,p):u=[d,p]}if(u)a=l,l=this._edgecode(u[0],u[1]),a&&l&&this._edge(t,a,l,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,o){const a=i<o;for(a&&([t,n,e,r,i,o]=[e,r,t,n,o,i]);;){if(0===i&&0===o)return a?[e,r,t,n]:[t,n,e,r];if(i&o)return null;let u,c,f=i||o;8&f?(u=t+(e-t)*(this.ymax-n)/(r-n),c=this.ymax):4&f?(u=t+(e-t)*(this.ymin-n)/(r-n),c=this.ymin):2&f?(c=n+(r-n)*(this.xmax-t)/(e-t),u=this.xmax):(c=n+(r-n)*(this.xmin-t)/(e-t),u=this.xmin),i?(t=u,n=c,i=this._regioncode(t,n)):(e=u,r=c,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let a,u=Array.from(n);if((a=this._project(u[0],u[1],e,r))&&u.unshift(a[0],a[1]),(a=this._project(u[u.length-2],u[u.length-1],i,o))&&u.push(a[0],a[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}return i}_project(t,n,e,r){let i,o,a,u=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(a=this.ymin,o=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(a=this.ymax,o=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(o=this.xmax,a=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(o=this.xmin,a=n+(u=i)*r)}return[o,a]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const Uu=2*Math.PI,Iu=Math.pow;function Ou(t){return t[0]}function Bu(t){return t[1]}function Yu(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class Lu{static from(t,n=Ou,e=Bu,r){return new Lu("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let a=0;a<i;++a){const i=t[a];o[2*a]=n.call(r,i,a,t),o[2*a+1]=e.call(r,i,a,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Su(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=Yu(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Su(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),a=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)a[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n<a.length-1&&(yield a[n+1]))}const u=n[t];if(-1===u)return;let c=u,f=-1;do{if(yield f=o[c],c=c%3==2?c-2:c+1,o[c]!==t)return;if(c=i[c],-1===c){const n=e[(r[t]+1)%e.length];return void(n!==f&&(yield n))}}while(c!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l<s&&(s=l,f=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=a[h],-1===h){if(h=i[(o[t]+1)%i.length],h!==r&&Iu(n-c[2*h],2)+Iu(e-c[2*h+1],2)<s)return h;break}}while(h!==l);return f}render(t){const n=null==t?t=new Ru:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,o=r.length;n<o;++n){const o=r[n];if(o<n)continue;const a=2*i[n],u=2*i[o];t.moveTo(e[a],e[a+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new Ru:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],o=r[e+1];t.moveTo(i+n,o),t.arc(i,o,n,0,Uu)}return e&&e.value()}renderHull(t){const n=null==t?t=new Ru:void 0,{hull:e,points:r}=this,i=2*e[0],o=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<o;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new Fu;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new Ru:void 0,{points:r,triangles:i}=this,o=2*i[t*=3],a=2*i[t+1],u=2*i[t+2];return n.moveTo(r[o],r[o+1]),n.lineTo(r[a],r[a+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new Fu;return this.renderTriangle(t,n),n.value()}}var ju={},Hu={},Xu=34,Gu=10,Vu=13;function Wu(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function Zu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function Ku(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Qu(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+Ku(-n,6):n>9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++<o&&t.charCodeAt(a)!==Xu||t.charCodeAt(++a)===Xu;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Gu)f=!0;else if(r===Vu)f=!0,t.charCodeAt(a)===Gu&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Gu&&--o,t.charCodeAt(o-1)===Vu&&--o;(r=s())!==Hu;){for(var l=[];r!==ju&&r!==Hu;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map((function(n){return e.map((function(t){return a(n[t])})).join(t)}))}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Qu(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,(function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Wu(t);return function(r,i){return n(e(r),i,t)}}(t,n):Wu(t)}));return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Zu(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Zu(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var tc=Ju(","),nc=tc.parse,ec=tc.parseRows,rc=tc.format,ic=tc.formatBody,oc=tc.formatRows,ac=tc.formatRow,uc=tc.formatValue,cc=Ju("\t"),fc=cc.parse,sc=cc.parseRows,lc=cc.format,hc=cc.formatBody,dc=cc.formatRows,pc=cc.formatRow,gc=cc.formatValue;const yc=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function vc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function _c(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function bc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function mc(t,n){return fetch(t,n).then(bc)}function xc(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),mc(n,e).then((function(n){return t(n,r)}))}}var wc=xc(nc),Mc=xc(fc);function Tc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Ac(t){return(n,e)=>mc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Rc(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)kc(this,a[e],u[e],t[e]);return this},Fc.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e||1,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Fc.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},Fc.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Fc.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Cc(g,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(g.length){var y=(i+a)/2,v=(o+u)/2;p.push(new Cc(g[3],y,v,a,u),new Cc(g[2],i,v,y,u),new Cc(g[1],y,o,a,v),new Cc(g[0],i,o,y,v)),(f=(n>=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=g.data}}return r},Fc.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Fc.root=function(){return this._root},Fc.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},Fc.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Cc(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new Cc(e,f,s,o,a)),(e=c[2])&&u.push(new Cc(e,r,s,f,a)),(e=c[1])&&u.push(new Cc(e,f,i,o,s)),(e=c[0])&&u.push(new Cc(e,r,i,f,s))}return this},Fc.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Cc(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new Cc(o,a,u,s,l)),(o=i[1])&&e.push(new Cc(o,s,u,c,l)),(o=i[2])&&e.push(new Cc(o,a,l,s,f)),(o=i[3])&&e.push(new Cc(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Fc.x=function(t){return arguments.length?(this._x=t,this):this._x},Fc.y=function(t){return arguments.length?(this._y=t,this):this._y};const Lc=1664525,jc=1013904223,Hc=4294967296;function Xc(t){return t.x}function Gc(t){return t.y}var Vc=Math.PI*(3-Math.sqrt(5));function Wc(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[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")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A<p?new Array(p-A+1).join(n):"";switch(g&&d&&(t=r(S+t,S.length?p-M.length:1/0),S=""),e){case"<":t=h+t+M+S;break;case"=":t=h+S+t+M;break;case"^":t=S.slice(0,A=S.length>>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Uf(e[r].geometry,n)}},Of={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Bf(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Bf(e[r],n,0)},Polygon:function(t,n){Yf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Yf(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Uf(e[r],n)}};function Bf(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Yf(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Bf(t[e],n,1);n.polygonEnd()}function Lf(t,n){t&&If.hasOwnProperty(t.type)?If[t.type](t,n):Uf(t,n)}var jf,Hf,Xf,Gf,Vf,Wf,Zf,Kf,Qf,Jf,ts,ns,es,rs,is,os,as=new T,us=new T,cs={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){as=new T,cs.lineStart=fs,cs.lineEnd=ss},polygonEnd:function(){var t=+as;us.add(t<0?_f+t:t),this.lineStart=this.lineEnd=this.point=qf},sphere:function(){us.add(_f)}};function fs(){cs.point=ls}function ss(){hs(jf,Hf)}function ls(t,n){cs.point=hs,jf=t,Hf=n,Xf=t*=mf,Gf=Tf(n=(n*=mf)/2+vf),Vf=Cf(n)}function hs(t,n){var e=(t*=mf)-Xf,r=e>=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),n<Zf&&(Zf=n),n>Qf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*Jf<c&&c<u*t)?(o=i[1]*bf)>Qf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*bf)<Zf&&(Zf=o):(n<Zf&&(Zf=n),n>Qf&&(Qf=n)),f?t<Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(t<Wf&&(Wf=t),t>Kf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);n<Zf&&(Zf=n),n>Qf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Gs={sphere:qf,point:Vs,lineStart:Zs,lineEnd:Js,polygonStart:function(){Gs.lineStart=tl,Gs.lineEnd=nl},polygonEnd:function(){Gs.lineStart=Zs,Gs.lineEnd=Js}};function Vs(t,n){t*=mf;var e=Tf(n*=mf);Ws(e*Tf(t),e*Cf(t),Cf(n))}function Ws(t,n,e){++ms,ws+=(t-ws)/ms,Ms+=(n-Ms)/ms,Ts+=(e-Ts)/ms}function Zs(){Gs.point=Ks}function Ks(t,n){t*=mf;var e=Tf(n*=mf);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Gs.point=Qs,Ws($s,Ds,Rs)}function Qs(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Mf(zf((a=Ds*o-Rs*i)*a+(a=Rs*r-$s*o)*a+(a=$s*i-Ds*r)*a),$s*r+Ds*i+Rs*o);xs+=a,As+=a*($s+($s=r)),Ss+=a*(Ds+(Ds=i)),Es+=a*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function Js(){Gs.point=Vs}function tl(){Gs.point=el}function nl(){rl(Ps,zs),Gs.point=Vs}function el(t,n){Ps=t,zs=n,t*=mf,n*=mf,Gs.point=rl;var e=Tf(n);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Ws($s,Ds,Rs)}function rl(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Ds*o-Rs*i,u=Rs*r-$s*o,c=$s*i-Ds*r,f=Ef(a,u,c),s=Rf(f),l=f&&-s/f;Ns.add(l*a),ks.add(l*u),Cs.add(l*c),xs+=s,As+=s*($s+($s=r)),Ss+=s*(Ds+(Ds=i)),Es+=s*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function il(t){return function(){return t}}function ol(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function al(t,n){return xf(t)>gf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?i<o:i>o)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s<o;s-=c)f=ds([a,-u*Tf(s),-u*Cf(s)]),t.point(f[0],f[1])}}function dl(t,n){(n=ps(n))[0]-=t,bs(n);var e=Df(-n[1]);return((-n[2]<0?-e:e)+_f-df)%_f}function pl(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:qf,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])<df&&xf(t[1]-n[1])<df}function yl(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function vl(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(gl(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a[0]+=2*df}u.push(e=new yl(r,t,null,!0)),c.push(e.o=new yl(r,null,e,!1)),u.push(e=new yl(a,t,null,!1)),c.push(e.o=new yl(a,null,e,!0))}})),u.length){for(c.sort(n),_l(u),_l(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function bl(t){return xf(t[0])<=gf?t[0]:Pf(t[0])*((xf(t[0])+gf)%_f-gf)}function ml(t,n){var e=bl(n),r=n[1],i=Cf(r),o=[Cf(e),-Tf(e),0],a=0,u=0,c=new T;1===i?r=yf+df:-1===i&&(r=-yf-df);for(var f=0,s=t.length;f<s;++f)if(h=(l=t[f]).length)for(var l,h,d=l[h-1],p=bl(d),g=d[1]/2+vf,y=Cf(g),v=Tf(g),_=0;_<h;++_,p=m,y=w,v=M,d=b){var b=l[_],m=bl(b),x=b[1]/2+vf,w=Cf(x),M=Tf(x),A=m-p,S=A>=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a<df&&c<-pf)^1&u}function xl(t,n,e,r){return function(i){var o,a,u,c=n(i),f=pl(),s=n(f),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,a=ft(a);var t=ml(o,r);a.length?(l||(i.polygonStart(),l=!0),vl(a,Ml,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function g(){h.point=p,c.lineStart()}function y(){h.point=d,c.lineEnd()}function v(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)<df?(t.point(e,r=(r+a)/2>0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)<df&&(e-=i*df),xf(o-u)<df&&(o-=u*df),r=function(t,n,e,r){var i,o,a=Cf(t-e);return xf(a)>df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]<n[0]?gf:-gf;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-gf,-yf]);function Al(t){var n=Tf(t),e=6*mf,r=n>0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var T=x-m,A=xf(T-gf)<df;if(!A&&M<w&&(b=w,w=M,M=b),A||T<df?A?w+M>0^_[1]<(xf(_[0]-m)<df?w:M):w<=_[1]&&_[1]<=M:T>gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)<df?i>0?0:3:xf(r[0]-e)<df?i>0?2:1:xf(r[1]-n)<df?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,h=(l=u[c])[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(Ll(e[r].geometry,n))return!0;return!1}},Yl={Sphere:function(){return!0},Point:function(t,n){return jl(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(jl(e[r],n))return!0;return!1},LineString:function(t,n){return Hl(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Hl(e[r],n))return!0;return!1},Polygon:function(t,n){return Xl(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Xl(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(Ll(e[r],n))return!0;return!1}};function Ll(t,n){return!(!t||!Yl.hasOwnProperty(t.type))&&Yl[t.type](t,n)}function jl(t,n){return 0===Ol(t,n)}function Hl(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ol(t[o],n)))return!0;if(o>0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<pf*i)return!0;e=r}return!1}function Xl(t,n){return!!ml(t.map(Gl),Vl(n))}function Gl(t){return(t=t.map(Vl)).pop(),t}function Vl(t){return[t[0]*mf,t[1]*mf]}function Wl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function Zl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function Kl(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:_()}}function _(){return lt(Af(r/p)*p,e,p).map(s).concat(lt(Af(u/g)*g,a,g).map(l)).concat(lt(Af(n/h)*h,t,h).filter((function(t){return xf(t%p)>df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){t<lh&&(lh=t);t>dh&&(dh=t);n<hh&&(hh=n);n>ph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e<r;++e)this._+=Math.round(arguments[e]*t)/t+n[e]}}return Jh}(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(t,n){switch(this._point){case 0:this._append`M${t},${n}`,this._point=1;break;case 1:this._append`L${t},${n}`;break;default:if(this._append`M${t},${n}`,this._radius!==td||this._append!==Jh){const t=this._radius,n=this._;this._="",this._append`m0,${t}a${t},${t} 0 1,1 0,${-2*t}a${t},${t} 0 1,1 0,${2*t}z`,td=t,Jh=this._append,nd=this._,this._=n}this._+=nd}}result(){const t=this._;return this._="",t.length?t:null}}function rd(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function id(t){return function(n){var e=new od;for(var r in t)e[r]=t[r];return e.stream=n,e}}function od(){}function ad(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lf(e,t.stream(mh)),n(mh.result()),null!=r&&t.clipExtent(r),t}function ud(t,n,e){return ad(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function cd(t,n,e){return ud(t,[[0,0],n],e)}function fd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function sd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}od.prototype={constructor:od,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var ld=16,hd=Tf(30*mf);function dd(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,g,y){var v=f-r,_=s-i,b=v*v+_*_;if(b>4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)<df||xf(o-l)<df?(o+l)/2:Mf(x,m),S=t(A,T),E=S[0],N=S[1],k=E-r,C=N-i,P=_*k-v*C;(P*P/b>n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p<hd)&&(e(r,i,o,a,u,c,E,N,A,m/=M,x/=M,w,g,y),y.point(E,N),e(E,N,A,m,x,w,f,s,l,h,d,p,g,y))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,g={point:y,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),g.lineStart=m},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){s=NaN,g.point=_,n.lineStart()}function _(r,i){var o=ps([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],ld,n),n.point(s,l)}function b(){g.point=y,n.lineEnd()}function m(){v(),g.point=x,g.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,g.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,ld,n),g.lineEnd=b,b()}return g}}(t,n):function(t){return id({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var pd=id({point:function(t,n){this.stream.point(t*mf,n*mf)}});function gd(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o}(t,n,e,r,i);var a=Tf(o),u=Cf(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function yd(t){return vd((function(){return t}))()}function vd(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,g=0,y=0,v=0,_=0,b=0,m=1,x=1,w=null,M=Tl,T=null,A=eh,S=.5;function E(t){return c(t[0]*mf,t[1]*mf)}function N(t){return(t=c.invert(t[0],t[1]))&&[t[0]*bf,t[1]*bf]}function k(){var t=gd(l,0,0,m,x,b).apply(null,n(p,g)),r=gd(l,h-t[0],d-t[1],m,x,b);return e=ul(y,v,_),u=ol(n,r),c=ol(e,u),a=dd(u,S),C()}function C(){return f=s=null,E}return E.stream=function(t){return f&&s===t?f:f=pd(function(t){return id({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(A(s=t)))))},E.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},E.postclip=function(t){return arguments.length?(A=t,T=r=i=o=null,C()):A},E.clipAngle=function(t){return arguments.length?(M=+t?Al(w=t*mf):(w=null,Tl),C()):w*bf},E.clipExtent=function(t){return arguments.length?(A=null==t?(T=r=i=o=null,eh):zl(T=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==T?null:[[T,r],[i,o]]},E.scale=function(t){return arguments.length?(l=+t,k()):l},E.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],k()):[h,d]},E.center=function(t){return arguments.length?(p=t[0]%360*mf,g=t[1]%360*mf,k()):[p*bf,g*bf]},E.rotate=function(t){return arguments.length?(y=t[0]%360*mf,v=t[1]%360*mf,_=t.length>2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)<df)return function(t){var n=Tf(t);function e(t,e){return[t*n,Cf(e)/n]}return e.invert=function(t,e){return[t/n,Rf(e*n)]},e}(t);var i=1+e*(2*r-e),o=zf(i)/r;function a(t,n){var e=zf(i-2*r*Cf(n))/r;return[e*Cf(t*=r),o-e*Tf(t)]}return a.invert=function(t,n){var e=o-n,a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,Rf((i-(t*t+e*e)*r*r)/(2*r))]},a}function md(){return _d(bd).scale(155.424).center([0,33.6442])}function xd(){return md().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function wd(t){return function(n,e){var r=Tf(n),i=Tf(e),o=t(r*i);return o===1/0?[2,0]:[o*i*Cf(n),o*Cf(e)]}}function Md(t){return function(n,e){var r=zf(n*n+e*e),i=t(r),o=Cf(i),a=Tf(i);return[Mf(n*o,r*a),Rf(r&&e*o/r)]}}var Td=wd((function(t){return zf(2/(1+t))}));Td.invert=Md((function(t){return 2*Rf(t/2)}));var Ad=wd((function(t){return(t=Df(t))&&t/Cf(t)}));function Sd(t,n){return[t,Nf($f((yf+n)/2))]}function Ed(t){var n,e,r,i=yd(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=gf*a(),u=i(ll(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Sd?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Nd(t){return $f((yf+t)/2)}function kd(t,n){var e=Tf(t),r=t===n?Cf(t):Nf(e/Tf(n))/Nf(Nd(n)/Nd(t)),i=e*kf(Nd(t),r)/r;if(!r)return Sd;function o(t,n){i>0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)<df)return Cd;function o(t,n){var e=i-n,o=r*t;return[e*Cf(o),i-e*Tf(o)]}return o.invert=function(t,n){var e=i-n,o=Mf(t,xf(e))*Pf(e);return e*r<0&&(o-=gf*Pf(t)*Pf(e)),[o/r,i-Pf(r)*zf(t*t+e*e)]},o}Ad.invert=Md((function(t){return t})),Sd.invert=function(t,n){return[t,2*wf(Sf(n))-yf]},Cd.invert=Cd;var zd=1.340264,$d=-.081106,Dd=893e-6,Rd=.003796,Fd=zf(3)/2;function qd(t,n){var e=Rf(Fd*Cf(n)),r=e*e,i=r*r*r;return[t*Tf(e)/(Fd*(zd+3*$d*r+i*(7*Dd+9*Rd*r))),e*(zd+$d*r+i*(Dd+Rd*r))]}function Ud(t,n){var e=Tf(n),r=Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Id(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Od(t,n){return[Tf(n)*Cf(t),Cf(n)]}function Bd(t,n){var e=Tf(n),r=1+Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Yd(t,n){return[Nf($f((yf+n)/2)),-t]}function Ld(t,n){return t.parent===n.parent?1:2}function jd(t,n){return t+n.x}function Hd(t,n){return Math.max(t,n.y)}function Xd(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)<pf));++a);return[Fd*t*(zd+3*$d*i+o*(7*Dd+9*Rd*i))/Tf(r),Rf(Cf(r)/Fd)]},Ud.invert=Md(wf),Id.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(xf(e)>df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r]);for(;o=u.pop();)t.call(n,o,++c,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],a=-1;i=o.pop();)if(t.call(n,i,++a,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};const rp=1664525,ip=1013904223,op=4294967296;function ap(){let t=1;return()=>(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i<o;)e=t[i],r&&sp(r,e)?++i:(r=hp(a=cp(a,e)),i=0);return r}function cp(t,n){var e,r;if(lp(n,t))return[n];for(e=0;e<t.length;++e)if(fp(n,t[e])&&lp(dp(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(fp(dp(t[e],t[r]),n)&&fp(dp(t[e],n),t[r])&&fp(dp(t[r],n),t[e])&&lp(pp(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function fp(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function sp(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e<n.length;++e)if(!sp(t,n[e]))return!1;return!0}function hp(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return dp(t[0],t[1]);case 3:return pp(t[0],t[1],t[2])}}function dp(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function pp(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,g=i-s,y=c-o,v=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*g,w=(p*m-g*b)/(2*x)-r,M=(g*y-p*v)/x,T=(d*b-h*m)/(2*x)-i,A=(h*v-d*y)/x,S=M*M+A*A-1,E=2*(o+w*M+T*A),N=w*w+T*T-o*o,k=-(Math.abs(S)>1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c<o;++c){gp(e._,r._,i=t[c]),i=new _p(i),f=r.next,s=e.previous,l=r._.r,h=e._.r;do{if(l<=h){if(yp(f._,i._)){r=f,e.next=r,r.previous=e,--c;continue t}l+=f._.r,f=f.next}else{if(yp(s._,i._)){(e=s).next=r,r.previous=e,--c;continue t}h+=s._.r,s=s.previous}}while(f!==s.next);for(i.previous=e,i.next=r,e.next=r.previous=r=i,a=vp(e);(i=i.next)!==r;)(u=vp(i))<a&&(e=i,a=u);r=e.next}for(e=[r._],i=r;(i=i.next)!==r;)e.push(i._);for(i=up(e,n),c=0;c<o;++c)(e=t[c]).x-=i.x,e.y-=i.y;return i.r}function mp(t){return Math.sqrt(t.value)}function xp(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function wp(t,n,e){return function(r){if(i=r.children){var i,o,a,u=i.length,c=t(r)*n||0;if(c)for(o=0;o<u;++o)i[o].r+=c;if(a=bp(i,e),c)for(o=0;o<u;++o)i[o].r-=c;r.r=a+c}}}function Mp(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Tp(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Ap(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var Sp={depth:-1},Ep={},Np={};function kp(t){return t.id}function Cp(t){return t.parentId}function Pp(t){let n=t.length;if(n<2)return"";for(;--n>1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(0==(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Up.prototype=Object.create(Qd.prototype);var Op=(1+Math.sqrt(5))/2;function Bp(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,g,y,v=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,y=s*s*(g=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/y,y/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Ap(a,e,r,i,w?r+=f*s/w:o):Ip(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return v}var Yp=function t(n){function e(t,e,r,i,o){Bp(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Ap(u,e,r,i,d?r+=(o-r)*u.value/d:o):Ip(u,e,r,d?e+=(i-e)*u.value/d:i,o),d-=u.value}else t._squarify=a=Bp(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=a<o,h=l?a:o,d=l?o:a;t=(d-h)/Math.max(1,e-c+2*f),u&&(t=Math.floor(t)),h+=(d-h-t*(e-c))*s,n=t*(1-c),u&&(h=Math.round(h),n=Math.round(n));var p=lt(e).map((function(n){return h+t*n}));return i(l?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),l()):r()},e.range=function(t){return arguments.length?([o,a]=t,o=+o,a=+a,l()):[o,a]},e.rangeRound=function(t){return[o,a]=t,o=+o,a=+a,u=!0,l()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,l()):u},e.padding=function(t){return arguments.length?(c=Math.min(1,f=+t),l()):c},e.paddingInner=function(t){return arguments.length?(c=Math.min(1,t),l()):c},e.paddingOuter=function(t){return arguments.length?(f=+t,l()):f},e.align=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},e.copy=function(){return yg(r(),[o,a]).round(u).paddingInner(c).paddingOuter(f).align(s)},hg.apply(l(),arguments)}function vg(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return vg(n())},t}function _g(t){return+t}var bg=[0,1];function mg(t){return t}function xg(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function wg(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=xg(i,r),o=e(a,o)):(r=xg(r,i),o=e(o,a)),function(t){return o(r(t))}}function Mg(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<r;)i[a]=xg(t[a],t[a+1]),o[a]=e(n[a],n[a+1]);return function(n){var e=s(t,n,1,r)-1;return o[e](i[e](n))}}function Tg(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ag(){var t,n,e,r,i,o,a=bg,u=bg,c=Gr,f=mg;function s(){var t=Math.min(a.length,u.length);return f!==mg&&(f=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f<c&&(i=c,c=f,f=i,i=a,a=u,u=i);s-- >0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Cg(t){return Math.log(t)}function Pg(t){return Math.exp(t)}function zg(t){return-Math.log(-t)}function $g(t){return-Math.exp(-t)}function Dg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Rg(t){return(n,e)=>-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u<e;c&&([e,u]=[u,e]);let f,s,l=i(e),h=i(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-l<d){if(l=Math.floor(l),h=Math.ceil(h),e>0){for(;l<=h;++l)for(f=1;f<a;++f)if(s=l<0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}2*p.length<d&&(p=G(e,u,d))}else p=G(l,h,Math.min(h-l,d)).map(o);return c?p.reverse():p},e.tickFormat=(n,r)=>{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*a<a-.5&&(n*=a),n<=u?r(t):""}},e.nice=()=>r(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=(t,e)=>(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u<e&&e<r);return a},i.filter=e=>Vg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]<u[a][2]/o?a-1:a];return c.every(f)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:c(t,n,e),o=i?i.range(t,+n+1):[];return r?o.reverse():o},c]}const[ov,av]=iv(ev,Qy,Fy,_y,hy,cy),[uv,cv]=iv(tv,Zy,xy,py,sy,ay);function fv(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function sv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function lv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function hv(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=mv(i),s=xv(i),l=mv(o),h=xv(o),d=mv(a),p=xv(a),g=mv(u),y=xv(u),v=mv(c),_=xv(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Yv,e:Yv,f:Gv,g:i_,G:a_,H:Lv,I:jv,j:Hv,L:Xv,m:Vv,M:Wv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=pv[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=lv(1900,void 0,1);if(T(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(n&&!("Z"in o)&&(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function bv(t){return t.replace(vv,"\\$&")}function mv(t){return new RegExp("^(?:"+t.map(bv).join("|")+")","i")}function xv(t){return new Map(t.map(((t,n)=>[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,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"]});var z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)<t?d:u(t)<t?p:a(t)<t?g:o(t)<t?y:r(t)<t?i(t)<t?v:_:e(t)<t?b:m)(t)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(Array.from(t,U_)):h().map(q_)},s.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},s.tickFormat=function(t,n){return null==n?x:f(n)},s.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(kg(e,t)):s},s.copy=function(){return Tg(s,I_(t,n,e,r,i,o,a,u,c,f))},s}function O_(){var t,n,e,r,i,o=0,a=1,u=mg,c=!1;function f(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}function s(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),f):[u(0),u(1)]}}return f.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),n=r(a=+a),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.range=s(Gr),f.rangeRound=s(Vr),f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function B_(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Y_(){var t=Lg(O_());return t.copy=function(){return B_(t,Y_()).exponent(t.exponent())},dg.apply(t,arguments)}function L_(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=1,l=mg,h=!1;function d(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(s*t<s*n?r:i),l(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,l=di(t,[e,r,i]),d):[l(0),l(.5),l(1)]}}return d.domain=function(a){return arguments.length?([u,c,f]=a,t=o(u=+u),n=o(c=+c),e=o(f=+f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d):[u,c,f]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(l=t,d):l},d.range=p(Gr),d.rangeRound=p(Vr),d.unknown=function(t){return arguments.length?(a=t,d):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d}}function j_(){var t=Lg(L_());return t.copy=function(){return B_(t,j_()).exponent(t.exponent())},dg.apply(t,arguments)}function H_(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var X_=H_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),G_=H_("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),V_=H_("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),W_=H_("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Z_=H_("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),K_=H_("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Q_=H_("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),J_=H_("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),tb=H_("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),nb=H_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),eb=t=>Fr(t[t.length-1]),rb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ib=eb(rb),ob=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ab=eb(ob),ub=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),cb=eb(ub),fb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),sb=eb(fb),lb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),hb=eb(lb),db=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),pb=eb(db),gb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),yb=eb(gb),vb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),_b=eb(vb),bb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),mb=eb(bb),xb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),wb=eb(xb),Mb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Tb=eb(Mb),Ab=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Sb=eb(Ab),Eb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),Nb=eb(Eb),kb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Cb=eb(kb),Pb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),zb=eb(Pb),$b=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Db=eb($b),Rb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),Fb=eb(Rb),qb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ub=eb(qb),Ib=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Ob=eb(Ib),Bb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Yb=eb(Bb),Lb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),jb=eb(Lb),Hb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Xb=eb(Hb),Gb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Vb=eb(Gb),Wb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Zb=eb(Wb),Kb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Qb=eb(Kb),Jb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),tm=eb(Jb),nm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),em=eb(nm);var rm=hi(Tr(300,.5,0),Tr(-240,.5,1)),im=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),om=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),am=Tr();var um=Fe(),cm=Math.PI/3,fm=2*Math.PI/3;function sm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var lm=sm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hm=sm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),dm=sm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),pm=sm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function gm(t){return function(){return t}}const ym=Math.abs,vm=Math.atan2,_m=Math.cos,bm=Math.max,mm=Math.min,xm=Math.sin,wm=Math.sqrt,Mm=1e-12,Tm=Math.PI,Am=Tm/2,Sm=2*Tm;function Em(t){return t>=1?Am:t<=-1?-Am:Math.asin(t)}function Nm(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function km(t){return t.innerRadius}function Cm(t){return t.outerRadius}function Pm(t){return t.startAngle}function zm(t){return t.endAngle}function $m(t){return t&&t.padAngle}function Dm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/wm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*wm(bm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Rm=Array.prototype.slice;function Fm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function qm(t){this._context=t}function Um(t){return new qm(t)}function Im(t){return t[0]}function Om(t){return t[1]}function Bm(t,n){var e=gm(!0),r=null,i=Um,o=null,a=Nm(u);function u(u){var c,f,s,l=(u=Fm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c<l&&e(f=u[c],c,u))===h&&((h=!h)?o.lineStart():o.lineEnd()),h&&o.point(+t(f,c,u),+n(f,c,u));if(s)return o=null,s+""||null}return t="function"==typeof t?t:void 0===t?Im:gm(t),n="function"==typeof n?n:void 0===n?Om:gm(n),u.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:gm(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),u):r},u}function Ym(t,n,e){var r=null,i=gm(!0),o=null,a=Um,u=null,c=Nm(f);function f(f){var s,l,h,d,p,g=(f=Fm(f)).length,y=!1,v=new Array(g),_=new Array(g);for(null==o&&(u=a(p=c())),s=0;s<=g;++s){if(!(s<g&&i(d=f[s],s,f))===y)if(y=!y)l=s,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),h=s-1;h>=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Bm().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Im:gm(+t),n="function"==typeof n?n:gm(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Om:gm(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:gm(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:gm(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function Lm(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function jm(t){return t}qm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Hm=Gm(Um);function Xm(t){this._curve=t}function Gm(t){function n(n){return new Xm(t(n))}return n._curve=t,n}function Vm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Wm(){return Vm(Bm().curve(Hm))}function Zm(){var t=Ym().curve(Hm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vm(e())},delete t.lineX0,t.lineEndAngle=function(){return Vm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Km(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Xm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class Qm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class Jm{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Km(this._x0,this._y0),r=Km(this._x0,this._y0=(this._y0+n)/2),i=Km(t,this._y0),o=Km(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function tx(t){return new Qm(t,!0)}function nx(t){return new Qm(t,!1)}function ex(t){return new Jm(t)}function rx(t){return t.source}function ix(t){return t.target}function ox(t){let n=rx,e=ix,r=Im,i=Om,o=null,a=null,u=Nm(c);function c(){let c;const f=Rm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ax=wm(3);var ux={draw(t,n){const e=.59436*wm(n+mm(n/28,.75)),r=e/2,i=r*ax;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},cx={draw(t,n){const e=wm(n/Tm);t.moveTo(e,0),t.arc(0,0,e,0,Sm)}},fx={draw(t,n){const e=wm(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const sx=wm(1/3),lx=2*sx;var hx={draw(t,n){const e=wm(n/lx),r=e*sx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},dx={draw(t,n){const e=.62625*wm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},px={draw(t,n){const e=.87559*wm(n-mm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},gx={draw(t,n){const e=wm(n),r=-e/2;t.rect(r,r,e,e)}},yx={draw(t,n){const e=.4431*wm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const vx=xm(Tm/10)/xm(7*Tm/10),_x=xm(Sm/10)*vx,bx=-_m(Sm/10)*vx;var mx={draw(t,n){const e=wm(.8908130915292852*n),r=_x*e,i=bx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Sm*n/5,a=_m(o),u=xm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const xx=wm(3);var wx={draw(t,n){const e=-wm(n/(3*xx));t.moveTo(0,2*e),t.lineTo(-xx*e,-e),t.lineTo(xx*e,-e),t.closePath()}};const Mx=wm(3);var Tx={draw(t,n){const e=.6824*wm(n),r=e/2,i=e*Mx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Ax=-.5,Sx=wm(3)/2,Ex=1/wm(12),Nx=3*(Ex/2+1);var kx={draw(t,n){const e=wm(n/Nx),r=e/2,i=e*Ex,o=r,a=e*Ex+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Ax*r-Sx*i,Sx*r+Ax*i),t.lineTo(Ax*o-Sx*a,Sx*o+Ax*a),t.lineTo(Ax*u-Sx*c,Sx*u+Ax*c),t.lineTo(Ax*r+Sx*i,Ax*i-Sx*r),t.lineTo(Ax*o+Sx*a,Ax*a-Sx*o),t.lineTo(Ax*u+Sx*c,Ax*c-Sx*u),t.closePath()}},Cx={draw(t,n){const e=.6189*wm(n-mm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const Px=[cx,fx,hx,gx,mx,wx,kx],zx=[cx,px,Cx,Tx,ux,yx,dx];function $x(){}function Dx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Rx(t){this._context=t}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t,n){this._basis=new Rx(t),this._beta=n}Rx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Dx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Fx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ix=function t(n){function e(t){return 1===n?new Rx(t):new Ux(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Ox(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Bx(t,n){this._context=t,this._k=(1-n)/6}Bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ox(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Yx=function t(n){function e(t){return new Bx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Lx(t,n){this._context=t,this._k=(1-n)/6}Lx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var jx=function t(n){function e(t){return new Lx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Hx(t,n){this._context=t,this._k=(1-n)/6}Hx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Xx=function t(n){function e(t){return new Hx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Gx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Mm){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Vx(t,n){this._context=t,this._alpha=n}Vx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Wx=function t(n){function e(t){return n?new Vx(t,n):new Bx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Zx(t,n){this._context=t,this._alpha=n}Zx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Kx=function t(n){function e(t){return n?new Zx(t,n):new Lx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Qx(t,n){this._context=t,this._alpha=n}Qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Jx=function t(n){function e(t){return n?new Qx(t,n):new Hx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function tw(t){this._context=t}function nw(t){return t<0?-1:1}function ew(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(nw(o)+nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function rw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function iw(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function ow(t){this._context=t}function aw(t){this._context=new uw(t)}function uw(t){this._context=t}function cw(t){this._context=t}function fw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function sw(t,n){this._context=t,this._t=n}function lw(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function hw(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function dw(t,n){return t[n]}function pw(t){const n=[];return n.key=t,n}function gw(t){var n=t.map(yw);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function yw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function vw(t){var n=t.map(_w);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function _w(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}tw.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},ow.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:iw(this,this._t0,rw(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,iw(this,rw(this,e=ew(this,t,n)),e);break;default:iw(this,this._t0,e=ew(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(aw.prototype=Object.create(ow.prototype)).point=function(t,n){ow.prototype.point.call(this,n,t)},uw.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},cw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=fw(t),i=fw(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},sw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var bw=t=>()=>t;function mw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function xw(t,n,e){this.k=t,this.x=n,this.y=e}xw.prototype={constructor:xw,scale:function(t){return 1===t?this:new xw(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new xw(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ww=new xw(1,0,0);function Mw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return ww;return t.__zoom}function Tw(t){t.stopImmediatePropagation()}function Aw(t){t.preventDefault(),t.stopImmediatePropagation()}function Sw(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Ew(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Nw(){return this.__zoom||ww}function kw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Cw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pw(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Mw.prototype=xw.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=xw,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=km,n=Cm,e=gm(0),r=null,i=Pm,o=zm,a=$m,u=null,c=Nm(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Am,p=o.apply(this,arguments)-Am,g=ym(p-d),y=p>d;if(u||(u=f=c()),h<l&&(s=h,h=l,l=s),h>Mm)if(g>Sm-Mm)u.moveTo(h*_m(d),h*xm(d)),u.arc(0,0,h,d,p,!y),l>Mm&&(u.moveTo(l*_m(p),l*xm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Mm&&(r?+r.apply(this,arguments):wm(l*l+h*h)),E=mm(ym(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Mm){var C=Em(S/l*xm(A)),P=Em(S/h*xm(A));(M-=2*C)>Mm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Mm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*_m(b),$=h*xm(b),D=l*_m(w),R=l*xm(w);if(E>Mm){var F,q=h*_m(m),U=h*xm(m),I=l*_m(x),O=l*xm(x);if(g<Tm)if(F=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<Mm))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(z,$,I,O,q,U,D,R)){var B=z-F[0],Y=$-F[1],L=q-F[0],j=U-F[1],H=1/xm(function(t){return t>1?0:t<-1?Tm:Math.acos(t)}((B*L+Y*j)/(wm(B*B+Y*Y)*wm(L*L+j*j)))/2),X=wm(F[0]*F[0]+F[1]*F[1]);N=mm(E,(l-X)/(H-1)),k=mm(E,(h-X)/(H+1))}else N=k=0}T>Mm?k>Mm?(v=Dm(I,O,z,$,h,k,y),_=Dm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),k<E?u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,h,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),!y),u.arc(_.cx,_.cy,k,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):(u.moveTo(z,$),u.arc(0,0,h,b,m,!y)):u.moveTo(z,$),l>Mm&&M>Mm?N>Mm?(v=Dm(D,R,q,U,l,-N,y),_=Dm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N<E?u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,l,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),y),u.arc(_.cx,_.cy,N,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):u.arc(0,0,l,w,x,y):u.lineTo(D,R)}else u.moveTo(0,0);if(u.closePath(),f)return u=null,f+""||null}return f.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Tm/2;return[_m(r)*e,xm(r)*e]},f.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:gm(+t),f):e},f.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),f):i},f.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),f):o},f.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:gm(+t),f):a},f.context=function(t){return arguments.length?(u=null==t?null:t,f):u},f},t.area=Ym,t.areaRadial=Zm,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;yc&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return Pt(Mt,t)},t.axisLeft=function(t){return Pt(Tt,t)},t.axisRight=function(t){return Pt(wt,t)},t.axisTop=function(t){return Pt(xt,t)},t.bin=Q,t.bisect=s,t.bisectCenter=f,t.bisectLeft=c,t.bisectRight=u,t.bisector=r,t.blob=function(t,n){return fetch(t,n).then(vc)},t.blur=function(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d<c&&p>=0&&p<f){var y=Math.floor(d),v=Math.floor(p),_=d-y-.5,b=p-v-.5;i[y+v*c]+=(1-_)*(1-b)*g,i[y+1+v*c]+=_*(1-b)*g,i[y+1+(v+1)*c]+=_*b*g,i[y+(v+1)*c]+=(1-_)*b*g}}return l({data:i,width:c,height:f},o*s),i}function d(t){var n=h(t),e=s(n),r=Math.pow(2,2*a);return Array.isArray(e)||(e=G(Number.MIN_VALUE,J(n)/r,e)),iu().size([c,f]).thresholds(e.map((t=>t*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Rx(t)},t.curveBasisClosed=function(t){return new Fx(t)},t.curveBasisOpen=function(t){return new qx(t)},t.curveBumpX=tx,t.curveBumpY=nx,t.curveBundle=Ix,t.curveCardinal=Yx,t.curveCardinalClosed=jx,t.curveCardinalOpen=Xx,t.curveCatmullRom=Wx,t.curveCatmullRomClosed=Kx,t.curveCatmullRomOpen=Jx,t.curveLinear=Um,t.curveLinearClosed=function(t){return new tw(t)},t.curveMonotoneX=function(t){return new ow(t)},t.curveMonotoneY=function(t){return new aw(t)},t.curveNatural=function(t){return new cw(t)},t.curveStep=function(t){return new sw(t,.5)},t.curveStepAfter=function(t){return new sw(t,1)},t.curveStepBefore=function(t){return new sw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e<c;++e)(r=b(this,u,t,n,a[e].identifier,a[e]))&&(ie(t),r("start",t,a[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=c[r[n].identifier])&&(oe(t),e("drag",t,r[n]))}function _(t){var n,e,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),n=0;n<o;++n)(e=c[i[n].identifier])&&(ie(t),e("end",t,i[n]))}function b(t,n,e,r,i,o){var u,l,d,p=f.copy(),g=ne(o||e,n);if(null!=(d=a.call(t,new fe("beforestart",{sourceEvent:e,target:h,identifier:i,active:s,x:g[0],y:g[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-g[0]||0,l=d.y-g[1]||0,function e(o,a,f){var y,v=g;switch(o){case"start":c[i]=e,y=s++;break;case"end":delete c[i],--s;case"drag":g=ne(f||a,n),y=s}p.call(o,t,new fe(o,{sourceEvent:a,subject:d,target:h,identifier:i,active:y,x:g[0]+u,y:g[1]+l,dx:g[0]-v[0],dy:g[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:ce(!!t),h):i},h.container=function(t){return arguments.length?(o="function"==typeof t?t:ce(t),h):o},h.subject=function(t){return arguments.length?(a="function"==typeof t?t:ce(t),h):a},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:ce(!!t),h):u},h.on=function(){var t=f.on.apply(f,arguments);return t===f?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},t.dragDisable=ae,t.dragEnable=ue,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Ju(t);return mc(n,e).then((function(t){return i.parse(t,r)}))},t.dsvFormat=Ju,t.easeBack=Lo,t.easeBackIn=Bo,t.easeBackInOut=Lo,t.easeBackOut=Yo,t.easeBounce=Io,t.easeBounceIn=function(t){return 1-Io(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-Io(1-t):Io(t-1)+1)/2},t.easeBounceOut=Io,t.easeCircle=No,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=No,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=bo,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=bo,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=Xo,t.easeElasticIn=Ho,t.easeElasticInOut=Go,t.easeElasticOut=Xo,t.easeExp=Eo,t.easeExpIn=function(t){return So(1-+t)},t.easeExpInOut=Eo,t.easeExpOut=function(t){return 1-So(t)},t.easeLinear=t=>+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=e[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-n)*r,i=0;i<a;++i)(o=e[i]).x-=u,o.y-=c}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},t.forceCollide=function(t){var n,e,r,i=1,o=1;function a(){for(var t,a,c,f,s,l,h,d=n.length,p=0;p<o;++p)for(a=$c(n,Ic,Oc).visitAfter(u),t=0;t<d;++t)c=n[t],l=e[c.index],h=l*l,f=c.x+c.vx,s=c.y+c.vy,a.visit(g);function g(t,n,e,o,a){var u=t.data,d=t.r,p=l+d;if(!u)return n>f+p||o<f-p||e>s+p||a<s-p;if(u.index>c.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;v<p*p&&(0===g&&(v+=(g=Uc(r))*g),0===y&&(v+=(y=Uc(r))*y),v=(p-(v=Math.sqrt(v)))/v*i,c.vx+=(g*=v)*(p=(d*=d)/(h+d)),c.vy+=(y*=v)*p,u.vx-=g*(p=1-p),u.vy-=y*p)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=qc(null==t?1:+t)),a.initialize=function(t,e){n=t,r=e,c()},a.iterations=function(t){return arguments.length?(o=+t,a):o},a.strength=function(t){return arguments.length?(i=+t,a):i},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),a):t},a},t.forceLink=function(t){var n,e,r,i,o,a,u=Bc,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},f=qc(30),s=1;function l(r){for(var i=0,u=t.length;i<s;++i)for(var c,f,l,h,d,p,g,y=0;y<u;++y)f=(c=t[y]).source,h=(l=c.target).x+l.vx-f.x-f.vx||Uc(a),d=l.y+l.vy-f.y-f.vy||Uc(a),h*=p=((p=Math.sqrt(h*h+d*d))-e[y])/p*r*n[y],d*=p,l.vx-=h*(g=o[y]),l.vy-=d*g,f.vx+=h*(g=1-g),f.vy+=d*g}function h(){if(r){var a,c,f=r.length,s=t.length,l=new Map(r.map(((t,n)=>[u(t,n,r),t])));for(a=0,i=new Array(f);a<s;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=Yc(l,c.source)),"object"!=typeof c.target&&(c.target=Yc(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(s);a<s;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),d(),e=new Array(s),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+f(t[n],n,t)}return null==t&&(t=[]),l.initialize=function(t,n){r=t,a=n,h()},l.links=function(n){return arguments.length?(t=n,h(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:qc(+t),d(),l):c},l.distance=function(t){return arguments.length?(f="function"==typeof t?t:qc(+t),p(),l):f},l},t.forceManyBody=function(){var t,n,e,r,i,o=qc(-30),a=1,u=1/0,c=.81;function f(e){var i,o=t.length,a=$c(t,Xc,Gc).visitAfter(l);for(r=e,i=0;i<o;++i)n=t[i],a.visit(h)}function s(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+o(e,n,t)}}function l(t){var n,e,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,o+=e*n.y);t.x=r/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,o,f,s){if(!t.value)return!0;var l=t.x-n.x,h=t.y-n.y,d=s-o,p=l*l+h*h;if(d*d/c<p)return p<u&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)),n.vx+=l*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)));do{t.data!==n&&(d=i[t.data.index]*r/p,n.vx+=l*d,n.vy+=h*d)}while(t=t.next)}}return f.initialize=function(n,r){t=n,e=r,s()},f.strength=function(t){return arguments.length?(o="function"==typeof t?t:qc(+t),s(),f):o},f.distanceMin=function(t){return arguments.length?(a=t*t,f):Math.sqrt(a)},f.distanceMax=function(t){return arguments.length?(u=t*t,f):Math.sqrt(u)},f.theta=function(t){return arguments.length?(c=t*t,f):Math.sqrt(c)},f},t.forceRadial=function(t,n,e){var r,i,o,a=qc(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=qc(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:qc(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=Ni(l),f=$t("tick","end"),s=function(){let t=1;return()=>(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function h(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.forEach((function(t){t(e)})),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),o=e*Vc;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,s),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return c.restart(l),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},randomSource:function(t){return arguments.length?(s=t,u.forEach(p),n):s},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.formatDefaultLocale=ff,t.formatLocale=cf,t.formatSpecifier=Jc,t.fsum=function(t,n){const e=new T;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},t.geoAlbers=xd,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=xd(),u=md().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=md().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+df,s+.12*n+df],[o-.214*n-df,s+.234*n-df]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+df,s+.166*n+df],[o-.115*n-df,s+.234*n-df]]).stream(f),l()},s.fitExtent=function(t,n){return ud(s,t,n)},s.fitSize=function(t,n){return cd(s,t,n)},s.fitWidth=function(t,n){return fd(s,t,n)},s.fitHeight=function(t,n){return sd(s,t,n)},s.scale(1070)},t.geoArea=function(t){return us=new T,Lf(t,cs),2*us},t.geoAzimuthalEqualArea=function(){return yd(Td).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Td,t.geoAzimuthalEquidistant=function(){return yd(Ad).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Ad,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Qf=Kf=-(Wf=Zf=1/0),is=[],Lf(t,Fs),e=is.length){for(is.sort(Hs),n=1,o=[r=is[0]];n<e;++n)Xs(r,(i=is[n])[0])||Xs(r,i[1])?(js(r[0],i[1])>js(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i<pf&&(n=As,e=Ss,r=Es,xs<df&&(n=ws,e=Ms,r=Ts),(i=Ef(n,e,r))<pf)?[NaN,NaN]:[Mf(e,n)*bf,Rf(r/i)*bf]},t.geoCircle=function(){var t,n,e=il([0,0]),r=il(90),i=il(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=bf,e[1]*=bf}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*mf,c=i.apply(this,arguments)*mf;return t=[],n=ul(-a[0]*mf,-a[1]*mf,0).invert,hl(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:il([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:il(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:il(+t),a):i},a},t.geoClipAntimeridian=Tl,t.geoClipCircle=Al,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=zl(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=zl,t.geoConicConformal=function(){return _d(kd).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=kd,t.geoConicEqualArea=md,t.geoConicEqualAreaRaw=bd,t.geoConicEquidistant=function(){return _d(Pd).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Pd,t.geoContains=function(t,n){return(t&&Bl.hasOwnProperty(t.type)?Bl[t.type]:Ll)(t,n)},t.geoDistance=Ol,t.geoEqualEarth=function(){return yd(qd).scale(177.158)},t.geoEqualEarthRaw=qd,t.geoEquirectangular=function(){return yd(Cd).scale(152.63)},t.geoEquirectangularRaw=Cd,t.geoGnomonic=function(){return yd(Ud).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=Ud,t.geoGraticule=Kl,t.geoGraticule10=function(){return Kl()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,g=1,y=id({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=eh;function _(){return p=u*s,g=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*g;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/g]},b.stream=function(t){return o&&a===t?o:o=y(v(a=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,_()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,eh):zl(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=Cf(h=e%360*mf),t=Tf(h),_()):h*bf},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return ud(b,t,n)},b.fitSize=function(t,n){return cd(b,t,n)},b.fitWidth=function(t,n){return fd(b,t,n)},b.fitHeight=function(t,n){return sd(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*mf,r=t[1]*mf,i=n[0]*mf,o=n[1]*mf,a=Tf(r),u=Cf(r),c=Tf(o),f=Cf(o),s=a*Tf(e),l=a*Cf(e),h=c*Tf(i),d=c*Cf(i),p=2*Rf(zf(Ff(o-r)+a*c*Ff(i-e))),g=Cf(p),y=p?function(t){var n=Cf(t*=p)/g,e=Cf(p-t)/g,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Mf(i,r)*bf,Mf(o,zf(r*r+i*i))*bf]}:function(){return[e*bf,r*bf]};return y.distance=p,y},t.geoLength=ql,t.geoMercator=function(){return Ed(Sd).scale(961/_f)},t.geoMercatorRaw=Sd,t.geoNaturalEarth1=function(){return yd(Id).scale(175.295)},t.geoNaturalEarth1Raw=Id,t.geoOrthographic=function(){return yd(Od).scale(249.5).clipAngle(90+df)},t.geoOrthographicRaw=Od,t.geoPath=function(t,n){let e,r,i=3,o=4.5;function a(t){return t&&("function"==typeof o&&r.pointRadius(+o.apply(this,arguments)),Lf(t,e(r))),r.result()}return a.area=function(t){return Lf(t,e(sh)),sh.result()},a.measure=function(t){return Lf(t,e(Kh)),Kh.result()},a.bounds=function(t){return Lf(t,e(mh)),mh.result()},a.centroid=function(t){return Lf(t,e(Oh)),Oh.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,eh):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new ed(i)):new Bh(n=t),"function"!=typeof o&&r.pointRadius(o),a):n},a.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(r.pointRadius(+t),+t),a):o},a.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Xb,t.interpolateBrBG=ib,t.interpolateBuGn=wb,t.interpolateBuPu=Tb,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=om,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=rm,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Sb,t.interpolateGreens=Vb,t.interpolateGreys=Zb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=dm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=hm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=Nb,t.interpolateOranges=em,t.interpolatePRGn=ab,t.interpolatePiYG=cb,t.interpolatePlasma=pm,t.interpolatePuBu=zb,t.interpolatePuBuGn=Cb,t.interpolatePuOr=sb,t.interpolatePuRd=Db,t.interpolatePurples=Qb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return am.h=360*t-100,am.s=1.5-1.5*n,am.l=.8-.9*n,am+""},t.interpolateRdBu=hb,t.interpolateRdGy=pb,t.interpolateRdPu=Fb,t.interpolateRdYlBu=yb,t.interpolateRdYlGn=_b,t.interpolateReds=tm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,um.r=255*(n=Math.sin(t))*n,um.g=255*(n=Math.sin(t+cm))*n,um.b=255*(n=Math.sin(t+fm))*n,um+""},t.interpolateSpectral=mb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=lm,t.interpolateWarm=im,t.interpolateYlGn=Ob,t.interpolateYlGnBu=Ub,t.interpolateYlOrBr=Yb,t.interpolateYlOrRd=jb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Bm,t.lineRadial=Wm,t.link=ox,t.linkHorizontal=function(){return ox(tx)},t.linkRadial=function(){const t=ox(ex);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ox(nx)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Tp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=Ia,t.pathRound=function(t=3){return new Ua(+t)},t.permute=q,t.pie=function(){var t=jm,n=Lm,e=null,r=gm(0),i=gm(Sm),o=gm(0);function a(a){var u,c,f,s,l,h=(a=Fm(a)).length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),v=Math.min(Sm,Math.max(-Sm,i.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/h,o.apply(this,arguments)),b=_*(v<0?-1:1);for(u=0;u<h;++u)(l=g[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u<h;++u,y=s)c=p[u],s=y+((l=g[c])>0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),a):o},a},t.piecewise=di,t.pointRadial=Km,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(Hp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=Xp(r),a=Xp(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.hypot(n,e);return c},t.precisionFixed=sf,t.precisionPrefix=lf,t.precisionRound=hf,t.quadtree=$c,t.quantile=at,t.quantileIndex=ct,t.quantileSorted=ut,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.quickselect=rt,t.radialArea=Zm,t.radialLine=Wm,t.randomBates=Jp,t.randomBernoulli=eg,t.randomBeta=og,t.randomBinomial=ag,t.randomCauchy=cg,t.randomExponential=tg,t.randomGamma=ig,t.randomGeometric=rg,t.randomInt=Wp,t.randomIrwinHall=Qp,t.randomLcg=function(t=Math.random()){let n=0|(0<=t&&t<1?t/lg:Math.abs(t));return()=>(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=ut(r,t/n);return u}function u(t){return null==t||isNaN(t=+t)?e:i[s(o,t)]}return u.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},u.domain=function(t){if(!arguments.length)return r.slice();r=[];for(let n of t)null==n||isNaN(n=+n)||r.push(n);return r.sort(n),a()},u.range=function(t){return arguments.length?(i=Array.from(t),a()):i.slice()},u.unknown=function(t){return arguments.length?(e=t,u):e},u.quantiles=function(){return o.slice()},u.copy=function(){return t().domain(r).range(i).unknown(e)},hg.apply(u,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[s(o,t,0,i)]:n}function c(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,c()):[e,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,c()):a.slice()},u.invertExtent=function(t){var n=a.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Hb,t.schemeBrBG=rb,t.schemeBuGn=xb,t.schemeBuPu=Mb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Ab,t.schemeGreens=Gb,t.schemeGreys=Wb,t.schemeOrRd=Eb,t.schemeOranges=nm,t.schemePRGn=ob,t.schemePaired=W_,t.schemePastel1=Z_,t.schemePastel2=K_,t.schemePiYG=ub,t.schemePuBu=Pb,t.schemePuBuGn=kb,t.schemePuOr=fb,t.schemePuRd=$b,t.schemePurples=Kb,t.schemeRdBu=lb,t.schemeRdGy=db,t.schemeRdPu=Rb,t.schemeRdYlBu=gb,t.schemeRdYlGn=vb,t.schemeReds=Jb,t.schemeSet1=Q_,t.schemeSet2=J_,t.schemeSet3=tb,t.schemeSpectral=bb,t.schemeTableau10=nb,t.schemeYlGn=Ib,t.schemeYlGnBu=qb,t.schemeYlOrBr=Bb,t.schemeYlOrRd=Lb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=gm([]),n=hw,e=lw,r=dw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),pw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o<c;++o)(u[o][f]=[0,+r(t,u[o].key,f,i)]).data=t;for(o=0,a=Fm(n(u));o<c;++o)u[a[o]].index=o;return e(u,a),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:gm(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?hw:"function"==typeof t?t:gm(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?lw:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}lw(t,n)}},t.stackOffsetNone=lw,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}lw(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,lw(t,n)}},t.stackOrderAppearance=gw,t.stackOrderAscending=vw,t.stackOrderDescending=function(t){return vw(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(_w),o=gw(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=hw,t.stackOrderReverse=function(t){return hw(t).reverse()},t.stratify=function(){var t,n=kp,e=Cp;function r(r){var i,o,a,u,c,f,s,l,h=Array.from(r),d=n,p=e,g=new Map;if(null!=t){const n=h.map(((n,e)=>function(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a<i;++a)o=h[a],f=h[a]=new Qd(o),null!=(s=d(o,a,r))&&(s+="")&&(l=f.id=s,g.set(l,g.has(l)?Ep:f)),null!=(s=p(o,a,r))&&(s+="")&&(f.parent=s);for(a=0;a<i;++a)if(s=(f=h[a]).parent){if(!(c=g.get(s)))throw new Error("missing: "+s);if(c===Ep)throw new Error("ambiguous: "+s);c.children?c.children.push(f):c.children=[f],f.parent=c}else{if(u)throw new Error("multiple roots");u=f}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Np&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=Nm(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:gm(t||cx),n="function"==typeof n?n:gm(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:gm(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=ux,t.symbolCircle=cx,t.symbolCross=fx,t.symbolDiamond=hx,t.symbolDiamond2=dx,t.symbolPlus=px,t.symbolSquare=gx,t.symbolSquare2=yx,t.symbolStar=mx,t.symbolTimes=Cx,t.symbolTriangle=wx,t.symbolTriangle2=Tx,t.symbolWye=kx,t.symbolX=Cx,t.symbols=Px,t.symbolsFill=Px,t.symbolsStroke=zx,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=tp(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:ep(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:ep(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:ep(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:ep(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:ep(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d<p;){var g=d+p>>>1;f[g]<h?d=g+1:p=g}h-f[d-1]<f[d]-h&&n+1<d&&--d;var y=f[d]-l,v=r-y;if(a-i>c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.8.5",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Sw,i=Ew,o=Pw,a=kw,u=Cw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",Nw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new xw(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new xw(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new xw(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Aw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Aw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Aw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Tw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Aw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Tw(e),a=0;a<s;++a)c=[c=ne(u=f[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(n=c[0],t=setTimeout((function(){t=null}),d)),Gi(this),l.start())}}function N(t,...n){if(this.__zooming){var e,r,i,a,u=w(this,n).event(t),c=t.changedTouches,s=c.length;for(Aw(t),e=0;e<s;++e)i=ne(r=c[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=_(r,Math.sqrt(g/y)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(b(r,i,a),u.extent,f))}}function k(t,...r){if(this.__zooming){var i,o,a=w(this,r).event(t),u=t.changedTouches,c=u.length;for(Tw(t),e&&clearTimeout(e),e=setTimeout((function(){e=null}),d),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=ne(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<y)){var f=Zn(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return v.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Nw),t!==i?x(t,n,e,r):i.interrupt().each((function(){w(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()}))},v.scaleBy=function(t,n,e,r){v.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)}),e,r)},v.scaleTo=function(t,n,e,r){v.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?m(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(b(_(r,c),a,u),t,f)}),e,r)},v.translateBy=function(t,n,e,r){v.transform(t,(function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)}),null,r)},v.translateTo=function(t,n,e,r,a){v.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?m(t):"function"==typeof r?r.apply(this,arguments):r;return o(ww.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)}),r,a)},M.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Zn(this.that).datum();h.call(t,this.that,new mw(t,{sourceEvent:this.sourceEvent,target:v,type:t,transform:this.that.__zoom,dispatch:h}),n)}},v.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:bw(+t),v):a},v.filter=function(t){return arguments.length?(r="function"==typeof t?t:bw(!!t),v):r},v.touchable=function(t){return arguments.length?(u="function"==typeof t?t:bw(!!t),v):u},v.extent=function(t){return arguments.length?(i="function"==typeof t?t:bw([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),v):i},v.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],v):[c[0],c[1]]},v.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],v):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},v.constrain=function(t){return arguments.length?(o=t,v):o},v.duration=function(t){return arguments.length?(s=+t,v):s},v.interpolate=function(t){return arguments.length?(l=t,v):l},v.on=function(){var t=h.on.apply(h,arguments);return t===h?v:t},v.clickDistance=function(t){return arguments.length?(g=(t=+t)*t,v):Math.sqrt(g)},v.tapDistance=function(t){return arguments.length?(y=+t,v):y},v},t.zoomIdentity=ww,t.zoomTransform=Mw}));
+
+</script>
+    <style>
+.d3-flame-graph rect {
+  stroke: #EEEEEE;
+  fill-opacity: .8;
+}
+
+.d3-flame-graph rect:hover {
+  stroke: #474747;
+  stroke-width: 0.5;
+  cursor: pointer;
+}
+
+.d3-flame-graph-label {
+  pointer-events: none;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  font-size: 12px;
+  font-family: Verdana;
+  margin-left: 4px;
+  margin-right: 4px;
+  line-height: 1.5;
+  padding: 0 0 0;
+  font-weight: 400;
+  color: black;
+  text-align: left;
+}
+
+.d3-flame-graph .fade {
+  opacity: 0.6 !important;
+}
+
+.d3-flame-graph .title {
+  font-size: 20px;
+  font-family: Verdana;
+}
+
+.d3-flame-graph-tip {
+    background-color: black;
+    border: none;
+    border-radius: 3px;
+    padding: 5px 10px 5px 10px;
+    min-width: 250px;
+    text-align: left;
+    color: white;
+    z-index: 10;
+}
+</style>
+    <script>
+!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():t.flamegraph=n()}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function l(t){return function(n){return n.matches(t)}}t.d(n,{default:()=>xr});var s=Array.prototype.find;function c(){return this.firstElementChild}var h=Array.prototype.filter;function f(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function g(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,l=n.length,s=o.length;a<s;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<l;++a)(u=n[a])&&(i[a]=u)}function y(t,n,e,r,i,o,u){var a,l,s,c=new Map,h=n.length,f=o.length,p=new Array(h);for(a=0;a<h;++a)(l=n[a])&&(p[a]=s=u.call(l,l.__data__,a,n)+"",c.has(s)?i[a]=l:c.set(s,l));for(a=0;a<f;++a)s=u.call(t,o[a],a,o)+"",(l=c.get(s))?(r[a]=l,l.__data__=o[a],c.delete(s)):e[a]=new d(t,o[a]);for(a=0;a<h;++a)(l=n[a])&&c.get(p[a])===l&&(i[a]=l)}function m(t){return t.__data__}function w(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function _(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function M(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function A(t){return function(){this.removeAttribute(t)}}function N(t){return function(){this.removeAttributeNS(t.space,t.local)}}function k(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function q(t){return function(){this.style.removeProperty(t)}}function O(t,n,e){return function(){this.style.setProperty(t,n,e)}}function P(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function H(t,n){return t.style.getPropertyValue(n)||j(t).getComputedStyle(t,null).getPropertyValue(n)}function L(t){return function(){delete this[t]}}function T(t,n){return function(){this[t]=n}}function D(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function B(t){return t.trim().split(/^|\s+/)}function X(t){return t.classList||new z(t)}function z(t){this._node=t,this._names=B(t.getAttribute("class")||"")}function R(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function I(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){R(this,t)}}function V(t){return function(){I(this,t)}}function Y(t,n){return function(){(n.apply(this,arguments)?R:I)(this,t)}}function F(){this.textContent=""}function U(t){return function(){this.textContent=t}}function Z(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function G(){this.innerHTML=""}function K(t){return function(){this.innerHTML=t}}function W(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function J(){this.nextSibling&&this.parentNode.appendChild(this)}function Q(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=M(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function lt(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function st(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=j(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ht(t,n){return function(){return ct(this,t,n)}}function ft(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}z.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var pt=[null];function dt(t,n){this._groups=t,this._parents=n}function gt(){return new dt([[document.documentElement]],pt)}dt.prototype=gt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,l=n[o],s=l.length,c=i[o]=new Array(s),h=0;h<s;++h)(u=l[h])&&(a=t.call(u,u.__data__,h,l))&&("__data__"in u&&(a.__data__=u.__data__),c[h]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var l,s=n[a],c=s.length,h=0;h<c;++h)(l=s[h])&&(r.push(t.call(l,l.__data__,h,s)),o.push(l));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return s.call(this.children,t)}}("function"==typeof t?t:l(t)))},selectChildren:function(t){return this.selectAll(null==t?f:function(t){return function(){return h.call(this.children,t)}}("function"==typeof t?t:l(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,m);var e=n?y:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=g(t));for(var o=i.length,u=new Array(o),a=new Array(o),l=new Array(o),s=0;s<o;++s){var c=r[s],h=i[s],f=h.length,p=w(t.call(c,c&&c.__data__,s,r)),d=p.length,_=a[s]=new Array(d),b=u[s]=new Array(d),x=l[s]=new Array(f);e(c,h,_,b,x,p,n);for(var M,A,N=0,k=0;N<d;++N)if(M=_[N]){for(N>=k&&(k=N+1);!(A=b[k])&&++k<d;);M._next=A||null}}return(u=new dt(u,r))._enter=a,u._exit=l,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),l=0;l<u;++l)for(var s,c=e[l],h=r[l],f=c.length,p=a[l]=new Array(f),d=0;d<f;++d)(s=c[d]||h[d])&&(p[d]=s);for(;l<i;++l)a[l]=e[l];return new dt(a,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=_);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],l=a.length,s=i[o]=new Array(l),c=0;c<l;++c)(u=a[c])&&(s[c]=u);s.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=M(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?N:A:"function"==typeof n?e.local?C:S:e.local?E:k)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?q:"function"==typeof n?P:O)(t,n,null==e?"":e)):H(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?L:"function"==typeof n?D:T)(t,n)):this.node()[t]},classed:function(t,n){var e=B(t+"");if(arguments.length<2){for(var r=X(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?Y:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?F:("function"==typeof t?Z:U)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?G:("function"==typeof t?W:K)(t)):this.node().innerHTML},raise:function(){return this.each(J)},lower:function(){return this.each(Q)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?st:lt,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var l,s=0,c=a.length;s<c;++s)for(r=0,l=a[s];r<u;++r)if((i=o[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,n){return this.each(("function"==typeof n?ft:ht)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=gt;function yt(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}function mt(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function wt(t){return(t=mt(Math.abs(t)))?t[1]:NaN}var _t,bt=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function xt(t){if(!(n=bt.exec(t)))throw new Error("invalid format: "+t);var n;return new Mt({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Mt(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function At(t,n){var e=mt(t,n);if(!e)return t+"";var r=e[0],i=e[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")}xt.prototype=Mt.prototype,Mt.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Nt={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>At(100*t,n),r:At,s:function(t,n){var e=mt(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(_t=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+mt(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kt(t){return t}var Et,St,Ct,jt=Array.prototype.map,qt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ot(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?kt:(n=jt.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],u=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),o.push(t.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[u=(u+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",u=void 0===t.decimal?".":t.decimal+"",a=void 0===t.numerals?kt:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(jt.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function h(t){var n=(t=xt(t)).fill,e=t.align,h=t.sign,f=t.symbol,p=t.zero,d=t.width,g=t.comma,v=t.precision,y=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Nt[m]||(void 0===v&&(v=12),y=!0,m="g"),(p||"0"===n&&"="===e)&&(p=!0,n="0",e="=");var w="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",_="$"===f?o:/[%p]/.test(m)?l:"",b=Nt[m],x=/[defgprs%]/.test(m);function M(t){var i,o,l,f=w,M=_;if("c"===m)M=b(t)+M,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:b(Math.abs(t),v),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),f=(A?"("===h?h:s:"-"===h||"("===h?"":h)+f,M=("s"===m?qt[8+_t/3]:"")+M+(A&&"("===h?")":""),x)for(i=-1,o=t.length;++i<o;)if(48>(l=t.charCodeAt(i))||l>57){M=(46===l?u+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!p&&(t=r(t,1/0));var N=f.length+t.length+M.length,k=N<d?new Array(d-N+1).join(n):"";switch(g&&p&&(t=r(k+t,k.length?d-M.length:1/0),k=""),e){case"<":t=f+t+M+k;break;case"=":t=f+k+t+M;break;case"^":t=k.slice(0,N=k.length>>1)+f+t+M+k.slice(N);break;default:t=k+f+t+M}return a(t)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:h,formatPrefix:function(t,n){var e=h(((t=xt(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3))),i=Math.pow(10,-r),o=qt[8+r/3];return function(t){return e(i*t)+o}}}}function Pt(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function Ht(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Lt(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&function(t,n,e,r,i){for(var o,u=t.children,a=-1,l=u.length,s=t.value&&(r-n)/t.value;++a<l;)(o=u[a]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*s}(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,u=r.x1-e,a=r.y1-e;u<i&&(i=u=(i+u)/2),a<o&&(o=a=(o+a)/2),r.x0=i,r.y0=o,r.x1=u,r.y1=a}}(n,o)),r&&i.eachBefore(Ht),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i}function Tt(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Dt(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Xt)):void 0===n&&(n=Bt);for(var e,r,i,o,u,a=new It(t),l=[a];e=l.pop();)if((i=n(e.data))&&(u=(i=Array.from(i)).length))for(e.children=i,o=u-1;o>=0;--o)l.push(r=i[o]=new It(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Rt)}function Bt(t){return t.children}function Xt(t){return Array.isArray(t)?t[1]:null}function zt(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Rt(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function It(t){this.data=t,this.depth=this.height=0,this.parent=null}Et=Ot({thousands:",",grouping:[3],currency:["$",""]}),St=Et.format,Ct=Et.formatPrefix,It.prototype=Dt.prototype={constructor:It,count:function(){return this.eachAfter(Tt)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,u=[o],a=[],l=-1;o=u.pop();)if(a.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)u.push(e[r]);for(;o=a.pop();)t.call(n,o,++l,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],u=-1;i=o.pop();)if(t.call(n,i,++u,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Dt(this).eachBefore(zt)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};var $t=Math.sqrt(50),Vt=Math.sqrt(10),Yt=Math.sqrt(2);function Ft(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=$t?10:o>=Vt?5:o>=Yt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=$t?10:o>=Vt?5:o>=Yt?2:1)}function Ut(t){let n=t,e=t,r=t;function i(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<0?i=e+1:o=e}while(i<o)}return i}return 2!==t.length&&(n=(n,e)=>t(n)-e,e=Pt,r=(n,e)=>Pt(t(n),e)),{left:i,center:function(t,e,r=0,o=t.length){const u=i(t,e,r,o-1);return u>r&&n(t[u-1],e)>-n(t[u],e)?u-1:u},right:function(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<=0?i=e+1:o=e}while(i<o)}return i}}}const Zt=Ut(Pt),Gt=Zt.right,Kt=(Zt.left,Ut((function(t){return null===t?NaN:+t})).center,Gt);function Wt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Jt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Qt(){}var tn=.7,nn=1/tn,en="\\s*([+-]?\\d+)\\s*",rn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",on="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",un=/^#([0-9a-f]{3,8})$/,an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),ln=new RegExp("^rgb\\("+[on,on,on]+"\\)$"),sn=new RegExp("^rgba\\("+[en,en,en,rn]+"\\)$"),cn=new RegExp("^rgba\\("+[on,on,on,rn]+"\\)$"),hn=new RegExp("^hsl\\("+[rn,on,on]+"\\)$"),fn=new RegExp("^hsla\\("+[rn,on,on,rn]+"\\)$"),pn={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};function dn(){return this.rgb().formatHex()}function gn(){return this.rgb().formatRgb()}function vn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=un.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?yn(n):3===e?new bn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=an.exec(t))?new bn(n[1],n[2],n[3],1):(n=ln.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=sn.exec(t))?mn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=hn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,1):(n=fn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,n[4]):pn.hasOwnProperty(t)?yn(pn[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function yn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function wn(t){return t instanceof Qt||(t=vn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?wn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function xn(){return"#"+An(this.r)+An(this.g)+An(this.b)}function Mn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"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))+(1===t?")":", "+t+")")}function An(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Nn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new En(t,n,e,r)}function kn(t){if(t instanceof En)return new En(t.h,t.s,t.l,t.opacity);if(t instanceof Qt||(t=vn(t)),!t)return new En;if(t instanceof En)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,l=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=l<.5?o+i:2-o-i,u*=60):a=l>0&&l<1?0:u,new En(u,a,l,t.opacity)}function En(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Cn(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}Wt(Qt,vn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:dn,formatHex:dn,formatHsl:function(){return kn(this).formatHsl()},formatRgb:gn,toString:gn}),Wt(bn,_n,Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new bn(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:xn,formatHex:xn,formatRgb:Mn,toString:Mn})),Wt(En,(function(t,n,e,r){return 1===arguments.length?kn(t):new En(t,n,e,null==r?1:r)}),Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new En(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new En(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(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(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const jn=t=>()=>t;function qn(t,n){return function(e){return t+e*n}}function On(t){return 1==(t=+t)?Pn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):jn(isNaN(n)?e:n)}}function Pn(t,n){var e=n-t;return e?qn(t,e):jn(isNaN(t)?n:t)}const Hn=function t(n){var e=On(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Pn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function Ln(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=_n(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}Ln((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return Cn((e-r/n)*n,u,i,o,a)}})),Ln((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return Cn((e-r/n)*n,i,o,u,a)}}));function Tn(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),u=new Array(r);for(e=0;e<i;++e)o[e]=Vn(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=o[e](t);return u}}function Dn(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Bn(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Xn(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Vn(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var zn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Rn=new RegExp(zn.source,"g");function In(t,n){var e,r,i,o=zn.lastIndex=Rn.lastIndex=0,u=-1,a=[],l=[];for(t+="",n+="";(e=zn.exec(t))&&(r=Rn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,l.push({i:u,x:Bn(e,r)})),o=Rn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?l[0]?function(t){return function(n){return t(n)+""}}(l[0].x):function(t){return function(){return t}}(n):(n=l.length,function(t){for(var e,r=0;r<n;++r)a[(e=l[r]).i]=e.x(t);return a.join("")})}function $n(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Vn(t,n){var e,r,i=typeof n;return null==n||"boolean"===i?jn(n):("number"===i?Bn:"string"===i?(e=vn(n))?(n=e,Hn):In:n instanceof vn?Hn:n instanceof Date?Dn:(r=n,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(n)?Tn:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Xn:Bn:$n))(t,n)}function Yn(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}function Fn(t){return+t}var Un=[0,1];function Zn(t){return t}function Gn(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:(e=isNaN(n)?NaN:.5,function(){return e});var e}function Kn(t,n,e){var r=t[0],i=t[1],o=n[0],u=n[1];return i<r?(r=Gn(i,r),o=e(u,o)):(r=Gn(r,i),o=e(o,u)),function(t){return o(r(t))}}function Wn(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)i[u]=Gn(t[u],t[u+1]),o[u]=e(n[u],n[u+1]);return function(n){var e=Kt(t,n,1,r)-1;return o[e](i[e](n))}}function Jn(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Qn(){var t,n,e,r,i,o,u=Un,a=Un,l=Vn,s=Zn;function c(){var t,n,e,l=Math.min(u.length,a.length);return s!==Zn&&(t=u[0],n=u[l-1],t>n&&(e=t,t=n,n=e),s=function(e){return Math.max(t,Math.min(n,e))}),r=l>2?Wn:Kn,i=o=null,h}function h(n){return null==n||isNaN(n=+n)?e:(i||(i=r(u.map(t),a,l)))(t(s(n)))}return h.invert=function(e){return s(n((o||(o=r(a,u.map(t),Bn)))(e)))},h.domain=function(t){return arguments.length?(u=Array.from(t,Fn),c()):u.slice()},h.range=function(t){return arguments.length?(a=Array.from(t),c()):a.slice()},h.rangeRound=function(t){return a=Array.from(t),l=Yn,c()},h.clamp=function(t){return arguments.length?(s=!!t||Zn,c()):s!==Zn},h.interpolate=function(t){return arguments.length?(l=t,c()):l},h.unknown=function(t){return arguments.length?(e=t,h):e},function(e,r){return t=e,n=r,c()}}function te(){return Qn()(Zn,Zn)}function ne(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function ee(t,n,e,r){var i,o=function(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=$t?i*=10:o>=Vt?i*=5:o>=Yt&&(i*=2),n<t?-i:i}(t,n,e);switch((r=xt(null==r?",f":r)).type){case"s":var u=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3)))-wt(Math.abs(t)))}(o,u))||(r.precision=i),Ct(r,u);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,wt(n)-wt(t))+1}(o,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-wt(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return St(r)}function re(t){var n=t.domain;return t.ticks=function(t){var e=n();return function(t,n,e){var r,i,o,u,a=-1;if(e=+e,(t=+t)==(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(u=Ft(t,n,e))||!isFinite(u))return[];if(u>0){let e=Math.round(t/u),r=Math.round(n/u);for(e*u<t&&++e,r*u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)*u}else{u=-u;let e=Math.round(t*u),r=Math.round(n*u);for(e/u<t&&++e,r/u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)/u}return r&&o.reverse(),o}(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return ee(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),u=0,a=o.length-1,l=o[u],s=o[a],c=10;for(s<l&&(i=l,l=s,s=i,i=u,u=a,a=i);c-- >0;){if((i=Ft(l,s,e))===r)return o[u]=l,o[a]=s,n(o);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}r=i}return t},t}function ie(){var t=te();return t.copy=function(){return Jn(t,ie())},ne.apply(t,arguments),re(t)}function oe(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var ue={value:()=>{}};function ae(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new le(r)}function le(t){this._=t}function se(t,n){return t.trim().split(/^|\s+/).map((function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function ce(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function he(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=ue,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}le.prototype=ae.prototype={constructor:le,on:function(t,n){var e,r=this._,i=se(t+"",r),o=-1,u=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=he(r[e],t.name,n);else if(null==n)for(e in r)r[e]=he(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=ce(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new le(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};const fe=ae;var pe,de,ge=0,ve=0,ye=0,me=0,we=0,_e=0,be="object"==typeof performance&&performance.now?performance:Date,xe="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Me(){return we||(xe(Ae),we=be.now()+_e)}function Ae(){we=0}function Ne(){this._call=this._time=this._next=null}function ke(t,n,e){var r=new Ne;return r.restart(t,n,e),r}function Ee(){we=(me=be.now())+_e,ge=ve=0;try{!function(){Me(),++ge;for(var t,n=pe;n;)(t=we-n._time)>=0&&n._call.call(void 0,t),n=n._next;--ge}()}finally{ge=0,function(){var t,n,e=pe,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pe=n);de=t,Ce(r)}(),we=0}}function Se(){var t=be.now(),n=t-me;n>1e3&&(_e-=n,me=t)}function Ce(t){ge||(ve&&(ve=clearTimeout(ve)),t-we>24?(t<1/0&&(ve=setTimeout(Ee,t-be.now()-_e)),ye&&(ye=clearInterval(ye))):(ye||(me=be.now(),ye=setInterval(Se,1e3)),ge=1,xe(Ee)))}function je(t,n,e){var r=new Ne;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ne.prototype=ke.prototype={constructor:Ne,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Me():+e)+(null==n?0:+n),this._next||de===this||(de?de._next=this:pe=this,de=this),this._call=t,this._time=e,Ce()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ce())}};var qe=fe("start","end","cancel","interrupt"),Oe=[];function Pe(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var s,c,h,f;if(1!==e.state)return l();for(s in i)if((f=i[s]).name===e.name){if(3===f.state)return je(u);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[s]):+s<n&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[s])}if(je((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(h=e.tween.length),s=0,c=-1;s<h;++s)(f=e.tween[s].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=f);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(l),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),l())}function l(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=ke(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:qe,tween:Oe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function He(t,n){var e=Te(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Le(t,n){var e=Te(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Te(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}var De,Be=180/Math.PI,Xe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ze(t,n,e,r,i,o){var u,a,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*e+n*r)&&(e-=t*l,r-=n*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),t*r<n*e&&(t=-t,n=-n,l=-l,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Be,skewX:Math.atan(l)*Be,scaleX:u,scaleY:a}}function Re(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],l=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var l=u.push("translate(",null,n,null,e);a.push({i:l-4,x:Bn(t,i)},{i:l-2,x:Bn(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,l),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Bn(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,l),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Bn(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,l),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Bn(t,e)},{i:a-2,x:Bn(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,l),o=u=null,function(t){for(var n,e=-1,r=l.length;++e<r;)a[(n=l[e]).i]=n.x(t);return a.join("")}}}var Ie=Re((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Xe:ze(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),$e=Re((function(t){return null==t?Xe:(De||(De=document.createElementNS("http://www.w3.org/2000/svg","g")),De.setAttribute("transform",t),(t=De.transform.baseVal.consolidate())?ze((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Xe)}),", ",")",")");function Ve(t,n){var e,r;return function(){var i=Le(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}function Ye(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Le(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},l=0,s=i.length;l<s;++l)if(i[l].name===n){i[l]=a;break}l===s&&i.push(a)}o.tween=i}}function Fe(t,n,e){var r=t._id;return t.each((function(){var t=Le(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Te(t,r).value[n]}}function Ue(t,n){var e;return("number"==typeof n?Bn:n instanceof vn?Hn:(e=vn(n))?(n=e,Hn):In)(t,n)}function Ze(t){return function(){this.removeAttribute(t)}}function Ge(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ke(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function We(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Je(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttribute(t))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttribute(t)}}function Qe(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttributeNS(t.space,t.local))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttributeNS(t.space,t.local)}}function tr(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function nr(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function er(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&nr(t,i)),e}return i._value=n,i}function rr(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&tr(t,i)),e}return i._value=n,i}function ir(t,n){return function(){He(this,t).delay=+n.apply(this,arguments)}}function or(t,n){return n=+n,function(){He(this,t).delay=n}}function ur(t,n){return function(){Le(this,t).duration=+n.apply(this,arguments)}}function ar(t,n){return n=+n,function(){Le(this,t).duration=n}}function lr(t,n){if("function"!=typeof n)throw new Error;return function(){Le(this,t).ease=n}}function sr(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?He:Le;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var cr=vt.prototype.constructor;function hr(t){return function(){this.style.removeProperty(t)}}function fr(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pr(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&fr(t,o,e)),r}return o._value=n,o}function dr(t){return function(n){this.textContent=t.call(this,n)}}function gr(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&dr(r)),n}return r._value=t,r}var vr=0;function yr(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function mr(){return++vr}var wr=vt.prototype;yr.prototype=function(t){return vt().transition(t)}.prototype={constructor:yr,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var l,s,c=i[a],h=c.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=c[p])&&(s=t.call(l,l.__data__,p,c))&&("__data__"in l&&(s.__data__=l.__data__),f[p]=s,Pe(f[p],n,e,p,f,Te(l,e)));return new yr(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],l=0;l<i;++l)for(var s,c=r[l],h=c.length,f=0;f<h;++f)if(s=c[f]){for(var p,d=t.call(s,s.__data__,f,c),g=Te(s,e),v=0,y=d.length;v<y;++v)(p=d[v])&&Pe(p,n,e,v,d,g);o.push(d),a.push(s)}return new yr(o,a,n,e)},selectChild:wr.selectChild,selectChildren:wr.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new yr(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var l,s=n[a],c=e[a],h=s.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=s[p]||c[p])&&(f[p]=l);for(;a<r;++a)u[a]=n[a];return new yr(u,this._parents,this._name,this._id)},selection:function(){return new cr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=mr(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)if(u=a[s]){var c=Te(u,n);Pe(u,t,e,s,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new yr(r,this._parents,t,e)},call:wr.call,nodes:wr.nodes,node:wr.node,size:wr.size,empty:wr.empty,each:wr.each,on:function(t,n){var e=this._id;return arguments.length<2?Te(this.node(),e).on.on(t):this.each(sr(e,t,n))},attr:function(t,n){var e=M(t),r="transform"===e?$e:Ue;return this.attrTween(t,"function"==typeof n?(e.local?Qe:Je)(e,r,Fe(this,"attr."+t,n)):null==n?(e.local?Ge:Ze)(e):(e.local?We:Ke)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=M(t);return this.tween(e,(r.local?er:rr)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Ie:Ue;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=H(this,t),u=(this.style.removeProperty(t),H(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,hr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=H(this,t),a=e(this),l=a+"";return null==a&&(this.style.removeProperty(t),l=a=H(this,t)),u===l?null:u===r&&l===i?o:(i=l,o=n(r=u,a))}}(t,r,Fe(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var l=Le(this,t),s=l.on,c=null==l.value[u]?o||(o=hr(n)):void 0;s===e&&i===c||(r=(e=s).copy()).on(a,i=c),l.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=H(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,pr(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Fe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,gr(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Te(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Ve:Ye)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ir:or)(n,t)):Te(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ur:ar)(n,t)):Te(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(lr(n,t)):Te(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Le(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},l={value:function(){0==--i&&o()}};e.each((function(){var e=Le(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(l)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:wr[Symbol.iterator]};var _r={time:null,delay:0,duration:250,ease:oe};function br(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xr(){let t=960,n=null,e=18,r=null,i=null,o="",u=750,a=oe,l=!1,s=!1,c=null,h=null,f=0,p=null,d=null,g=!1,v=!1,y=!1,m=null,w=!1,_=null,b=function(t){return t.data.n||t.data.name},x=function(t){return"v"in t?t.v:t.value},M=function(t){return t.c||t.children},A=function(t){return t.data.l||t.data.libtype},N=function(t){return"d"in t.data?t.data.d:t.data.delta},k=function(t,n,e){d=()=>{p&&(p.textContent="search: "+n+" of "+e+" total samples ( "+St(".3f")(n/e*100,3)+"%)")},d()};const E=k;let S=(t,n,e=!1)=>{if(!n)return!1;let r=b(t);e&&(n=n.toLowerCase(),r=r.toLowerCase());const i=new RegExp(n);return void 0!==r&&r&&r.match(i)};const C=S;let j=function(t){p&&(t?p.textContent=t:"function"==typeof d?d():p.textContent="")};const q=j;let O=function(t){return b(t)+" ("+St(".3f")(100*(t.x1-t.x0),3)+"%, "+x(t)+" samples)"},P=function(t){return t.highlight?"#E600E6":function(t,n){let e=_||"warm";_||void 0===n||""===n||(e="red",void 0!==t&&t&&t.match(/::/)&&(e="yellow"),"kernel"===n?e="orange":"jit"===n?e="green":"inlined"===n&&(e="aqua"));const r=function(t){let n=0;if(t){const e=t.split("`");e.length>1&&(t=e[e.length-1]),n=function(t){let n=0,e=0,r=1;if(t){for(let i=0;i<t.length&&!(i>6);i++)n+=r*(t.charCodeAt(i)%10),e+=9*r,r*=.7;e>0&&(n/=e)}return n}(t=t.split("(")[0])}return n}(t);return function(t,n){let e,r,i;return"red"===t?(e=200+Math.round(55*n),r=50+Math.round(80*n),i=r):"orange"===t?(e=190+Math.round(65*n),r=90+Math.round(65*n),i=0):"yellow"===t?(e=175+Math.round(55*n),r=e,i=50+Math.round(20*n)):"green"===t?(e=50+Math.round(60*n),r=200+Math.round(55*n),i=e):"pastelgreen"===t?(e=163+Math.round(75*n),r=195+Math.round(49*n),i=72+Math.round(149*n)):"blue"===t?(e=91+Math.round(126*n),r=156+Math.round(76*n),i=221+Math.round(26*n)):"aqua"===t?(e=50+Math.round(60*n),r=165+Math.round(55*n),i=r):"cold"===t?(e=0+Math.round(55*(1-n)),r=0+Math.round(230*(1-n)),i=200+Math.round(55*n)):(e=200+Math.round(55*n),r=0+Math.round(230*(1-n)),i=0+Math.round(55*(1-n))),"rgb("+e+","+r+","+i+")"}(e,r)}(b(t),A(t))};const H=P;function L(t){t.data.fade=!1,t.data.hide=!1,t.children&&t.children.forEach(L)}function T(t){t.parent&&(t.parent.data.fade=!0,T(t.parent))}function D(t){if(i&&i.hide(),function(t){let n,e,r,i=t,o=i.parent;for(;o;){for(n=o.children,e=n.length;e--;)r=n[e],r!==i&&(r.data.hide=!0);i=o,o=i.parent}}(t),L(t),T(t),I(),y){const n=yt(this).select("svg")._groups[0][0].parentNode.offsetTop,r=(window.innerHeight-n)/e,i=(t.height-r+10)*e;window.scrollTo({top:n+i,left:0,behavior:"smooth"})}"function"==typeof c&&c(t)}function B(t,n){if(t.id===n)return t;{const e=M(t);if(e)for(let t=0;t<e.length;t++){const r=B(e[t],n);if(r)return r}}}function X(t){t.highlight=!1,M(t)&&M(t).forEach((function(t){X(t)}))}function z(t,n){return"function"==typeof l?l(t,n):l?Pt(b(t),b(n)):void 0}const R=Lt();function I(){r.each((function(r){const o=ie().range([0,t]),c=ie().range([0,e]);V(r),l&&r.sort(z),R(r);const p=t/(r.x1-r.x0);function d(t){return(t.x1-t.x0)*p}const g=function(n){let e=n.descendants();if(f>0){const r=t/(n.x1-n.x0);e=e.filter((function(t){return(t.x1-t.x0)*r>f}))}return e}(r),y=yt(this).select("svg");y.attr("width",t);let w=y.selectAll("g").data(g,(function(t){return t.id}));if(!n||v){const t=Math.max.apply(null,g.map((function(t){return t.depth})));n=(t+3)*e,n<m&&(n=m),y.attr("height",n)}w.transition().duration(u).ease(a).attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"})),w.select("rect").transition().duration(u).ease(a).attr("width",d);const _=w.enter().append("svg:g").attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"}));_.append("svg:rect").transition().delay(u/2).attr("width",d),i||_.append("svg:title"),_.append("foreignObject").append("xhtml:div"),w=y.selectAll("g").data(g,(function(t){return t.id})),w.attr("width",d).attr("height",(function(t){return e})).attr("name",(function(t){return b(t)})).attr("class",(function(t){return t.data.fade?"frame fade":"frame"})),w.select("rect").attr("height",(function(t){return e})).attr("fill",(function(t){return P(t)})),i||w.select("title").text(O),w.select("foreignObject").attr("width",d).attr("height",(function(t){return e})).select("div").attr("class","d3-flame-graph-label").style("display",(function(t){return d(t)<35?"none":"block"})).transition().delay(u).text(b),w.on("click",((t,n)=>{D(n)})),w.exit().remove(),w.on("mouseover",(function(t,n){i&&i.show(n,this),j(O(n)),"function"==typeof h&&h(n)})).on("mouseout",(function(){i&&i.hide(),j(null)}))}))}function $(t,n){n.forEach((function(n){const e=t.find((function(t){return t.name===n.name}));e?(e.value+=n.value,n.children&&(e.children||(e.children=[]),$(e.children,n.children))):t.push(n)}))}function V(t){let n,e,r,i,o,u,a,l;const s=[],c=[],h=[],f=!g;let p=t.data;for(p.hide?(t.value=0,e=t.children,e&&h.push(e)):(t.value=p.fade?0:x(p),s.push(t));n=s.pop();)if(e=n.children,e&&(o=e.length)){for(i=0;o--;)a=e[o],p=a.data,p.hide?(a.value=0,r=a.children,r&&h.push(r)):(p.fade?a.value=0:(l=x(p),a.value=l,i+=l),s.push(a));f&&n.value&&(n.value-=i),c.push(e)}for(o=c.length;o--;){for(e=c[o],i=0,u=e.length;u--;)i+=e[u].value;e[0].parent.value+=i}for(;h.length;)for(e=h.pop(),u=e.length;u--;)a=e[u],a.value=0,r=a.children,r&&h.push(r)}function Y(){r.datum((t=>{if("Node"!==t.constructor.name){const n=Dt(t,M);return function(t){let n=0;!function(t,n){n(t);let e=t.children;if(e){const t=[e];let r,i,o;for(;t.length;)for(e=t.pop(),r=e.length;r--;)i=e[r],n(i),o=i.children,o&&t.push(o)}}(t,(function(t){t.id=n++}))}(n),V(n),n.originalValue=n.value,w&&n.eachAfter((t=>{let n=N(t);const e=t.children;let r=e&&e.length;for(;--r>=0;)n+=e[r].delta;t.delta=n})),n}}))}function F(e){if(!arguments.length)return F;r=e,Y(),r.each((function(e){if(0===yt(this).select("svg").size()){const e=yt(this).append("svg:svg").attr("width",t).attr("class","partition d3-flame-graph");n&&(n<m&&(n=m),e.attr("height",n)),e.append("svg:text").attr("class","title").attr("text-anchor","middle").attr("y","25").attr("x",t/2).attr("fill","#808080").text(o),i&&e.call(i)}})),I()}return F.height=function(t){return arguments.length?(n=t,F):n},F.minHeight=function(t){return arguments.length?(m=t,F):m},F.width=function(n){return arguments.length?(t=n,F):t},F.cellHeight=function(t){return arguments.length?(e=t,F):e},F.tooltip=function(t){return arguments.length?("function"==typeof t&&(i=t),F):i},F.title=function(t){return arguments.length?(o=t,F):o},F.transitionDuration=function(t){return arguments.length?(u=t,F):u},F.transitionEase=function(t){return arguments.length?(a=t,F):a},F.sort=function(t){return arguments.length?(l=t,F):l},F.inverted=function(t){return arguments.length?(s=t,F):s},F.computeDelta=function(t){return arguments.length?(w=t,F):w},F.setLabelHandler=function(t){return arguments.length?(O=t,F):O},F.label=F.setLabelHandler,F.search=function(t){const n=[];let e=0,i=0;r.each((function(r){const o=function(t,n){const e=[];let r=0;return function t(i,o){let u=!1;S(i,n)?(i.highlight=!0,u=!0,o||(r+=x(i)),e.push(i)):i.highlight=!1,M(i)&&M(i).forEach((function(n){t(n,o||u)}))}(t,!1),[e,r]}(r,t);n.push(...o[0]),e+=o[1],i+=r.originalValue})),k(n,e,i),I()},F.findById=function(t){if(null==t)return null;let n=null;return r.each((function(e){null===n&&(n=B(e,t))})),n},F.clear=function(){j(null),r.each((function(t){X(t),I()}))},F.zoomTo=function(t){D(t)},F.resetZoom=function(){r.each((function(t){D(t)}))},F.onClick=function(t){return arguments.length?(c=t,F):c},F.onHover=function(t){return arguments.length?(h=t,F):h},F.merge=function(t){return r?(this.resetZoom(),d=null,j(null),r.datum((n=>($([n.data],[t]),n.data))),Y(),I(),F):F},F.update=function(t){return r?(t&&(r.datum(t),Y()),I(),F):F},F.destroy=function(){return r?(i&&(i.hide(),"function"==typeof i.destroy&&i.destroy()),r.selectAll("svg").remove(),F):F},F.setColorMapper=function(t){return arguments.length?(P=n=>{const e=H(n);return t(n,e)},F):(P=H,F)},F.color=F.setColorMapper,F.setColorHue=function(t){return arguments.length?(_=t,F):(_=null,F)},F.minFrameSize=function(t){return arguments.length?(f=t,F):f},F.setDetailsElement=function(t){return arguments.length?(p=t,F):p},F.details=F.setDetailsElement,F.selfValue=function(t){return arguments.length?(g=t,F):g},F.resetHeightOnZoom=function(t){return arguments.length?(v=t,F):v},F.scrollOnZoom=function(t){return arguments.length?(y=t,F):y},F.getName=function(t){return arguments.length?(b=t,F):b},F.getValue=function(t){return arguments.length?(x=t,F):x},F.getChildren=function(t){return arguments.length?(M=t,F):M},F.getLibtype=function(t){return arguments.length?(A=t,F):A},F.getDelta=function(t){return arguments.length?(N=t,F):N},F.setSearchHandler=function(t){return arguments.length?(k=t,F):(k=E,F)},F.setDetailsHandler=function(t){return arguments.length?(j=t,F):(j=q,F)},F.setSearchMatch=function(t){return arguments.length?(S=t,F):(S=C,F)},F}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof yr?(n=t._id,t=t._name):(n=mr(),(e=_r).time=Me(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)(u=a[s])&&Pe(u,t,n,s,a,e||br(u,n));return new yr(r,this._parents,t,n)},n=n.default})()}));
+</script>
+    <script>
+!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():(t.flamegraph=t.flamegraph||{},t.flamegraph.tooltip=n())}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function s(t){return function(n){return n.matches(t)}}t.r(n),t.d(n,{defaultFlamegraphTooltip:()=>Ae});var l=Array.prototype.find;function c(){return this.firstElementChild}var f=Array.prototype.filter;function h(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function y(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,s=n.length,l=o.length;a<l;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<s;++a)(u=n[a])&&(i[a]=u)}function g(t,n,e,r,i,o,u){var a,s,l,c=new Map,f=n.length,h=o.length,p=new Array(f);for(a=0;a<f;++a)(s=n[a])&&(p[a]=l=u.call(s,s.__data__,a,n)+"",c.has(l)?i[a]=s:c.set(l,s));for(a=0;a<h;++a)l=u.call(t,o[a],a,o)+"",(s=c.get(l))?(r[a]=s,s.__data__=o[a],c.delete(l)):e[a]=new d(t,o[a]);for(a=0;a<f;++a)(s=n[a])&&c.get(p[a])===s&&(i[a]=s)}function _(t){return t.__data__}function m(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function w(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function A(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function N(t){return function(){this.removeAttribute(t)}}function k(t){return function(){this.removeAttributeNS(t.space,t.local)}}function M(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function P(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function O(t){return function(){this.style.removeProperty(t)}}function q(t,n,e){return function(){this.style.setProperty(t,n,e)}}function j(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function T(t,n){return t.style.getPropertyValue(n)||P(t).getComputedStyle(t,null).getPropertyValue(n)}function X(t){return function(){delete this[t]}}function R(t,n){return function(){this[t]=n}}function I(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function L(t){return t.trim().split(/^|\s+/)}function D(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=L(t.getAttribute("class")||"")}function Y(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function B(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){Y(this,t)}}function V(t){return function(){B(this,t)}}function z(t,n){return function(){(n.apply(this,arguments)?Y:B)(this,t)}}function U(){this.textContent=""}function F(t){return function(){this.textContent=t}}function K(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function W(){this.innerHTML=""}function G(t){return function(){this.innerHTML=t}}function J(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Q(){this.nextSibling&&this.parentNode.appendChild(this)}function Z(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=A(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function st(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function lt(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=P(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ft(t,n){return function(){return ct(this,t,n)}}function ht(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}H.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var pt=[null];function dt(t,n){this._groups=t,this._parents=n}function yt(){return new dt([[document.documentElement]],pt)}dt.prototype=yt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,s=n[o],l=s.length,c=i[o]=new Array(l),f=0;f<l;++f)(u=s[f])&&(a=t.call(u,u.__data__,f,s))&&("__data__"in u&&(a.__data__=u.__data__),c[f]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var s,l=n[a],c=l.length,f=0;f<c;++f)(s=l[f])&&(r.push(t.call(s,s.__data__,f,l)),o.push(s));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return l.call(this.children,t)}}("function"==typeof t?t:s(t)))},selectChildren:function(t){return this.selectAll(null==t?h:function(t){return function(){return f.call(this.children,t)}}("function"==typeof t?t:s(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,_);var e=n?g:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=y(t));for(var o=i.length,u=new Array(o),a=new Array(o),s=new Array(o),l=0;l<o;++l){var c=r[l],f=i[l],h=f.length,p=m(t.call(c,c&&c.__data__,l,r)),d=p.length,w=a[l]=new Array(d),b=u[l]=new Array(d),x=s[l]=new Array(h);e(c,f,w,b,x,p,n);for(var A,N,k=0,M=0;k<d;++k)if(A=w[k]){for(k>=M&&(M=k+1);!(N=b[M])&&++M<d;);A._next=N||null}}return(u=new dt(u,r))._enter=a,u._exit=s,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),s=0;s<u;++s)for(var l,c=e[s],f=r[s],h=c.length,p=a[s]=new Array(h),d=0;d<h;++d)(l=c[d]||f[d])&&(p[d]=l);for(;s<i;++s)a[s]=e[s];return new dt(a,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=w);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],s=a.length,l=i[o]=new Array(s),c=0;c<s;++c)(u=a[c])&&(l[c]=u);l.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=A(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?k:N:"function"==typeof n?e.local?C:S:e.local?E:M)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?O:"function"==typeof n?j:q)(t,n,null==e?"":e)):T(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?X:"function"==typeof n?I:R)(t,n)):this.node()[t]},classed:function(t,n){var e=L(t+"");if(arguments.length<2){for(var r=D(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?z:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?U:("function"==typeof t?K:F)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?W:("function"==typeof t?J:G)(t)):this.node().innerHTML},raise:function(){return this.each(Q)},lower:function(){return this.each(Z)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?lt:st,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var s,l=0,c=a.length;l<c;++l)for(r=0,s=a[l];r<u;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,n){return this.each(("function"==typeof n?ht:ft)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=yt;var gt={value:()=>{}};function _t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new mt(r)}function mt(t){this._=t}function wt(t,n){return t.trim().split(/^|\s+/).map((function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function bt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function xt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=gt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}mt.prototype=_t.prototype={constructor:mt,on:function(t,n){var e,r=this._,i=wt(t+"",r),o=-1,u=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=xt(r[e],t.name,n);else if(null==n)for(e in r)r[e]=xt(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=bt(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new mt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};const At=_t;var Nt,kt,Mt=0,Et=0,St=0,Ct=0,Pt=0,Ot=0,qt="object"==typeof performance&&performance.now?performance:Date,jt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Tt(){return Pt||(jt(Xt),Pt=qt.now()+Ot)}function Xt(){Pt=0}function Rt(){this._call=this._time=this._next=null}function It(t,n,e){var r=new Rt;return r.restart(t,n,e),r}function Lt(){Pt=(Ct=qt.now())+Ot,Mt=Et=0;try{!function(){Tt(),++Mt;for(var t,n=Nt;n;)(t=Pt-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Mt}()}finally{Mt=0,function(){var t,n,e=Nt,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Nt=n);kt=t,Ht(r)}(),Pt=0}}function Dt(){var t=qt.now(),n=t-Ct;n>1e3&&(Ot-=n,Ct=t)}function Ht(t){Mt||(Et&&(Et=clearTimeout(Et)),t-Pt>24?(t<1/0&&(Et=setTimeout(Lt,t-qt.now()-Ot)),St&&(St=clearInterval(St))):(St||(Ct=qt.now(),St=setInterval(Dt,1e3)),Mt=1,jt(Lt)))}function Yt(t,n,e){var r=new Rt;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Rt.prototype=It.prototype={constructor:Rt,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Tt():+e)+(null==n?0:+n),this._next||kt===this||(kt?kt._next=this:Nt=this,kt=this),this._call=t,this._time=e,Ht()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ht())}};var Bt=At("start","end","cancel","interrupt"),$t=[];function Vt(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var l,c,f,h;if(1!==e.state)return s();for(l in i)if((h=i[l]).name===e.name){if(3===h.state)return Yt(u);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[l]):+l<n&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[l])}if(Yt((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(f=e.tween.length),l=0,c=-1;l<f;++l)(h=e.tween[l].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=h);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(s),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),s())}function s(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=It(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Bt,tween:$t,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function zt(t,n){var e=Ft(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Ut(t,n){var e=Ft(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Ft(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Kt(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var Wt,Gt=180/Math.PI,Jt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qt(t,n,e,r,i,o){var u,a,s;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,s/=a),t*r<n*e&&(t=-t,n=-n,s=-s,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Gt,skewX:Math.atan(s)*Gt,scaleX:u,scaleY:a}}function Zt(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],s=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var s=u.push("translate(",null,n,null,e);a.push({i:s-4,x:Kt(t,i)},{i:s-2,x:Kt(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,s),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Kt(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,s),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Kt(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,s),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Kt(t,e)},{i:a-2,x:Kt(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,s),o=u=null,function(t){for(var n,e=-1,r=s.length;++e<r;)a[(n=s[e]).i]=n.x(t);return a.join("")}}}var tn=Zt((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Jt:Qt(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),nn=Zt((function(t){return null==t?Jt:(Wt||(Wt=document.createElementNS("http://www.w3.org/2000/svg","g")),Wt.setAttribute("transform",t),(t=Wt.transform.baseVal.consolidate())?Qt((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Jt)}),", ",")",")");function en(t,n){var e,r;return function(){var i=Ut(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}function rn(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Ut(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=a;break}s===l&&i.push(a)}o.tween=i}}function on(t,n,e){var r=t._id;return t.each((function(){var t=Ut(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Ft(t,r).value[n]}}function un(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function an(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function sn(){}var ln=.7,cn=1/ln,fn="\\s*([+-]?\\d+)\\s*",hn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",pn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",dn=/^#([0-9a-f]{3,8})$/,yn=new RegExp("^rgb\\("+[fn,fn,fn]+"\\)$"),vn=new RegExp("^rgb\\("+[pn,pn,pn]+"\\)$"),gn=new RegExp("^rgba\\("+[fn,fn,fn,hn]+"\\)$"),_n=new RegExp("^rgba\\("+[pn,pn,pn,hn]+"\\)$"),mn=new RegExp("^hsl\\("+[hn,pn,pn]+"\\)$"),wn=new RegExp("^hsla\\("+[hn,pn,pn,hn]+"\\)$"),bn={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};function xn(){return this.rgb().formatHex()}function An(){return this.rgb().formatRgb()}function Nn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=dn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?kn(n):3===e?new Cn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=yn.exec(t))?new Cn(n[1],n[2],n[3],1):(n=vn.exec(t))?new Cn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=gn.exec(t))?Mn(n[1],n[2],n[3],n[4]):(n=_n.exec(t))?Mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mn.exec(t))?jn(n[1],n[2]/100,n[3]/100,1):(n=wn.exec(t))?jn(n[1],n[2]/100,n[3]/100,n[4]):bn.hasOwnProperty(t)?kn(bn[t]):"transparent"===t?new Cn(NaN,NaN,NaN,0):null}function kn(t){return new Cn(t>>16&255,t>>8&255,255&t,1)}function Mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new Cn(t,n,e,r)}function En(t){return t instanceof sn||(t=Nn(t)),t?new Cn((t=t.rgb()).r,t.g,t.b,t.opacity):new Cn}function Sn(t,n,e,r){return 1===arguments.length?En(t):new Cn(t,n,e,null==r?1:r)}function Cn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Pn(){return"#"+qn(this.r)+qn(this.g)+qn(this.b)}function On(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"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))+(1===t?")":", "+t+")")}function qn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function jn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xn(t,n,e,r)}function Tn(t){if(t instanceof Xn)return new Xn(t.h,t.s,t.l,t.opacity);if(t instanceof sn||(t=Nn(t)),!t)return new Xn;if(t instanceof Xn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,s=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=s<.5?o+i:2-o-i,u*=60):a=s>0&&s<1?0:u,new Xn(u,a,s,t.opacity)}function Xn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Rn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function In(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}un(sn,Nn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:xn,formatHex:xn,formatHsl:function(){return Tn(this).formatHsl()},formatRgb:An,toString:An}),un(Cn,Sn,an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Cn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Cn(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:Pn,formatHex:Pn,formatRgb:On,toString:On})),un(Xn,(function(t,n,e,r){return 1===arguments.length?Tn(t):new Xn(t,n,e,null==r?1:r)}),an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Cn(Rn(t>=240?t-240:t+120,i,r),Rn(t,i,r),Rn(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(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ln=t=>()=>t;function Dn(t,n){return function(e){return t+e*n}}function Hn(t){return 1==(t=+t)?Yn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Ln(isNaN(n)?e:n)}}function Yn(t,n){var e=n-t;return e?Dn(t,e):Ln(isNaN(t)?n:t)}const Bn=function t(n){var e=Hn(n);function r(t,n){var r=e((t=Sn(t)).r,(n=Sn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Yn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function $n(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=Sn(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}$n((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return In((e-r/n)*n,u,i,o,a)}})),$n((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return In((e-r/n)*n,i,o,u,a)}}));var Vn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,zn=new RegExp(Vn.source,"g");function Un(t,n){var e,r,i,o=Vn.lastIndex=zn.lastIndex=0,u=-1,a=[],s=[];for(t+="",n+="";(e=Vn.exec(t))&&(r=zn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,s.push({i:u,x:Kt(e,r)})),o=zn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?s[0]?function(t){return function(n){return t(n)+""}}(s[0].x):function(t){return function(){return t}}(n):(n=s.length,function(t){for(var e,r=0;r<n;++r)a[(e=s[r]).i]=e.x(t);return a.join("")})}function Fn(t,n){var e;return("number"==typeof n?Kt:n instanceof Nn?Bn:(e=Nn(n))?(n=e,Bn):Un)(t,n)}function Kn(t){return function(){this.removeAttribute(t)}}function Wn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Gn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function Jn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Qn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttribute(t))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttribute(t)}}function Zn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttributeNS(t.space,t.local))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttributeNS(t.space,t.local)}}function te(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function ne(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function ee(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&ne(t,i)),e}return i._value=n,i}function re(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&te(t,i)),e}return i._value=n,i}function ie(t,n){return function(){zt(this,t).delay=+n.apply(this,arguments)}}function oe(t,n){return n=+n,function(){zt(this,t).delay=n}}function ue(t,n){return function(){Ut(this,t).duration=+n.apply(this,arguments)}}function ae(t,n){return n=+n,function(){Ut(this,t).duration=n}}function se(t,n){if("function"!=typeof n)throw new Error;return function(){Ut(this,t).ease=n}}function le(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?zt:Ut;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var ce=vt.prototype.constructor;function fe(t){return function(){this.style.removeProperty(t)}}function he(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pe(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&he(t,o,e)),r}return o._value=n,o}function de(t){return function(n){this.textContent=t.call(this,n)}}function ye(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&de(r)),n}return r._value=t,r}var ve=0;function ge(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function _e(){return++ve}var me=vt.prototype;ge.prototype=function(t){return vt().transition(t)}.prototype={constructor:ge,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var s,l,c=i[a],f=c.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=c[p])&&(l=t.call(s,s.__data__,p,c))&&("__data__"in s&&(l.__data__=s.__data__),h[p]=l,Vt(h[p],n,e,p,h,Ft(s,e)));return new ge(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],s=0;s<i;++s)for(var l,c=r[s],f=c.length,h=0;h<f;++h)if(l=c[h]){for(var p,d=t.call(l,l.__data__,h,c),y=Ft(l,e),v=0,g=d.length;v<g;++v)(p=d[v])&&Vt(p,n,e,v,d,y);o.push(d),a.push(l)}return new ge(o,a,n,e)},selectChild:me.selectChild,selectChildren:me.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new ge(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var s,l=n[a],c=e[a],f=l.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=l[p]||c[p])&&(h[p]=s);for(;a<r;++a)u[a]=n[a];return new ge(u,this._parents,this._name,this._id)},selection:function(){return new ce(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=_e(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)if(u=a[l]){var c=Ft(u,n);Vt(u,t,e,l,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new ge(r,this._parents,t,e)},call:me.call,nodes:me.nodes,node:me.node,size:me.size,empty:me.empty,each:me.each,on:function(t,n){var e=this._id;return arguments.length<2?Ft(this.node(),e).on.on(t):this.each(le(e,t,n))},attr:function(t,n){var e=A(t),r="transform"===e?nn:Fn;return this.attrTween(t,"function"==typeof n?(e.local?Zn:Qn)(e,r,on(this,"attr."+t,n)):null==n?(e.local?Wn:Kn)(e):(e.local?Jn:Gn)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=A(t);return this.tween(e,(r.local?ee:re)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?tn:Fn;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=T(this,t),u=(this.style.removeProperty(t),T(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,fe(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=T(this,t),a=e(this),s=a+"";return null==a&&(this.style.removeProperty(t),s=a=T(this,t)),u===s?null:u===r&&s===i?o:(i=s,o=n(r=u,a))}}(t,r,on(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var s=Ut(this,t),l=s.on,c=null==s.value[u]?o||(o=fe(n)):void 0;l===e&&i===c||(r=(e=l).copy()).on(a,i=c),s.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=T(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,pe(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(on(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,ye(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Ft(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?en:rn)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ie:oe)(n,t)):Ft(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ue:ae)(n,t)):Ft(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(se(n,t)):Ft(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Ut(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},s={value:function(){0==--i&&o()}};e.each((function(){var e=Ut(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(s)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:me[Symbol.iterator]};var we={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function be(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xe(t){return t.data.name}function Ae(){var t=function(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}("body"),n=null,e=xe,r=xe,i=!1;function o(){n=t.append("div").style("display","none").style("position","absolute").style("opacity",0).style("pointer-events","none").attr("class","d3-flame-graph-tip")}return o.show=function(t){return n.style("display","block").style("left",event.pageX+5+"px").style("top",event.pageY+5+"px").transition().duration(200).style("opacity",1).style("pointer-events","all"),i?n.html(e(t)):n.text(r(t)),o},o.hide=function(){return n.style("display","none").transition().duration(200).style("opacity",0).style("pointer-events","none"),o},o.text=function(t){return arguments.length?(r=t,i=!1,o):r},o.html=function(t){return arguments.length?(e=t,i=!0,o):e},o.destroy=function(){n.remove()},o}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof ge?(n=t._id,t=t._name):(n=_e(),(e=we).time=Tt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)(u=a[l])&&Vt(u,t,n,l,a,e||be(u,n));return new ge(r,this._parents,t,n)},n})()}));
+</script>
+    <style>
+/* ==========================================================================
+   Python Profiler - Shared CSS Foundation
+   Design system shared between Flamegraph and Heatmap viewers
+   ========================================================================== */
+
+/* --------------------------------------------------------------------------
+   CSS Variables & Theme System
+   -------------------------------------------------------------------------- */
+
+:root {
+  /* Typography */
+  --font-sans: "Source Sans Pro", "Lucida Grande", "Lucida Sans Unicode",
+               "Geneva", "Verdana", sans-serif;
+  --font-mono: 'SF Mono', 'Monaco', 'Consolas', 'Liberation Mono', monospace;
+
+  /* Python brand colors (theme-independent) */
+  --python-blue: #3776ab;
+  --python-blue-light: #4584bb;
+  --python-blue-lighter: #5592cc;
+  --python-gold: #ffd43b;
+  --python-gold-dark: #ffcd02;
+  --python-gold-light: #ffdc5c;
+
+  /* Heat palette - defined per theme below */
+
+  /* Layout */
+  --sidebar-width: 280px;
+  --sidebar-collapsed: 44px;
+  --topbar-height: 56px;
+  --statusbar-height: 32px;
+
+  /* Border radius */
+  --radius-sm: 4px;
+  --radius-md: 8px;
+  --radius-lg: 12px;
+
+  /* Transitions */
+  --transition-fast: 0.15s ease;
+  --transition-normal: 0.25s ease;
+  --transition-slow: 0.3s ease;
+}
+
+/* Light theme (default) */
+:root, [data-theme="light"] {
+  --bg-primary: #ffffff;
+  --bg-secondary: #f8f9fa;
+  --bg-tertiary: #e9ecef;
+  --border: #e9ecef;
+  --border-subtle: #f0f2f5;
+
+  --text-primary: #2e3338;
+  --text-secondary: #5a6c7d;
+  --text-muted: #6f767e;
+
+  --accent: #3776ab;
+  --accent-hover: #2d5aa0;
+  --accent-glow: rgba(55, 118, 171, 0.15);
+
+  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
+  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
+  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
+
+  --header-gradient: linear-gradient(135deg, #3776ab 0%, #4584bb 100%);
+
+  /* Light mode heat palette - blue to yellow to orange to red (cold to hot) */
+  --heat-1: #7ba3d1;
+  --heat-2: #a8d0ef;
+  --heat-3: #d6e9f8;
+  --heat-4: #ffe6a8;
+  --heat-5: #ffd43b;
+  --heat-6: #ffb84d;
+  --heat-7: #ff9966;
+  --heat-8: #ff6347;
+
+  /* Code view specific */
+  --code-bg: #ffffff;
+  --code-bg-line: #f8f9fa;
+  --code-border: #e9ecef;
+  --code-text: #2e3338;
+  --code-text-muted: #8b949e;
+  --code-accent: #3776ab;
+
+  /* Navigation colors */
+  --nav-caller: #2563eb;
+  --nav-caller-hover: #1d4ed8;
+  --nav-callee: #dc2626;
+  --nav-callee-hover: #b91c1c;
+
+  /* Specialization status colors */
+  --spec-high: #4caf50;
+  --spec-high-text: #2e7d32;
+  --spec-high-bg: rgba(76, 175, 80, 0.15);
+  --spec-medium: #ff9800;
+  --spec-medium-text: #e65100;
+  --spec-medium-bg: rgba(255, 152, 0, 0.15);
+  --spec-low: #9e9e9e;
+  --spec-low-text: #616161;
+  --spec-low-bg: rgba(158, 158, 158, 0.15);
+
+  /* Heatmap span highlighting colors */
+  --span-hot-base: 255, 100, 50;
+  --span-cold-base: 150, 150, 150;
+}
+
+/* Dark theme */
+[data-theme="dark"] {
+  --bg-primary: #0d1117;
+  --bg-secondary: #161b22;
+  --bg-tertiary: #21262d;
+  --border: #30363d;
+  --border-subtle: #21262d;
+
+  --text-primary: #e6edf3;
+  --text-secondary: #8b949e;
+  --text-muted: #757e8a;
+
+  --accent: #58a6ff;
+  --accent-hover: #79b8ff;
+  --accent-glow: rgba(88, 166, 255, 0.15);
+
+  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
+  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
+  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
+
+  --header-gradient: linear-gradient(135deg, #21262d 0%, #30363d 100%);
+
+  /* Dark mode heat palette - muted colors that provide sufficient contrast with light text */
+  --heat-1: rgba(74, 123, 167, 0.35);
+  --heat-2: rgba(90, 159, 168, 0.38);
+  --heat-3: rgba(106, 181, 181, 0.40);
+  --heat-4: rgba(126, 196, 136, 0.42);
+  --heat-5: rgba(160, 216, 120, 0.45);
+  --heat-6: rgba(196, 222, 106, 0.48);
+  --heat-7: rgba(244, 212, 77, 0.50);
+  --heat-8: rgba(255, 107, 53, 0.55);
+
+  /* Code view specific - dark mode */
+  --code-bg: #0d1117;
+  --code-bg-line: #161b22;
+  --code-border: #30363d;
+  --code-text: #e6edf3;
+  --code-text-muted: #6e7681;
+  --code-accent: #58a6ff;
+
+  /* Navigation colors - dark theme friendly */
+  --nav-caller: #58a6ff;
+  --nav-caller-hover: #4184e4;
+  --nav-callee: #f87171;
+  --nav-callee-hover: #e53e3e;
+
+  /* Specialization status colors - dark theme */
+  --spec-high: #81c784;
+  --spec-high-text: #81c784;
+  --spec-high-bg: rgba(129, 199, 132, 0.2);
+  --spec-medium: #ffb74d;
+  --spec-medium-text: #ffb74d;
+  --spec-medium-bg: rgba(255, 183, 77, 0.2);
+  --spec-low: #bdbdbd;
+  --spec-low-text: #9e9e9e;
+  --spec-low-bg: rgba(189, 189, 189, 0.15);
+
+  /* Heatmap span highlighting colors - dark theme */
+  --span-hot-base: 255, 107, 53;
+  --span-cold-base: 189, 189, 189;
+}
+
+/* --------------------------------------------------------------------------
+   Base Styles
+   -------------------------------------------------------------------------- */
+
+*, *::before, *::after {
+  box-sizing: border-box;
+}
+
+html, body {
+  margin: 0;
+  padding: 0;
+}
+
+body {
+  font-family: var(--font-sans);
+  font-size: 14px;
+  line-height: 1.6;
+  color: var(--text-primary);
+  background: var(--bg-primary);
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  transition: background var(--transition-normal), color var(--transition-normal);
+}
+
+/* --------------------------------------------------------------------------
+   Layout Structure
+   -------------------------------------------------------------------------- */
+
+.app-layout {
+  display: flex;
+  flex-direction: column;
+}
+
+/* --------------------------------------------------------------------------
+   Top Bar
+   -------------------------------------------------------------------------- */
+
+.top-bar {
+  height: var(--topbar-height);
+  background: var(--header-gradient);
+  display: flex;
+  align-items: center;
+  padding: 0 16px;
+  gap: 16px;
+  flex-shrink: 0;
+  box-shadow: 0 2px 10px rgba(55, 118, 171, 0.25);
+  border-bottom: 2px solid var(--python-gold);
+}
+
+/* Brand / Logo */
+.brand {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  color: white;
+  text-decoration: none;
+  flex-shrink: 0;
+}
+
+.brand-logo {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 48px;
+  height: 40px;
+  flex-shrink: 0;
+}
+
+/* Style the inlined SVG/img inside brand-logo */
+.brand-logo svg,
+.brand-logo img {
+  width: 48px;
+  height: 40px;
+  display: block;
+  object-fit: contain;
+  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
+}
+
+.brand-info {
+  display: flex;
+  flex-direction: column;
+  line-height: 1.15;
+}
+
+.brand-text {
+  font-family: var(--font-sans);
+  font-weight: 700;
+  font-size: 16px;
+  letter-spacing: -0.3px;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
+  color: inherit;
+  text-decoration: none;
+}
+
+.brand-subtitle {
+  font-weight: 500;
+  font-size: 10px;
+  opacity: 0.9;
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+}
+
+.brand-divider {
+  width: 1px;
+  height: 16px;
+  background: rgba(255, 255, 255, 0.3);
+}
+
+/* Toolbar */
+.toolbar {
+  display: flex;
+  align-items: center;
+  gap: 6px;
+  margin-left: auto;
+}
+
+.toolbar-btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 32px;
+  height: 32px;
+  padding: 0;
+  font-size: 15px;
+  color: white;
+  background: rgba(255, 255, 255, 0.12);
+  border: 1px solid rgba(255, 255, 255, 0.18);
+  border-radius: 6px;
+  cursor: pointer;
+  text-decoration: none;
+  transition: all var(--transition-fast);
+}
+
+.toolbar-btn:hover {
+  background: rgba(255, 255, 255, 0.22);
+  border-color: rgba(255, 255, 255, 0.35);
+}
+
+.toolbar-btn:active {
+  transform: scale(0.95);
+}
+
+/* --------------------------------------------------------------------------
+   Status Bar
+   -------------------------------------------------------------------------- */
+
+.status-bar {
+  height: var(--statusbar-height);
+  background: var(--bg-secondary);
+  border-top: 1px solid var(--border);
+  display: flex;
+  align-items: center;
+  padding: 0 16px;
+  gap: 16px;
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-secondary);
+  flex-shrink: 0;
+}
+
+.status-item {
+  display: flex;
+  align-items: center;
+  gap: 5px;
+}
+
+.status-item::before {
+  content: '';
+  width: 4px;
+  height: 4px;
+  background: var(--python-gold);
+  border-radius: 50%;
+}
+
+.status-item:first-child::before {
+  display: none;
+}
+
+.status-label {
+  color: var(--text-muted);
+}
+
+.status-value {
+  color: var(--text-primary);
+  font-weight: 500;
+}
+
+.status-value.accent {
+  color: var(--accent);
+  font-weight: 600;
+}
+
+/* --------------------------------------------------------------------------
+   Animations
+   -------------------------------------------------------------------------- */
+
+@keyframes fadeIn {
+  from { opacity: 0; }
+  to { opacity: 1; }
+}
+
+@keyframes slideUp {
+  from {
+    opacity: 0;
+    transform: translateY(12px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+@keyframes shimmer {
+  0% { left: -100%; }
+  100% { left: 100%; }
+}
+
+/* --------------------------------------------------------------------------
+   Focus States (Accessibility)
+   -------------------------------------------------------------------------- */
+
+button:focus-visible,
+select:focus-visible,
+input:focus-visible,
+.toggle-switch:focus-visible,
+a.toolbar-btn:focus-visible {
+  outline: 2px solid var(--python-gold);
+  outline-offset: 2px;
+}
+
+/* --------------------------------------------------------------------------
+   Shared Responsive
+   -------------------------------------------------------------------------- */
+
+@media (max-width: 900px) {
+  .brand-subtitle {
+    display: none;
+  }
+}
+
+@media (max-width: 600px) {
+  .toolbar-btn:not(.theme-toggle) {
+    display: none;
+  }
+}
+
+/* --------------------------------------------------------------------------
+   Toggle Switch
+   -------------------------------------------------------------------------- */
+
+.toggle-switch {
+  display: inline-flex;
+  align-items: center;
+  gap: 8px;
+  cursor: pointer;
+  user-select: none;
+  font-family: var(--font-sans);
+  transition: opacity var(--transition-fast);
+  flex-shrink: 0;
+}
+
+.toggle-switch:hover {
+  opacity: 0.85;
+}
+
+.toggle-switch .toggle-label {
+  font-size: 11px;
+  font-weight: 500;
+  color: var(--text-muted);
+  transition: color var(--transition-fast);
+  white-space: nowrap;
+  display: inline-flex;
+  flex-direction: column;
+}
+
+.toggle-switch .toggle-label.active {
+  color: var(--text-primary);
+  font-weight: 600;
+}
+
+/* Reserve space for bold text to prevent layout shift on toggle */
+.toggle-switch .toggle-label::after {
+  content: attr(data-text);
+  font-weight: 600;
+  height: 0;
+  visibility: hidden;
+}
+
+.toggle-switch.disabled {
+  opacity: 0.4;
+  pointer-events: none;
+  cursor: not-allowed;
+}
+
+.toggle-track {
+  position: relative;
+  width: 36px;
+  height: 20px;
+  background: var(--bg-tertiary);
+  border: 2px solid var(--border);
+  border-radius: 12px;
+  transition: all var(--transition-fast);
+  box-shadow: inset var(--shadow-sm);
+}
+
+.toggle-track:hover {
+  border-color: var(--text-muted);
+}
+
+.toggle-track.on {
+  background: var(--accent);
+  border-color: var(--accent);
+  box-shadow: 0 0 8px var(--accent-glow);
+}
+
+.toggle-track::after {
+  content: '';
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  width: 14px;
+  height: 14px;
+  background: white;
+  border-radius: 50%;
+  box-shadow: var(--shadow-sm);
+  transition: all var(--transition-fast);
+}
+
+.toggle-track.on::after {
+  transform: translateX(16px);
+  box-shadow: var(--shadow-md);
+}
+
+
+/* ==========================================================================
+   Flamegraph Viewer - Component-Specific CSS
+
+   DEPENDENCY: Requires _shared_assets/base.css to be loaded first
+   This file extends the shared foundation with flamegraph-specific styles.
+   ========================================================================== */
+
+/* --------------------------------------------------------------------------
+   Layout Overrides (Flamegraph-specific)
+   -------------------------------------------------------------------------- */
+
+html, body {
+  height: 100%;
+  overflow: hidden;
+}
+
+.app-layout {
+  height: 100vh;
+}
+
+.main-content {
+  display: flex;
+  flex: 1;
+  min-height: 0;
+}
+
+/* --------------------------------------------------------------------------
+   Search Input (Flamegraph-specific)
+   -------------------------------------------------------------------------- */
+
+.search-wrapper {
+  flex: 1;
+  max-width: 360px;
+  position: relative;
+}
+
+.search-input {
+  width: 100%;
+  padding: 8px 36px 8px 14px;
+  font-family: var(--font-sans);
+  font-size: 13px;
+  color: #2e3338;
+  background: rgba(255, 255, 255, 0.95);
+  border: 2px solid rgba(255, 255, 255, 0.3);
+  border-radius: 20px;
+  outline: none;
+  transition: all var(--transition-fast);
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+}
+
+.search-input::placeholder {
+  color: #6c757d;
+}
+
+.search-input:focus {
+  border-color: rgba(255, 255, 255, 0.8);
+  background: white;
+  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
+}
+
+/* Dark theme search input */
+[data-theme="dark"] .search-input {
+  color: #e6edf3;
+  background: rgba(33, 38, 45, 0.95);
+  border: 2px solid rgba(88, 166, 255, 0.3);
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
+}
+
+[data-theme="dark"] .search-input::placeholder {
+  color: #8b949e;
+}
+
+[data-theme="dark"] .search-input:focus {
+  border-color: rgba(88, 166, 255, 0.6);
+  background: rgba(33, 38, 45, 1);
+  box-shadow: 0 4px 16px rgba(88, 166, 255, 0.2);
+}
+
+.search-input.has-matches {
+  border-color: rgba(40, 167, 69, 0.8);
+  box-shadow: 0 4px 16px rgba(40, 167, 69, 0.2);
+}
+
+.search-input.no-matches {
+  border-color: rgba(220, 53, 69, 0.8);
+  box-shadow: 0 4px 16px rgba(220, 53, 69, 0.2);
+}
+
+.search-clear {
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 20px;
+  height: 20px;
+  padding: 0;
+  display: none;
+  align-items: center;
+  justify-content: center;
+  font-size: 14px;
+  line-height: 1;
+  color: #6c757d;
+  background: transparent;
+  border: none;
+  border-radius: 50%;
+  cursor: pointer;
+  transition: color var(--transition-fast);
+}
+
+.search-clear:hover {
+  color: #2e3338;
+}
+
+[data-theme="dark"] .search-clear {
+  color: #8b949e;
+}
+
+[data-theme="dark"] .search-clear:hover {
+  color: #e6edf3;
+}
+
+.search-wrapper.has-value .search-clear {
+  display: flex;
+}
+
+/* --------------------------------------------------------------------------
+   Sidebar
+   -------------------------------------------------------------------------- */
+
+.sidebar {
+  width: var(--sidebar-width);
+  background: var(--bg-secondary);
+  border-right: 1px solid var(--border);
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  overflow: hidden;
+  position: relative;
+}
+
+.sidebar.collapsed {
+  width: var(--sidebar-collapsed) !important;
+  transition: width var(--transition-normal);
+}
+
+.sidebar-toggle {
+  position: absolute;
+  top: 12px;
+  right: 10px;
+  width: 26px;
+  height: 26px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: var(--text-muted);
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  cursor: pointer;
+  transition: all var(--transition-fast);
+  z-index: 10;
+}
+
+.sidebar-toggle svg {
+  transition: transform var(--transition-fast);
+}
+
+.sidebar-toggle:hover {
+  color: var(--accent);
+  border-color: var(--accent);
+  background: var(--accent-glow);
+}
+
+.sidebar.collapsed .sidebar-toggle {
+  right: 9px;
+}
+
+.sidebar.collapsed .sidebar-toggle svg {
+  transform: rotate(180deg);
+}
+
+.sidebar-content {
+  flex: 1;
+  overflow-y: auto;
+  padding: 44px 14px 14px;
+}
+
+.sidebar.collapsed .sidebar-content {
+  display: none;
+}
+
+.sidebar-resize-handle {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 6px;
+  height: 100%;
+  cursor: col-resize;
+  background: transparent;
+  transition: background var(--transition-fast);
+  z-index: 11;
+}
+
+.sidebar-resize-handle:hover,
+.sidebar-resize-handle.resizing {
+  background: var(--python-gold);
+}
+
+.sidebar-resize-handle::before {
+  content: '';
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 2px;
+  height: 40px;
+  background: var(--border);
+  border-radius: 1px;
+  opacity: 0;
+  transition: opacity var(--transition-fast);
+}
+
+.sidebar-resize-handle:hover::before {
+  opacity: 1;
+}
+
+.sidebar.collapsed .sidebar-resize-handle {
+  display: none;
+}
+
+body.resizing-sidebar {
+  cursor: col-resize;
+  user-select: none;
+}
+
+/* Sidebar Logo */
+.sidebar-logo {
+  display: flex;
+  justify-content: center;
+  margin-bottom: 16px;
+}
+
+.sidebar-logo-img {
+  width: 220px;
+  height: 180px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.sidebar-logo-img svg,
+.sidebar-logo-img img {
+  width: 100%;
+  height: 100%;
+  object-fit: contain;
+}
+
+/* Sidebar sections */
+.sidebar-section {
+  margin-bottom: 20px;
+}
+
+.sidebar-section:last-child {
+  margin-bottom: 0;
+}
+
+.section-title {
+  font-size: 10px;
+  font-weight: 700;
+  text-transform: uppercase;
+  letter-spacing: 0.8px;
+  color: var(--accent);
+  margin: 0;
+  flex: 1;
+}
+
+/* View Mode Section */
+.view-mode-section .section-content {
+  display: flex;
+  justify-content: center;
+}
+
+/* Collapsible sections */
+.collapsible .section-header {
+  display: flex;
+  align-items: center;
+  width: 100%;
+  padding: 0 0 8px 0;
+  margin-bottom: 10px;
+  background: none;
+  border: none;
+  border-bottom: 2px solid var(--python-gold);
+  cursor: pointer;
+  transition: all var(--transition-fast);
+}
+
+.collapsible .section-header:hover {
+  opacity: 0.8;
+}
+
+.section-chevron {
+  color: var(--text-muted);
+  transition: transform var(--transition-fast);
+}
+
+.collapsible.collapsed .section-chevron {
+  transform: rotate(-90deg);
+}
+
+.section-content {
+  transition: max-height var(--transition-slow) ease-out, opacity var(--transition-normal) ease-out, padding var(--transition-normal) ease-out;
+  max-height: 1000px;
+  opacity: 1;
+}
+
+.collapsible.collapsed .section-content {
+  max-height: 0;
+  opacity: 0;
+  padding-top: 0;
+  pointer-events: none;
+  transition: max-height var(--transition-slow) ease-in, opacity var(--transition-normal) ease-in, padding var(--transition-normal) ease-in;
+}
+
+/* --------------------------------------------------------------------------
+   Profile Summary Cards
+   -------------------------------------------------------------------------- */
+
+.summary-grid {
+  display: grid;
+  grid-template-columns: 1fr 1fr;
+  gap: 6px;
+}
+
+.summary-card {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 8px 10px;
+  background: var(--bg-primary);
+  border: 2px solid var(--border);
+  border-radius: 8px;
+  transition: all var(--transition-fast);
+  animation: slideUp 0.4s ease-out backwards;
+  animation-delay: calc(var(--i, 0) * 0.08s);
+  overflow: hidden;
+  position: relative;
+}
+
+.summary-card:nth-child(1) { --i: 0; --card-color: 55, 118, 171; }
+.summary-card:nth-child(2) { --i: 1; --card-color: 40, 167, 69; }
+.summary-card:nth-child(3) { --i: 2; --card-color: 255, 193, 7; }
+.summary-card:nth-child(4) { --i: 3; --card-color: 111, 66, 193; }
+
+.summary-card:hover {
+  border-color: rgba(var(--card-color), 0.6);
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.08) 0%, var(--bg-primary) 100%);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(var(--card-color), 0.15);
+}
+
+.summary-icon {
+  font-size: 14px;
+  width: 28px;
+  height: 28px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.15) 0%, rgba(var(--card-color), 0.05) 100%);
+  border: 1px solid rgba(var(--card-color), 0.2);
+  border-radius: 6px;
+  flex-shrink: 0;
+  transition: all var(--transition-fast);
+}
+
+.summary-card:hover .summary-icon {
+  transform: scale(1.05);
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.25) 0%, rgba(var(--card-color), 0.1) 100%);
+}
+
+.summary-data {
+  min-width: 0;
+  flex: 1;
+  overflow: hidden;
+}
+
+.summary-value {
+  font-family: var(--font-mono);
+  font-size: 13px;
+  font-weight: 800;
+  color: rgb(var(--card-color));
+  line-height: 1.2;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.summary-label {
+  font-size: 8px;
+  font-weight: 600;
+  color: var(--text-muted);
+  text-transform: uppercase;
+  letter-spacing: 0.2px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+/* Efficiency Bar */
+.efficiency-section {
+  margin-top: 10px;
+  padding-top: 10px;
+  border-top: 1px solid var(--border);
+}
+
+.efficiency-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 5px;
+}
+
+.efficiency-label {
+  font-size: 9px;
+  font-weight: 600;
+  color: var(--text-secondary);
+  text-transform: uppercase;
+  letter-spacing: 0.2px;
+}
+
+.efficiency-value {
+  font-family: var(--font-mono);
+  font-size: 11px;
+  font-weight: 700;
+  color: var(--accent);
+}
+
+.efficiency-bar {
+  height: 6px;
+  background: var(--bg-tertiary);
+  border-radius: 3px;
+  overflow: hidden;
+}
+
+.efficiency-fill {
+  height: 100%;
+  background: linear-gradient(90deg, #28a745 0%, #20c997 50%, #17a2b8 100%);
+  border-radius: 3px;
+  transition: width 0.6s ease-out;
+  position: relative;
+  overflow: hidden;
+}
+
+.efficiency-fill::after {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(
+    90deg,
+    transparent 0%,
+    rgba(255, 255, 255, 0.4) 50%,
+    transparent 100%
+  );
+  animation: shimmer 2s ease-in-out infinite;
+}
+
+/* --------------------------------------------------------------------------
+   Thread Stats Grid (in Sidebar)
+   -------------------------------------------------------------------------- */
+
+.thread-stats-section {
+  display: block;
+}
+
+.stats-grid {
+  display: grid;
+  grid-template-columns: 1fr 1fr;
+  gap: 8px;
+}
+
+.stat-tile {
+  background: var(--bg-primary);
+  border-radius: 8px;
+  padding: 10px;
+  text-align: center;
+  border: 2px solid var(--border);
+  transition: all var(--transition-fast);
+  animation: fadeIn 0.4s ease-out backwards;
+  animation-delay: calc(var(--i, 0) * 0.05s);
+}
+
+.stat-tile:nth-child(1) { --i: 0; }
+.stat-tile:nth-child(2) { --i: 1; }
+.stat-tile:nth-child(3) { --i: 2; }
+.stat-tile:nth-child(4) { --i: 3; }
+
+.stat-tile:hover {
+  transform: translateY(-2px);
+  box-shadow: var(--shadow-sm);
+}
+
+.stat-tile-value {
+  font-family: var(--font-mono);
+  font-size: 16px;
+  font-weight: 700;
+  color: var(--text-primary);
+  line-height: 1.2;
+}
+
+.stat-tile-label {
+  font-size: 9px;
+  font-weight: 600;
+  text-transform: uppercase;
+  letter-spacing: 0.3px;
+  color: var(--text-muted);
+  margin-top: 2px;
+}
+
+/* Stat tile color variants */
+.stat-tile--green  { --tile-color: 40, 167, 69; --tile-text: #28a745; }
+.stat-tile--red    { --tile-color: 220, 53, 69; --tile-text: #dc3545; }
+.stat-tile--yellow { --tile-color: 255, 193, 7; --tile-text: #d39e00; }
+.stat-tile--purple { --tile-color: 111, 66, 193; --tile-text: #6f42c1; }
+
+.stat-tile[class*="--"] {
+  border-color: rgba(var(--tile-color), 0.4);
+  background: linear-gradient(135deg, rgba(var(--tile-color), 0.08) 0%, var(--bg-primary) 100%);
+}
+.stat-tile[class*="--"] .stat-tile-value { color: var(--tile-text); }
+
+/* --------------------------------------------------------------------------
+   Hotspot Cards
+   -------------------------------------------------------------------------- */
+
+.hotspot {
+  display: flex;
+  align-items: flex-start;
+  gap: 10px;
+  padding: 10px;
+  margin-bottom: 8px;
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 8px;
+  cursor: pointer;
+  transition: all var(--transition-fast);
+  opacity: 0;
+  transform: translateY(8px);
+  box-shadow: var(--shadow-sm);
+}
+
+.hotspot.visible {
+  opacity: 1;
+  transform: translateY(0);
+}
+
+.hotspot:hover {
+  border-color: var(--accent);
+  box-shadow: var(--shadow-md);
+  transform: translateY(-2px);
+}
+
+.hotspot.active {
+  border-color: var(--python-gold);
+  background: var(--accent-glow);
+  box-shadow: 0 0 0 3px var(--accent-glow);
+}
+
+.hotspot:last-child {
+  margin-bottom: 0;
+}
+
+.hotspot-rank {
+  width: 26px;
+  height: 26px;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: 700;
+  font-size: 12px;
+  flex-shrink: 0;
+  background: linear-gradient(135deg, var(--python-blue) 0%, var(--python-blue-light) 100%);
+  color: white;
+  box-shadow: 0 2px 4px rgba(55, 118, 171, 0.3);
+}
+
+.hotspot-rank--1 { background: linear-gradient(135deg, #d4af37, #f4d03f); color: #5a4a00; }
+.hotspot-rank--2 { background: linear-gradient(135deg, #a8a8a8, #c0c0c0); color: #4a4a4a; }
+.hotspot-rank--3 { background: linear-gradient(135deg, #cd7f32, #e6a55a); color: #5a3d00; }
+
+.hotspot-info {
+  flex: 1;
+  min-width: 0;
+}
+
+.hotspot-func {
+  font-family: var(--font-mono);
+  font-size: 11px;
+  font-weight: 600;
+  color: var(--text-primary);
+  line-height: 1.3;
+  word-break: break-word;
+  margin-bottom: 2px;
+}
+
+.hotspot-file {
+  font-family: var(--font-mono);
+  font-size: 10px;
+  color: var(--text-muted);
+  margin-bottom: 3px;
+  word-break: break-all;
+}
+
+.hotspot-stats {
+  font-family: var(--font-mono);
+  font-size: 10px;
+  color: var(--text-secondary);
+}
+
+.hotspot-percent {
+  color: var(--accent);
+  font-weight: 600;
+}
+
+/* --------------------------------------------------------------------------
+   Legend
+   -------------------------------------------------------------------------- */
+
+
+.legend {
+  display: flex;
+  flex-direction: column;
+  gap: 4px;
+}
+
+.legend-item {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 5px 8px;
+  background: var(--bg-primary);
+  border-radius: 4px;
+  border: 1px solid var(--border-subtle);
+  font-size: 11px;
+}
+
+.legend-color {
+  width: 20px;
+  height: 10px;
+  border-radius: 2px;
+  flex-shrink: 0;
+  border: 1px solid rgba(0, 0, 0, 0.08);
+}
+
+.legend-label {
+  color: var(--text-primary);
+  font-weight: 500;
+  flex: 1;
+}
+
+.legend-range {
+  font-family: var(--font-mono);
+  font-size: 9px;
+  color: var(--text-muted);
+}
+
+/* --------------------------------------------------------------------------
+   Thread Filter
+   -------------------------------------------------------------------------- */
+
+.filter-section {
+  padding-top: 12px;
+  border-top: 1px solid var(--border);
+}
+
+.filter-label {
+  display: block;
+  font-size: 10px;
+  font-weight: 600;
+  color: var(--text-muted);
+  margin-bottom: 6px;
+}
+
+.filter-select {
+  width: 100%;
+  padding: 7px 28px 7px 10px;
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-primary);
+  background: var(--bg-primary);
+  border: 2px solid var(--accent);
+  border-radius: 6px;
+  cursor: pointer;
+  outline: none;
+  appearance: none;
+  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233776ab' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: right 6px center;
+  background-size: 14px;
+  transition: all var(--transition-fast);
+}
+
+.filter-select:hover {
+  border-color: var(--accent-hover);
+  box-shadow: 0 2px 6px var(--accent-glow);
+}
+
+.filter-select:focus {
+  border-color: var(--accent);
+  box-shadow: 0 0 0 3px var(--accent-glow);
+}
+
+/* --------------------------------------------------------------------------
+   Chart Area
+   -------------------------------------------------------------------------- */
+
+.chart-area {
+  flex: 1;
+  min-width: 0;
+  overflow: hidden;
+  background: var(--bg-primary);
+  position: relative;
+}
+
+#chart {
+  width: 100%;
+  height: 100%;
+  padding: 16px;
+  overflow: auto;
+}
+
+/* D3 Flamegraph overrides */
+.d3-flame-graph rect {
+  stroke: rgba(55, 118, 171, 0.3);
+  stroke-width: 1px;
+  cursor: pointer;
+  transition: filter 0.1s ease;
+}
+
+.d3-flame-graph rect:hover {
+  stroke: var(--python-blue);
+  stroke-width: 2px;
+  filter: brightness(1.08);
+}
+
+.d3-flame-graph text {
+  font-family: var(--font-sans);
+  font-size: 12px;
+  font-weight: 500;
+  fill: var(--text-primary);
+  pointer-events: none;
+}
+
+/* Search highlight */
+.d3-flame-graph rect.search-match {
+  stroke: #ff6b35 !important;
+  stroke-width: 2px !important;
+  stroke-dasharray: 4 2;
+}
+
+.d3-flame-graph rect.search-dim {
+  opacity: 0.25;
+}
+
+/* --------------------------------------------------------------------------
+   Tooltip
+   -------------------------------------------------------------------------- */
+
+.python-tooltip {
+  position: absolute;
+  z-index: 1000;
+  pointer-events: none;
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 8px;
+  padding: 14px;
+  max-width: 480px;
+  box-shadow: var(--shadow-lg);
+  font-family: var(--font-sans);
+  font-size: 13px;
+  color: var(--text-primary);
+  word-wrap: break-word;
+  overflow-wrap: break-word;
+  line-height: 1.5;
+}
+
+.tooltip-header {
+  margin-bottom: 10px;
+}
+
+.tooltip-title {
+  font-size: 14px;
+  font-weight: 600;
+  color: var(--accent);
+  line-height: 1.3;
+  word-break: break-word;
+  margin-bottom: 4px;
+}
+
+.tooltip-location {
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-secondary);
+  background: var(--bg-tertiary);
+  padding: 4px 8px;
+  border-radius: 4px;
+  word-break: break-all;
+}
+
+.tooltip-stats {
+  display: grid;
+  grid-template-columns: auto 1fr;
+  gap: 4px 14px;
+  font-size: 12px;
+}
+
+.tooltip-stat-label {
+  color: var(--text-secondary);
+  font-weight: 500;
+}
+
+.tooltip-stat-value {
+  color: var(--text-primary);
+  font-weight: 600;
+}
+
+.tooltip-stat-value.accent {
+  color: var(--accent);
+}
+
+.tooltip-source {
+  margin-top: 10px;
+  padding-top: 10px;
+  border-top: 1px solid var(--border);
+}
+
+.tooltip-source-title {
+  font-size: 11px;
+  font-weight: 600;
+  color: var(--accent);
+  margin-bottom: 6px;
+}
+
+.tooltip-source-code {
+  font-family: var(--font-mono);
+  font-size: 10px;
+  line-height: 1.5;
+  background: var(--bg-tertiary);
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  padding: 8px;
+  max-height: 140px;
+  overflow-y: auto;
+  white-space: pre-wrap;
+  word-break: break-all;
+}
+
+.tooltip-source-line {
+  color: var(--text-secondary);
+  padding: 1px 0;
+}
+
+.tooltip-source-line.current {
+  color: var(--accent);
+  font-weight: 600;
+}
+
+.tooltip-hint {
+  margin-top: 10px;
+  padding-top: 8px;
+  border-top: 1px solid var(--border);
+  font-size: 11px;
+  color: var(--text-muted);
+  text-align: center;
+}
+
+/* --------------------------------------------------------------------------
+   Tooltip Bytecode/Opcode Section
+   -------------------------------------------------------------------------- */
+
+.tooltip-opcodes {
+  margin-top: 16px;
+  padding-top: 12px;
+  border-top: 1px solid var(--border);
+}
+
+.tooltip-opcodes-title {
+  color: var(--accent);
+  font-size: 13px;
+  margin-bottom: 8px;
+  font-weight: 600;
+}
+
+.tooltip-opcodes-list {
+  background: var(--bg-tertiary);
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  padding: 10px;
+}
+
+.tooltip-opcode-row {
+  display: grid;
+  grid-template-columns: 1fr 60px 60px;
+  gap: 8px;
+  align-items: center;
+  padding: 3px 0;
+}
+
+.tooltip-opcode-name {
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-primary);
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.tooltip-opcode-name.specialized {
+  color: var(--spec-high-text);
+}
+
+.tooltip-opcode-base-hint {
+  color: var(--text-muted);
+  font-size: 11px;
+  margin-left: 4px;
+}
+
+.tooltip-opcode-badge {
+  background: var(--spec-high);
+  color: white;
+  font-size: 9px;
+  padding: 1px 4px;
+  border-radius: 3px;
+  margin-left: 4px;
+}
+
+.tooltip-opcode-count {
+  text-align: right;
+  font-size: 11px;
+  color: var(--text-secondary);
+}
+
+.tooltip-opcode-bar {
+  background: var(--bg-secondary);
+  border-radius: 2px;
+  height: 8px;
+  overflow: hidden;
+}
+
+.tooltip-opcode-bar-fill {
+  background: linear-gradient(90deg, var(--python-blue), var(--python-blue-light));
+  height: 100%;
+}
+
+/* --------------------------------------------------------------------------
+   Responsive (Flamegraph-specific)
+   -------------------------------------------------------------------------- */
+
+@media (max-width: 900px) {
+  .sidebar {
+    position: fixed;
+    left: 0;
+    top: var(--topbar-height);
+    bottom: var(--statusbar-height);
+    z-index: 100;
+    box-shadow: var(--shadow-lg);
+  }
+
+  .sidebar.collapsed {
+    width: var(--sidebar-collapsed);
+  }
+
+  .search-wrapper {
+    max-width: 220px;
+  }
+}
+
+@media (max-width: 600px) {
+  .search-wrapper {
+    max-width: 160px;
+  }
+
+  .brand-info {
+    display: none;
+  }
+
+  .stats-grid {
+    grid-template-columns: 1fr;
+  }
+}
+
+/* --------------------------------------------------------------------------
+   Flamegraph Root Node Styling
+   -------------------------------------------------------------------------- */
+
+/* Style the root node - no border, themed text */
+.d3-flame-graph g:first-of-type rect {
+  stroke: none;
+}
+
+.d3-flame-graph g:first-of-type .d3-flame-graph-label {
+  color: var(--text-muted);
+}
+
+/* --------------------------------------------------------------------------
+   Flamegraph-Specific Toggle Override
+   -------------------------------------------------------------------------- */
+
+#toggle-invert .toggle-track.on {
+  background: #8e44ad;
+  border-color: #8e44ad;
+  box-shadow: 0 0 8px rgba(142, 68, 173, 0.3);
+}
+
+.toggle-switch:focus-visible {
+  border-radius: 4px;
+}
+
+</style>
+  </head>
+  <body>
+    <div class="app-layout">
+      <!-- Top Bar -->
+      <header class="top-bar">
+        <div class="brand">
+          <div class="brand-logo" id="navbar-logo"></div>
+          <span class="brand-text">Tachyon</span>
+          <span class="brand-divider"></span>
+          <span class="brand-subtitle">Flamegraph Report</span>
+        </div>
+        <div class="search-wrapper">
+          <input
+            type="text"
+            id="search-input"
+            class="search-input"
+            placeholder="Search functions..."
+          />
+          <button
+            class="search-clear"
+            id="search-clear"
+            onclick="clearSearch()"
+            title="Clear search"
+          >&times;</button>
+        </div>
+        <div class="toolbar">
+          <button
+            class="toolbar-btn"
+            onclick="resetZoom()"
+            title="Reset zoom"
+          >
+            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+              <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
+            </svg>
+          </button>
+          <button
+            class="toolbar-btn"
+            onclick="exportSVG()"
+            title="Export SVG"
+          >
+            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+              <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
+            </svg>
+          </button>
+          <a
+            class="toolbar-btn"
+            href="https://docs.python.org/3.15/library/profiling.sampling.html"
+            target="_blank"
+            title="Documentation"
+          >
+            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+              <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
+            </svg>
+          </a>
+          <button
+            class="toolbar-btn theme-toggle"
+            onclick="toggleTheme()"
+            title="Toggle theme"
+            id="theme-btn"
+          >
+            <svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+              <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
+            </svg>
+            <svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
+              <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+            </svg>
+          </button>
+        </div>
+      </header>
+
+      <!-- Main Content -->
+      <div class="main-content">
+        <!-- Sidebar -->
+        <aside class="sidebar" id="sidebar">
+          <button
+            class="sidebar-toggle"
+            onclick="toggleSidebar()"
+            title="Toggle sidebar"
+            aria-label="Toggle sidebar"
+          >
+            <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
+              <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+            </svg>
+          </button>
+          <div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>
+
+          <div class="sidebar-content">
+            <!-- Logo Section -->
+            <div class="sidebar-logo">
+              <div class="sidebar-logo-img"><img src="data:image/png;base64,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" alt="Tachyon logo"/></div>
+            </div>
+
+            <!-- View Mode Section -->
+            <section class="sidebar-section view-mode-section collapsible" id="view-mode-section">
+              <button class="section-header" onclick="toggleSection('view-mode-section')">
+                <h3 class="section-title">View Mode</h3>
+                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
+                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+                </svg>
+              </button>
+              <div class="section-content">
+                <div class="toggle-switch" id="toggle-invert" title="Toggle between standard and inverted flamegraph view" tabindex="0">
+                  <span class="toggle-label active" data-text="Flamegraph">Flamegraph</span>
+                  <div class="toggle-track"></div>
+                  <span class="toggle-label" data-text="Inverted Flamegraph">Inverted Flamegraph</span>
+                </div>
+              </div>
+            </section>
+
+            <!-- Profile Summary Section -->
+            <section class="sidebar-section collapsible" id="summary-section">
+              <button class="section-header" onclick="toggleSection('summary-section')">
+                <h3 class="section-title">Profile Summary</h3>
+                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
+                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+                </svg>
+              </button>
+              <div class="section-content">
+                <div class="summary-grid">
+                  <div class="summary-card" id="summary-samples">
+                    <div class="summary-icon">📊</div>
+                    <div class="summary-data">
+                      <div class="summary-value" id="stat-total-samples">--</div>
+                      <div class="summary-label">Total Samples</div>
+                    </div>
+                  </div>
+                  <div class="summary-card" id="summary-duration">
+                    <div class="summary-icon">⏱</div>
+                    <div class="summary-data">
+                      <div class="summary-value" id="stat-duration">--</div>
+                      <div class="summary-label">Duration</div>
+                    </div>
+                  </div>
+                  <div class="summary-card" id="summary-rate">
+                    <div class="summary-icon">⚡</div>
+                    <div class="summary-data">
+                      <div class="summary-value" id="stat-sample-rate">--</div>
+                      <div class="summary-label">Samples/sec</div>
+                    </div>
+                  </div>
+                  <div class="summary-card" id="summary-functions">
+                    <div class="summary-icon">λ</div>
+                    <div class="summary-data">
+                      <div class="summary-value" id="stat-functions">--</div>
+                      <div class="summary-label">Functions</div>
+                    </div>
+                  </div>
+                </div>
+                <!-- Efficiency Bar -->
+                <div class="efficiency-section" id="efficiency-section" style="display: none;">
+                  <div class="efficiency-header">
+                    <span class="efficiency-label">Sampling Efficiency</span>
+                    <span class="efficiency-value" id="stat-efficiency">--</span>
+                  </div>
+                  <div class="efficiency-bar">
+                    <div class="efficiency-fill" id="efficiency-fill"></div>
+                  </div>
+                  <div class="missed-samples-header">
+                    <span class="efficiency-label">Missed samples</span>
+                    <span class="efficiency-value" id="stat-missed-samples">--</span>
+                  </div>
+                  <div class="efficiency-bar">
+                    <div class="efficiency-fill" id="missed-samples-fill"></div>
+                  </div>
+                </div>
+              </div>
+            </section>
+
+            <!-- Thread Stats Section (GIL/GC) -->
+            <section class="sidebar-section thread-stats-section collapsible" id="thread-stats-bar" style="display: none;">
+              <button class="section-header" onclick="toggleSection('thread-stats-bar')">
+                <h3 class="section-title">Runtime Stats</h3>
+                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
+                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+                </svg>
+              </button>
+              <div class="section-content">
+                <div class="stats-grid">
+                  <div class="stat-tile stat-tile--green" id="gil-held-stat">
+                    <div class="stat-tile-value" id="gil-held-pct">--</div>
+                    <div class="stat-tile-label">GIL Held</div>
+                  </div>
+                  <div class="stat-tile stat-tile--red" id="gil-released-stat">
+                    <div class="stat-tile-value" id="gil-released-pct">--</div>
+                    <div class="stat-tile-label">GIL Released</div>
+                  </div>
+                  <div class="stat-tile stat-tile--yellow" id="gil-waiting-stat">
+                    <div class="stat-tile-value" id="gil-waiting-pct">--</div>
+                    <div class="stat-tile-label">Waiting GIL</div>
+                  </div>
+                  <div class="stat-tile stat-tile--purple" id="gc-stat">
+                    <div class="stat-tile-value" id="gc-pct">--</div>
+                    <div class="stat-tile-label">GC</div>
+                  </div>
+                  <div class="stat-tile stat-tile--red" id="exc-stat">
+                    <div class="stat-tile-value" id="exc-pct">--</div>
+                    <div class="stat-tile-label">Exception</div>
+                  </div>
+                </div>
+              </div>
+            </section>
+
+            <!-- Hotspots Section -->
+            <section class="sidebar-section collapsible" id="hotspots-section">
+              <button class="section-header" onclick="toggleSection('hotspots-section')">
+                <h3 class="section-title">Hotspots</h3>
+                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
+                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+                </svg>
+              </button>
+              <div class="section-content">
+              <div class="hotspot" id="hotspot-1">
+                <div class="hotspot-rank hotspot-rank--1">1</div>
+                <div class="hotspot-info">
+                  <div class="hotspot-func" id="hotspot-func-1">--</div>
+                  <div class="hotspot-file" id="hotspot-file-1">--</div>
+                  <div class="hotspot-stats">
+                    <span class="hotspot-percent" id="hotspot-percent-1">--</span>
+                    <span id="hotspot-samples-1"></span>
+                  </div>
+                </div>
+              </div>
+              <div class="hotspot" id="hotspot-2">
+                <div class="hotspot-rank hotspot-rank--2">2</div>
+                <div class="hotspot-info">
+                  <div class="hotspot-func" id="hotspot-func-2">--</div>
+                  <div class="hotspot-file" id="hotspot-file-2">--</div>
+                  <div class="hotspot-stats">
+                    <span class="hotspot-percent" id="hotspot-percent-2">--</span>
+                    <span id="hotspot-samples-2"></span>
+                  </div>
+                </div>
+              </div>
+              <div class="hotspot" id="hotspot-3">
+                <div class="hotspot-rank hotspot-rank--3">3</div>
+                <div class="hotspot-info">
+                  <div class="hotspot-func" id="hotspot-func-3">--</div>
+                  <div class="hotspot-file" id="hotspot-file-3">--</div>
+                  <div class="hotspot-stats">
+                    <span class="hotspot-percent" id="hotspot-percent-3">--</span>
+                    <span id="hotspot-samples-3"></span>
+                  </div>
+                </div>
+              </div>
+              </div>
+            </section>
+
+            <!-- Thread Filter Section -->
+            <section class="sidebar-section filter-section" id="thread-section" style="display: none;">
+              <label class="filter-label" for="thread-filter">Thread Filter</label>
+              <select
+                id="thread-filter"
+                class="filter-select"
+                onchange="filterByThread()"
+              >
+                <option value="all">All Threads</option>
+              </select>
+            </section>
+
+            <!-- Legend Section -->
+            <section class="sidebar-section legend-section collapsible" id="legend-section">
+              <button class="section-header" onclick="toggleSection('legend-section')">
+                <h3 class="section-title">Heat Map</h3>
+                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
+                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+                </svg>
+              </button>
+              <div class="section-content">
+              <div class="legend">
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-8)"></div>
+                  <span class="legend-label">Hottest</span>
+                  <span class="legend-range">&ge;60%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-7)"></div>
+                  <span class="legend-label">Very Hot</span>
+                  <span class="legend-range">35-60%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-6)"></div>
+                  <span class="legend-label">Hot</span>
+                  <span class="legend-range">18-35%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-5)"></div>
+                  <span class="legend-label">Warm</span>
+                  <span class="legend-range">12-18%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-4)"></div>
+                  <span class="legend-label">Medium</span>
+                  <span class="legend-range">6-12%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-3)"></div>
+                  <span class="legend-label">Cool</span>
+                  <span class="legend-range">3-6%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-2)"></div>
+                  <span class="legend-label">Cold</span>
+                  <span class="legend-range">1-3%</span>
+                </div>
+                <div class="legend-item">
+                  <div class="legend-color" style="background: var(--heat-1)"></div>
+                  <span class="legend-label">Coldest</span>
+                  <span class="legend-range">&lt;1%</span>
+                </div>
+              </div>
+              </div>
+            </section>
+          </div>
+        </aside>
+
+        <!-- Chart Area -->
+        <main class="chart-area">
+          <div id="chart"></div>
+        </main>
+      </div>
+
+      <!-- Status Bar -->
+      <footer class="status-bar">
+        <span class="status-item" id="status-brand">
+          <span class="status-value">Tachyon Profiler</span>
+        </span>
+        <span class="status-item" id="status-tagline">
+          <span class="status-label">Python Sampling Profiler</span>
+        </span>
+        <span class="status-item" id="status-location" style="display: none;">
+          <span class="status-label">File:</span>
+          <span class="status-value" id="status-file">--</span>
+        </span>
+        <span class="status-item" id="status-func-item" style="display: none;">
+          <span class="status-label">Func:</span>
+          <span class="status-value" id="status-func">--</span>
+        </span>
+        <span class="status-item" id="status-time-item" style="display: none;">
+          <span class="status-label">Time:</span>
+          <span class="status-value" id="status-time">--</span>
+        </span>
+        <span class="status-item" id="status-percent-item" style="display: none;">
+          <span class="status-value accent" id="status-percent">--</span>
+        </span>
+      </footer>
+    </div>
+
+    <script>
+const EMBEDDED_DATA = {"name": 224, "value": 1892, "children": [{"name": 4, "value": 1892, "children": [{"name": 7, "value": 1892, "children": [{"name": 11, "value": 1892, "children": [{"name": 54, "value": 1874, "children": [{"name": 83, "value": 1872, "children": [{"name": 87, "value": 1872, "children": [{"name": 198, "value": 735, "children": [{"name": 218, "value": 283, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 146, "113": 16, "94": 32, "112": 51, "78": 17, "173": 18, "190": 1, "146": 1, "176": 1}}, {"name": 204, "value": 250, "children": [], "filename": 22, "lineno": 70, "funcname": 203, "threads": [98230], "source": [205, 206, 207], "opcodes": {"3": 74, "50": 62, "12": 100, "86": 3, "176": 7, "82": 4}}, {"name": 213, "value": 185, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"44": 84, "94": 42, "112": 8, "172": 16, "167": 12, "113": 11, "78": 6, "176": 4, "103": 2}}, {"name": 208, "value": 9, "children": [], "filename": 22, "lineno": 69, "funcname": 203, "threads": [98230], "source": [209, 205, 210, 211], "opcodes": {"173": 7, "146": 2}}, {"name": 222, "value": 8, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 7, "190": 1}}], "filename": 22, "lineno": 97, "funcname": 197, "threads": [98230], "source": [199, 200, 201, 202], "opcodes": {"52": 735}}, {"name": 134, "value": 471, "children": [{"name": 149, "value": 434, "children": [{"name": 177, "value": 222, "children": [{"name": 185, "value": 220, "children": [{"name": 191, "value": 220, "children": [], "filename": 183, "lineno": 361, "funcname": 190, "threads": [98230], "source": [192, 193, 194, 195, 196], "opcodes": {"52": 1, "160": 218, "209": 1}}], "filename": 183, "lineno": 345, "funcname": 184, "threads": [98230], "source": [186, 187, 188, 189], "opcodes": {"55": 2, "153": 218}}], "filename": 154, "lineno": 351, "funcname": 176, "threads": [98230], "source": [178, 179, 180, 181, 182], "opcodes": {"52": 2, "162": 220}}, {"name": 156, "value": 199, "children": [{"name": 164, "value": 199, "children": [{"name": 171, "value": 199, "children": [], "filename": 162, "lineno": 263, "funcname": 170, "threads": [98230], "source": [172, 173, 174, 175], "opcodes": {"52": 1, "160": 198}}], "filename": 162, "lineno": 202, "funcname": 163, "threads": [98230], "source": [165, 166, 167, 168, 169], "opcodes": {"55": 1, "153": 198}}], "filename": 154, "lineno": 234, "funcname": 155, "threads": [98230], "source": [157, 158, 159, 160, 161], "opcodes": {"52": 1, "161": 198}}], "filename": 22, "lineno": 60, "funcname": 148, "threads": [98230], "source": [150, 151, 152, 153], "opcodes": {"52": 434}}, {"name": 145, "value": 24, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 23, "158": 1}}, {"name": 140, "value": 13, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"52": 1, "148": 11, "158": 1}}], "filename": 22, "lineno": 91, "funcname": 133, "threads": [98230], "source": [135, 136, 137, 138], "opcodes": {"52": 471}}, {"name": 93, "value": 259, "children": [{"name": 130, "value": 130, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 69, "133": 22, "87": 6, "129": 11, "200": 8, "59": 3, "176": 1, "117": 8, "86": 2}}, {"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 103, "children": [{"name": 100, "value": 99, "children": [{"name": 100, "value": 87, "children": [{"name": 100, "value": 69, "children": [{"name": 100, "value": 52, "children": [{"name": 100, "value": 30, "children": [{"name": 100, "value": 11, "children": [{"name": 100, "value": 4, "children": [{"name": 100, "value": 2, "children": [{"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2, "35": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 9, "35": 2}}, {"name": 109, "value": 3, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 3}}, {"name": 112, "value": 1, "children": [], "filename": 22, "lineno": 16, "funcname": 99, "threads": [98230], "source": [106, 101, 113, 108], "opcodes": {"35": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 28, "35": 2}}, {"name": 109, "value": 2, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 51, "35": 1}}, {"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 66, "35": 2, "94": 1}}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 84, "35": 3}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 99}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 102, "35": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}, {"name": 124, "value": 19, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"173": 13, "16": 3, "112": 1, "30": 1, "146": 1}}, {"name": 115, "value": 2, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"112": 1, "160": 1}}, {"name": 121, "value": 2, "children": [], "filename": 22, "lineno": 31, "funcname": 114, "threads": [98230], "source": [117, 122, 123, 120], "opcodes": {"160": 2}}], "filename": 22, "lineno": 84, "funcname": 92, "threads": [98230], "source": [94, 95, 96, 97, 98], "opcodes": {"52": 259}}, {"name": 218, "value": 189, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 88, "173": 13, "112": 39, "78": 25, "113": 20, "94": 1, "176": 3}}, {"name": 213, "value": 125, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"167": 33, "113": 16, "112": 7, "44": 42, "172": 12, "78": 2, "103": 3, "176": 5, "94": 5}}, {"name": 130, "value": 60, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 36, "117": 2, "59": 2, "86": 4, "129": 7, "133": 7, "200": 1, "87": 1}}, {"name": 145, "value": 14, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 14}}, {"name": 140, "value": 9, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"148": 7, "158": 2}}, {"name": 124, "value": 6, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"112": 3, "146": 1, "173": 2}}, {"name": 222, "value": 3, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 3}}, {"name": 115, "value": 1, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"160": 1}}], "filename": 22, "lineno": 105, "funcname": 86, "threads": [98230], "source": [88, 89, 90, 91], "opcodes": {"52": 1872}}], "filename": 22, "lineno": 118, "funcname": 6, "threads": [98230], "source": [84, 85], "opcodes": {"52": 1872}}, {"name": 23, "value": 2, "children": [{"name": 31, "value": 2, "children": [{"name": 33, "value": 2, "children": [{"name": 35, "value": 2, "children": [{"name": 38, "value": 2, "children": [{"name": 40, "value": 2, "children": [{"name": 58, "value": 2, "children": [{"name": 65, "value": 2, "children": [{"name": 72, "value": 2, "children": [{"name": 31, "value": 1, "children": [{"name": 33, "value": 1, "children": [{"name": 35, "value": 1, "children": [{"name": 53, "value": 1, "children": [{"name": 40, "value": 1, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 1}}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 1}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}}, {"name": 78, "value": 1, "children": [{"name": 80, "value": 1, "children": [{"name": 82, "value": 1, "children": [], "filename": 29, "lineno": 446, "funcname": 81, "threads": [98230], "opcodes": {"143": 1}}], "filename": 29, "lineno": 420, "funcname": 79, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1273, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}}], "filename": 41, "lineno": 108, "funcname": 71, "threads": [98230], "source": [73, 74, 75, 76, 77], "opcodes": {"73": 2}}], "filename": 41, "lineno": 137, "funcname": 64, "threads": [98230], "source": [66, 67, 68, 69, 70], "opcodes": {"52": 2}}], "filename": 41, "lineno": 269, "funcname": 6, "threads": [98230], "source": [59, 60, 61, 62, 63], "opcodes": {"161": 2}}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 2}}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 2}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 2}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 2}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 2}}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 2}}], "filename": 5, "lineno": 193, "funcname": 16, "threads": [98230], "source": [55, 56, 21, 57], "opcodes": {"52": 1874}}, {"name": 17, "value": 18, "children": [{"name": 23, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 35, "value": 12, "children": [{"name": 38, "value": 12, "children": [{"name": 40, "value": 12, "children": [{"name": 42, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 47, "value": 12, "children": [{"name": 53, "value": 7, "children": [{"name": 40, "value": 7, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 7}}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 7}}, {"name": 49, "value": 5, "children": [{"name": 51, "value": 4, "children": [{"name": 40, "value": 4, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 4}}], "filename": 36, "lineno": 1025, "funcname": 50, "threads": [98230], "opcodes": {"162": 4}}], "filename": 29, "lineno": 786, "funcname": 48, "threads": [98230], "opcodes": {"161": 5}}], "filename": 29, "lineno": 843, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}}], "filename": 41, "lineno": 190, "funcname": 6, "threads": [98230], "source": [43, 44, 45, 46], "opcodes": {"73": 12}}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 12}}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 12}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 12}}], "filename": 5, "lineno": 192, "funcname": 16, "threads": [98230], "source": [18, 19, 20, 21], "opcodes": {"55": 18}}], "filename": 5, "lineno": 234, "funcname": 10, "threads": [98230], "source": [12, 13, 14, 15], "opcodes": {"52": 1892}}], "filename": 5, "lineno": 251, "funcname": 6, "threads": [98230], "source": [8, 9], "opcodes": {"52": 1892}}], "filename": 0, "lineno": 87, "funcname": 3, "threads": [98230], "opcodes": {"52": 1892}}], "filename": 0, "lineno": 196, "funcname": 1, "threads": [98230], "opcodes": {"52": 1892}, "stats": {"sample_interval_usec": 100, "duration_sec": 0.20179993600049784, "sample_rate": 10000.003171433224, "error_rate": 6.2438057482656095, "missed_samples": 0.0, "mode": 0, "thread_stats": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "free_threaded": false, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892}, "per_thread_stats": {"98230": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892, "gc_samples": 0}}}, "strings": ["<frozen runpy>", "_run_module_as_main", "_run_module_as_main (<frozen runpy>:196)", "_run_code", "_run_code (<frozen runpy>:87)", "/home/pablogsal/github/python/main/Lib/profiling/sampling/_sync_coordinator.py", "<module>", "<module> (.../sampling/_sync_coordinator.py:251)", "  250: if __name__ == \"__main__\":", "\u2192 251:     main()", "main", "main (.../sampling/_sync_coordinator.py:234)", "  232:             script_path = target_args[0]", "  233:             script_args = target_args[1:]", "\u2192 234:             _execute_script(script_path, script_args, cwd)", "  236:     except CoordinatorError as e:", "_execute_script", "_execute_script (.../sampling/_sync_coordinator.py:192)", "  190:         sys.modules['__main__'] = sys.modules['__mp_main__'] = main_module", "\u2192 192:         code = compile(source_code, script_path, 'exec', module='__main__')", "  193:         exec(code, main_module.__dict__)", "  194:     except SyntaxError as e:", "/tmp/tachyon_demo.py", "<module> (/tmp/tachyon_demo.py:5)", "  3: for profiling visualization examples.", "  4: \"\"\"", "\u2192 5: import hashlib", "  6: import json", "  7: import random", "<frozen importlib._bootstrap>", "_find_and_load", "_find_and_load (<frozen importlib._bootstrap>:1276)", "_find_and_load_unlocked", "_find_and_load_unlocked (<frozen importlib._bootstrap>:1247)", "_load_unlocked", "_load_unlocked (<frozen importlib._bootstrap>:857)", "<frozen importlib._bootstrap_external>", "_LoaderBasics.exec_module", "_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:747)", "_call_with_frames_removed", "_call_with_frames_removed (<frozen importlib._bootstrap>:491)", "/home/pablogsal/github/python/main/Lib/hashlib.py", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:190)", "  189: try:", "\u2192 190:     import _hashlib", "  191:     new = __hash_new", "  192:     __get_hash = __get_openssl_constructor", "_load_unlocked (<frozen importlib._bootstrap>:843)", "module_from_spec", "module_from_spec (<frozen importlib._bootstrap>:786)", "ExtensionFileLoader.create_module", "ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1025)", "ExtensionFileLoader.exec_module", "ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1033)", "_execute_script (.../sampling/_sync_coordinator.py:193)", "  192:         code = compile(source_code, script_path, 'exec', module='__main__')", "\u2192 193:         exec(code, main_module.__dict__)", "  195:         raise TargetError(f\"Syntax error in script {script_path}: {e}\") from e", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:269)", "  267:     # version not supporting that algorithm.", "  268:     try:", "\u2192 269:         globals()[__func_name] = __get_hash(__func_name)", "  270:     except ValueError as __exc:", "  271:         import logging as __logging", "__get_openssl_constructor", "__get_openssl_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:137)", "  135:     if name in __block_openssl_constructor:", "  136:         # Prefer our builtin blake2 implementation.", "\u2192 137:         return __get_builtin_constructor(name)", "  138:     try:", "  139:         # Fetch the OpenSSL hash function if it exists,", "__get_builtin_constructor", "__get_builtin_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:108)", "  106:             cache['SHA512'] = cache['sha512'] = _sha2.sha512", "  107:         elif name in {'blake2b', 'blake2s'}:", "\u2192 108:             import _blake2", "  109:             cache['blake2b'] = _blake2.blake2b", "  110:             cache['blake2s'] = _blake2.blake2s", "_find_and_load (<frozen importlib._bootstrap>:1273)", "_ModuleLockManager.__enter__", "_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:420)", "_get_module_lock", "_get_module_lock (<frozen importlib._bootstrap>:446)", "<module> (/tmp/tachyon_demo.py:118)", "  117: if __name__ == \"__main__\":", "\u2192 118:     run_profiling_demo()", "run_profiling_demo", "run_profiling_demo (/tmp/tachyon_demo.py:105)", "  103:     print(\"Starting Tachyon profiling demo...\")", "\u2192 105:     compute_section()", "  106:     io_section()", "  107:     string_section()", "compute_section", "compute_section (/tmp/tachyon_demo.py:84)", "  82: def compute_section():", "  83:     \"\"\"Pure computation workload.\"\"\"", "\u2192 84:     fibonacci_recursive(28)", "  85:     fibonacci_cached(100)", "  86:     matrix_multiply(80)", "fibonacci_recursive", "fibonacci_recursive (/tmp/tachyon_demo.py:17)", "  15:     if n <= 1:", "  16:         return n", "\u2192 17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:15)", "  13: def fibonacci_recursive(n):", "  14:     \"\"\"Classic recursive fibonacci - shows deep call stacks.\"\"\"", "\u2192 15:     if n <= 1:", "  17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:13)", "  12: # Computational patterns", "\u2192 13: def fibonacci_recursive(n):", "fibonacci_recursive (/tmp/tachyon_demo.py:16)", "\u2192 16:         return n", "matrix_multiply", "matrix_multiply (/tmp/tachyon_demo.py:30)", "  28: def matrix_multiply(size=100):", "  29:     \"\"\"Matrix multiplication - CPU intensive numerical work.\"\"\"", "\u2192 30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "  31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "  32:     result = [[0.0] * size for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:31)", "  30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "\u2192 31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:36)", "  34:     for i in range(size):", "  35:         for j in range(size):", "\u2192 36:             for k in range(size):", "  37:                 result[i][j] += a[i][k] * b[k][j]", "  38:     return result", "matrix_multiply (/tmp/tachyon_demo.py:37)", "  36:             for k in range(size):", "\u2192 37:                 result[i][j] += a[i][k] * b[k][j]", "io_section", "io_section (/tmp/tachyon_demo.py:91)", "  89: def io_section():", "  90:     \"\"\"I/O-like workload (CPU-bound simulation).\"\"\"", "\u2192 91:     hash_data(800)", "  92:     json_processing(400)", "hash_data", "hash_data (/tmp/tachyon_demo.py:46)", "  44:     data = b\"Python profiling demonstration data \" * 100", "  45:     for _ in range(iterations):", "\u2192 46:         hashlib.sha256(data).hexdigest()", "  47:         hashlib.md5(data).hexdigest()", "hash_data (/tmp/tachyon_demo.py:47)", "  46:         hashlib.sha256(data).hexdigest()", "\u2192 47:         hashlib.md5(data).hexdigest()", "json_processing", "json_processing (/tmp/tachyon_demo.py:60)", "  58:     }", "  59:     for _ in range(iterations):", "\u2192 60:         encoded = json.dumps(data)", "  61:         json.loads(encoded)", "/home/pablogsal/github/python/main/Lib/json/__init__.py", "dumps", "dumps (.../json/__init__.py:234)", "  232:         cls is None and indent is None and separators is None and", "  233:         default is None and not sort_keys and not kw):", "\u2192 234:         return _default_encoder.encode(obj)", "  235:     if cls is None:", "  236:         cls = JSONEncoder", "/home/pablogsal/github/python/main/Lib/json/encoder.py", "JSONEncoder.encode", "JSONEncoder.encode (.../json/encoder.py:202)", "  200:         # exceptions aren't as detailed.  The list call should be roughly", "  201:         # equivalent to the PySequence_Fast that ''.join() would do.", "\u2192 202:         chunks = self.iterencode(o, _one_shot=True)", "  203:         if not isinstance(chunks, (list, tuple)):", "  204:             chunks = list(chunks)", "JSONEncoder.iterencode", "JSONEncoder.iterencode (.../json/encoder.py:263)", "  261:                 self.key_separator, self.item_separator, self.sort_keys,", "  262:                 self.skipkeys, _one_shot)", "\u2192 263:         return _iterencode(o, 0)", "  265: def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,", "loads", "loads (.../json/__init__.py:351)", "  349:             parse_int is None and parse_float is None and", "  350:             parse_constant is None and object_pairs_hook is None and not kw):", "\u2192 351:         return _default_decoder.decode(s)", "  352:     if cls is None:", "  353:         cls = JSONDecoder", "/home/pablogsal/github/python/main/Lib/json/decoder.py", "JSONDecoder.decode", "JSONDecoder.decode (.../json/decoder.py:345)", "  344:         \"\"\"", "\u2192 345:         obj, end = self.raw_decode(s, idx=_w(s, 0).end())", "  346:         end = _w(s, end).end()", "  347:         if end != len(s):", "JSONDecoder.raw_decode", "JSONDecoder.raw_decode (.../json/decoder.py:361)", "  359:         \"\"\"", "  360:         try:", "\u2192 361:             obj, end = self.scan_once(s, idx)", "  362:         except StopIteration as err:", "  363:             raise JSONDecodeError(\"Expecting value\", s, err.value) from None", "string_section", "string_section (/tmp/tachyon_demo.py:97)", "  95: def string_section():", "  96:     \"\"\"String manipulation workload.\"\"\"", "\u2192 97:     string_concatenation(3000)", "  98:     list_comprehension(1500)", "string_concatenation", "string_concatenation (/tmp/tachyon_demo.py:70)", "  68:         result = \"\"", "  69:         for i in range(100):", "\u2192 70:             result += f\"item_{i}_\"", "string_concatenation (/tmp/tachyon_demo.py:69)", "  67:     for _ in range(iterations):", "\u2192 69:         for i in range(100):", "  70:             result += f\"item_{i}_\"", "list_comprehension", "list_comprehension (/tmp/tachyon_demo.py:77)", "  75:     for _ in range(iterations):", "  76:         data = [x**2 for x in range(1000)]", "\u2192 77:         filtered = [x for x in data if x % 7 == 0]", "  78:         total = sum(filtered)", "list_comprehension (/tmp/tachyon_demo.py:76)", "  74:     \"\"\"List operations - shows bytecode efficiency.\"\"\"", "\u2192 76:         data = [x**2 for x in range(1000)]", "  77:         filtered = [x for x in data if x % 7 == 0]", "list_comprehension (/tmp/tachyon_demo.py:78)", "\u2192 78:         total = sum(filtered)", "Program Root: _run_module_as_main (<frozen runpy>:196)"], "opcode_mapping": {"names": {"0": "CACHE", "1": "BINARY_SLICE", "2": "BUILD_TEMPLATE", "3": "BINARY_OP_INPLACE_ADD_UNICODE", "4": "CALL_FUNCTION_EX", "5": "CHECK_EG_MATCH", "6": "CHECK_EXC_MATCH", "7": "CLEANUP_THROW", "8": "DELETE_SUBSCR", "9": "END_FOR", "10": "END_SEND", "11": "EXIT_INIT_CHECK", "12": "FORMAT_SIMPLE", "13": "FORMAT_WITH_SPEC", "14": "GET_AITER", "15": "GET_ANEXT", "16": "GET_ITER", "17": "RESERVED", "18": "GET_LEN", "19": "GET_YIELD_FROM_ITER", "20": "INTERPRETER_EXIT", "21": "LOAD_BUILD_CLASS", "22": "LOAD_LOCALS", "23": "MAKE_FUNCTION", "24": "MATCH_KEYS", "25": "MATCH_MAPPING", "26": "MATCH_SEQUENCE", "27": "NOP", "28": "NOT_TAKEN", "29": "POP_EXCEPT", "30": "POP_ITER", "31": "POP_TOP", "32": "PUSH_EXC_INFO", "33": "PUSH_NULL", "34": "RETURN_GENERATOR", "35": "RETURN_VALUE", "36": "SETUP_ANNOTATIONS", "37": "STORE_SLICE", "38": "STORE_SUBSCR", "39": "TO_BOOL", "40": "UNARY_INVERT", "41": "UNARY_NEGATIVE", "42": "UNARY_NOT", "43": "WITH_EXCEPT_START", "44": "BINARY_OP", "45": "BUILD_INTERPOLATION", "46": "BUILD_LIST", "47": "BUILD_MAP", "48": "BUILD_SET", "49": "BUILD_SLICE", "50": "BUILD_STRING", "51": "BUILD_TUPLE", "52": "CALL", "53": "CALL_INTRINSIC_1", "54": "CALL_INTRINSIC_2", "55": "CALL_KW", "56": "COMPARE_OP", "57": "CONTAINS_OP", "58": "CONVERT_VALUE", "59": "COPY", "60": "COPY_FREE_VARS", "61": "DELETE_ATTR", "62": "DELETE_DEREF", "63": "DELETE_FAST", "64": "DELETE_GLOBAL", "65": "DELETE_NAME", "66": "DICT_MERGE", "67": "DICT_UPDATE", "68": "END_ASYNC_FOR", "69": "EXTENDED_ARG", "70": "FOR_ITER", "71": "GET_AWAITABLE", "72": "IMPORT_FROM", "73": "IMPORT_NAME", "74": "IS_OP", "75": "JUMP_BACKWARD", "76": "JUMP_BACKWARD_NO_INTERRUPT", "77": "JUMP_FORWARD", "78": "LIST_APPEND", "79": "LIST_EXTEND", "80": "LOAD_ATTR", "81": "LOAD_COMMON_CONSTANT", "82": "LOAD_CONST", "83": "LOAD_DEREF", "84": "LOAD_FAST", "85": "LOAD_FAST_AND_CLEAR", "86": "LOAD_FAST_BORROW", "87": "LOAD_FAST_BORROW_LOAD_FAST_BORROW", "88": "LOAD_FAST_CHECK", "89": "LOAD_FAST_LOAD_FAST", "90": "LOAD_FROM_DICT_OR_DEREF", "91": "LOAD_FROM_DICT_OR_GLOBALS", "92": "LOAD_GLOBAL", "93": "LOAD_NAME", "94": "LOAD_SMALL_INT", "95": "LOAD_SPECIAL", "96": "LOAD_SUPER_ATTR", "97": "MAKE_CELL", "98": "MAP_ADD", "99": "MATCH_CLASS", "100": "POP_JUMP_IF_FALSE", "101": "POP_JUMP_IF_NONE", "102": "POP_JUMP_IF_NOT_NONE", "103": "POP_JUMP_IF_TRUE", "104": "RAISE_VARARGS", "105": "RERAISE", "106": "SEND", "107": "SET_ADD", "108": "SET_FUNCTION_ATTRIBUTE", "109": "SET_UPDATE", "110": "STORE_ATTR", "111": "STORE_DEREF", "112": "STORE_FAST", "113": "STORE_FAST_LOAD_FAST", "114": "STORE_FAST_STORE_FAST", "115": "STORE_GLOBAL", "116": "STORE_NAME", "117": "SWAP", "118": "UNPACK_EX", "119": "UNPACK_SEQUENCE", "120": "YIELD_VALUE", "121": "<121>", "122": "<122>", "123": "<123>", "124": "<124>", "125": "<125>", "126": "<126>", "127": "<127>", "128": "RESUME", "129": "BINARY_OP_ADD_FLOAT", "130": "BINARY_OP_ADD_INT", "131": "BINARY_OP_ADD_UNICODE", "132": "BINARY_OP_EXTEND", "133": "BINARY_OP_MULTIPLY_FLOAT", "134": "BINARY_OP_MULTIPLY_INT", "135": "BINARY_OP_SUBSCR_DICT", "136": "BINARY_OP_SUBSCR_GETITEM", "137": "BINARY_OP_SUBSCR_LIST_INT", "138": "BINARY_OP_SUBSCR_LIST_SLICE", "139": "BINARY_OP_SUBSCR_STR_INT", "140": "BINARY_OP_SUBSCR_TUPLE_INT", "141": "BINARY_OP_SUBTRACT_FLOAT", "142": "BINARY_OP_SUBTRACT_INT", "143": "CALL_ALLOC_AND_ENTER_INIT", "144": "CALL_BOUND_METHOD_EXACT_ARGS", "145": "CALL_BOUND_METHOD_GENERAL", "146": "CALL_BUILTIN_CLASS", "147": "CALL_BUILTIN_FAST", "148": "CALL_BUILTIN_FAST_WITH_KEYWORDS", "149": "CALL_BUILTIN_O", "150": "CALL_ISINSTANCE", "151": "CALL_KW_BOUND_METHOD", "152": "CALL_KW_NON_PY", "153": "CALL_KW_PY", "154": "CALL_LEN", "155": "CALL_LIST_APPEND", "156": "CALL_METHOD_DESCRIPTOR_FAST", "157": "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS", "158": "CALL_METHOD_DESCRIPTOR_NOARGS", "159": "CALL_METHOD_DESCRIPTOR_O", "160": "CALL_NON_PY_GENERAL", "161": "CALL_PY_EXACT_ARGS", "162": "CALL_PY_GENERAL", "163": "CALL_STR_1", "164": "CALL_TUPLE_1", "165": "CALL_TYPE_1", "166": "COMPARE_OP_FLOAT", "167": "COMPARE_OP_INT", "168": "COMPARE_OP_STR", "169": "CONTAINS_OP_DICT", "170": "CONTAINS_OP_SET", "171": "FOR_ITER_GEN", "172": "FOR_ITER_LIST", "173": "FOR_ITER_RANGE", "174": "FOR_ITER_TUPLE", "175": "JUMP_BACKWARD_JIT", "176": "JUMP_BACKWARD_NO_JIT", "177": "LOAD_ATTR_CLASS", "178": "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK", "179": "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", "180": "LOAD_ATTR_INSTANCE_VALUE", "181": "LOAD_ATTR_METHOD_LAZY_DICT", "182": "LOAD_ATTR_METHOD_NO_DICT", "183": "LOAD_ATTR_METHOD_WITH_VALUES", "184": "LOAD_ATTR_MODULE", "185": "LOAD_ATTR_NONDESCRIPTOR_NO_DICT", "186": "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES", "187": "LOAD_ATTR_PROPERTY", "188": "LOAD_ATTR_SLOT", "189": "LOAD_ATTR_WITH_HINT", "190": "LOAD_GLOBAL_BUILTIN", "191": "LOAD_GLOBAL_MODULE", "192": "LOAD_SUPER_ATTR_ATTR", "193": "LOAD_SUPER_ATTR_METHOD", "194": "RESUME_CHECK", "195": "SEND_GEN", "196": "STORE_ATTR_INSTANCE_VALUE", "197": "STORE_ATTR_SLOT", "198": "STORE_ATTR_WITH_HINT", "199": "STORE_SUBSCR_DICT", "200": "STORE_SUBSCR_LIST_INT", "201": "TO_BOOL_ALWAYS_TRUE", "202": "TO_BOOL_BOOL", "203": "TO_BOOL_INT", "204": "TO_BOOL_LIST", "205": "TO_BOOL_NONE", "206": "TO_BOOL_STR", "207": "UNPACK_SEQUENCE_LIST", "208": "UNPACK_SEQUENCE_TUPLE", "209": "UNPACK_SEQUENCE_TWO_TUPLE", "210": "<210>", "211": "<211>", "212": "<212>", "213": "<213>", "214": "<214>", "215": "<215>", "216": "<216>", "217": "<217>", "218": "<218>", "219": "<219>", "220": "<220>", "221": "<221>", "222": "<222>", "223": "<223>", "224": "<224>", "225": "<225>", "226": "<226>", "227": "<227>", "228": "<228>", "229": "<229>", "230": "<230>", "231": "<231>", "232": "<232>", "233": "INSTRUMENTED_END_FOR", "234": "INSTRUMENTED_POP_ITER", "235": "INSTRUMENTED_END_SEND", "236": "INSTRUMENTED_FOR_ITER", "237": "INSTRUMENTED_INSTRUCTION", "238": "INSTRUMENTED_JUMP_FORWARD", "239": "INSTRUMENTED_NOT_TAKEN", "240": "INSTRUMENTED_POP_JUMP_IF_TRUE", "241": "INSTRUMENTED_POP_JUMP_IF_FALSE", "242": "INSTRUMENTED_POP_JUMP_IF_NONE", "243": "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", "244": "INSTRUMENTED_RESUME", "245": "INSTRUMENTED_RETURN_VALUE", "246": "INSTRUMENTED_YIELD_VALUE", "247": "INSTRUMENTED_END_ASYNC_FOR", "248": "INSTRUMENTED_LOAD_SUPER_ATTR", "249": "INSTRUMENTED_CALL", "250": "INSTRUMENTED_CALL_KW", "251": "INSTRUMENTED_CALL_FUNCTION_EX", "252": "INSTRUMENTED_JUMP_BACKWARD", "253": "INSTRUMENTED_LINE", "254": "ENTER_EXECUTOR", "255": "TRACE_RECORD", "256": "ANNOTATIONS_PLACEHOLDER", "257": "JUMP", "258": "JUMP_IF_FALSE", "259": "JUMP_IF_TRUE", "260": "JUMP_NO_INTERRUPT", "261": "LOAD_CLOSURE", "262": "POP_BLOCK", "263": "SETUP_CLEANUP", "264": "SETUP_FINALLY", "265": "SETUP_WITH", "266": "STORE_FAST_MAYBE_NULL"}, "deopt": {"194": 128, "201": 39, "202": 39, "203": 39, "204": 39, "205": 39, "206": 39, "134": 44, "130": 44, "142": 44, "133": 44, "129": 44, "141": 44, "131": 44, "137": 44, "138": 44, "140": 44, "139": 44, "135": 44, "136": 44, "132": 44, "3": 44, "199": 38, "200": 38, "195": 106, "209": 119, "208": 119, "207": 119, "196": 110, "197": 110, "198": 110, "191": 92, "190": 92, "192": 96, "193": 96, "180": 80, "184": 80, "189": 80, "188": 80, "177": 80, "178": 80, "187": 80, "179": 80, "183": 80, "182": 80, "181": 80, "186": 80, "185": 80, "166": 56, "167": 56, "168": 56, "170": 57, "169": 57, "176": 75, "175": 75, "172": 70, "174": 70, "173": 70, "171": 70, "144": 52, "161": 52, "165": 52, "163": 52, "164": 52, "146": 52, "149": 52, "147": 52, "148": 52, "154": 52, "150": 52, "155": 52, "159": 52, "157": 52, "158": 52, "156": 52, "143": 52, "162": 52, "145": 52, "160": 52, "151": 55, "153": 55, "152": 55}}};
+
+// Global string table for resolving string indices
+let stringTable = [];
+let normalData = null;
+let invertedData = null;
+let currentThreadFilter = 'all';
+let isInverted = false;
+
+// Heat colors are now defined in CSS variables (--heat-1 through --heat-8)
+// and automatically switch with theme changes - no JS color arrays needed!
+
+// Opcode mappings - loaded from embedded data (generated by Python)
+let OPCODE_NAMES = {};
+let DEOPT_MAP = {};
+
+// Initialize opcode mappings from embedded data
+function initOpcodeMapping(data) {
+    if (data && data.opcode_mapping) {
+        OPCODE_NAMES = data.opcode_mapping.names || {};
+        DEOPT_MAP = data.opcode_mapping.deopt || {};
+    }
+}
+
+// Get opcode info from opcode number
+function getOpcodeInfo(opcode) {
+    const opname = OPCODE_NAMES[opcode] || `<${opcode}>`;
+    const baseOpcode = DEOPT_MAP[opcode];
+    const isSpecialized = baseOpcode !== undefined;
+    const baseOpname = isSpecialized ? (OPCODE_NAMES[baseOpcode] || `<${baseOpcode}>`) : opname;
+
+    return {
+        opname: opname,
+        baseOpname: baseOpname,
+        isSpecialized: isSpecialized
+    };
+}
+
+// ============================================================================
+// String Resolution
+// ============================================================================
+
+function resolveString(index) {
+  if (index === null || index === undefined) {
+    return null;
+  }
+  if (typeof index === 'number' && index >= 0 && index < stringTable.length) {
+    return stringTable[index];
+  }
+  return String(index);
+}
+
+function resolveStringIndices(node) {
+  if (!node) return node;
+
+  const resolved = { ...node };
+
+  if (typeof resolved.name === 'number') {
+    resolved.name = resolveString(resolved.name);
+  }
+  if (typeof resolved.filename === 'number') {
+    resolved.filename = resolveString(resolved.filename);
+  }
+  if (typeof resolved.funcname === 'number') {
+    resolved.funcname = resolveString(resolved.funcname);
+  }
+
+  if (Array.isArray(resolved.source)) {
+    resolved.source = resolved.source.map(index =>
+      typeof index === 'number' ? resolveString(index) : index
+    );
+  }
+
+  if (Array.isArray(resolved.children)) {
+    resolved.children = resolved.children.map(child => resolveStringIndices(child));
+  }
+
+  return resolved;
+}
+
+// ============================================================================
+// Theme & UI Controls
+// ============================================================================
+
+function toggleTheme() {
+  const html = document.documentElement;
+  const current = html.getAttribute('data-theme') || 'light';
+  const next = current === 'light' ? 'dark' : 'light';
+  html.setAttribute('data-theme', next);
+  localStorage.setItem('flamegraph-theme', next);
+
+  // Update theme button icon
+  const btn = document.getElementById('theme-btn');
+  if (btn) {
+    btn.querySelector('.icon-moon').style.display = next === 'dark' ? 'none' : '';
+    btn.querySelector('.icon-sun').style.display = next === 'dark' ? '' : 'none';
+  }
+
+  // Re-render flamegraph with new theme colors
+  if (window.flamegraphData && normalData) {
+    const currentData = isInverted ? invertedData : normalData;
+    const tooltip = createPythonTooltip(currentData);
+    const chart = createFlamegraph(tooltip, currentData.value);
+    renderFlamegraph(chart, window.flamegraphData);
+  }
+}
+
+function toggleSidebar() {
+  const sidebar = document.getElementById('sidebar');
+  if (sidebar) {
+    const isCollapsing = !sidebar.classList.contains('collapsed');
+
+    if (isCollapsing) {
+      // Save current width before collapsing
+      const currentWidth = sidebar.offsetWidth;
+      sidebar.dataset.expandedWidth = currentWidth;
+      localStorage.setItem('flamegraph-sidebar-width', currentWidth);
+    } else {
+      // Restore width when expanding
+      const savedWidth = sidebar.dataset.expandedWidth || localStorage.getItem('flamegraph-sidebar-width');
+      if (savedWidth) {
+        sidebar.style.width = savedWidth + 'px';
+      }
+    }
+
+    sidebar.classList.toggle('collapsed');
+    localStorage.setItem('flamegraph-sidebar', sidebar.classList.contains('collapsed') ? 'collapsed' : 'expanded');
+
+    // Resize chart after sidebar animation
+    setTimeout(() => {
+      resizeChart();
+    }, 300);
+  }
+}
+
+function resizeChart() {
+  if (window.flamegraphChart && window.flamegraphData) {
+    const chartArea = document.querySelector('.chart-area');
+    if (chartArea) {
+      window.flamegraphChart.width(chartArea.clientWidth - 32);
+      d3.select("#chart").datum(window.flamegraphData).call(window.flamegraphChart);
+    }
+  }
+}
+
+function toggleSection(sectionId) {
+  const section = document.getElementById(sectionId);
+  if (section) {
+    section.classList.toggle('collapsed');
+    // Save state
+    const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
+    collapsedSections[sectionId] = section.classList.contains('collapsed');
+    localStorage.setItem('flamegraph-collapsed-sections', JSON.stringify(collapsedSections));
+  }
+}
+
+function restoreUIState() {
+  // Restore theme
+  const savedTheme = localStorage.getItem('flamegraph-theme');
+  if (savedTheme) {
+    document.documentElement.setAttribute('data-theme', savedTheme);
+    const btn = document.getElementById('theme-btn');
+    if (btn) {
+      btn.querySelector('.icon-moon').style.display = savedTheme === 'dark' ? 'none' : '';
+      btn.querySelector('.icon-sun').style.display = savedTheme === 'dark' ? '' : 'none';
+    }
+  }
+
+  // Restore sidebar state
+  const savedSidebar = localStorage.getItem('flamegraph-sidebar');
+  if (savedSidebar === 'collapsed') {
+    const sidebar = document.getElementById('sidebar');
+    if (sidebar) sidebar.classList.add('collapsed');
+  }
+
+  // Restore sidebar width
+  const savedWidth = localStorage.getItem('flamegraph-sidebar-width');
+  if (savedWidth) {
+    const sidebar = document.getElementById('sidebar');
+    if (sidebar) {
+      sidebar.style.width = savedWidth + 'px';
+    }
+  }
+
+  // Restore collapsed sections
+  const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
+  for (const [sectionId, isCollapsed] of Object.entries(collapsedSections)) {
+    if (isCollapsed) {
+      const section = document.getElementById(sectionId);
+      if (section) section.classList.add('collapsed');
+    }
+  }
+}
+
+// ============================================================================
+// Logo/Favicon Setup
+// ============================================================================
+
+function setupLogos() {
+    const logo = document.querySelector('.sidebar-logo-img img');
+    if (!logo) return;
+
+    const navbarLogoContainer = document.getElementById('navbar-logo');
+    if (navbarLogoContainer) {
+        const navbarLogo = logo.cloneNode(true);
+        navbarLogoContainer.appendChild(navbarLogo);
+    }
+
+    const favicon = document.createElement('link');
+    favicon.rel = 'icon';
+    favicon.type = 'image/png';
+    favicon.href = logo.src;
+    document.head.appendChild(favicon);
+}
+
+// ============================================================================
+// Status Bar
+// ============================================================================
+
+function updateStatusBar(nodeData, rootValue) {
+  const funcname = resolveString(nodeData.funcname) || resolveString(nodeData.name) || "--";
+  const filename = resolveString(nodeData.filename) || "";
+  const lineno = nodeData.lineno;
+  const timeMs = (nodeData.value / 1000).toFixed(2);
+  const percent = rootValue > 0 ? ((nodeData.value / rootValue) * 100).toFixed(1) : "0.0";
+
+  const brandEl = document.getElementById('status-brand');
+  const taglineEl = document.getElementById('status-tagline');
+  if (brandEl) brandEl.style.display = 'none';
+  if (taglineEl) taglineEl.style.display = 'none';
+
+  const locationEl = document.getElementById('status-location');
+  const funcItem = document.getElementById('status-func-item');
+  const timeItem = document.getElementById('status-time-item');
+  const percentItem = document.getElementById('status-percent-item');
+
+  if (locationEl) locationEl.style.display = filename && filename !== "~" ? 'flex' : 'none';
+  if (funcItem) funcItem.style.display = 'flex';
+  if (timeItem) timeItem.style.display = 'flex';
+  if (percentItem) percentItem.style.display = 'flex';
+
+  const fileEl = document.getElementById('status-file');
+  if (fileEl && filename && filename !== "~") {
+    const basename = filename.split('/').pop();
+    fileEl.textContent = lineno ? `${basename}:${lineno}` : basename;
+  }
+
+  const funcEl = document.getElementById('status-func');
+  if (funcEl) funcEl.textContent = funcname.length > 40 ? funcname.substring(0, 37) + '...' : funcname;
+
+  const timeEl = document.getElementById('status-time');
+  if (timeEl) timeEl.textContent = `${timeMs} ms`;
+
+  const percentEl = document.getElementById('status-percent');
+  if (percentEl) percentEl.textContent = `${percent}%`;
+}
+
+function clearStatusBar() {
+  const ids = ['status-location', 'status-func-item', 'status-time-item', 'status-percent-item'];
+  ids.forEach(id => {
+    const el = document.getElementById(id);
+    if (el) el.style.display = 'none';
+  });
+
+  const brandEl = document.getElementById('status-brand');
+  const taglineEl = document.getElementById('status-tagline');
+  if (brandEl) brandEl.style.display = 'flex';
+  if (taglineEl) taglineEl.style.display = 'flex';
+}
+
+// ============================================================================
+// Tooltip
+// ============================================================================
+
+function createPythonTooltip(data) {
+  const pythonTooltip = flamegraph.tooltip.defaultFlamegraphTooltip();
+
+  pythonTooltip.show = function (d, element) {
+    if (!this._tooltip) {
+      this._tooltip = d3.select("body")
+        .append("div")
+        .attr("class", "python-tooltip")
+        .style("opacity", 0);
+    }
+
+    const timeMs = (d.data.value / 1000).toFixed(2);
+    const percentage = ((d.data.value / data.value) * 100).toFixed(2);
+    const calls = d.data.calls || 0;
+    const childCount = d.children ? d.children.length : 0;
+    const source = d.data.source;
+
+    const funcname = resolveString(d.data.funcname) || resolveString(d.data.name);
+    const filename = resolveString(d.data.filename) || "";
+    const isSpecialFrame = filename === "~";
+
+    // Build source section
+    let sourceSection = "";
+    if (source && Array.isArray(source) && source.length > 0) {
+      const sourceLines = source
+        .map((line) => {
+          const isCurrent = line.startsWith("→");
+          const escaped = line.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+          return `<div class="tooltip-source-line${isCurrent ? ' current' : ''}">${escaped}</div>`;
+        })
+        .join("");
+
+      sourceSection = `
+        <div class="tooltip-source">
+          <div class="tooltip-source-title">Source Code:</div>
+          <div class="tooltip-source-code">${sourceLines}</div>
+        </div>`;
+    }
+
+    // Create bytecode/opcode section if available
+    let opcodeSection = "";
+    const opcodes = d.data.opcodes;
+    if (opcodes && typeof opcodes === 'object' && Object.keys(opcodes).length > 0) {
+      // Sort opcodes by sample count (descending)
+      const sortedOpcodes = Object.entries(opcodes)
+        .sort((a, b) => b[1] - a[1])
+        .slice(0, 8); // Limit to top 8
+
+      const totalOpcodeSamples = sortedOpcodes.reduce((sum, [, count]) => sum + count, 0);
+      const maxCount = sortedOpcodes[0][1] || 1;
+
+      const opcodeLines = sortedOpcodes.map(([opcode, count]) => {
+        const opcodeInfo = getOpcodeInfo(parseInt(opcode, 10));
+        const pct = ((count / totalOpcodeSamples) * 100).toFixed(1);
+        const barWidth = (count / maxCount) * 100;
+        const specializedBadge = opcodeInfo.isSpecialized
+          ? '<span class="tooltip-opcode-badge">SPECIALIZED</span>'
+          : '';
+        const baseOpHint = opcodeInfo.isSpecialized
+          ? `<span class="tooltip-opcode-base-hint">(${opcodeInfo.baseOpname})</span>`
+          : '';
+        const nameClass = opcodeInfo.isSpecialized
+          ? 'tooltip-opcode-name specialized'
+          : 'tooltip-opcode-name';
+
+        return `
+          <div class="tooltip-opcode-row">
+            <div class="${nameClass}">
+              ${opcodeInfo.opname}${baseOpHint}${specializedBadge}
+            </div>
+            <div class="tooltip-opcode-count">${count.toLocaleString()} (${pct}%)</div>
+            <div class="tooltip-opcode-bar">
+              <div class="tooltip-opcode-bar-fill" style="width: ${barWidth}%;"></div>
+            </div>
+          </div>`;
+      }).join('');
+
+      opcodeSection = `
+        <div class="tooltip-opcodes">
+          <div class="tooltip-opcodes-title">Bytecode Instructions:</div>
+          <div class="tooltip-opcodes-list">
+            ${opcodeLines}
+          </div>
+        </div>`;
+    }
+
+    const fileLocationHTML = isSpecialFrame ? "" : `
+      <div class="tooltip-location">${filename}${d.data.lineno ? ":" + d.data.lineno : ""}</div>`;
+
+    const tooltipHTML = `
+      <div class="tooltip-header">
+        <div class="tooltip-title">${funcname}</div>
+        ${fileLocationHTML}
+      </div>
+      <div class="tooltip-stats">
+        <span class="tooltip-stat-label">Execution Time:</span>
+        <span class="tooltip-stat-value">${timeMs} ms</span>
+
+        <span class="tooltip-stat-label">Percentage:</span>
+        <span class="tooltip-stat-value accent">${percentage}%</span>
+
+        ${calls > 0 ? `
+          <span class="tooltip-stat-label">Function Calls:</span>
+          <span class="tooltip-stat-value">${calls.toLocaleString()}</span>
+        ` : ''}
+
+        ${childCount > 0 ? `
+          <span class="tooltip-stat-label">Child Functions:</span>
+          <span class="tooltip-stat-value">${childCount}</span>
+        ` : ''}
+      </div>
+      ${sourceSection}
+      ${opcodeSection}
+      <div class="tooltip-hint">
+        ${childCount > 0 ? "Click to zoom into this function" : "Leaf function - no children"}
+      </div>
+    `;
+
+    // Position tooltip
+    const event = d3.event || window.event;
+    const mouseX = event.pageX || event.clientX;
+    const mouseY = event.pageY || event.clientY;
+    const padding = 12;
+
+    this._tooltip.html(tooltipHTML);
+
+    // Measure tooltip
+    const node = this._tooltip.style("display", "block").style("opacity", 0).node();
+    const tooltipWidth = node.offsetWidth || 320;
+    const tooltipHeight = node.offsetHeight || 200;
+
+    // Calculate position
+    let left = mouseX + padding;
+    let top = mouseY + padding;
+
+    if (left + tooltipWidth > window.innerWidth) {
+      left = mouseX - tooltipWidth - padding;
+      if (left < 0) left = padding;
+    }
+
+    if (top + tooltipHeight > window.innerHeight) {
+      top = mouseY - tooltipHeight - padding;
+      if (top < 0) top = padding;
+    }
+
+    this._tooltip
+      .style("left", left + "px")
+      .style("top", top + "px")
+      .transition()
+      .duration(150)
+      .style("opacity", 1);
+
+    // Update status bar
+    updateStatusBar(d.data, data.value);
+  };
+
+  pythonTooltip.hide = function () {
+    if (this._tooltip) {
+      this._tooltip.transition().duration(150).style("opacity", 0);
+    }
+    clearStatusBar();
+  };
+
+  return pythonTooltip;
+}
+
+// ============================================================================
+// Flamegraph Creation
+// ============================================================================
+
+function ensureLibraryLoaded() {
+  if (typeof flamegraph === "undefined") {
+    console.error("d3-flame-graph library not loaded");
+    document.getElementById("chart").innerHTML =
+      '<div style="padding: 40px; text-align: center; color: var(--text-muted);">Error: d3-flame-graph library failed to load</div>';
+    throw new Error("d3-flame-graph library failed to load");
+  }
+}
+
+const HEAT_THRESHOLDS = [
+  [0.6, 8],
+  [0.35, 7],
+  [0.18, 6],
+  [0.12, 5],
+  [0.06, 4],
+  [0.03, 3],
+  [0.01, 2],
+];
+
+function getHeatLevel(percentage) {
+  for (const [threshold, level] of HEAT_THRESHOLDS) {
+    if (percentage >= threshold) return level;
+  }
+  return 1;
+}
+
+function getHeatColors() {
+  const style = getComputedStyle(document.documentElement);
+  const colors = {};
+  for (let i = 1; i <= 8; i++) {
+    colors[i] = style.getPropertyValue(`--heat-${i}`).trim();
+  }
+  return colors;
+}
+
+function createFlamegraph(tooltip, rootValue) {
+  const chartArea = document.querySelector('.chart-area');
+  const width = chartArea ? chartArea.clientWidth - 32 : window.innerWidth - 320;
+  const heatColors = getHeatColors();
+
+  let chart = flamegraph()
+    .width(width)
+    .cellHeight(20)
+    .transitionDuration(300)
+    .minFrameSize(1)
+    .tooltip(tooltip)
+    .inverted(true)
+    .setColorMapper(function (d) {
+      // Root node should be transparent
+      if (d.depth === 0) return 'transparent';
+
+      const percentage = d.data.value / rootValue;
+      const level = getHeatLevel(percentage);
+      return heatColors[level];
+    });
+
+  return chart;
+}
+
+function renderFlamegraph(chart, data) {
+  d3.select("#chart").datum(data).call(chart);
+  window.flamegraphChart = chart;
+  window.flamegraphData = data;
+  populateStats(data);
+}
+
+// ============================================================================
+// Search
+// ============================================================================
+
+function updateSearchHighlight(searchTerm, searchInput) {
+  d3.selectAll("#chart rect")
+    .classed("search-match", false)
+    .classed("search-dim", false);
+
+  // Clear active state from all hotspots
+  document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));
+
+  if (searchTerm && searchTerm.length > 0) {
+    let matchCount = 0;
+
+    d3.selectAll("#chart rect").each(function (d) {
+      if (d && d.data) {
+        const name = resolveString(d.data.name) || "";
+        const funcname = resolveString(d.data.funcname) || "";
+        const filename = resolveString(d.data.filename) || "";
+        const lineno = d.data.lineno;
+        const term = searchTerm.toLowerCase();
+
+        // Check if search term looks like file:line pattern
+        const fileLineMatch = term.match(/^(.+):(\d+)$/);
+        let matches = false;
+
+        if (fileLineMatch) {
+          // Exact file:line matching
+          const searchFile = fileLineMatch[1];
+          const searchLine = parseInt(fileLineMatch[2], 10);
+          const basename = filename.split('/').pop().toLowerCase();
+          matches = basename.includes(searchFile) && lineno === searchLine;
+        } else {
+          // Regular substring search
+          matches =
+            name.toLowerCase().includes(term) ||
+            funcname.toLowerCase().includes(term) ||
+            filename.toLowerCase().includes(term);
+        }
+
+        if (matches) {
+          matchCount++;
+          d3.select(this).classed("search-match", true);
+        } else {
+          d3.select(this).classed("search-dim", true);
+        }
+      }
+    });
+
+    if (searchInput) {
+      searchInput.classList.remove("has-matches", "no-matches");
+      searchInput.classList.add(matchCount > 0 ? "has-matches" : "no-matches");
+    }
+
+    // Mark matching hotspot as active
+    document.querySelectorAll('.hotspot').forEach(h => {
+      if (h.dataset.searchterm && h.dataset.searchterm.toLowerCase() === searchTerm.toLowerCase()) {
+        h.classList.add('active');
+      }
+    });
+  } else if (searchInput) {
+    searchInput.classList.remove("has-matches", "no-matches");
+  }
+}
+
+function searchForHotspot(funcname) {
+  const searchInput = document.getElementById('search-input');
+  const searchWrapper = document.querySelector('.search-wrapper');
+  if (searchInput) {
+    // Toggle: if already searching for this term, clear it
+    if (searchInput.value.trim() === funcname) {
+      clearSearch();
+    } else {
+      searchInput.value = funcname;
+      if (searchWrapper) {
+        searchWrapper.classList.add('has-value');
+      }
+      performSearch();
+    }
+  }
+}
+
+function initSearchHandlers() {
+  const searchInput = document.getElementById("search-input");
+  const searchWrapper = document.querySelector(".search-wrapper");
+  if (!searchInput) return;
+
+  let searchTimeout;
+  function performSearch() {
+    const term = searchInput.value.trim();
+    updateSearchHighlight(term, searchInput);
+    // Toggle has-value class for clear button visibility
+    if (searchWrapper) {
+      searchWrapper.classList.toggle("has-value", term.length > 0);
+    }
+  }
+
+  searchInput.addEventListener("input", function () {
+    clearTimeout(searchTimeout);
+    searchTimeout = setTimeout(performSearch, 150);
+  });
+
+  window.performSearch = performSearch;
+}
+
+function clearSearch() {
+  const searchInput = document.getElementById("search-input");
+  const searchWrapper = document.querySelector(".search-wrapper");
+  if (searchInput) {
+    searchInput.value = "";
+    searchInput.classList.remove("has-matches", "no-matches");
+    if (searchWrapper) {
+      searchWrapper.classList.remove("has-value");
+    }
+    // Clear highlights
+    d3.selectAll("#chart rect")
+      .classed("search-match", false)
+      .classed("search-dim", false);
+    // Clear active hotspot
+    document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));
+  }
+}
+
+// ============================================================================
+// Resize Handler
+// ============================================================================
+
+function handleResize() {
+  let resizeTimeout;
+  window.addEventListener("resize", function () {
+    clearTimeout(resizeTimeout);
+    resizeTimeout = setTimeout(resizeChart, 100);
+  });
+}
+
+function initSidebarResize() {
+  const sidebar = document.getElementById('sidebar');
+  const resizeHandle = document.getElementById('sidebar-resize-handle');
+  if (!sidebar || !resizeHandle) return;
+
+  let isResizing = false;
+  let startX = 0;
+  let startWidth = 0;
+  const minWidth = 200;
+  const maxWidth = 600;
+
+  resizeHandle.addEventListener('mousedown', function(e) {
+    isResizing = true;
+    startX = e.clientX;
+    startWidth = sidebar.offsetWidth;
+    resizeHandle.classList.add('resizing');
+    document.body.classList.add('resizing-sidebar');
+    e.preventDefault();
+  });
+
+  document.addEventListener('mousemove', function(e) {
+    if (!isResizing) return;
+
+    const deltaX = e.clientX - startX;
+    const newWidth = Math.min(Math.max(startWidth + deltaX, minWidth), maxWidth);
+    sidebar.style.width = newWidth + 'px';
+    e.preventDefault();
+  });
+
+  document.addEventListener('mouseup', function() {
+    if (isResizing) {
+      isResizing = false;
+      resizeHandle.classList.remove('resizing');
+      document.body.classList.remove('resizing-sidebar');
+
+      // Save the new width
+      const width = sidebar.offsetWidth;
+      localStorage.setItem('flamegraph-sidebar-width', width);
+
+      // Resize chart after sidebar resize
+      setTimeout(() => {
+        resizeChart();
+      }, 10);
+    }
+  });
+}
+
+// ============================================================================
+// Thread Stats
+// ============================================================================
+
+// Mode constants (must match constants.py)
+const PROFILING_MODE_WALL = 0;
+const PROFILING_MODE_CPU = 1;
+const PROFILING_MODE_GIL = 2;
+const PROFILING_MODE_ALL = 3;
+
+function populateThreadStats(data, selectedThreadId = null) {
+  const stats = data?.stats;
+  if (!stats || !stats.thread_stats) {
+    return;
+  }
+
+  const mode = stats.mode !== undefined ? stats.mode : PROFILING_MODE_WALL;
+  let threadStats;
+
+  if (selectedThreadId !== null && stats.per_thread_stats && stats.per_thread_stats[selectedThreadId]) {
+    threadStats = stats.per_thread_stats[selectedThreadId];
+  } else {
+    threadStats = stats.thread_stats;
+  }
+
+  if (!threadStats || typeof threadStats.total !== 'number' || threadStats.total <= 0) {
+    return;
+  }
+
+  const section = document.getElementById('thread-stats-bar');
+  if (!section) {
+    return;
+  }
+
+  section.style.display = 'block';
+
+  const gilHeldStat = document.getElementById('gil-held-stat');
+  const gilReleasedStat = document.getElementById('gil-released-stat');
+  const gilWaitingStat = document.getElementById('gil-waiting-stat');
+
+  if (mode === PROFILING_MODE_GIL) {
+    // In GIL mode, hide GIL-related stats
+    if (gilHeldStat) gilHeldStat.style.display = 'none';
+    if (gilReleasedStat) gilReleasedStat.style.display = 'none';
+    if (gilWaitingStat) gilWaitingStat.style.display = 'none';
+  } else {
+    // Show all stats
+    if (gilHeldStat) gilHeldStat.style.display = 'block';
+    if (gilReleasedStat) gilReleasedStat.style.display = 'block';
+    if (gilWaitingStat) gilWaitingStat.style.display = 'block';
+
+    const gilHeldPctElem = document.getElementById('gil-held-pct');
+    if (gilHeldPctElem) gilHeldPctElem.textContent = `${(threadStats.has_gil_pct || 0).toFixed(1)}%`;
+
+    const gilReleasedPctElem = document.getElementById('gil-released-pct');
+    // GIL Released = not holding GIL and not waiting for it
+    const gilReleasedPct = Math.max(0, 100 - (threadStats.has_gil_pct || 0) - (threadStats.gil_requested_pct || 0));
+    if (gilReleasedPctElem) gilReleasedPctElem.textContent = `${gilReleasedPct.toFixed(1)}%`;
+
+    const gilWaitingPctElem = document.getElementById('gil-waiting-pct');
+    if (gilWaitingPctElem) gilWaitingPctElem.textContent = `${(threadStats.gil_requested_pct || 0).toFixed(1)}%`;
+  }
+
+  const gcPctElem = document.getElementById('gc-pct');
+  if (gcPctElem) gcPctElem.textContent = `${(threadStats.gc_pct || 0).toFixed(1)}%`;
+
+  // Exception stats
+  const excPctElem = document.getElementById('exc-pct');
+  if (excPctElem) excPctElem.textContent = `${(threadStats.has_exception_pct || 0).toFixed(1)}%`;
+}
+
+// ============================================================================
+// Profile Summary Stats
+// ============================================================================
+
+function formatNumber(num) {
+  if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';
+  if (num >= 1000) return (num / 1000).toFixed(1) + 'K';
+  return num.toLocaleString();
+}
+
+function formatDuration(seconds) {
+  if (seconds >= 3600) {
+    const h = Math.floor(seconds / 3600);
+    const m = Math.floor((seconds % 3600) / 60);
+    return `${h}h ${m}m`;
+  }
+  if (seconds >= 60) {
+    const m = Math.floor(seconds / 60);
+    const s = Math.floor(seconds % 60);
+    return `${m}m ${s}s`;
+  }
+  return seconds.toFixed(2) + 's';
+}
+
+function populateProfileSummary(data) {
+  const stats = data.stats || {};
+  const totalSamples = stats.total_samples || data.value || 0;
+  const duration = stats.duration_sec || 0;
+  const sampleRate = stats.sample_rate || (duration > 0 ? totalSamples / duration : 0);
+  const errorRate = stats.error_rate || 0;
+  const missedSamples= stats.missed_samples || 0;
+
+  const samplesEl = document.getElementById('stat-total-samples');
+  if (samplesEl) samplesEl.textContent = formatNumber(totalSamples);
+
+  const durationEl = document.getElementById('stat-duration');
+  if (durationEl) durationEl.textContent = duration > 0 ? formatDuration(duration) : '--';
+
+  const rateEl = document.getElementById('stat-sample-rate');
+  if (rateEl) rateEl.textContent = sampleRate > 0 ? formatNumber(Math.round(sampleRate)) : '--';
+
+  // Count unique functions
+  // Use normal (non-inverted) tree structure, but respect thread filtering
+  const uniqueFunctions = new Set();
+  function collectUniqueFunctions(node) {
+    if (!node) return;
+    const filename = resolveString(node.filename) || 'unknown';
+    const funcname = resolveString(node.funcname) || resolveString(node.name) || 'unknown';
+    const lineno = node.lineno || 0;
+    const key = `${filename}|${lineno}|${funcname}`;
+    uniqueFunctions.add(key);
+    if (node.children) node.children.forEach(collectUniqueFunctions);
+  }
+  // In inverted mode, use normalData (with thread filter if active)
+  // In normal mode, use the passed data (already has thread filter applied if any)
+  let functionCountSource;
+  if (!normalData) {
+    functionCountSource = data;
+  } else if (isInverted) {
+    if (currentThreadFilter !== 'all') {
+      functionCountSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
+    } else {
+      functionCountSource = normalData;
+    }
+  } else {
+    functionCountSource = data;
+  }
+  collectUniqueFunctions(functionCountSource);
+
+  const functionsEl = document.getElementById('stat-functions');
+  if (functionsEl) functionsEl.textContent = formatNumber(uniqueFunctions.size);
+
+  // Efficiency bar
+  if (errorRate !== undefined && errorRate !== null) {
+    const efficiency = Math.max(0, Math.min(100, (100 - errorRate)));
+
+    const efficiencySection = document.getElementById('efficiency-section');
+    if (efficiencySection) efficiencySection.style.display = 'block';
+
+    const efficiencyValue = document.getElementById('stat-efficiency');
+    if (efficiencyValue) efficiencyValue.textContent = efficiency.toFixed(1) + '%';
+
+    const efficiencyFill = document.getElementById('efficiency-fill');
+    if (efficiencyFill) efficiencyFill.style.width = efficiency + '%';
+  }
+  // MissedSamples bar
+  if (missedSamples !== undefined && missedSamples !== null) {
+    const sampleEfficiency = Math.max(0, missedSamples);
+
+    const efficiencySection = document.getElementById('efficiency-section');
+    if (efficiencySection) efficiencySection.style.display = 'block';
+
+    const sampleEfficiencyValue = document.getElementById('stat-missed-samples');
+    if (sampleEfficiencyValue) sampleEfficiencyValue.textContent = sampleEfficiency.toFixed(1) + '%';
+
+    const sampleEfficiencyFill = document.getElementById('missed-samples-fill');
+    if (sampleEfficiencyFill) sampleEfficiencyFill.style.width = sampleEfficiency + '%';
+  }
+}
+
+// ============================================================================
+// Hotspot Stats
+// ============================================================================
+
+function populateStats(data) {
+  // Populate profile summary
+  populateProfileSummary(data);
+
+  // Populate thread statistics if available
+  populateThreadStats(data);
+
+  // For hotspots: use normal (non-inverted) tree structure, but respect thread filtering.
+  // In inverted view, the tree structure changes but the hottest functions remain the same.
+  // However, if a thread filter is active, we need to show that thread's hotspots.
+  let hotspotSource;
+  if (!normalData) {
+    hotspotSource = data;
+  } else if (isInverted) {
+    // In inverted mode, use normalData (with thread filter if active)
+    if (currentThreadFilter !== 'all') {
+      hotspotSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
+    } else {
+      hotspotSource = normalData;
+    }
+  } else {
+    // In normal mode, use the passed data (already has thread filter applied if any)
+    hotspotSource = data;
+  }
+  const totalSamples = hotspotSource.value || 0;
+
+  const functionMap = new Map();
+
+  function collectFunctions(node) {
+    if (!node) return;
+
+    let filename = resolveString(node.filename);
+    let funcname = resolveString(node.funcname);
+
+    if (!filename || !funcname) {
+      const nameStr = resolveString(node.name);
+      if (nameStr?.includes('(')) {
+        const match = nameStr.match(/^(.+?)\s*\((.+?):(\d+)\)$/);
+        if (match) {
+          funcname = funcname || match[1];
+          filename = filename || match[2];
+        }
+      }
+    }
+
+    filename = filename || 'unknown';
+    funcname = funcname || 'unknown';
+
+    if (filename !== 'unknown' && funcname !== 'unknown' && node.value > 0) {
+      let childrenValue = 0;
+      if (node.children) {
+        childrenValue = node.children.reduce((sum, child) => sum + child.value, 0);
+      }
+      const directSamples = Math.max(0, node.value - childrenValue);
+
+      const funcKey = `${filename}:${node.lineno || '?'}:${funcname}`;
+
+      if (functionMap.has(funcKey)) {
+        const existing = functionMap.get(funcKey);
+        existing.directSamples += directSamples;
+        existing.directPercent = (existing.directSamples / totalSamples) * 100;
+        if (directSamples > existing.maxSingleSamples) {
+          existing.filename = filename;
+          existing.lineno = node.lineno || '?';
+          existing.maxSingleSamples = directSamples;
+        }
+      } else {
+        functionMap.set(funcKey, {
+          filename: filename,
+          lineno: node.lineno || '?',
+          funcname: funcname,
+          directSamples,
+          directPercent: (directSamples / totalSamples) * 100,
+          maxSingleSamples: directSamples
+        });
+      }
+    }
+
+    if (node.children) {
+      node.children.forEach(child => collectFunctions(child));
+    }
+  }
+
+  collectFunctions(hotspotSource);
+
+  const hotSpots = Array.from(functionMap.values())
+    .filter(f => f.directPercent > 0.5)
+    .sort((a, b) => b.directPercent - a.directPercent)
+    .slice(0, 3);
+
+  // Populate and animate hotspot cards
+  for (let i = 0; i < 3; i++) {
+    const num = i + 1;
+    const card = document.getElementById(`hotspot-${num}`);
+    const funcEl = document.getElementById(`hotspot-func-${num}`);
+    const fileEl = document.getElementById(`hotspot-file-${num}`);
+    const percentEl = document.getElementById(`hotspot-percent-${num}`);
+    const samplesEl = document.getElementById(`hotspot-samples-${num}`);
+
+    if (i < hotSpots.length && hotSpots[i]) {
+      const h = hotSpots[i];
+      const filename = h.filename || 'unknown';
+      const lineno = h.lineno ?? '?';
+      const isSpecialFrame = filename === '~' && (lineno === 0 || lineno === '?');
+
+      let funcDisplay = h.funcname || 'unknown';
+      if (funcDisplay.length > 28) funcDisplay = funcDisplay.substring(0, 25) + '...';
+
+      if (funcEl) funcEl.textContent = funcDisplay;
+      if (fileEl) {
+        if (isSpecialFrame) {
+          fileEl.textContent = '--';
+        } else {
+          const basename = filename !== 'unknown' ? filename.split('/').pop() : 'unknown';
+          fileEl.textContent = `${basename}:${lineno}`;
+        }
+      }
+      if (percentEl) percentEl.textContent = `${h.directPercent.toFixed(1)}%`;
+      if (samplesEl) samplesEl.textContent = ` (${h.directSamples.toLocaleString()})`;
+    } else {
+      if (funcEl) funcEl.textContent = '--';
+      if (fileEl) fileEl.textContent = '--';
+      if (percentEl) percentEl.textContent = '--';
+      if (samplesEl) samplesEl.textContent = '';
+    }
+
+    // Add click handler and animate entrance
+    if (card) {
+      if (i < hotSpots.length && hotSpots[i]) {
+        const h = hotSpots[i];
+        const basename = h.filename !== 'unknown' ? h.filename.split('/').pop() : '';
+        const searchTerm = basename && h.lineno !== '?' ? `${basename}:${h.lineno}` : h.funcname;
+        card.dataset.searchterm = searchTerm;
+        card.onclick = () => searchForHotspot(searchTerm);
+        card.style.cursor = 'pointer';
+      } else {
+        card.onclick = null;
+        delete card.dataset.searchterm;
+        card.style.cursor = 'default';
+      }
+
+      setTimeout(() => {
+        card.classList.add('visible');
+      }, 100 + i * 80);
+    }
+  }
+}
+
+// ============================================================================
+// Thread Filter
+// ============================================================================
+
+function initThreadFilter(data) {
+  const threadFilter = document.getElementById('thread-filter');
+  const threadSection = document.getElementById('thread-section');
+
+  if (!threadFilter || !data.threads) return;
+
+  threadFilter.innerHTML = '<option value="all">All Threads</option>';
+
+  const threads = data.threads || [];
+  threads.forEach(threadId => {
+    const option = document.createElement('option');
+    option.value = threadId;
+    option.textContent = `Thread ${threadId}`;
+    threadFilter.appendChild(option);
+  });
+
+  if (threads.length > 1 && threadSection) {
+    threadSection.style.display = 'block';
+  }
+}
+
+function filterByThread() {
+  const threadFilter = document.getElementById('thread-filter');
+  if (!threadFilter || !normalData) return;
+
+  const selectedThread = threadFilter.value;
+  currentThreadFilter = selectedThread;
+  const baseData = isInverted ? invertedData : normalData;
+
+  let filteredData;
+  let selectedThreadId = null;
+
+  if (selectedThread === 'all') {
+    filteredData = baseData;
+  } else {
+    selectedThreadId = parseInt(selectedThread, 10);
+    filteredData = filterDataByThread(baseData, selectedThreadId);
+
+    if (filteredData.strings) {
+      stringTable = filteredData.strings;
+      filteredData = resolveStringIndices(filteredData);
+    }
+  }
+
+  const tooltip = createPythonTooltip(filteredData);
+  const chart = createFlamegraph(tooltip, filteredData.value);
+  renderFlamegraph(chart, filteredData);
+
+  populateThreadStats(baseData, selectedThreadId);
+}
+
+function filterDataByThread(data, threadId) {
+  function filterNode(node) {
+    if (!node.threads || !node.threads.includes(threadId)) {
+      return null;
+    }
+
+    const filteredNode = { ...node, children: [] };
+
+    if (node.children && Array.isArray(node.children)) {
+      filteredNode.children = node.children
+        .map(child => filterNode(child))
+        .filter(child => child !== null);
+    }
+
+    return filteredNode;
+  }
+
+  function recalculateValue(node) {
+    if (!node.children || node.children.length === 0) {
+      return node.value || 0;
+    }
+    const childrenValue = node.children.reduce((sum, child) => sum + recalculateValue(child), 0);
+    node.value = Math.max(node.value || 0, childrenValue);
+    return node.value;
+  }
+
+  const filteredRoot = { ...data, children: [] };
+
+  if (data.children && Array.isArray(data.children)) {
+    filteredRoot.children = data.children
+      .map(child => filterNode(child))
+      .filter(child => child !== null);
+  }
+
+  recalculateValue(filteredRoot);
+  return filteredRoot;
+}
+
+// ============================================================================
+// Control Functions
+// ============================================================================
+
+function resetZoom() {
+  if (window.flamegraphChart) {
+    window.flamegraphChart.resetZoom();
+  }
+}
+
+function exportSVG() {
+  const svgElement = document.querySelector("#chart svg");
+  if (!svgElement) {
+    console.warn("Cannot export: No flamegraph SVG found");
+    return;
+  }
+  const serializer = new XMLSerializer();
+  const svgString = serializer.serializeToString(svgElement);
+  const blob = new Blob([svgString], { type: "image/svg+xml" });
+  const url = URL.createObjectURL(blob);
+  const a = document.createElement("a");
+  a.href = url;
+  a.download = "python-performance-flamegraph.svg";
+  a.click();
+  URL.revokeObjectURL(url);
+}
+
+// ============================================================================
+// Inverted Flamegraph
+// ============================================================================
+
+// Example: "file.py|10|foo" or "~|0|<GC>" for special frames
+function getInvertNodeKey(node) {
+  return `${node.filename || '~'}|${node.lineno || 0}|${node.funcname || node.name}`;
+}
+
+function accumulateInvertedNode(parent, stackFrame, leaf) {
+  const key = getInvertNodeKey(stackFrame);
+
+  if (!parent.children[key]) {
+    parent.children[key] = {
+      name: stackFrame.name,
+      value: 0,
+      children: {},
+      filename: stackFrame.filename,
+      lineno: stackFrame.lineno,
+      funcname: stackFrame.funcname,
+      source: stackFrame.source,
+      threads: new Set()
+    };
+  }
+
+  const node = parent.children[key];
+  node.value += leaf.value;
+  if (leaf.threads) {
+    leaf.threads.forEach(t => node.threads.add(t));
+  }
+
+  return node;
+}
+
+function processLeaf(invertedRoot, path, leafNode) {
+  if (!path || path.length === 0) {
+    return;
+  }
+
+  let invertedParent = accumulateInvertedNode(invertedRoot, leafNode, leafNode);
+
+  // Walk backwards through the call stack
+  for (let i = path.length - 2; i >= 0; i--) {
+    invertedParent = accumulateInvertedNode(invertedParent, path[i], leafNode);
+  }
+}
+
+function traverseInvert(path, currentNode, invertedRoot) {
+  const children = currentNode.children || [];
+  const childThreads = new Set(children.flatMap(c => c.threads || []));
+  const selfThreads = (currentNode.threads || []).filter(t => !childThreads.has(t));
+
+  if (selfThreads.length > 0) {
+    processLeaf(invertedRoot, path, { ...currentNode, threads: selfThreads });
+  }
+
+  children.forEach(child => traverseInvert(path.concat([child]), child, invertedRoot));
+}
+
+function convertInvertDictToArray(node) {
+  if (node.threads instanceof Set) {
+    node.threads = Array.from(node.threads).sort((a, b) => a - b);
+  }
+
+  const children = node.children;
+  if (children && typeof children === 'object' && !Array.isArray(children)) {
+    node.children = Object.values(children);
+    node.children.sort((a, b) => b.value - a.value || a.name.localeCompare(b.name));
+    node.children.forEach(convertInvertDictToArray);
+  }
+  return node;
+}
+
+function generateInvertedFlamegraph(data) {
+  const invertedRoot = {
+    name: data.name,
+    value: data.value,
+    children: {},
+    stats: data.stats,
+    threads: data.threads
+  };
+
+  const children = data.children || [];
+  if (children.length === 0) {
+    // Single-frame tree: the root is its own leaf
+    processLeaf(invertedRoot, [data], data);
+  } else {
+    children.forEach(child => traverseInvert([child], child, invertedRoot));
+  }
+
+  convertInvertDictToArray(invertedRoot);
+  return invertedRoot;
+}
+
+function updateToggleUI(toggleId, isOn) {
+  const toggle = document.getElementById(toggleId);
+  if (toggle) {
+    const track = toggle.querySelector('.toggle-track');
+    const labels = toggle.querySelectorAll('.toggle-label');
+    if (isOn) {
+      track.classList.add('on');
+      labels[0].classList.remove('active');
+      labels[1].classList.add('active');
+    } else {
+      track.classList.remove('on');
+      labels[0].classList.add('active');
+      labels[1].classList.remove('active');
+    }
+  }
+}
+
+function toggleInvert() {
+  isInverted = !isInverted;
+  updateToggleUI('toggle-invert', isInverted);
+
+  // Build inverted data on first use
+  if (isInverted && !invertedData) {
+    invertedData = generateInvertedFlamegraph(normalData);
+  }
+
+  let dataToRender = isInverted ? invertedData : normalData;
+
+  if (currentThreadFilter !== 'all') {
+    dataToRender = filterDataByThread(dataToRender, parseInt(currentThreadFilter));
+  }
+
+  const tooltip = createPythonTooltip(dataToRender);
+  const chart = createFlamegraph(tooltip, dataToRender.value);
+  renderFlamegraph(chart, dataToRender);
+}
+
+// ============================================================================
+// Initialization
+// ============================================================================
+
+function initFlamegraph() {
+  ensureLibraryLoaded();
+  restoreUIState();
+  setupLogos();
+
+  if (EMBEDDED_DATA.strings) {
+    stringTable = EMBEDDED_DATA.strings;
+    normalData = resolveStringIndices(EMBEDDED_DATA);
+  } else {
+    normalData = EMBEDDED_DATA;
+  }
+
+  // Initialize opcode mapping from embedded data
+  initOpcodeMapping(EMBEDDED_DATA);
+
+  // Inverted data will be built on first toggle
+  invertedData = null;
+
+  initThreadFilter(normalData);
+
+  const tooltip = createPythonTooltip(normalData);
+  const chart = createFlamegraph(tooltip, normalData.value);
+  renderFlamegraph(chart, normalData);
+  initSearchHandlers();
+  initSidebarResize();
+  handleResize();
+
+  const toggleInvertBtn = document.getElementById('toggle-invert');
+  if (toggleInvertBtn) {
+    toggleInvertBtn.addEventListener('click', toggleInvert);
+  }
+}
+
+// Keyboard shortcut: Enter/Space activates toggle switches
+document.addEventListener('keydown', function(e) {
+    if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
+        return;
+    }
+    if ((e.key === 'Enter' || e.key === ' ') && e.target.classList.contains('toggle-switch')) {
+        e.preventDefault();
+        e.target.click();
+    }
+});
+
+if (document.readyState === "loading") {
+  document.addEventListener("DOMContentLoaded", initFlamegraph);
+} else {
+  initFlamegraph();
+}
+
+</script>
+  </body>
+</html>
diff --git a/Doc/_static/tachyon-example-heatmap.html b/Doc/_static/tachyon-example-heatmap.html
new file mode 100644 (file)
index 0000000..f725e94
--- /dev/null
@@ -0,0 +1,3804 @@
+<!doctype html>
+<html lang="en" data-theme="light">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>/tmp/tachyon_selfcontained.py - Heatmap</title>
+    <style>
+/* ==========================================================================
+   Python Profiler - Shared CSS Foundation
+   Design system shared between Flamegraph and Heatmap viewers
+   ========================================================================== */
+
+/* --------------------------------------------------------------------------
+   CSS Variables & Theme System
+   -------------------------------------------------------------------------- */
+
+:root {
+  /* Typography */
+  --font-sans: "Source Sans Pro", "Lucida Grande", "Lucida Sans Unicode",
+               "Geneva", "Verdana", sans-serif;
+  --font-mono: 'SF Mono', 'Monaco', 'Consolas', 'Liberation Mono', monospace;
+
+  /* Python brand colors (theme-independent) */
+  --python-blue: #3776ab;
+  --python-blue-light: #4584bb;
+  --python-blue-lighter: #5592cc;
+  --python-gold: #ffd43b;
+  --python-gold-dark: #ffcd02;
+  --python-gold-light: #ffdc5c;
+
+  /* Heat palette - defined per theme below */
+
+  /* Layout */
+  --sidebar-width: 280px;
+  --sidebar-collapsed: 44px;
+  --topbar-height: 56px;
+  --statusbar-height: 32px;
+
+  /* Border radius */
+  --radius-sm: 4px;
+  --radius-md: 8px;
+  --radius-lg: 12px;
+
+  /* Transitions */
+  --transition-fast: 0.15s ease;
+  --transition-normal: 0.25s ease;
+  --transition-slow: 0.3s ease;
+}
+
+/* Light theme (default) */
+:root, [data-theme="light"] {
+  --bg-primary: #ffffff;
+  --bg-secondary: #f8f9fa;
+  --bg-tertiary: #e9ecef;
+  --border: #e9ecef;
+  --border-subtle: #f0f2f5;
+
+  --text-primary: #2e3338;
+  --text-secondary: #5a6c7d;
+  --text-muted: #6f767e;
+
+  --accent: #3776ab;
+  --accent-hover: #2d5aa0;
+  --accent-glow: rgba(55, 118, 171, 0.15);
+
+  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
+  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
+  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
+
+  --header-gradient: linear-gradient(135deg, #3776ab 0%, #4584bb 100%);
+
+  /* Light mode heat palette - blue to yellow to orange to red (cold to hot) */
+  --heat-1: #7ba3d1;
+  --heat-2: #a8d0ef;
+  --heat-3: #d6e9f8;
+  --heat-4: #ffe6a8;
+  --heat-5: #ffd43b;
+  --heat-6: #ffb84d;
+  --heat-7: #ff9966;
+  --heat-8: #ff6347;
+
+  /* Code view specific */
+  --code-bg: #ffffff;
+  --code-bg-line: #f8f9fa;
+  --code-border: #e9ecef;
+  --code-text: #2e3338;
+  --code-text-muted: #8b949e;
+  --code-accent: #3776ab;
+
+  /* Navigation colors */
+  --nav-caller: #2563eb;
+  --nav-caller-hover: #1d4ed8;
+  --nav-callee: #dc2626;
+  --nav-callee-hover: #b91c1c;
+
+  /* Specialization status colors */
+  --spec-high: #4caf50;
+  --spec-high-text: #2e7d32;
+  --spec-high-bg: rgba(76, 175, 80, 0.15);
+  --spec-medium: #ff9800;
+  --spec-medium-text: #e65100;
+  --spec-medium-bg: rgba(255, 152, 0, 0.15);
+  --spec-low: #9e9e9e;
+  --spec-low-text: #616161;
+  --spec-low-bg: rgba(158, 158, 158, 0.15);
+
+  /* Heatmap span highlighting colors */
+  --span-hot-base: 255, 100, 50;
+  --span-cold-base: 150, 150, 150;
+}
+
+/* Dark theme */
+[data-theme="dark"] {
+  --bg-primary: #0d1117;
+  --bg-secondary: #161b22;
+  --bg-tertiary: #21262d;
+  --border: #30363d;
+  --border-subtle: #21262d;
+
+  --text-primary: #e6edf3;
+  --text-secondary: #8b949e;
+  --text-muted: #757e8a;
+
+  --accent: #58a6ff;
+  --accent-hover: #79b8ff;
+  --accent-glow: rgba(88, 166, 255, 0.15);
+
+  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
+  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
+  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
+
+  --header-gradient: linear-gradient(135deg, #21262d 0%, #30363d 100%);
+
+  /* Dark mode heat palette - muted colors that provide sufficient contrast with light text */
+  --heat-1: rgba(74, 123, 167, 0.35);
+  --heat-2: rgba(90, 159, 168, 0.38);
+  --heat-3: rgba(106, 181, 181, 0.40);
+  --heat-4: rgba(126, 196, 136, 0.42);
+  --heat-5: rgba(160, 216, 120, 0.45);
+  --heat-6: rgba(196, 222, 106, 0.48);
+  --heat-7: rgba(244, 212, 77, 0.50);
+  --heat-8: rgba(255, 107, 53, 0.55);
+
+  /* Code view specific - dark mode */
+  --code-bg: #0d1117;
+  --code-bg-line: #161b22;
+  --code-border: #30363d;
+  --code-text: #e6edf3;
+  --code-text-muted: #6e7681;
+  --code-accent: #58a6ff;
+
+  /* Navigation colors - dark theme friendly */
+  --nav-caller: #58a6ff;
+  --nav-caller-hover: #4184e4;
+  --nav-callee: #f87171;
+  --nav-callee-hover: #e53e3e;
+
+  /* Specialization status colors - dark theme */
+  --spec-high: #81c784;
+  --spec-high-text: #81c784;
+  --spec-high-bg: rgba(129, 199, 132, 0.2);
+  --spec-medium: #ffb74d;
+  --spec-medium-text: #ffb74d;
+  --spec-medium-bg: rgba(255, 183, 77, 0.2);
+  --spec-low: #bdbdbd;
+  --spec-low-text: #9e9e9e;
+  --spec-low-bg: rgba(189, 189, 189, 0.15);
+
+  /* Heatmap span highlighting colors - dark theme */
+  --span-hot-base: 255, 107, 53;
+  --span-cold-base: 189, 189, 189;
+}
+
+/* --------------------------------------------------------------------------
+   Base Styles
+   -------------------------------------------------------------------------- */
+
+*, *::before, *::after {
+  box-sizing: border-box;
+}
+
+html, body {
+  margin: 0;
+  padding: 0;
+}
+
+body {
+  font-family: var(--font-sans);
+  font-size: 14px;
+  line-height: 1.6;
+  color: var(--text-primary);
+  background: var(--bg-primary);
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  transition: background var(--transition-normal), color var(--transition-normal);
+}
+
+/* --------------------------------------------------------------------------
+   Layout Structure
+   -------------------------------------------------------------------------- */
+
+.app-layout {
+  display: flex;
+  flex-direction: column;
+}
+
+/* --------------------------------------------------------------------------
+   Top Bar
+   -------------------------------------------------------------------------- */
+
+.top-bar {
+  height: var(--topbar-height);
+  background: var(--header-gradient);
+  display: flex;
+  align-items: center;
+  padding: 0 16px;
+  gap: 16px;
+  flex-shrink: 0;
+  box-shadow: 0 2px 10px rgba(55, 118, 171, 0.25);
+  border-bottom: 2px solid var(--python-gold);
+}
+
+/* Brand / Logo */
+.brand {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  color: white;
+  text-decoration: none;
+  flex-shrink: 0;
+}
+
+.brand-logo {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 48px;
+  height: 40px;
+  flex-shrink: 0;
+}
+
+/* Style the inlined SVG/img inside brand-logo */
+.brand-logo svg,
+.brand-logo img {
+  width: 48px;
+  height: 40px;
+  display: block;
+  object-fit: contain;
+  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
+}
+
+.brand-info {
+  display: flex;
+  flex-direction: column;
+  line-height: 1.15;
+}
+
+.brand-text {
+  font-family: var(--font-sans);
+  font-weight: 700;
+  font-size: 16px;
+  letter-spacing: -0.3px;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
+  color: inherit;
+  text-decoration: none;
+}
+
+.brand-subtitle {
+  font-weight: 500;
+  font-size: 10px;
+  opacity: 0.9;
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+}
+
+.brand-divider {
+  width: 1px;
+  height: 16px;
+  background: rgba(255, 255, 255, 0.3);
+}
+
+/* Toolbar */
+.toolbar {
+  display: flex;
+  align-items: center;
+  gap: 6px;
+  margin-left: auto;
+}
+
+.toolbar-btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 32px;
+  height: 32px;
+  padding: 0;
+  font-size: 15px;
+  color: white;
+  background: rgba(255, 255, 255, 0.12);
+  border: 1px solid rgba(255, 255, 255, 0.18);
+  border-radius: 6px;
+  cursor: pointer;
+  text-decoration: none;
+  transition: all var(--transition-fast);
+}
+
+.toolbar-btn:hover {
+  background: rgba(255, 255, 255, 0.22);
+  border-color: rgba(255, 255, 255, 0.35);
+}
+
+.toolbar-btn:active {
+  transform: scale(0.95);
+}
+
+/* --------------------------------------------------------------------------
+   Status Bar
+   -------------------------------------------------------------------------- */
+
+.status-bar {
+  height: var(--statusbar-height);
+  background: var(--bg-secondary);
+  border-top: 1px solid var(--border);
+  display: flex;
+  align-items: center;
+  padding: 0 16px;
+  gap: 16px;
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-secondary);
+  flex-shrink: 0;
+}
+
+.status-item {
+  display: flex;
+  align-items: center;
+  gap: 5px;
+}
+
+.status-item::before {
+  content: '';
+  width: 4px;
+  height: 4px;
+  background: var(--python-gold);
+  border-radius: 50%;
+}
+
+.status-item:first-child::before {
+  display: none;
+}
+
+.status-label {
+  color: var(--text-muted);
+}
+
+.status-value {
+  color: var(--text-primary);
+  font-weight: 500;
+}
+
+.status-value.accent {
+  color: var(--accent);
+  font-weight: 600;
+}
+
+/* --------------------------------------------------------------------------
+   Animations
+   -------------------------------------------------------------------------- */
+
+@keyframes fadeIn {
+  from { opacity: 0; }
+  to { opacity: 1; }
+}
+
+@keyframes slideUp {
+  from {
+    opacity: 0;
+    transform: translateY(12px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+@keyframes shimmer {
+  0% { left: -100%; }
+  100% { left: 100%; }
+}
+
+/* --------------------------------------------------------------------------
+   Focus States (Accessibility)
+   -------------------------------------------------------------------------- */
+
+button:focus-visible,
+select:focus-visible,
+input:focus-visible,
+.toggle-switch:focus-visible,
+a.toolbar-btn:focus-visible {
+  outline: 2px solid var(--python-gold);
+  outline-offset: 2px;
+}
+
+/* --------------------------------------------------------------------------
+   Shared Responsive
+   -------------------------------------------------------------------------- */
+
+@media (max-width: 900px) {
+  .brand-subtitle {
+    display: none;
+  }
+}
+
+@media (max-width: 600px) {
+  .toolbar-btn:not(.theme-toggle) {
+    display: none;
+  }
+}
+
+/* --------------------------------------------------------------------------
+   Toggle Switch
+   -------------------------------------------------------------------------- */
+
+.toggle-switch {
+  display: inline-flex;
+  align-items: center;
+  gap: 8px;
+  cursor: pointer;
+  user-select: none;
+  font-family: var(--font-sans);
+  transition: opacity var(--transition-fast);
+  flex-shrink: 0;
+}
+
+.toggle-switch:hover {
+  opacity: 0.85;
+}
+
+.toggle-switch .toggle-label {
+  font-size: 11px;
+  font-weight: 500;
+  color: var(--text-muted);
+  transition: color var(--transition-fast);
+  white-space: nowrap;
+  display: inline-flex;
+  flex-direction: column;
+}
+
+.toggle-switch .toggle-label.active {
+  color: var(--text-primary);
+  font-weight: 600;
+}
+
+/* Reserve space for bold text to prevent layout shift on toggle */
+.toggle-switch .toggle-label::after {
+  content: attr(data-text);
+  font-weight: 600;
+  height: 0;
+  visibility: hidden;
+}
+
+.toggle-switch.disabled {
+  opacity: 0.4;
+  pointer-events: none;
+  cursor: not-allowed;
+}
+
+.toggle-track {
+  position: relative;
+  width: 36px;
+  height: 20px;
+  background: var(--bg-tertiary);
+  border: 2px solid var(--border);
+  border-radius: 12px;
+  transition: all var(--transition-fast);
+  box-shadow: inset var(--shadow-sm);
+}
+
+.toggle-track:hover {
+  border-color: var(--text-muted);
+}
+
+.toggle-track.on {
+  background: var(--accent);
+  border-color: var(--accent);
+  box-shadow: 0 0 8px var(--accent-glow);
+}
+
+.toggle-track::after {
+  content: '';
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  width: 14px;
+  height: 14px;
+  background: white;
+  border-radius: 50%;
+  box-shadow: var(--shadow-sm);
+  transition: all var(--transition-fast);
+}
+
+.toggle-track.on::after {
+  transform: translateX(16px);
+  box-shadow: var(--shadow-md);
+}
+
+
+/* ==========================================================================
+   Heatmap Viewer - Component-Specific CSS
+
+   DEPENDENCY: Requires _shared_assets/base.css to be loaded first
+   This file extends the shared foundation with heatmap-specific styles.
+   ========================================================================== */
+
+/* --------------------------------------------------------------------------
+   Layout Overrides (Heatmap-specific)
+   -------------------------------------------------------------------------- */
+
+.app-layout {
+  min-height: 100vh;
+}
+
+/* Sticky top bar for heatmap views */
+.top-bar {
+  position: sticky;
+  top: 0;
+  z-index: 100;
+}
+
+/* --------------------------------------------------------------------------
+   Main Content Area
+   -------------------------------------------------------------------------- */
+
+.main-content {
+  flex: 1;
+  padding: 24px 3%;
+  width: 100%;
+  max-width: 100%;
+}
+
+/* --------------------------------------------------------------------------
+   Stats Summary Cards - Enhanced with Icons & Animations
+   -------------------------------------------------------------------------- */
+
+.stats-summary {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 12px;
+  margin-bottom: 24px;
+}
+
+.stat-card {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  background: var(--bg-primary);
+  border: 2px solid var(--border);
+  border-radius: 10px;
+  padding: 14px 16px;
+  transition: all var(--transition-fast);
+  animation: slideUp 0.5s ease-out backwards;
+  animation-delay: calc(var(--i, 0) * 0.08s);
+  position: relative;
+  overflow: hidden;
+}
+
+.stat-card:nth-child(1) { --i: 0; --card-color: 55, 118, 171; }
+.stat-card:nth-child(2) { --i: 1; --card-color: 40, 167, 69; }
+.stat-card:nth-child(3) { --i: 2; --card-color: 255, 193, 7; }
+.stat-card:nth-child(4) { --i: 3; --card-color: 111, 66, 193; }
+.stat-card:nth-child(5) { --i: 4; --card-color: 220, 53, 69; }
+.stat-card:nth-child(6) { --i: 5; --card-color: 23, 162, 184; }
+
+.stat-card:hover {
+  border-color: rgba(var(--card-color), 0.6);
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.08) 0%, var(--bg-primary) 100%);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 16px rgba(var(--card-color), 0.15);
+}
+
+.stat-icon {
+  width: 40px;
+  height: 40px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 18px;
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.15) 0%, rgba(var(--card-color), 0.05) 100%);
+  border: 1px solid rgba(var(--card-color), 0.2);
+  border-radius: 10px;
+  flex-shrink: 0;
+  transition: all var(--transition-fast);
+}
+
+.stat-card:hover .stat-icon {
+  transform: scale(1.05) rotate(-2deg);
+  background: linear-gradient(135deg, rgba(var(--card-color), 0.25) 0%, rgba(var(--card-color), 0.1) 100%);
+}
+
+.stat-data {
+  flex: 1;
+  min-width: 0;
+}
+
+.stat-value {
+  font-family: var(--font-mono);
+  font-size: 1.35em;
+  font-weight: 800;
+  color: rgb(var(--card-color));
+  display: block;
+  line-height: 1.1;
+  letter-spacing: -0.3px;
+}
+
+.stat-label {
+  font-size: 10px;
+  font-weight: 600;
+  color: var(--text-muted);
+  text-transform: uppercase;
+  letter-spacing: 0.3px;
+  margin-top: 2px;
+}
+
+/* Sparkline decoration for stats */
+.stat-sparkline {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  height: 30px;
+  opacity: 0.1;
+  background: linear-gradient(180deg,
+    transparent 0%,
+    rgba(var(--card-color), 0.3) 100%
+  );
+  pointer-events: none;
+}
+
+/* --------------------------------------------------------------------------
+   Rate Cards (Error Rate, Missed Samples) with Progress Bars
+   -------------------------------------------------------------------------- */
+
+.rate-card {
+  display: flex;
+  flex-direction: column;
+  gap: 12px;
+  background: var(--bg-primary);
+  border: 2px solid var(--border);
+  border-radius: 12px;
+  padding: 18px 20px;
+  transition: all var(--transition-fast);
+  animation: slideUp 0.5s ease-out backwards;
+  position: relative;
+  overflow: hidden;
+}
+
+.rate-card:nth-child(5) { animation-delay: 0.32s; --rate-color: 220, 53, 69; }
+.rate-card:nth-child(6) { animation-delay: 0.40s; --rate-color: 255, 152, 0; }
+
+.rate-card:hover {
+  border-color: rgba(var(--rate-color), 0.5);
+  transform: translateY(-2px);
+  box-shadow: 0 6px 20px rgba(var(--rate-color), 0.15);
+}
+
+.rate-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.rate-info {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+
+.rate-icon {
+  width: 36px;
+  height: 36px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 18px;
+  background: linear-gradient(135deg, rgba(var(--rate-color), 0.15) 0%, rgba(var(--rate-color), 0.05) 100%);
+  border: 1px solid rgba(var(--rate-color), 0.2);
+  border-radius: 10px;
+  flex-shrink: 0;
+}
+
+.rate-label {
+  font-size: 12px;
+  font-weight: 600;
+  color: var(--text-secondary);
+  text-transform: uppercase;
+  letter-spacing: 0.3px;
+}
+
+.rate-value {
+  font-family: var(--font-mono);
+  font-size: 1.4em;
+  font-weight: 800;
+  color: rgb(var(--rate-color));
+}
+
+.rate-bar {
+  height: 8px;
+  background: var(--bg-tertiary);
+  border-radius: 4px;
+  overflow: hidden;
+  position: relative;
+}
+
+.rate-fill {
+  height: 100%;
+  border-radius: 4px;
+  transition: width 0.8s ease-out;
+  position: relative;
+  overflow: hidden;
+}
+
+.rate-fill.error {
+  background: linear-gradient(90deg, #dc3545 0%, #ff6b6b 100%);
+}
+
+.rate-fill.warning {
+  background: linear-gradient(90deg, #ff9800 0%, #ffc107 100%);
+}
+
+.rate-fill.good {
+  background: linear-gradient(90deg, #28a745 0%, #20c997 100%);
+}
+
+/* Shimmer animation on rate bars */
+.rate-fill::after {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(
+    90deg,
+    transparent 0%,
+    rgba(255, 255, 255, 0.4) 50%,
+    transparent 100%
+  );
+  animation: shimmer 2.5s ease-in-out infinite;
+}
+
+/* --------------------------------------------------------------------------
+   Section Headers
+   -------------------------------------------------------------------------- */
+
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  margin-bottom: 16px;
+  padding-bottom: 12px;
+  border-bottom: 2px solid var(--python-gold);
+}
+
+.section-title {
+  font-size: 18px;
+  font-weight: 700;
+  color: var(--text-primary);
+  margin: 0;
+  flex: 1;
+}
+
+/* --------------------------------------------------------------------------
+   Filter Controls
+   -------------------------------------------------------------------------- */
+
+.filter-controls {
+  display: flex;
+  gap: 8px;
+  flex-wrap: wrap;
+  align-items: center;
+  margin-bottom: 16px;
+}
+
+.control-btn {
+  padding: 8px 16px;
+  background: var(--bg-secondary);
+  color: var(--text-primary);
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  font-size: 13px;
+  font-weight: 500;
+  cursor: pointer;
+  transition: all var(--transition-fast);
+}
+
+.control-btn:hover {
+  background: var(--accent);
+  color: white;
+  border-color: var(--accent);
+}
+
+/* --------------------------------------------------------------------------
+   Type Sections (stdlib, project, etc)
+   -------------------------------------------------------------------------- */
+
+.type-section {
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 8px;
+  overflow: hidden;
+  margin-bottom: 12px;
+}
+
+.type-header {
+  padding: 12px 16px;
+  background: var(--header-gradient);
+  color: white;
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  user-select: none;
+  transition: all var(--transition-fast);
+  font-weight: 600;
+}
+
+.type-header:hover {
+  opacity: 0.95;
+}
+
+.type-icon {
+  font-size: 12px;
+  transition: transform var(--transition-fast);
+  min-width: 12px;
+}
+
+.type-title {
+  font-size: 14px;
+  flex: 1;
+}
+
+.type-stats {
+  font-size: 12px;
+  opacity: 0.9;
+  background: rgba(255, 255, 255, 0.15);
+  padding: 4px 10px;
+  border-radius: 4px;
+  font-family: var(--font-mono);
+}
+
+.type-content {
+  padding: 12px;
+}
+
+/* --------------------------------------------------------------------------
+   Folder Nodes (hierarchical structure)
+   -------------------------------------------------------------------------- */
+
+.folder-node {
+  margin-bottom: 6px;
+}
+
+.folder-header {
+  padding: 8px 12px;
+  background: var(--bg-secondary);
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  user-select: none;
+  transition: all var(--transition-fast);
+}
+
+.folder-header:hover {
+  background: var(--accent-glow);
+  border-color: var(--accent);
+}
+
+.folder-icon {
+  font-size: 10px;
+  color: var(--accent);
+  transition: transform var(--transition-fast);
+  min-width: 12px;
+}
+
+.folder-name {
+  flex: 1;
+  font-weight: 500;
+  color: var(--text-primary);
+  font-size: 13px;
+}
+
+.folder-stats {
+  font-size: 11px;
+  color: var(--text-secondary);
+  background: var(--bg-tertiary);
+  padding: 2px 8px;
+  border-radius: 4px;
+  font-family: var(--font-mono);
+}
+
+.folder-content {
+  padding-left: 20px;
+  margin-top: 6px;
+}
+
+/* --------------------------------------------------------------------------
+   File Items
+   -------------------------------------------------------------------------- */
+
+.files-list {
+  display: flex;
+  flex-direction: column;
+  gap: 4px;
+  margin-top: 8px;
+}
+
+.file-item {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  padding: 8px 12px;
+  background: var(--bg-primary);
+  border: 1px solid var(--border-subtle);
+  border-radius: 6px;
+  transition: all var(--transition-fast);
+}
+
+.file-item:hover {
+  background: var(--bg-secondary);
+  border-color: var(--border);
+}
+
+.file-item .file-link {
+  flex: 1;
+  min-width: 0;
+  font-size: 13px;
+}
+
+.file-samples {
+  font-size: 12px;
+  color: var(--text-secondary);
+  font-weight: 600;
+  white-space: nowrap;
+  width: 130px;
+  flex-shrink: 0;
+  text-align: right;
+  font-family: var(--font-mono);
+}
+
+.heatmap-bar-container {
+  width: 120px;
+  flex-shrink: 0;
+  display: flex;
+  align-items: center;
+}
+
+.heatmap-bar {
+  flex-shrink: 0;
+  border-radius: 2px;
+}
+
+/* Links */
+.file-link {
+  color: var(--accent);
+  text-decoration: none;
+  font-weight: 500;
+  transition: color var(--transition-fast);
+}
+
+.file-link:hover {
+  color: var(--accent-hover);
+  text-decoration: underline;
+}
+
+/* --------------------------------------------------------------------------
+   Module Badges
+   -------------------------------------------------------------------------- */
+
+.module-badge {
+  display: inline-block;
+  padding: 3px 8px;
+  border-radius: 4px;
+  font-size: 11px;
+  font-weight: 600;
+}
+
+.badge-stdlib {
+  background: rgba(40, 167, 69, 0.15);
+  color: #28a745;
+}
+
+.badge-site-packages {
+  background: rgba(0, 123, 255, 0.15);
+  color: #007bff;
+}
+
+.badge-project {
+  background: rgba(255, 193, 7, 0.2);
+  color: #d39e00;
+}
+
+.badge-other {
+  background: var(--bg-tertiary);
+  color: var(--text-secondary);
+}
+
+[data-theme="dark"] .badge-stdlib {
+  background: rgba(40, 167, 69, 0.25);
+  color: #5dd879;
+}
+
+[data-theme="dark"] .badge-site-packages {
+  background: rgba(88, 166, 255, 0.25);
+  color: #79b8ff;
+}
+
+[data-theme="dark"] .badge-project {
+  background: rgba(255, 212, 59, 0.25);
+  color: #ffd43b;
+}
+
+/* ==========================================================================
+   FILE VIEW STYLES (Code Display)
+   ========================================================================== */
+
+.code-view {
+  font-family: var(--font-mono);
+  min-height: 100vh;
+}
+
+/* Code Header (Top Bar for file view) */
+.code-header {
+  height: var(--topbar-height);
+  background: var(--header-gradient);
+  display: flex;
+  align-items: center;
+  padding: 0 16px;
+  gap: 16px;
+  box-shadow: 0 2px 10px rgba(55, 118, 171, 0.25);
+  border-bottom: 2px solid var(--python-gold);
+  position: sticky;
+  top: 0;
+  z-index: 100;
+}
+
+.code-header-content {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  width: 94%;
+  max-width: 100%;
+  margin: 0 auto;
+}
+
+.code-header h1 {
+  font-size: 14px;
+  font-weight: 600;
+  color: white;
+  margin: 0;
+  font-family: var(--font-mono);
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+
+/* File Stats Bar */
+.file-stats {
+  background: var(--bg-secondary);
+  padding: 16px 24px;
+  border-bottom: 1px solid var(--border);
+}
+
+.file-stats .stats-grid {
+  width: 94%;
+  max-width: 100%;
+  margin: 0 auto;
+  display: grid;
+  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
+  gap: 12px;
+}
+
+.stat-item {
+  background: var(--bg-primary);
+  padding: 12px;
+  border-radius: 8px;
+  box-shadow: var(--shadow-sm);
+  text-align: center;
+  border: 1px solid var(--border);
+  transition: all var(--transition-fast);
+}
+
+.stat-item:hover {
+  transform: translateY(-2px);
+  box-shadow: var(--shadow-md);
+  border-color: var(--accent);
+}
+
+.stat-item .stat-value {
+  font-size: 1.4em;
+  font-weight: 700;
+  color: var(--accent);
+}
+
+.stat-item .stat-label {
+  color: var(--text-muted);
+  font-size: 10px;
+  margin-top: 2px;
+}
+
+/* Legend */
+.legend {
+  background: var(--bg-secondary);
+  padding: 12px 24px;
+  border-bottom: 1px solid var(--border);
+}
+
+.legend-content {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  gap: 20px;
+  flex-wrap: nowrap;
+}
+
+.legend-separator {
+  width: 1px;
+  height: 24px;
+  background: var(--border);
+  flex-shrink: 0;
+}
+
+.legend-title {
+  font-weight: 600;
+  color: var(--text-primary);
+  font-size: 13px;
+  font-family: var(--font-sans);
+  flex-shrink: 0;
+}
+
+.legend-gradient {
+  width: 150px;
+  flex-shrink: 0;
+  height: 20px;
+  background: linear-gradient(90deg,
+    var(--bg-tertiary) 0%,
+    var(--heat-2) 25%,
+    var(--heat-4) 50%,
+    var(--heat-6) 75%,
+    var(--heat-8) 100%
+  );
+  border-radius: 4px;
+  border: 1px solid var(--border);
+}
+
+.legend-labels {
+  display: flex;
+  gap: 12px;
+  font-size: 11px;
+  color: var(--text-muted);
+  font-family: var(--font-sans);
+  flex-shrink: 0;
+}
+
+/* Legend Controls Group - wraps toggles and bytecode button together */
+.legend-controls {
+  display: flex;
+  align-items: center;
+  gap: 20px;
+  flex-shrink: 0;
+  margin-left: auto;
+}
+
+/* Heatmap-Specific Toggle Overrides */
+#toggle-color-mode .toggle-track.on {
+  background: #8e44ad;
+  border-color: #8e44ad;
+  box-shadow: 0 0 8px rgba(142, 68, 173, 0.3);
+}
+
+#toggle-cold .toggle-track.on {
+  background: #e67e22;
+  border-color: #e67e22;
+  box-shadow: 0 0 8px rgba(230, 126, 34, 0.3);
+}
+
+/* Code Container */
+.code-container {
+  width: 94%;
+  max-width: 100%;
+  margin: 16px auto;
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 8px 8px 8px 8px;
+  box-shadow: var(--shadow-sm);
+  /* Allow horizontal scroll for long lines, but don't clip sticky header */
+}
+
+/* Code Header Row */
+.code-header-row {
+  position: sticky;
+  top: var(--topbar-height);
+  z-index: 50;
+  display: flex;
+  background: var(--bg-secondary);
+  border-bottom: 2px solid var(--border);
+  font-weight: 700;
+  font-size: 11px;
+  color: var(--text-muted);
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+  border-radius: 8px 8px 0 0;
+}
+
+.header-line-number {
+  flex-shrink: 0;
+  width: 60px;
+  padding: 8px 10px;
+  text-align: right;
+  border-right: 1px solid var(--border);
+}
+
+.header-samples-self,
+.header-samples-cumulative {
+  flex-shrink: 0;
+  width: 90px;
+  padding: 8px 10px;
+  text-align: right;
+  border-right: 1px solid var(--border);
+}
+
+.header-samples-self {
+  color: var(--heat-8);
+}
+
+.header-samples-cumulative {
+  color: var(--accent);
+}
+
+.header-content {
+  flex: 1;
+  padding: 8px 15px;
+}
+
+/* Code Lines */
+.code-line {
+  position: relative;
+  display: flex;
+  min-height: 20px;
+  line-height: 20px;
+  font-size: 13px;
+  transition: background var(--transition-fast);
+  scroll-margin-top: calc(var(--topbar-height) + 50px);
+}
+
+.code-line:hover {
+  filter: brightness(0.97);
+}
+
+[data-theme="dark"] .code-line:hover {
+  filter: brightness(1.1);
+}
+
+.line-number {
+  flex-shrink: 0;
+  width: 60px;
+  padding: 0 10px;
+  text-align: right;
+  color: var(--text-muted);
+  background: var(--bg-secondary);
+  border-right: 1px solid var(--border);
+  user-select: none;
+  transition: all var(--transition-fast);
+}
+
+.line-number:hover {
+  background: var(--accent);
+  color: white;
+  cursor: pointer;
+}
+
+.line-samples-self,
+.line-samples-cumulative {
+  flex-shrink: 0;
+  width: 90px;
+  padding: 0 10px;
+  text-align: right;
+  background: var(--bg-secondary);
+  border-right: 1px solid var(--border);
+  font-weight: 600;
+  user-select: none;
+  font-size: 12px;
+}
+
+.line-samples-self {
+  color: var(--heat-8);
+}
+
+.line-samples-cumulative {
+  color: var(--accent);
+}
+
+.line-content {
+  flex: 1;
+  padding: 0 15px;
+  white-space: pre;
+  overflow-x: auto;
+}
+
+/* Scrollbar Styling */
+.line-content::-webkit-scrollbar {
+  height: 6px;
+}
+
+.line-content::-webkit-scrollbar-thumb {
+  background: var(--border);
+  border-radius: 3px;
+}
+
+.line-content::-webkit-scrollbar-thumb:hover {
+  background: var(--text-muted);
+}
+
+/* Navigation Buttons */
+.line-nav-buttons {
+  position: absolute;
+  right: 8px;
+  top: 50%;
+  transform: translateY(-50%);
+  display: flex;
+  gap: 4px;
+  align-items: center;
+}
+
+.nav-btn {
+  padding: 2px 6px;
+  font-size: 12px;
+  font-weight: 500;
+  border: 1px solid var(--accent);
+  border-radius: 4px;
+  background: var(--bg-primary);
+  color: var(--accent);
+  cursor: pointer;
+  transition: all var(--transition-fast);
+  user-select: none;
+  line-height: 1;
+}
+
+.nav-btn:hover:not(:disabled) {
+  background: var(--accent);
+  color: white;
+  transform: translateY(-1px);
+  box-shadow: var(--shadow-sm);
+}
+
+.nav-btn:active:not(:disabled) {
+  transform: translateY(0);
+}
+
+.nav-btn:disabled {
+  opacity: 0.3;
+  cursor: not-allowed;
+  color: var(--text-muted);
+  background: var(--bg-secondary);
+  border-color: var(--border);
+}
+
+.nav-btn.caller {
+  color: var(--nav-caller);
+  border-color: var(--nav-caller);
+}
+
+.nav-btn.callee {
+  color: var(--nav-callee);
+  border-color: var(--nav-callee);
+}
+
+.nav-btn.caller:hover:not(:disabled) {
+  background: var(--nav-caller-hover);
+  color: white;
+}
+
+.nav-btn.callee:hover:not(:disabled) {
+  background: var(--nav-callee-hover);
+  color: white;
+}
+
+/* Highlighted target line */
+.code-line:target {
+  animation: highlight-line 2s ease-out;
+}
+
+@keyframes highlight-line {
+  0% {
+    background: rgba(255, 212, 59, 0.6) !important;
+    outline: 3px solid var(--python-gold);
+    outline-offset: -3px;
+  }
+  50% {
+    background: rgba(255, 212, 59, 0.5) !important;
+    outline: 3px solid var(--python-gold);
+    outline-offset: -3px;
+  }
+  100% {
+    outline: 3px solid transparent;
+    outline-offset: -3px;
+  }
+}
+
+/* Popup menu for multiple callees */
+.callee-menu {
+  position: absolute;
+  background: var(--bg-primary);
+  border: 1px solid var(--border);
+  border-radius: 8px;
+  box-shadow: var(--shadow-lg);
+  padding: 8px;
+  z-index: 1000;
+  min-width: 250px;
+  max-width: 400px;
+  max-height: 300px;
+  overflow-y: auto;
+}
+
+.callee-menu-header {
+  font-weight: 600;
+  color: var(--text-primary);
+  margin-bottom: 8px;
+  padding-bottom: 8px;
+  border-bottom: 1px solid var(--border);
+  font-size: 13px;
+  font-family: var(--font-sans);
+}
+
+.callee-menu-item {
+  padding: 8px;
+  margin: 4px 0;
+  border-radius: 6px;
+  cursor: pointer;
+  transition: background var(--transition-fast);
+  display: flex;
+  flex-direction: column;
+  gap: 4px;
+}
+
+.callee-menu-item:hover {
+  background: var(--bg-secondary);
+}
+
+.callee-menu-func {
+  font-weight: 500;
+  color: var(--accent);
+  font-size: 12px;
+}
+
+.callee-menu-file {
+  font-size: 11px;
+  color: var(--text-muted);
+}
+
+.count-badge {
+  display: inline-block;
+  background: var(--accent);
+  color: white;
+  font-size: 10px;
+  padding: 2px 6px;
+  border-radius: 4px;
+  font-weight: 600;
+  margin-left: 6px;
+}
+
+/* Callee menu scrollbar */
+.callee-menu::-webkit-scrollbar {
+  width: 6px;
+}
+
+.callee-menu::-webkit-scrollbar-track {
+  background: var(--bg-secondary);
+  border-radius: 3px;
+}
+
+.callee-menu::-webkit-scrollbar-thumb {
+  background: var(--border);
+  border-radius: 3px;
+}
+
+/* --------------------------------------------------------------------------
+   Scroll Minimap Marker
+   -------------------------------------------------------------------------- */
+
+#scroll_marker {
+  position: fixed;
+  z-index: 1000;
+  right: 0;
+  top: 0;
+  width: 12px;
+  height: 100%;
+  background: var(--bg-secondary);
+  border-left: 1px solid var(--border);
+  pointer-events: none;
+}
+
+#scroll_marker .marker {
+  position: absolute;
+  min-height: 3px;
+  width: 100%;
+  pointer-events: none;
+}
+
+#scroll_marker .marker.cold {
+  background: var(--heat-1);
+}
+
+#scroll_marker .marker.cool {
+  background: var(--heat-2);
+}
+
+#scroll_marker .marker.mild {
+  background: var(--heat-3);
+}
+
+#scroll_marker .marker.warm {
+  background: var(--heat-4);
+}
+
+#scroll_marker .marker.hot {
+  background: var(--heat-5);
+}
+
+#scroll_marker .marker.very-hot {
+  background: var(--heat-6);
+}
+
+#scroll_marker .marker.intense {
+  background: var(--heat-7);
+}
+
+#scroll_marker .marker.extreme {
+  background: var(--heat-8);
+}
+
+/* --------------------------------------------------------------------------
+   Responsive (Heatmap-specific)
+   -------------------------------------------------------------------------- */
+
+@media (max-width: 1100px) {
+  .stats-summary {
+    grid-template-columns: repeat(2, 1fr);
+  }
+
+  .legend-content {
+    flex-wrap: wrap;
+    justify-content: center;
+  }
+
+  .legend-controls {
+    margin-left: 0;
+  }
+}
+
+@media (max-width: 900px) {
+  .main-content {
+    padding: 16px;
+  }
+}
+
+@media (max-width: 600px) {
+  .stats-summary {
+    grid-template-columns: 1fr;
+  }
+
+  .file-stats .stats-grid {
+    grid-template-columns: repeat(2, 1fr);
+  }
+
+  .legend-content {
+    flex-direction: column;
+    align-items: center;
+    gap: 12px;
+  }
+
+  .legend-gradient {
+    width: 100%;
+    max-width: none;
+  }
+
+  .legend-separator {
+    width: 80%;
+    height: 1px;
+  }
+
+  .legend-controls {
+    flex-direction: column;
+    gap: 12px;
+  }
+
+  .legend-controls .toggle-switch {
+    justify-content: center;
+  }
+
+  .legend-controls .toggle-switch .toggle-label:first-child {
+    width: 70px;
+    text-align: right;
+  }
+
+  .legend-controls .toggle-switch .toggle-label:last-child {
+    width: 90px;
+    text-align: left;
+  }
+
+  /* Compact code columns on small screens */
+  .header-line-number,
+  .line-number {
+    width: 40px;
+  }
+
+  .header-samples-self,
+  .header-samples-cumulative,
+  .line-samples-self,
+  .line-samples-cumulative {
+    width: 55px;
+    font-size: 10px;
+  }
+
+  /* Adjust padding - headers need vertical, data rows don't */
+  .header-line-number,
+  .header-samples-self,
+  .header-samples-cumulative {
+    padding: 8px 4px;
+  }
+
+  .line-number,
+  .line-samples-self,
+  .line-samples-cumulative {
+    padding: 0 4px;
+  }
+}
+
+.bytecode-toggle {
+  flex-shrink: 0;
+  width: 20px;
+  height: 20px;
+  padding: 0;
+  margin: 0 4px;
+  border: none;
+  background: transparent;
+  color: var(--code-accent);
+  cursor: pointer;
+  font-size: 10px;
+  transition: transform var(--transition-fast), color var(--transition-fast);
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.bytecode-toggle:hover {
+  color: var(--accent);
+}
+
+.bytecode-spacer {
+  flex-shrink: 0;
+  width: 20px;
+  height: 20px;
+  margin: 0 4px;
+}
+
+.bytecode-panel {
+  margin-left: 90px;
+  padding: 8px 15px;
+  background: var(--bg-secondary);
+  border-left: 3px solid var(--accent);
+  font-family: var(--font-mono);
+  font-size: 12px;
+  margin-bottom: 4px;
+}
+
+/* Specialization summary bar */
+.bytecode-spec-summary {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 8px 12px;
+  margin-bottom: 10px;
+  border-radius: var(--radius-sm);
+  background: rgba(100, 100, 100, 0.1);
+}
+
+.bytecode-spec-summary .spec-pct {
+  font-size: 1.4em;
+  font-weight: 700;
+}
+
+.bytecode-spec-summary .spec-label {
+  font-weight: 500;
+  text-transform: uppercase;
+  font-size: 0.85em;
+  letter-spacing: 0.5px;
+}
+
+.bytecode-spec-summary .spec-detail {
+  color: var(--text-secondary);
+  font-size: 0.9em;
+  margin-left: auto;
+}
+
+.bytecode-spec-summary.high {
+  background: var(--spec-high-bg);
+  border-left: 3px solid var(--spec-high);
+}
+.bytecode-spec-summary.high .spec-pct,
+.bytecode-spec-summary.high .spec-label {
+  color: var(--spec-high-text);
+}
+
+.bytecode-spec-summary.medium {
+  background: var(--spec-medium-bg);
+  border-left: 3px solid var(--spec-medium);
+}
+.bytecode-spec-summary.medium .spec-pct,
+.bytecode-spec-summary.medium .spec-label {
+  color: var(--spec-medium-text);
+}
+
+.bytecode-spec-summary.low {
+  background: var(--spec-low-bg);
+  border-left: 3px solid var(--spec-low);
+}
+.bytecode-spec-summary.low .spec-pct,
+.bytecode-spec-summary.low .spec-label {
+  color: var(--spec-low-text);
+}
+
+.bytecode-header {
+  display: grid;
+  grid-template-columns: 1fr 80px 80px;
+  gap: 12px;
+  padding: 4px 8px;
+  font-weight: 600;
+  color: var(--text-secondary);
+  border-bottom: 1px solid var(--code-border);
+  margin-bottom: 4px;
+}
+
+.bytecode-expand-all {
+  display: inline-flex;
+  align-items: center;
+  gap: 6px;
+  padding: 6px 12px;
+  background: var(--bg-secondary);
+  border: 1px solid var(--code-border);
+  border-radius: var(--radius-sm);
+  color: var(--text-secondary);
+  font-size: 12px;
+  font-weight: 500;
+  cursor: pointer;
+  transition: all var(--transition-fast);
+  flex-shrink: 0;
+}
+
+.bytecode-expand-all:hover,
+.bytecode-expand-all.expanded {
+  background: var(--accent);
+  color: white;
+  border-color: var(--accent);
+}
+
+.bytecode-expand-all .expand-icon {
+  font-size: 10px;
+  transition: transform var(--transition-fast);
+}
+
+.bytecode-expand-all.expanded .expand-icon {
+  transform: rotate(90deg);
+}
+
+/* ========================================
+   INSTRUCTION SPAN HIGHLIGHTING
+   (triggered only from bytecode panel hover)
+   ======================================== */
+
+/* Highlight from bytecode panel hover */
+.instr-span.highlight-from-bytecode {
+  outline: 3px solid #ff6b6b !important;
+  background-color: rgba(255, 107, 107, 0.4) !important;
+  border-radius: 2px;
+}
+
+/* Bytecode instruction row */
+.bytecode-instruction {
+  display: grid;
+  grid-template-columns: 1fr 80px 80px;
+  gap: 12px;
+  align-items: center;
+  padding: 4px 8px;
+  margin: 2px 0;
+  border-radius: var(--radius-sm);
+  cursor: pointer;
+  transition: background-color var(--transition-fast);
+}
+
+.bytecode-instruction:hover,
+.bytecode-instruction.highlight {
+  background-color: rgba(55, 118, 171, 0.15);
+}
+
+.bytecode-instruction[data-locations] {
+  cursor: pointer;
+}
+
+.bytecode-instruction[data-locations]:hover {
+  background-color: rgba(255, 107, 107, 0.2);
+}
+
+.bytecode-opname {
+  font-weight: 600;
+  font-family: var(--font-mono);
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.bytecode-opname.specialized {
+  color: #2e7d32;
+}
+
+[data-theme="dark"] .bytecode-opname.specialized {
+  color: #81c784;
+}
+
+.bytecode-opname .base-op {
+  color: var(--code-text-muted);
+  font-weight: normal;
+  font-size: 0.9em;
+  margin-left: 4px;
+}
+
+.bytecode-samples {
+  text-align: right;
+  font-weight: 600;
+  color: var(--accent);
+  font-family: var(--font-mono);
+}
+
+.bytecode-samples.hot {
+  color: #ff6b6b;
+}
+
+.bytecode-heatbar {
+  width: 60px;
+  height: 12px;
+  background: var(--bg-secondary);
+  border-radius: 2px;
+  overflow: hidden;
+  border: 1px solid var(--code-border);
+}
+
+.bytecode-heatbar-fill {
+  height: 100%;
+  background: linear-gradient(90deg, #00d4ff 0%, #ff6b00 100%);
+}
+
+.specialization-badge {
+  display: inline-block;
+  padding: 1px 6px;
+  font-size: 0.75em;
+  background: #e8f5e9;
+  color: #2e7d32;
+  border-radius: 3px;
+  margin-left: 6px;
+  font-weight: 600;
+}
+
+[data-theme="dark"] .specialization-badge {
+  background: rgba(129, 199, 132, 0.2);
+  color: #81c784;
+}
+
+.bytecode-empty {
+  color: var(--code-text-muted);
+  font-style: italic;
+  padding: 8px;
+}
+
+.bytecode-error {
+  color: #d32f2f;
+  font-style: italic;
+  padding: 8px;
+}
+
+/* ========================================
+   SPAN TOOLTIPS
+   ======================================== */
+
+.span-tooltip {
+  position: absolute;
+  z-index: 10000;
+  background: var(--bg-primary);
+  color: var(--text-primary);
+  padding: 10px 14px;
+  border-radius: var(--radius-md);
+  border: 1px solid var(--border);
+  font-family: var(--font-sans);
+  font-size: 12px;
+  box-shadow: var(--shadow-lg);
+  pointer-events: none;
+  min-width: 160px;
+  max-width: 300px;
+}
+
+.span-tooltip::after {
+  content: '';
+  position: absolute;
+  bottom: -7px;
+  left: 50%;
+  transform: translateX(-50%);
+  border-width: 7px 7px 0;
+  border-style: solid;
+  border-color: var(--bg-primary) transparent transparent;
+  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1));
+}
+
+.span-tooltip-header {
+  font-weight: 600;
+  margin-bottom: 8px;
+  padding-bottom: 6px;
+  border-bottom: 1px solid var(--border);
+  color: var(--text-primary);
+}
+
+.span-tooltip-header.hot {
+  color: #e65100;
+}
+
+.span-tooltip-header.warm {
+  color: #f59e0b;
+}
+
+.span-tooltip-header.cold {
+  color: var(--text-muted);
+}
+
+.span-tooltip-row {
+  display: flex;
+  justify-content: space-between;
+  margin: 4px 0;
+  gap: 16px;
+}
+
+.span-tooltip-label {
+  color: var(--text-secondary);
+}
+
+.span-tooltip-value {
+  font-weight: 600;
+  text-align: right;
+  color: var(--text-primary);
+}
+
+.span-tooltip-value.highlight {
+  color: var(--accent);
+}
+
+.span-tooltip-section {
+  font-weight: 600;
+  color: var(--text-secondary);
+  font-size: 11px;
+  margin-top: 8px;
+  margin-bottom: 4px;
+  padding-top: 6px;
+  border-top: 1px solid var(--border);
+}
+
+.span-tooltip-opcode {
+  font-family: var(--font-mono);
+  font-size: 11px;
+  color: var(--text-primary);
+  background: var(--bg-secondary);
+  padding: 3px 8px;
+  margin: 2px 0;
+  border-radius: var(--radius-sm);
+  border-left: 2px solid var(--accent);
+}
+
+</style>
+</head>
+<body class="code-view">
+    <div class="app-layout">
+        <!-- Top Bar (Code Header) -->
+        <header class="top-bar">
+            <div class="brand">
+                <div class="brand-logo"><img src="data:image/png;base64,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" alt="Tachyon logo" class="python-logo"/></div>
+                <a href="https://docs.python.org/3.15/library/profiling.sampling.html#heatmap-format" class="brand-text">Tachyon</a>
+                <span class="brand-divider"></span>
+                <span class="brand-subtitle" style="font-family: var(--font-mono); font-size: 13px;">/tmp/tachyon_selfcontained.py</span>
+            </div>
+            <div class="toolbar">
+                <a href="https://docs.python.org/3.15/library/profiling.sampling.html#heatmap-format" class="toolbar-btn" title="Back to Index" aria-label="Back to Index">
+                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                    <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
+                  </svg>
+                </a>
+                <a
+                    class="toolbar-btn"
+                    href="https://docs.python.org/3.15/library/profiling.sampling.html"
+                    target="_blank"
+                    title="Documentation"
+                >
+                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                    <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
+                  </svg>
+                </a>
+                <button
+                    class="toolbar-btn theme-toggle"
+                    onclick="toggleTheme()"
+                    title="Toggle theme"
+                    aria-label="Toggle theme"
+                    id="theme-btn"
+                >
+                  <svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                    <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
+                  </svg>
+                  <svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
+                    <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+                  </svg>
+                </button>
+            </div>
+        </header>
+
+        <!-- File Stats Bar -->
+        <div class="file-stats">
+            <div class="stats-grid">
+                <div class="stat-item">
+                    <div class="stat-value">1,054</div>
+                    <div class="stat-label">Self Samples</div>
+                </div>
+                <div class="stat-item">
+                    <div class="stat-value">4,236</div>
+                    <div class="stat-label">Cumulative</div>
+                </div>
+                <div class="stat-item">
+                    <div class="stat-value">24</div>
+                    <div class="stat-label">Lines Hit</div>
+                </div>
+                <div class="stat-item">
+                    <div class="stat-value">100.00%</div>
+                    <div class="stat-label">% of Total</div>
+                </div>
+                <div class="stat-item">
+                    <div class="stat-value">206</div>
+                    <div class="stat-label">Max Self</div>
+                </div>
+                <div class="stat-item">
+                    <div class="stat-value">1054</div>
+                    <div class="stat-label">Max Total</div>
+                </div>
+            </div>
+        </div>
+
+        <!-- Legend -->
+        <div class="legend">
+            <div class="legend-content">
+                <span class="legend-title">Intensity:</span>
+                <div class="legend-gradient"></div>
+                <div class="legend-labels">
+                    <span>Cold</span>
+                    <span aria-hidden="true">→</span>
+                    <span>Hot</span>
+                </div>
+                <div class="legend-separator" aria-hidden="true"></div>
+                <div class="legend-controls">
+                    <div class="toggle-switch" id="toggle-color-mode" title="Toggle between self time and total time coloring" tabindex="0">
+                        <span class="toggle-label active" data-text="Self Time">Self Time</span>
+                        <div class="toggle-track"></div>
+                        <span class="toggle-label" data-text="Total Time">Total Time</span>
+                    </div>
+                    <div class="toggle-switch" id="toggle-cold" title="Toggle visibility of lines with zero samples" tabindex="0">
+                        <span class="toggle-label active" data-text="Show All">Show All</span>
+                        <div class="toggle-track"></div>
+                        <span class="toggle-label" data-text="Hot Only">Hot Only</span>
+                    </div>
+                    <div class="toggle-switch" id="toggle-spec-view" title="Color lines by specialization level (requires bytecode data)" tabindex="0">
+                        <span class="toggle-label active" data-text="Heat">Heat</span>
+                        <div class="toggle-track"></div>
+                        <span class="toggle-label" data-text="Specialization">Specialization</span>
+                    </div>
+                    <div class="legend-separator" aria-hidden="true"></div>
+                    <button class="bytecode-expand-all" id="toggle-all-bytecode" title="Expand/collapse all bytecode panels (keyboard: b)">
+                        <span class="expand-icon" aria-hidden="true">▶</span> Bytecode
+                    </button>
+                </div>
+            </div>
+        </div>
+
+        <!-- Code Container -->
+        <div class="code-container">
+            <div class="code-header-row">
+                <div class="header-line-number">Line</div>
+                <div class="header-samples-self">Self</div>
+                <div class="header-samples-cumulative">Total</div>
+                <div class="header-content">Code</div>
+            </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-1">
+            <div class="line-number">1</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-2">
+            <div class="line-number">2</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">Tachyon Demo - Self-contained profiling example.</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-3">
+            <div class="line-number">3</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">Pure Python with no external imports for clean heatmap output.</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-4">
+            <div class="line-number">4</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-5">
+            <div class="line-number">5</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-6">
+            <div class="line-number">6</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.130" data-cumulative-intensity="0.100" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-7" title="Self: 1, Total: 1">
+            <div class="line-number">7</div>
+            <div class="line-samples-self">1</div>
+            <div class="line-samples-cumulative">1</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 194, &quot;opname&quot;: &quot;RESUME_CHECK (RESUME)&quot;, &quot;base_opname&quot;: &quot;RESUME&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 7, &quot;col_offset&quot;: 0, &quot;end_col_offset&quot;: 0}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">def fibonacci(n):</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-7" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-8">
+            <div class="line-number">8</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Recursive fibonacci - creates deep call stacks.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.260" data-cumulative-intensity="0.199" data-spec-color="rgba(222, 172, 86, 0.23249999999999998)" id="line-9" title="Self: 3, Total: 3">
+            <div class="line-number">9</div>
+            <div class="line-samples-self">3</div>
+            <div class="line-samples-cumulative">3</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 9, &quot;col_offset&quot;: 7, &quot;end_col_offset&quot;: 8}]}, {&quot;opcode&quot;: 100, &quot;opname&quot;: &quot;POP_JUMP_IF_FALSE&quot;, &quot;base_opname&quot;: &quot;POP_JUMP_IF_FALSE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 9, &quot;col_offset&quot;: 7, &quot;end_col_offset&quot;: 13}]}, {&quot;opcode&quot;: 167, &quot;opname&quot;: &quot;COMPARE_OP_INT (COMPARE_OP)&quot;, &quot;base_opname&quot;: &quot;COMPARE_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 9, &quot;col_offset&quot;: 7, &quot;end_col_offset&quot;: 13}]}]' data-spec-pct="33" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    if <span class="instr-span" data-col-start="7" data-col-end="8" data-samples="1" data-max-samples="2" data-pct="33" data-opcodes="LOAD_FAST_BORROW">n</span><span class="instr-span" data-col-start="7" data-col-end="13" data-samples="2" data-max-samples="2" data-pct="66" data-opcodes="POP_JUMP_IF_FALSE, COMPARE_OP_INT (COMPARE_OP)"> &lt;= 1</span>:</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-9" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.542" data-cumulative-intensity="0.415" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-10" title="Self: 17, Total: 17">
+            <div class="line-number">10</div>
+            <div class="line-samples-self">17</div>
+            <div class="line-samples-cumulative">17</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 35, &quot;opname&quot;: &quot;RETURN_VALUE&quot;, &quot;base_opname&quot;: &quot;RETURN_VALUE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 17, &quot;locations&quot;: [{&quot;end_lineno&quot;: 10, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 16}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 10, &quot;col_offset&quot;: 15, &quot;end_col_offset&quot;: 16}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="16" data-samples="17" data-max-samples="17" data-pct="94" data-opcodes="RETURN_VALUE">return </span><span class="instr-span" data-col-start="15" data-col-end="16" data-samples="1" data-max-samples="17" data-pct="5" data-opcodes="LOAD_FAST_BORROW">n</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav-multi='[{&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;fibonacci&quot;, &quot;count&quot;: 4170, &quot;link&quot;: &quot;#line-11&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;compute_heavy&quot;, &quot;count&quot;: 227, &quot;link&quot;: &quot;#line-78&quot;}]' title="2 callers (4,397 samples)">▲</button><button class="nav-btn callee" data-nav='{&quot;link&quot;: &quot;#line-10&quot;, &quot;func&quot;: &quot;fibonacci&quot;}' title="Go to callee: fibonacci (1 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-10" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="1.000" data-cumulative-intensity="0.780" data-spec-color="rgba(5, 253, 1, 0.39749999999999996)" id="line-11" title="Self: 206, Total: 227">
+            <div class="line-number">11</div>
+            <div class="line-samples-self">206</div>
+            <div class="line-samples-cumulative">227</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 161, &quot;opname&quot;: &quot;CALL_PY_EXACT_ARGS (CALL)&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 4315, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 30, &quot;end_col_offset&quot;: 46}, {&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 11, &quot;end_col_offset&quot;: 27}]}, {&quot;opcode&quot;: 35, &quot;opname&quot;: &quot;RETURN_VALUE&quot;, &quot;base_opname&quot;: &quot;RETURN_VALUE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 32, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 4, &quot;end_col_offset&quot;: 46}]}, {&quot;opcode&quot;: 191, &quot;opname&quot;: &quot;LOAD_GLOBAL_MODULE (LOAD_GLOBAL)&quot;, &quot;base_opname&quot;: &quot;LOAD_GLOBAL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 14, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 30, &quot;end_col_offset&quot;: 39}, {&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 11, &quot;end_col_offset&quot;: 20}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 8, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 21, &quot;end_col_offset&quot;: 22}]}, {&quot;opcode&quot;: 142, &quot;opname&quot;: &quot;BINARY_OP_SUBTRACT_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 21, &quot;end_col_offset&quot;: 26}, {&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 40, &quot;end_col_offset&quot;: 45}]}, {&quot;opcode&quot;: 130, &quot;opname&quot;: &quot;BINARY_OP_ADD_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 11, &quot;end_col_offset&quot;: 46}]}, {&quot;opcode&quot;: 94, &quot;opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;base_opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 11, &quot;col_offset&quot;: 25, &quot;end_col_offset&quot;: 26}]}]' data-spec-pct="99" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    <span class="instr-span" data-col-start="4" data-col-end="46" data-samples="32" data-max-samples="4315" data-pct="0" data-opcodes="RETURN_VALUE">return </span><span class="instr-span" data-col-start="11" data-col-end="20" data-samples="14" data-max-samples="4315" data-pct="0" data-opcodes="LOAD_GLOBAL_MODULE (LOAD_GLOBAL)">fibonacci</span><span class="instr-span" data-col-start="11" data-col-end="27" data-samples="4315" data-max-samples="4315" data-pct="49" data-opcodes="CALL_PY_EXACT_ARGS (CALL)">(</span><span class="instr-span" data-col-start="21" data-col-end="22" data-samples="8" data-max-samples="4315" data-pct="0" data-opcodes="LOAD_FAST_BORROW">n</span><span class="instr-span" data-col-start="21" data-col-end="26" data-samples="4" data-max-samples="4315" data-pct="0" data-opcodes="BINARY_OP_SUBTRACT_INT (BINARY_OP)"> - </span><span class="instr-span" data-col-start="25" data-col-end="26" data-samples="1" data-max-samples="4315" data-pct="0" data-opcodes="LOAD_SMALL_INT">1</span><span class="instr-span" data-col-start="11" data-col-end="27" data-samples="4315" data-max-samples="4315" data-pct="49" data-opcodes="CALL_PY_EXACT_ARGS (CALL)">)</span><span class="instr-span" data-col-start="11" data-col-end="46" data-samples="2" data-max-samples="4315" data-pct="0" data-opcodes="BINARY_OP_ADD_INT (BINARY_OP)"> + </span><span class="instr-span" data-col-start="30" data-col-end="39" data-samples="14" data-max-samples="4315" data-pct="0" data-opcodes="LOAD_GLOBAL_MODULE (LOAD_GLOBAL)">fibonacci</span><span class="instr-span" data-col-start="30" data-col-end="46" data-samples="4315" data-max-samples="4315" data-pct="49" data-opcodes="CALL_PY_EXACT_ARGS (CALL)">(</span><span class="instr-span" data-col-start="40" data-col-end="45" data-samples="4" data-max-samples="4315" data-pct="0" data-opcodes="BINARY_OP_SUBTRACT_INT (BINARY_OP)">n - 2</span><span class="instr-span" data-col-start="30" data-col-end="46" data-samples="4315" data-max-samples="4315" data-pct="49" data-opcodes="CALL_PY_EXACT_ARGS (CALL)">)</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn callee" data-nav='{&quot;link&quot;: &quot;#line-10&quot;, &quot;func&quot;: &quot;fibonacci&quot;}' title="Go to callee: fibonacci (4,170 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-11" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-12">
+            <div class="line-number">12</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-13">
+            <div class="line-number">13</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-14">
+            <div class="line-number">14</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def bubble_sort(arr):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-15">
+            <div class="line-number">15</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Classic bubble sort - O(n^2) comparison sorting.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-16">
+            <div class="line-number">16</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    n = len(arr)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-17">
+            <div class="line-number">17</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for i in range(n):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.206" data-cumulative-intensity="0.158" data-spec-color="rgba(255, 180, 50, 0.275)" id="line-18" title="Self: 2, Total: 2">
+            <div class="line-number">18</div>
+            <div class="line-samples-self">2</div>
+            <div class="line-samples-cumulative">2</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 18, &quot;col_offset&quot;: 12, &quot;end_col_offset&quot;: 13}]}, {&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 18, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 36}]}]' data-spec-pct="50" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        for <span class="instr-span" data-col-start="12" data-col-end="13" data-samples="1" data-max-samples="1" data-pct="50" data-opcodes="STORE_FAST">j</span> in <span class="instr-span" data-col-start="17" data-col-end="36" data-samples="1" data-max-samples="1" data-pct="50" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(0, n - i - 1)</span>:</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-18" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.412" data-cumulative-intensity="0.316" data-spec-color="rgba(255, 180, 50, 0.275)" id="line-19" title="Self: 8, Total: 8">
+            <div class="line-number">19</div>
+            <div class="line-samples-self">8</div>
+            <div class="line-samples-cumulative">8</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 167, &quot;opname&quot;: &quot;COMPARE_OP_INT (COMPARE_OP)&quot;, &quot;base_opname&quot;: &quot;COMPARE_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 3, &quot;locations&quot;: [{&quot;end_lineno&quot;: 19, &quot;col_offset&quot;: 15, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 87, &quot;opname&quot;: &quot;LOAD_FAST_BORROW_LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW_LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 19, &quot;col_offset&quot;: 24, &quot;end_col_offset&quot;: 27}, {&quot;end_lineno&quot;: 19, &quot;col_offset&quot;: 15, &quot;end_col_offset&quot;: 18}]}, {&quot;opcode&quot;: 94, &quot;opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;base_opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 19, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 33}]}, {&quot;opcode&quot;: 137, &quot;opname&quot;: &quot;BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 19, &quot;col_offset&quot;: 15, &quot;end_col_offset&quot;: 21}]}]' data-spec-pct="50" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">            if <span class="instr-span" data-col-start="15" data-col-end="18" data-samples="2" data-max-samples="3" data-pct="20" data-opcodes="LOAD_FAST_BORROW_LOAD_FAST_BORROW">arr</span><span class="instr-span" data-col-start="15" data-col-end="21" data-samples="1" data-max-samples="3" data-pct="10" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">[j]</span><span class="instr-span" data-col-start="15" data-col-end="34" data-samples="3" data-max-samples="3" data-pct="30" data-opcodes="COMPARE_OP_INT (COMPARE_OP)"> &gt; </span><span class="instr-span" data-col-start="24" data-col-end="27" data-samples="2" data-max-samples="3" data-pct="20" data-opcodes="LOAD_FAST_BORROW_LOAD_FAST_BORROW">arr</span><span class="instr-span" data-col-start="15" data-col-end="34" data-samples="3" data-max-samples="3" data-pct="30" data-opcodes="COMPARE_OP_INT (COMPARE_OP)">[j + </span><span class="instr-span" data-col-start="32" data-col-end="33" data-samples="2" data-max-samples="3" data-pct="20" data-opcodes="LOAD_SMALL_INT">1</span><span class="instr-span" data-col-start="15" data-col-end="34" data-samples="3" data-max-samples="3" data-pct="30" data-opcodes="COMPARE_OP_INT (COMPARE_OP)">]</span>:</div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-90&quot;, &quot;func&quot;: &quot;data_processing&quot;}' title="Go to caller: data_processing (12 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-19" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.206" data-cumulative-intensity="0.158" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-20" title="Self: 2, Total: 2">
+            <div class="line-number">20</div>
+            <div class="line-samples-self">2</div>
+            <div class="line-samples-cumulative">2</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 137, &quot;opname&quot;: &quot;BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 20, &quot;col_offset&quot;: 37, &quot;end_col_offset&quot;: 47}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">                arr[j], arr[j + 1] = <span class="instr-span" data-col-start="37" data-col-end="47" data-samples="2" data-max-samples="2" data-pct="100" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">arr[j + 1]</span>, arr[j]</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-20" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-21">
+            <div class="line-number">21</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    return arr</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-22">
+            <div class="line-number">22</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-23">
+            <div class="line-number">23</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-24">
+            <div class="line-number">24</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def matrix_multiply(a, b):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-25">
+            <div class="line-number">25</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Matrix multiplication using nested loops.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-26">
+            <div class="line-number">26</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    rows_a, cols_a = len(a), len(a[0])</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-27">
+            <div class="line-number">27</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    rows_b, cols_b = len(b), len(b[0])</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-28">
+            <div class="line-number">28</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    result = [[0] * cols_b for _ in range(rows_a)]</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-29">
+            <div class="line-number">29</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-30">
+            <div class="line-number">30</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for i in range(rows_a):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-31">
+            <div class="line-number">31</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        for j in range(cols_b):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.412" data-cumulative-intensity="0.316" data-spec-color="rgba(229, 174, 78, 0.2425)" id="line-32" title="Self: 8, Total: 8">
+            <div class="line-number">32</div>
+            <div class="line-samples-self">8</div>
+            <div class="line-samples-cumulative">8</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 5, &quot;locations&quot;: [{&quot;end_lineno&quot;: 32, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 17}]}, {&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 3, &quot;locations&quot;: [{&quot;end_lineno&quot;: 32, &quot;col_offset&quot;: 21, &quot;end_col_offset&quot;: 34}]}]' data-spec-pct="37" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">            for <span class="instr-span" data-col-start="16" data-col-end="17" data-samples="5" data-max-samples="5" data-pct="62" data-opcodes="STORE_FAST">k</span> in <span class="instr-span" data-col-start="21" data-col-end="34" data-samples="3" data-max-samples="5" data-pct="37" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(cols_a)</span>:</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-32" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.777" data-cumulative-intensity="0.595" data-spec-color="rgba(117, 220, 23, 0.3425)" id="line-33" title="Self: 62, Total: 62">
+            <div class="line-number">33</div>
+            <div class="line-samples-self">62</div>
+            <div class="line-samples-cumulative">62</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 137, &quot;opname&quot;: &quot;BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 26, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 42, &quot;end_col_offset&quot;: 46}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 42, &quot;end_col_offset&quot;: 49}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 36}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 39}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 28}]}, {&quot;opcode&quot;: 130, &quot;opname&quot;: &quot;BINARY_OP_ADD_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 11, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 49}]}, {&quot;opcode&quot;: 134, &quot;opname&quot;: &quot;BINARY_OP_MULTIPLY_INT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 8, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 49}]}, {&quot;opcode&quot;: 117, &quot;opname&quot;: &quot;SWAP&quot;, &quot;base_opname&quot;: &quot;SWAP&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 5, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 28}]}, {&quot;opcode&quot;: 59, &quot;opname&quot;: &quot;COPY&quot;, &quot;base_opname&quot;: &quot;COPY&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 28}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 3, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 37, &quot;end_col_offset&quot;: 38}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 47, &quot;end_col_offset&quot;: 48}]}, {&quot;opcode&quot;: 87, &quot;opname&quot;: &quot;LOAD_FAST_BORROW_LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW_LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 42, &quot;end_col_offset&quot;: 43}, {&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 33}]}, {&quot;opcode&quot;: 200, &quot;opname&quot;: &quot;STORE_SUBSCR_LIST_INT (STORE_SUBSCR)&quot;, &quot;base_opname&quot;: &quot;STORE_SUBSCR&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 28}]}, {&quot;opcode&quot;: 176, &quot;opname&quot;: &quot;JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)&quot;, &quot;base_opname&quot;: &quot;JUMP_BACKWARD&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 33, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 28}]}]' data-spec-pct="77" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">                <span class="instr-span" data-col-start="16" data-col-end="28" data-samples="38" data-max-samples="38" data-pct="22" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP), SWAP, COPY +2 more">result[i][j]</span><span class="instr-span" data-col-start="16" data-col-end="49" data-samples="11" data-max-samples="38" data-pct="6" data-opcodes="BINARY_OP_ADD_INT (BINARY_OP)"> += </span><span class="instr-span" data-col-start="32" data-col-end="33" data-samples="2" data-max-samples="38" data-pct="1" data-opcodes="LOAD_FAST_BORROW_LOAD_FAST_BORROW">a</span><span class="instr-span" data-col-start="32" data-col-end="36" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">[i]</span><span class="instr-span" data-col-start="32" data-col-end="39" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">[</span><span class="instr-span" data-col-start="37" data-col-end="38" data-samples="3" data-max-samples="38" data-pct="1" data-opcodes="LOAD_FAST_BORROW">k</span><span class="instr-span" data-col-start="32" data-col-end="39" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">]</span><span class="instr-span" data-col-start="32" data-col-end="49" data-samples="8" data-max-samples="38" data-pct="4" data-opcodes="BINARY_OP_MULTIPLY_INT (BINARY_OP)"> * </span><span class="instr-span" data-col-start="42" data-col-end="43" data-samples="2" data-max-samples="38" data-pct="1" data-opcodes="LOAD_FAST_BORROW_LOAD_FAST_BORROW">b</span><span class="instr-span" data-col-start="42" data-col-end="46" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">[k]</span><span class="instr-span" data-col-start="42" data-col-end="49" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">[</span><span class="instr-span" data-col-start="47" data-col-end="48" data-samples="3" data-max-samples="38" data-pct="1" data-opcodes="LOAD_FAST_BORROW">j</span><span class="instr-span" data-col-start="42" data-col-end="49" data-samples="26" data-max-samples="38" data-pct="15" data-opcodes="BINARY_OP_SUBSCR_LIST_INT (BINARY_OP)">]</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-78&quot;, &quot;func&quot;: &quot;compute_heavy&quot;}' title="Go to caller: compute_heavy (70 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-33" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-34">
+            <div class="line-number">34</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    return result</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-35">
+            <div class="line-number">35</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-36">
+            <div class="line-number">36</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-37">
+            <div class="line-number">37</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def prime_sieve(limit):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-38">
+            <div class="line-number">38</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Sieve of Eratosthenes - find all primes up to limit.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-39">
+            <div class="line-number">39</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    is_prime = [True] * (limit + 1)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-40">
+            <div class="line-number">40</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    is_prime[0] = is_prime[1] = False</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-41">
+            <div class="line-number">41</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-42">
+            <div class="line-number">42</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for num in range(2, int(limit ** 0.5) + 1):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-43">
+            <div class="line-number">43</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        if is_prime[num]:</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.130" data-cumulative-intensity="0.100" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-44" title="Self: 1, Total: 1">
+            <div class="line-number">44</div>
+            <div class="line-samples-self">1</div>
+            <div class="line-samples-cumulative">1</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 44, &quot;col_offset&quot;: 28, &quot;end_col_offset&quot;: 60}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">            for multiple in <span class="instr-span" data-col-start="28" data-col-end="60" data-samples="1" data-max-samples="1" data-pct="100" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(num * num, limit + 1, num)</span>:</div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-78&quot;, &quot;func&quot;: &quot;compute_heavy&quot;}' title="Go to caller: compute_heavy (3 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-44" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-45">
+            <div class="line-number">45</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">                is_prime[multiple] = False</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-46">
+            <div class="line-number">46</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.206" data-cumulative-intensity="0.158" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-47" title="Self: 2, Total: 2">
+            <div class="line-number">47</div>
+            <div class="line-samples-self">2</div>
+            <div class="line-samples-cumulative">2</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 70, &quot;opname&quot;: &quot;FOR_ITER&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 47, &quot;col_offset&quot;: 34, &quot;end_col_offset&quot;: 53}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    return [num for num, prime in <span class="instr-span" data-col-start="34" data-col-end="53" data-samples="2" data-max-samples="2" data-pct="100" data-opcodes="FOR_ITER">enumerate(is_prime)</span> if prime]</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-47" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-48">
+            <div class="line-number">48</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-49">
+            <div class="line-number">49</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-50">
+            <div class="line-number">50</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def string_processing(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-51">
+            <div class="line-number">51</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;String operations - concatenation and formatting.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-52">
+            <div class="line-number">52</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for _ in range(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-53">
+            <div class="line-number">53</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        result = &quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-54">
+            <div class="line-number">54</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        for i in range(50):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.848" data-cumulative-intensity="0.650" data-spec-color="rgba(239, 176, 67, 0.255)" id="line-55" title="Self: 91, Total: 91">
+            <div class="line-number">55</div>
+            <div class="line-samples-self">91</div>
+            <div class="line-samples-cumulative">91</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 3, &quot;opname&quot;: &quot;BINARY_OP_INPLACE_ADD_UNICODE (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 39, &quot;locations&quot;: [{&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 12, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 12, &quot;opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;base_opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 32, &quot;locations&quot;: [{&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 29, &quot;end_col_offset&quot;: 32}]}, {&quot;opcode&quot;: 50, &quot;opname&quot;: &quot;BUILD_STRING&quot;, &quot;base_opname&quot;: &quot;BUILD_STRING&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 15, &quot;locations&quot;: [{&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 22, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 82, &quot;opname&quot;: &quot;LOAD_CONST&quot;, &quot;base_opname&quot;: &quot;LOAD_CONST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 24, &quot;end_col_offset&quot;: 29}, {&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 32, &quot;end_col_offset&quot;: 33}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 55, &quot;col_offset&quot;: 12, &quot;end_col_offset&quot;: 18}]}]' data-spec-pct="42" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">            <span class="instr-span" data-col-start="12" data-col-end="18" data-samples="1" data-max-samples="39" data-pct="1" data-opcodes="LOAD_FAST_BORROW">result</span><span class="instr-span" data-col-start="12" data-col-end="34" data-samples="39" data-max-samples="39" data-pct="41" data-opcodes="BINARY_OP_INPLACE_ADD_UNICODE (BINARY_OP)"> += </span><span class="instr-span" data-col-start="22" data-col-end="34" data-samples="15" data-max-samples="39" data-pct="15" data-opcodes="BUILD_STRING">f&quot;</span><span class="instr-span" data-col-start="24" data-col-end="29" data-samples="4" data-max-samples="39" data-pct="4" data-opcodes="LOAD_CONST">item_</span><span class="instr-span" data-col-start="29" data-col-end="32" data-samples="32" data-max-samples="39" data-pct="33" data-opcodes="FORMAT_SIMPLE">{i}</span><span class="instr-span" data-col-start="32" data-col-end="33" data-samples="4" data-max-samples="39" data-pct="4" data-opcodes="LOAD_CONST">_</span><span class="instr-span" data-col-start="22" data-col-end="34" data-samples="15" data-max-samples="39" data-pct="15" data-opcodes="BUILD_STRING">&quot;</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-90&quot;, &quot;func&quot;: &quot;data_processing&quot;}' title="Go to caller: data_processing (123 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-55" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.588" data-cumulative-intensity="0.450" data-spec-color="rgba(163, 207, 31, 0.32)" id="line-56" title="Self: 22, Total: 22">
+            <div class="line-number">56</div>
+            <div class="line-samples-self">22</div>
+            <div class="line-samples-cumulative">22</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 157, &quot;opname&quot;: &quot;CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS (CALL)&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 15, &quot;locations&quot;: [{&quot;end_lineno&quot;: 56, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 33}]}, {&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 7, &quot;locations&quot;: [{&quot;end_lineno&quot;: 56, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 13}]}]' data-spec-pct="68" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="13" data-samples="7" data-max-samples="15" data-pct="31" data-opcodes="STORE_FAST">parts</span> = <span class="instr-span" data-col-start="16" data-col-end="33" data-samples="15" data-max-samples="15" data-pct="68" data-opcodes="CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS (CALL)">result.split(&quot;_&quot;)</span></div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-56" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.450" data-cumulative-intensity="0.344" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-57" title="Self: 10, Total: 10">
+            <div class="line-number">57</div>
+            <div class="line-samples-self">10</div>
+            <div class="line-samples-cumulative">10</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 159, &quot;opname&quot;: &quot;CALL_METHOD_DESCRIPTOR_O (CALL)&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 10, &quot;locations&quot;: [{&quot;end_lineno&quot;: 57, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 32}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        joined = <span class="instr-span" data-col-start="17" data-col-end="32" data-samples="10" data-max-samples="10" data-pct="100" data-opcodes="CALL_METHOD_DESCRIPTOR_O (CALL)">&quot;-&quot;.join(parts)</span></div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-57" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-58">
+            <div class="line-number">58</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-59">
+            <div class="line-number">59</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-60">
+            <div class="line-number">60</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def list_operations(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-61">
+            <div class="line-number">61</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;List comprehensions and operations.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-62">
+            <div class="line-number">62</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for _ in range(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.896" data-cumulative-intensity="0.687" data-spec-color="rgba(206, 169, 104, 0.2125)" id="line-63" title="Self: 118, Total: 118">
+            <div class="line-number">63</div>
+            <div class="line-samples-self">118</div>
+            <div class="line-samples-cumulative">118</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 44, &quot;opname&quot;: &quot;BINARY_OP&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 54, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 19, &quot;end_col_offset&quot;: 25}]}, {&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 26, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 35, &quot;end_col_offset&quot;: 45}]}, {&quot;opcode&quot;: 78, &quot;opname&quot;: &quot;LIST_APPEND&quot;, &quot;base_opname&quot;: &quot;LIST_APPEND&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 13, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 19, &quot;end_col_offset&quot;: 25}]}, {&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 10, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 15}]}, {&quot;opcode&quot;: 113, &quot;opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 9, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 30, &quot;end_col_offset&quot;: 31}]}, {&quot;opcode&quot;: 176, &quot;opname&quot;: &quot;JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)&quot;, &quot;base_opname&quot;: &quot;JUMP_BACKWARD&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 19, &quot;end_col_offset&quot;: 25}]}, {&quot;opcode&quot;: 94, &quot;opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;base_opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 63, &quot;col_offset&quot;: 24, &quot;end_col_offset&quot;: 25}]}]' data-spec-pct="25" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="15" data-samples="10" data-max-samples="71" data-pct="8" data-opcodes="STORE_FAST">squares</span> = [<span class="instr-span" data-col-start="19" data-col-end="25" data-samples="71" data-max-samples="71" data-pct="60" data-opcodes="BINARY_OP, LIST_APPEND, JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)">x ** </span><span class="instr-span" data-col-start="24" data-col-end="25" data-samples="2" data-max-samples="71" data-pct="1" data-opcodes="LOAD_SMALL_INT">2</span> for <span class="instr-span" data-col-start="30" data-col-end="31" data-samples="9" data-max-samples="71" data-pct="7" data-opcodes="STORE_FAST_LOAD_FAST">x</span> in <span class="instr-span" data-col-start="35" data-col-end="45" data-samples="26" data-max-samples="71" data-pct="22" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(500)</span>]</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-63" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.898" data-cumulative-intensity="0.688" data-spec-color="rgba(206, 169, 104, 0.2125)" id="line-64" title="Self: 119, Total: 119">
+            <div class="line-number">64</div>
+            <div class="line-samples-self">119</div>
+            <div class="line-samples-cumulative">119</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 44, &quot;opname&quot;: &quot;BINARY_OP&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 48, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 39, &quot;end_col_offset&quot;: 44}]}, {&quot;opcode&quot;: 167, &quot;opname&quot;: &quot;COMPARE_OP_INT (COMPARE_OP)&quot;, &quot;base_opname&quot;: &quot;COMPARE_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 16, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 39, &quot;end_col_offset&quot;: 49}]}, {&quot;opcode&quot;: 94, &quot;opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;base_opname&quot;: &quot;LOAD_SMALL_INT&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 13, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 43, &quot;end_col_offset&quot;: 44}, {&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 48, &quot;end_col_offset&quot;: 49}]}, {&quot;opcode&quot;: 172, &quot;opname&quot;: &quot;FOR_ITER_LIST (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 13, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 28, &quot;end_col_offset&quot;: 35}]}, {&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 12, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 13}]}, {&quot;opcode&quot;: 113, &quot;opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 6, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 23, &quot;end_col_offset&quot;: 24}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 18}]}, {&quot;opcode&quot;: 78, &quot;opname&quot;: &quot;LIST_APPEND&quot;, &quot;base_opname&quot;: &quot;LIST_APPEND&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 3, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 18}]}, {&quot;opcode&quot;: 103, &quot;opname&quot;: &quot;POP_JUMP_IF_TRUE&quot;, &quot;base_opname&quot;: &quot;POP_JUMP_IF_TRUE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 18}]}, {&quot;opcode&quot;: 16, &quot;opname&quot;: &quot;GET_ITER&quot;, &quot;base_opname&quot;: &quot;GET_ITER&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 28, &quot;end_col_offset&quot;: 35}]}, {&quot;opcode&quot;: 176, &quot;opname&quot;: &quot;JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)&quot;, &quot;base_opname&quot;: &quot;JUMP_BACKWARD&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 64, &quot;col_offset&quot;: 17, &quot;end_col_offset&quot;: 18}]}]' data-spec-pct="25" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="13" data-samples="12" data-max-samples="48" data-pct="9" data-opcodes="STORE_FAST">evens</span> = [<span class="instr-span" data-col-start="17" data-col-end="18" data-samples="10" data-max-samples="48" data-pct="7" data-opcodes="LOAD_FAST_BORROW, LIST_APPEND, POP_JUMP_IF_TRUE +1 more">x</span> for <span class="instr-span" data-col-start="23" data-col-end="24" data-samples="6" data-max-samples="48" data-pct="4" data-opcodes="STORE_FAST_LOAD_FAST">x</span> in <span class="instr-span" data-col-start="28" data-col-end="35" data-samples="14" data-max-samples="48" data-pct="10" data-opcodes="FOR_ITER_LIST (FOR_ITER), GET_ITER">squares</span> if <span class="instr-span" data-col-start="39" data-col-end="44" data-samples="48" data-max-samples="48" data-pct="36" data-opcodes="BINARY_OP">x % </span><span class="instr-span" data-col-start="43" data-col-end="44" data-samples="13" data-max-samples="48" data-pct="9" data-opcodes="LOAD_SMALL_INT">2</span><span class="instr-span" data-col-start="39" data-col-end="49" data-samples="16" data-max-samples="48" data-pct="12" data-opcodes="COMPARE_OP_INT (COMPARE_OP)"> == </span><span class="instr-span" data-col-start="48" data-col-end="49" data-samples="13" data-max-samples="48" data-pct="9" data-opcodes="LOAD_SMALL_INT">0</span>]</div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-90&quot;, &quot;func&quot;: &quot;data_processing&quot;}' title="Go to caller: data_processing (249 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-64" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.481" data-cumulative-intensity="0.368" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-65" title="Self: 12, Total: 12">
+            <div class="line-number">65</div>
+            <div class="line-samples-self">12</div>
+            <div class="line-samples-cumulative">12</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 148, &quot;opname&quot;: &quot;CALL_BUILTIN_FAST_WITH_KEYWORDS (CALL)&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 11, &quot;locations&quot;: [{&quot;end_lineno&quot;: 65, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 26}]}, {&quot;opcode&quot;: 176, &quot;opname&quot;: &quot;JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)&quot;, &quot;base_opname&quot;: &quot;JUMP_BACKWARD&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 65, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 13}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="13" data-samples="1" data-max-samples="11" data-pct="8" data-opcodes="JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)">total</span> = <span class="instr-span" data-col-start="16" data-col-end="26" data-samples="11" data-max-samples="11" data-pct="91" data-opcodes="CALL_BUILTIN_FAST_WITH_KEYWORDS (CALL)">sum(evens)</span></div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-65" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-66">
+            <div class="line-number">66</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-67">
+            <div class="line-number">67</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-68">
+            <div class="line-number">68</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def dict_operations(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-69">
+            <div class="line-number">69</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Dictionary creation and lookups.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-70">
+            <div class="line-number">70</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for _ in range(iterations):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="1.000" data-cumulative-intensity="0.766" data-spec-color="rgba(175, 161, 138, 0.1725)" id="line-71" title="Self: 206, Total: 206">
+            <div class="line-number">71</div>
+            <div class="line-samples-self">206</div>
+            <div class="line-samples-cumulative">206</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 12, &quot;opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;base_opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 56, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 22, &quot;end_col_offset&quot;: 25}]}, {&quot;opcode&quot;: 98, &quot;opname&quot;: &quot;MAP_ADD&quot;, &quot;base_opname&quot;: &quot;MAP_ADD&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 56, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 50, &quot;opname&quot;: &quot;BUILD_STRING&quot;, &quot;base_opname&quot;: &quot;BUILD_STRING&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 37, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 26}]}, {&quot;opcode&quot;: 44, &quot;opname&quot;: &quot;BINARY_OP&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 21, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 28, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 14, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 44, &quot;end_col_offset&quot;: 54}]}, {&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 12, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 12}]}, {&quot;opcode&quot;: 176, &quot;opname&quot;: &quot;JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)&quot;, &quot;base_opname&quot;: &quot;JUMP_BACKWARD&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 6, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 3, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 28, &quot;end_col_offset&quot;: 29}]}, {&quot;opcode&quot;: 82, &quot;opname&quot;: &quot;LOAD_CONST&quot;, &quot;base_opname&quot;: &quot;LOAD_CONST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 71, &quot;col_offset&quot;: 18, &quot;end_col_offset&quot;: 22}]}]' data-spec-pct="9" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="12" data-samples="12" data-max-samples="62" data-pct="5" data-opcodes="STORE_FAST">data</span> = {<span class="instr-span" data-col-start="16" data-col-end="26" data-samples="37" data-max-samples="62" data-pct="17" data-opcodes="BUILD_STRING">f&quot;</span><span class="instr-span" data-col-start="18" data-col-end="22" data-samples="1" data-max-samples="62" data-pct="0" data-opcodes="LOAD_CONST">key_</span><span class="instr-span" data-col-start="22" data-col-end="25" data-samples="56" data-max-samples="62" data-pct="27" data-opcodes="FORMAT_SIMPLE">{i}</span><span class="instr-span" data-col-start="16" data-col-end="26" data-samples="37" data-max-samples="62" data-pct="17" data-opcodes="BUILD_STRING">&quot;</span><span class="instr-span" data-col-start="16" data-col-end="34" data-samples="62" data-max-samples="62" data-pct="30" data-opcodes="MAP_ADD, JUMP_BACKWARD_NO_JIT (JUMP_BACKWARD)">: </span><span class="instr-span" data-col-start="28" data-col-end="29" data-samples="3" data-max-samples="62" data-pct="1" data-opcodes="LOAD_FAST_BORROW">i</span><span class="instr-span" data-col-start="28" data-col-end="34" data-samples="21" data-max-samples="62" data-pct="10" data-opcodes="BINARY_OP"> ** 2</span> for i in <span class="instr-span" data-col-start="44" data-col-end="54" data-samples="14" data-max-samples="62" data-pct="6" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(200)</span>}</div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-90&quot;, &quot;func&quot;: &quot;data_processing&quot;}' title="Go to caller: data_processing (369 samples)">▲</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-71" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.951" data-cumulative-intensity="0.728" data-spec-color="rgba(223, 172, 84, 0.235)" id="line-72" title="Self: 158, Total: 158">
+            <div class="line-number">72</div>
+            <div class="line-samples-self">158</div>
+            <div class="line-samples-cumulative">158</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 12, &quot;opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;base_opname&quot;: &quot;FORMAT_SIMPLE&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 50, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 29, &quot;end_col_offset&quot;: 32}]}, {&quot;opcode&quot;: 135, &quot;opname&quot;: &quot;BINARY_OP_SUBSCR_DICT (BINARY_OP)&quot;, &quot;base_opname&quot;: &quot;BINARY_OP&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 50, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 18, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 50, &quot;opname&quot;: &quot;BUILD_STRING&quot;, &quot;base_opname&quot;: &quot;BUILD_STRING&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 43, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 23, &quot;end_col_offset&quot;: 33}]}, {&quot;opcode&quot;: 112, &quot;opname&quot;: &quot;STORE_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 8, &quot;end_col_offset&quot;: 14}]}, {&quot;opcode&quot;: 113, &quot;opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;base_opname&quot;: &quot;STORE_FAST_LOAD_FAST&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 39, &quot;end_col_offset&quot;: 40}]}, {&quot;opcode&quot;: 173, &quot;opname&quot;: &quot;FOR_ITER_RANGE (FOR_ITER)&quot;, &quot;base_opname&quot;: &quot;FOR_ITER&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 4, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 44, &quot;end_col_offset&quot;: 54}]}, {&quot;opcode&quot;: 78, &quot;opname&quot;: &quot;LIST_APPEND&quot;, &quot;base_opname&quot;: &quot;LIST_APPEND&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 2, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 18, &quot;end_col_offset&quot;: 34}]}, {&quot;opcode&quot;: 86, &quot;opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;base_opname&quot;: &quot;LOAD_FAST_BORROW&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1, &quot;locations&quot;: [{&quot;end_lineno&quot;: 72, &quot;col_offset&quot;: 30, &quot;end_col_offset&quot;: 31}]}]' data-spec-pct="34" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        <span class="instr-span" data-col-start="8" data-col-end="14" data-samples="4" data-max-samples="52" data-pct="2" data-opcodes="STORE_FAST">values</span> = [<span class="instr-span" data-col-start="18" data-col-end="34" data-samples="52" data-max-samples="52" data-pct="32" data-opcodes="BINARY_OP_SUBSCR_DICT (BINARY_OP), LIST_APPEND">data[</span><span class="instr-span" data-col-start="23" data-col-end="33" data-samples="43" data-max-samples="52" data-pct="27" data-opcodes="BUILD_STRING">f&quot;key_</span><span class="instr-span" data-col-start="29" data-col-end="32" data-samples="50" data-max-samples="52" data-pct="31" data-opcodes="FORMAT_SIMPLE">{</span><span class="instr-span" data-col-start="30" data-col-end="31" data-samples="1" data-max-samples="52" data-pct="0" data-opcodes="LOAD_FAST_BORROW">i</span><span class="instr-span" data-col-start="29" data-col-end="32" data-samples="50" data-max-samples="52" data-pct="31" data-opcodes="FORMAT_SIMPLE">}</span><span class="instr-span" data-col-start="23" data-col-end="33" data-samples="43" data-max-samples="52" data-pct="27" data-opcodes="BUILD_STRING">&quot;</span><span class="instr-span" data-col-start="18" data-col-end="34" data-samples="52" data-max-samples="52" data-pct="32" data-opcodes="BINARY_OP_SUBSCR_DICT (BINARY_OP), LIST_APPEND">]</span> for <span class="instr-span" data-col-start="39" data-col-end="40" data-samples="4" data-max-samples="52" data-pct="2" data-opcodes="STORE_FAST_LOAD_FAST">i</span> in <span class="instr-span" data-col-start="44" data-col-end="54" data-samples="4" data-max-samples="52" data-pct="2" data-opcodes="FOR_ITER_RANGE (FOR_ITER)">range(200)</span>]</div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-72" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.336" data-cumulative-intensity="0.257" data-spec-color="rgba(0, 255, 0, 0.4)" id="line-73" title="Self: 5, Total: 5">
+            <div class="line-number">73</div>
+            <div class="line-samples-self">5</div>
+            <div class="line-samples-cumulative">5</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 148, &quot;opname&quot;: &quot;CALL_BUILTIN_FAST_WITH_KEYWORDS (CALL)&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: true, &quot;samples&quot;: 5, &quot;locations&quot;: [{&quot;end_lineno&quot;: 73, &quot;col_offset&quot;: 16, &quot;end_col_offset&quot;: 27}]}]' data-spec-pct="100" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">        total = <span class="instr-span" data-col-start="16" data-col-end="27" data-samples="5" data-max-samples="5" data-pct="100" data-opcodes="CALL_BUILTIN_FAST_WITH_KEYWORDS (CALL)">sum(values)</span></div>
+            
+        </div>
+        <div class="bytecode-panel" id="bytecode-73" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-74">
+            <div class="line-number">74</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-75">
+            <div class="line-number">75</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-76">
+            <div class="line-number">76</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def compute_heavy():</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-77">
+            <div class="line-number">77</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;CPU-intensive computation section.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.130" data-cumulative-intensity="0.820" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-78" title="Self: 1, Total: 301">
+            <div class="line-number">78</div>
+            <div class="line-samples-self">1</div>
+            <div class="line-samples-cumulative">301</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 52, &quot;opname&quot;: &quot;CALL&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 301, &quot;locations&quot;: [{&quot;end_lineno&quot;: 78, &quot;col_offset&quot;: 4, &quot;end_col_offset&quot;: 17}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    <span class="instr-span" data-col-start="4" data-col-end="17" data-samples="301" data-max-samples="301" data-pct="100" data-opcodes="CALL">fibonacci(30)</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-102&quot;, &quot;func&quot;: &quot;main&quot;}' title="Go to caller: main (301 samples)">▲</button><button class="nav-btn callee" data-nav-multi='[{&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;fibonacci&quot;, &quot;count&quot;: 227, &quot;link&quot;: &quot;#line-10&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;matrix_multiply&quot;, &quot;count&quot;: 70, &quot;link&quot;: &quot;#line-33&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;prime_sieve&quot;, &quot;count&quot;: 3, &quot;link&quot;: &quot;#line-44&quot;}]' title="3 callees (300 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-78" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-79">
+            <div class="line-number">79</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-80">
+            <div class="line-number">80</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    size = 60</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-81">
+            <div class="line-number">81</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    a = [[i + j for j in range(size)] for i in range(size)]</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-82">
+            <div class="line-number">82</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    b = [[i * j for j in range(size)] for i in range(size)]</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-83">
+            <div class="line-number">83</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    matrix_multiply(a, b)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-84">
+            <div class="line-number">84</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-85">
+            <div class="line-number">85</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    prime_sieve(10000)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-86">
+            <div class="line-number">86</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-87">
+            <div class="line-number">87</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-88">
+            <div class="line-number">88</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def data_processing():</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-89">
+            <div class="line-number">89</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Data structure operations.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.952" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-90" title="Self: 0, Total: 753">
+            <div class="line-number">90</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative">753</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 52, &quot;opname&quot;: &quot;CALL&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 753, &quot;locations&quot;: [{&quot;end_lineno&quot;: 90, &quot;col_offset&quot;: 4, &quot;end_col_offset&quot;: 27}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    <span class="instr-span" data-col-start="4" data-col-end="27" data-samples="753" data-max-samples="753" data-pct="100" data-opcodes="CALL">string_processing(2000)</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-102&quot;, &quot;func&quot;: &quot;main&quot;}' title="Go to caller: main (753 samples)">▲</button><button class="nav-btn callee" data-nav-multi='[{&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;dict_operations&quot;, &quot;count&quot;: 369, &quot;link&quot;: &quot;#line-71&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;list_operations&quot;, &quot;count&quot;: 249, &quot;link&quot;: &quot;#line-64&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;string_processing&quot;, &quot;count&quot;: 123, &quot;link&quot;: &quot;#line-55&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;bubble_sort&quot;, &quot;count&quot;: 12, &quot;link&quot;: &quot;#line-19&quot;}]' title="4 callees (753 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-90" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-91">
+            <div class="line-number">91</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    list_operations(1500)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-92">
+            <div class="line-number">92</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    dict_operations(1000)</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-93">
+            <div class="line-number">93</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-94">
+            <div class="line-number">94</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    data = list(range(800))</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-95">
+            <div class="line-number">95</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    for _ in range(3):</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-96">
+            <div class="line-number">96</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        data = data[::-1]</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-97">
+            <div class="line-number">97</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">        bubble_sort(data[:200])</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-98">
+            <div class="line-number">98</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-99">
+            <div class="line-number">99</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-100">
+            <div class="line-number">100</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">def main():</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-101">
+            <div class="line-number">101</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    &quot;&quot;&quot;Main entry point.&quot;&quot;&quot;</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="1.000" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-102" title="Self: 0, Total: 1,054">
+            <div class="line-number">102</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative">1,054</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 52, &quot;opname&quot;: &quot;CALL&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1054, &quot;locations&quot;: [{&quot;end_lineno&quot;: 102, &quot;col_offset&quot;: 4, &quot;end_col_offset&quot;: 19}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    <span class="instr-span" data-col-start="4" data-col-end="19" data-samples="1054" data-max-samples="1054" data-pct="100" data-opcodes="CALL">compute_heavy()</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn caller" data-nav='{&quot;link&quot;: &quot;#line-107&quot;, &quot;func&quot;: &quot;&lt;module&gt;&quot;}' title="Go to caller: &lt;module&gt; (1,054 samples)">▲</button><button class="nav-btn callee" data-nav-multi='[{&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;data_processing&quot;, &quot;count&quot;: 753, &quot;link&quot;: &quot;#line-90&quot;}, {&quot;file&quot;: &quot;tachyon_selfcontained.py&quot;, &quot;func&quot;: &quot;compute_heavy&quot;, &quot;count&quot;: 301, &quot;link&quot;: &quot;#line-78&quot;}]' title="2 callees (1,054 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-102" style="display:none;"></div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-103">
+            <div class="line-number">103</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">    data_processing()</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-104">
+            <div class="line-number">104</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-105">
+            <div class="line-number">105</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content"></div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="0.000" id="line-106">
+            <div class="line-number">106</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative"></div>
+            <div class="bytecode-spacer"></div>
+            <div class="line-content">if __name__ == &quot;__main__&quot;:</div>
+            
+        </div>
+        <div class="code-line" data-self-intensity="0.000" data-cumulative-intensity="1.000" data-spec-color="rgba(158, 158, 158, 0.15)" id="line-107" title="Self: 0, Total: 1,054">
+            <div class="line-number">107</div>
+            <div class="line-samples-self"></div>
+            <div class="line-samples-cumulative">1,054</div>
+            <button class="bytecode-toggle" data-bytecode='[{&quot;opcode&quot;: 52, &quot;opname&quot;: &quot;CALL&quot;, &quot;base_opname&quot;: &quot;CALL&quot;, &quot;is_specialized&quot;: false, &quot;samples&quot;: 1054, &quot;locations&quot;: [{&quot;end_lineno&quot;: 107, &quot;col_offset&quot;: 4, &quot;end_col_offset&quot;: 10}]}]' data-spec-pct="0" onclick="toggleBytecode(this)" title="Show bytecode">&#9654;</button>
+            <div class="line-content">    <span class="instr-span" data-col-start="4" data-col-end="10" data-samples="1054" data-max-samples="1054" data-pct="100" data-opcodes="CALL">main()</span></div>
+            <div class="line-nav-buttons"><button class="nav-btn callee" data-nav='{&quot;link&quot;: &quot;#line-102&quot;, &quot;func&quot;: &quot;main&quot;}' title="Go to callee: main (1,054 samples)">▼</button></div>
+        </div>
+        <div class="bytecode-panel" id="bytecode-107" style="display:none;"></div>
+
+        </div>
+    </div>
+
+    <script>
+// Tachyon Profiler - Shared Heatmap JavaScript
+// Common utilities shared between index and file views
+
+// ============================================================================
+// Heat Level Mapping (Single source of truth for intensity thresholds)
+// ============================================================================
+
+// Maps intensity (0-1) to heat level (0-8). Level 0 = no heat, 1-8 = heat levels.
+function intensityToHeatLevel(intensity) {
+    if (intensity <= 0) return 0;
+    if (intensity <= 0.125) return 1;
+    if (intensity <= 0.25) return 2;
+    if (intensity <= 0.375) return 3;
+    if (intensity <= 0.5) return 4;
+    if (intensity <= 0.625) return 5;
+    if (intensity <= 0.75) return 6;
+    if (intensity <= 0.875) return 7;
+    return 8;
+}
+
+// Class names corresponding to heat levels 1-8 (used by scroll marker)
+const HEAT_CLASS_NAMES = ['cold', 'cool', 'mild', 'warm', 'hot', 'very-hot', 'intense', 'extreme'];
+
+function intensityToClass(intensity) {
+    const level = intensityToHeatLevel(intensity);
+    return level === 0 ? null : HEAT_CLASS_NAMES[level - 1];
+}
+
+// ============================================================================
+// Color Mapping (Intensity to Heat Color)
+// ============================================================================
+
+function intensityToColor(intensity) {
+    const level = intensityToHeatLevel(intensity);
+    if (level === 0) {
+        return 'transparent';
+    }
+    const rootStyle = getComputedStyle(document.documentElement);
+    return rootStyle.getPropertyValue(`--heat-${level}`).trim();
+}
+
+// ============================================================================
+// Favicon (Reuse logo image as favicon)
+// ============================================================================
+
+(function() {
+    const logo = document.querySelector('.brand-logo img');
+    if (logo) {
+        const favicon = document.createElement('link');
+        favicon.rel = 'icon';
+        favicon.type = 'image/png';
+        favicon.href = logo.src;
+        document.head.appendChild(favicon);
+    }
+})();
+
+// Tachyon Profiler - Heatmap JavaScript
+// Interactive features for the heatmap visualization
+// Aligned with Flamegraph viewer design patterns
+
+// ============================================================================
+// State Management
+// ============================================================================
+
+let currentMenu = null;
+let colorMode = 'self';  // 'self' or 'cumulative' - default to self
+let coldCodeHidden = false;
+
+// ============================================================================
+// Theme Support
+// ============================================================================
+
+function toggleTheme() {
+    const html = document.documentElement;
+    const current = html.getAttribute('data-theme') || 'light';
+    const next = current === 'light' ? 'dark' : 'light';
+    html.setAttribute('data-theme', next);
+    localStorage.setItem('heatmap-theme', next);
+
+    // Update theme button icon
+    const btn = document.getElementById('theme-btn');
+    if (btn) {
+        btn.querySelector('.icon-moon').style.display = next === 'dark' ? 'none' : '';
+        btn.querySelector('.icon-sun').style.display = next === 'dark' ? '' : 'none';
+    }
+    applyLineColors();
+
+    // Rebuild scroll marker with new theme colors
+    buildScrollMarker();
+}
+
+function restoreUIState() {
+    // Restore theme
+    const savedTheme = localStorage.getItem('heatmap-theme');
+    if (savedTheme) {
+        document.documentElement.setAttribute('data-theme', savedTheme);
+        const btn = document.getElementById('theme-btn');
+        if (btn) {
+            btn.querySelector('.icon-moon').style.display = savedTheme === 'dark' ? 'none' : '';
+            btn.querySelector('.icon-sun').style.display = savedTheme === 'dark' ? '' : 'none';
+        }
+    }
+}
+
+// ============================================================================
+// Utility Functions
+// ============================================================================
+
+function createElement(tag, className, textContent = '') {
+    const el = document.createElement(tag);
+    if (className) el.className = className;
+    if (textContent) el.textContent = textContent;
+    return el;
+}
+
+function calculateMenuPosition(buttonRect, menuWidth, menuHeight) {
+    const viewport = { width: window.innerWidth, height: window.innerHeight };
+    const scroll = {
+        x: window.pageXOffset || document.documentElement.scrollLeft,
+        y: window.pageYOffset || document.documentElement.scrollTop
+    };
+
+    const left = buttonRect.right + menuWidth + 10 < viewport.width
+        ? buttonRect.right + scroll.x + 10
+        : Math.max(scroll.x + 10, buttonRect.left + scroll.x - menuWidth - 10);
+
+    const top = buttonRect.bottom + menuHeight + 10 < viewport.height
+        ? buttonRect.bottom + scroll.y + 5
+        : Math.max(scroll.y + 10, buttonRect.top + scroll.y - menuHeight - 10);
+
+    return { left, top };
+}
+
+// ============================================================================
+// Menu Management
+// ============================================================================
+
+function closeMenu() {
+    if (currentMenu) {
+        currentMenu.remove();
+        currentMenu = null;
+    }
+}
+
+function showNavigationMenu(button, items, title) {
+    closeMenu();
+
+    const menu = createElement('div', 'callee-menu');
+    menu.appendChild(createElement('div', 'callee-menu-header', title));
+
+    items.forEach(linkData => {
+        const item = createElement('div', 'callee-menu-item');
+
+        const funcDiv = createElement('div', 'callee-menu-func');
+        funcDiv.textContent = linkData.func;
+
+        if (linkData.count !== undefined && linkData.count > 0) {
+            const countBadge = createElement('span', 'count-badge');
+            countBadge.textContent = linkData.count.toLocaleString();
+            countBadge.title = `${linkData.count.toLocaleString()} samples`;
+            funcDiv.appendChild(document.createTextNode(' '));
+            funcDiv.appendChild(countBadge);
+        }
+
+        item.appendChild(funcDiv);
+        item.appendChild(createElement('div', 'callee-menu-file', linkData.file));
+        item.addEventListener('click', () => window.location.href = linkData.link);
+        menu.appendChild(item);
+    });
+
+    const pos = calculateMenuPosition(button.getBoundingClientRect(), 350, 300);
+    menu.style.left = `${pos.left}px`;
+    menu.style.top = `${pos.top}px`;
+
+    document.body.appendChild(menu);
+    currentMenu = menu;
+}
+
+// ============================================================================
+// Navigation
+// ============================================================================
+
+function handleNavigationClick(button, e) {
+    e.stopPropagation();
+
+    const navData = button.getAttribute('data-nav');
+    if (navData) {
+        window.location.href = JSON.parse(navData).link;
+        return;
+    }
+
+    const navMulti = button.getAttribute('data-nav-multi');
+    if (navMulti) {
+        const items = JSON.parse(navMulti);
+        const title = button.classList.contains('caller') ? 'Choose a caller:' : 'Choose a callee:';
+        showNavigationMenu(button, items, title);
+    }
+}
+
+function scrollToTargetLine() {
+    if (!window.location.hash) return;
+    const target = document.querySelector(window.location.hash);
+    if (target) {
+        target.scrollIntoView({ behavior: 'smooth', block: 'start' });
+    }
+}
+
+// ============================================================================
+// Sample Count & Intensity
+// ============================================================================
+
+function getSampleCount(line) {
+    let text;
+    if (colorMode === 'self') {
+        text = line.querySelector('.line-samples-self')?.textContent.trim().replace(/,/g, '');
+    } else {
+        text = line.querySelector('.line-samples-cumulative')?.textContent.trim().replace(/,/g, '');
+    }
+    return parseInt(text) || 0;
+}
+
+// ============================================================================
+// Scroll Minimap
+// ============================================================================
+
+function buildScrollMarker() {
+    const existing = document.getElementById('scroll_marker');
+    if (existing) existing.remove();
+
+    if (document.body.scrollHeight <= window.innerHeight) return;
+
+    const allLines = document.querySelectorAll('.code-line');
+    const lines = Array.from(allLines).filter(line => line.style.display !== 'none');
+    const markerScale = window.innerHeight / document.body.scrollHeight;
+    const lineHeight = Math.min(Math.max(3, window.innerHeight / lines.length), 10);
+    const maxSamples = Math.max(...Array.from(lines, getSampleCount));
+
+    const scrollMarker = createElement('div', '');
+    scrollMarker.id = 'scroll_marker';
+
+    let prevLine = -99, lastMark, lastTop;
+
+    lines.forEach((line, index) => {
+        const samples = getSampleCount(line);
+        if (samples === 0) return;
+
+        const lineTop = Math.floor(line.offsetTop * markerScale);
+        const lineNumber = index + 1;
+        const intensityClass = maxSamples > 0 ? (intensityToClass(samples / maxSamples) || 'cold') : 'cold';
+
+        if (lineNumber === prevLine + 1 && lastMark?.classList.contains(intensityClass)) {
+            lastMark.style.height = `${lineTop + lineHeight - lastTop}px`;
+        } else {
+            lastMark = createElement('div', `marker ${intensityClass}`);
+            lastMark.style.height = `${lineHeight}px`;
+            lastMark.style.top = `${lineTop}px`;
+            scrollMarker.appendChild(lastMark);
+            lastTop = lineTop;
+        }
+
+        prevLine = lineNumber;
+    });
+
+    document.body.appendChild(scrollMarker);
+}
+
+function applyLineColors() {
+    const lines = document.querySelectorAll('.code-line');
+    lines.forEach(line => {
+        let intensity;
+        if (colorMode === 'self') {
+            intensity = parseFloat(line.getAttribute('data-self-intensity')) || 0;
+        } else {
+            intensity = parseFloat(line.getAttribute('data-cumulative-intensity')) || 0;
+        }
+
+        const color = intensityToColor(intensity);
+        line.style.background = color;
+    });
+}
+
+// ============================================================================
+// Toggle Controls
+// ============================================================================
+
+function updateToggleUI(toggleId, isOn) {
+    const toggle = document.getElementById(toggleId);
+    if (toggle) {
+        const track = toggle.querySelector('.toggle-track');
+        const labels = toggle.querySelectorAll('.toggle-label');
+        if (isOn) {
+            track.classList.add('on');
+            labels[0].classList.remove('active');
+            labels[1].classList.add('active');
+        } else {
+            track.classList.remove('on');
+            labels[0].classList.add('active');
+            labels[1].classList.remove('active');
+        }
+    }
+}
+
+function toggleColdCode() {
+    coldCodeHidden = !coldCodeHidden;
+    applyHotFilter();
+    updateToggleUI('toggle-cold', coldCodeHidden);
+    buildScrollMarker();
+}
+
+function applyHotFilter() {
+    const lines = document.querySelectorAll('.code-line');
+
+    lines.forEach(line => {
+        const selfSamples = line.querySelector('.line-samples-self')?.textContent.trim();
+        const cumulativeSamples = line.querySelector('.line-samples-cumulative')?.textContent.trim();
+
+        let isCold;
+        if (colorMode === 'self') {
+            isCold = !selfSamples || selfSamples === '';
+        } else {
+            isCold = !cumulativeSamples || cumulativeSamples === '';
+        }
+
+        if (isCold) {
+            line.style.display = coldCodeHidden ? 'none' : 'flex';
+        } else {
+            line.style.display = 'flex';
+        }
+    });
+}
+
+function toggleColorMode() {
+    colorMode = colorMode === 'self' ? 'cumulative' : 'self';
+    applyLineColors();
+
+    updateToggleUI('toggle-color-mode', colorMode === 'cumulative');
+
+    if (coldCodeHidden) {
+        applyHotFilter();
+    }
+
+    buildScrollMarker();
+}
+
+// ============================================================================
+// Initialization
+// ============================================================================
+
+document.addEventListener('DOMContentLoaded', function() {
+    restoreUIState();
+    applyLineColors();
+
+    // Initialize navigation buttons
+    document.querySelectorAll('.nav-btn').forEach(button => {
+        button.addEventListener('click', e => handleNavigationClick(button, e));
+    });
+
+    // Initialize line number permalink handlers
+    document.querySelectorAll('.line-number').forEach(lineNum => {
+        lineNum.style.cursor = 'pointer';
+        lineNum.addEventListener('click', e => {
+            window.location.hash = `line-${e.target.textContent.trim()}`;
+        });
+    });
+
+    // Initialize toggle buttons
+    const toggleColdBtn = document.getElementById('toggle-cold');
+    if (toggleColdBtn) toggleColdBtn.addEventListener('click', toggleColdCode);
+
+    const colorModeBtn = document.getElementById('toggle-color-mode');
+    if (colorModeBtn) colorModeBtn.addEventListener('click', toggleColorMode);
+
+    // Initialize specialization view toggle (hide if no bytecode data)
+    const hasBytecode = document.querySelectorAll('.bytecode-toggle').length > 0;
+
+    const specViewBtn = document.getElementById('toggle-spec-view');
+    if (specViewBtn) {
+        if (hasBytecode) {
+            specViewBtn.addEventListener('click', toggleSpecView);
+        } else {
+            specViewBtn.style.display = 'none';
+        }
+    }
+
+    // Initialize expand-all bytecode button
+    const expandAllBtn = document.getElementById('toggle-all-bytecode');
+    if (expandAllBtn) {
+        if (hasBytecode) {
+            expandAllBtn.addEventListener('click', toggleAllBytecode);
+        } else {
+            expandAllBtn.style.display = 'none';
+        }
+    }
+
+    // Initialize span tooltips
+    initSpanTooltips();
+
+    // Build scroll marker and scroll to target
+    setTimeout(buildScrollMarker, 200);
+    setTimeout(scrollToTargetLine, 100);
+});
+
+// Close menu when clicking outside
+document.addEventListener('click', e => {
+    if (currentMenu && !currentMenu.contains(e.target) && !e.target.classList.contains('nav-btn')) {
+        closeMenu();
+    }
+});
+
+// ========================================
+// SPECIALIZATION VIEW TOGGLE
+// ========================================
+
+let specViewEnabled = false;
+
+/**
+ * Calculate heat color for given intensity (0-1)
+ * Hot spans (>30%) get warm orange, cold spans get dimmed gray
+ * @param {number} intensity - Value between 0 and 1
+ * @returns {string} rgba color string
+ */
+function calculateHeatColor(intensity) {
+    // Hot threshold: only spans with >30% of max samples get color
+    if (intensity > 0.3) {
+        // Normalize intensity above threshold to 0-1
+        const normalizedIntensity = (intensity - 0.3) / 0.7;
+        // Warm orange-red with increasing opacity for hotter spans
+        const alpha = 0.25 + normalizedIntensity * 0.35;  // 0.25 to 0.6
+        const hotColor = getComputedStyle(document.documentElement).getPropertyValue('--span-hot-base').trim();
+        return `rgba(${hotColor}, ${alpha})`;
+    } else if (intensity > 0) {
+        // Cold spans: very subtle gray, almost invisible
+        const coldColor = getComputedStyle(document.documentElement).getPropertyValue('--span-cold-base').trim();
+        return `rgba(${coldColor}, 0.1)`;
+    }
+    return 'transparent';
+}
+
+/**
+ * Apply intensity-based heat colors to source spans
+ * Hot spans get orange highlight, cold spans get dimmed
+ * @param {boolean} enable - Whether to enable or disable span coloring
+ */
+function applySpanHeatColors(enable) {
+    document.querySelectorAll('.instr-span').forEach(span => {
+        const samples = enable ? (parseInt(span.dataset.samples) || 0) : 0;
+        if (samples > 0) {
+            const intensity = samples / (parseInt(span.dataset.maxSamples) || 1);
+            span.style.backgroundColor = calculateHeatColor(intensity);
+            span.style.borderRadius = '2px';
+            span.style.padding = '0 1px';
+            span.style.cursor = 'pointer';
+        } else {
+            span.style.cssText = '';
+        }
+    });
+}
+
+// ========================================
+// SPAN TOOLTIPS
+// ========================================
+
+let activeTooltip = null;
+
+/**
+ * Create and show tooltip for a span
+ */
+function showSpanTooltip(span) {
+    hideSpanTooltip();
+
+    const samples = parseInt(span.dataset.samples) || 0;
+    const maxSamples = parseInt(span.dataset.maxSamples) || 1;
+    const pct = span.dataset.pct || '0';
+    const opcodes = span.dataset.opcodes || '';
+
+    if (samples === 0) return;
+
+    const intensity = samples / maxSamples;
+    const isHot = intensity > 0.7;
+    const isWarm = intensity > 0.3;
+    const hotnessText = isHot ? 'Hot' : isWarm ? 'Warm' : 'Cold';
+    const hotnessClass = isHot ? 'hot' : isWarm ? 'warm' : 'cold';
+
+    // Build opcodes rows - each opcode on its own row
+    let opcodesHtml = '';
+    if (opcodes) {
+        const opcodeList = opcodes.split(',').map(op => op.trim()).filter(op => op);
+        if (opcodeList.length > 0) {
+            opcodesHtml = `
+                <div class="span-tooltip-section">Opcodes:</div>
+                ${opcodeList.map(op => `<div class="span-tooltip-opcode">${op}</div>`).join('')}
+            `;
+        }
+    }
+
+    const tooltip = document.createElement('div');
+    tooltip.className = 'span-tooltip';
+    tooltip.innerHTML = `
+        <div class="span-tooltip-header ${hotnessClass}">${hotnessText}</div>
+        <div class="span-tooltip-row">
+            <span class="span-tooltip-label">Samples:</span>
+            <span class="span-tooltip-value${isHot ? ' highlight' : ''}">${samples.toLocaleString()}</span>
+        </div>
+        <div class="span-tooltip-row">
+            <span class="span-tooltip-label">% of line:</span>
+            <span class="span-tooltip-value">${pct}%</span>
+        </div>
+        ${opcodesHtml}
+    `;
+
+    document.body.appendChild(tooltip);
+    activeTooltip = tooltip;
+
+    // Position tooltip above the span
+    const rect = span.getBoundingClientRect();
+    const tooltipRect = tooltip.getBoundingClientRect();
+
+    let left = rect.left + (rect.width / 2) - (tooltipRect.width / 2);
+    let top = rect.top - tooltipRect.height - 8;
+
+    // Keep tooltip in viewport
+    if (left < 5) left = 5;
+    if (left + tooltipRect.width > window.innerWidth - 5) {
+        left = window.innerWidth - tooltipRect.width - 5;
+    }
+    if (top < 5) {
+        top = rect.bottom + 8; // Show below if no room above
+    }
+
+    tooltip.style.left = `${left + window.scrollX}px`;
+    tooltip.style.top = `${top + window.scrollY}px`;
+}
+
+/**
+ * Hide active tooltip
+ */
+function hideSpanTooltip() {
+    if (activeTooltip) {
+        activeTooltip.remove();
+        activeTooltip = null;
+    }
+}
+
+/**
+ * Initialize span tooltip handlers
+ */
+function initSpanTooltips() {
+    document.addEventListener('mouseover', (e) => {
+        const span = e.target.closest('.instr-span');
+        if (span && specViewEnabled) {
+            showSpanTooltip(span);
+        }
+    });
+
+    document.addEventListener('mouseout', (e) => {
+        const span = e.target.closest('.instr-span');
+        if (span) {
+            hideSpanTooltip();
+        }
+    });
+}
+
+function toggleSpecView() {
+    specViewEnabled = !specViewEnabled;
+    const lines = document.querySelectorAll('.code-line');
+
+    if (specViewEnabled) {
+        lines.forEach(line => {
+            const specColor = line.getAttribute('data-spec-color');
+            line.style.background = specColor || 'transparent';
+        });
+    } else {
+        applyLineColors();
+    }
+
+    applySpanHeatColors(specViewEnabled);
+    updateToggleUI('toggle-spec-view', specViewEnabled);
+
+    // Disable/enable color mode toggle based on spec view state
+    const colorModeToggle = document.getElementById('toggle-color-mode');
+    if (colorModeToggle) {
+        colorModeToggle.classList.toggle('disabled', specViewEnabled);
+    }
+
+    buildScrollMarker();
+}
+
+// ========================================
+// BYTECODE PANEL TOGGLE
+// ========================================
+
+/**
+ * Toggle bytecode panel visibility for a source line
+ * @param {HTMLElement} button - The toggle button that was clicked
+ */
+function toggleBytecode(button) {
+    const lineDiv = button.closest('.code-line');
+    const lineId = lineDiv.id;
+    const lineNum = lineId.replace('line-', '');
+    const panel = document.getElementById(`bytecode-${lineNum}`);
+
+    if (!panel) return;
+
+    const isExpanded = panel.style.display !== 'none';
+
+    if (isExpanded) {
+        panel.style.display = 'none';
+        button.classList.remove('expanded');
+        button.innerHTML = '&#9654;';  // Right arrow
+    } else {
+        if (!panel.dataset.populated) {
+            populateBytecodePanel(panel, button);
+        }
+        panel.style.display = 'block';
+        button.classList.add('expanded');
+        button.innerHTML = '&#9660;';  // Down arrow
+    }
+}
+
+/**
+ * Populate bytecode panel with instruction data
+ * @param {HTMLElement} panel - The panel element to populate
+ * @param {HTMLElement} button - The button containing the bytecode data
+ */
+function populateBytecodePanel(panel, button) {
+    const bytecodeJson = button.getAttribute('data-bytecode');
+    if (!bytecodeJson) return;
+
+    // Get line number from parent
+    const lineDiv = button.closest('.code-line');
+    const lineNum = lineDiv ? lineDiv.id.replace('line-', '') : null;
+
+    try {
+        const instructions = JSON.parse(bytecodeJson);
+        if (!instructions.length) {
+            panel.innerHTML = '<div class="bytecode-empty">No bytecode data</div>';
+            panel.dataset.populated = 'true';
+            return;
+        }
+
+        const maxSamples = Math.max(...instructions.map(i => i.samples), 1);
+
+        // Calculate specialization stats
+        const totalSamples = instructions.reduce((sum, i) => sum + i.samples, 0);
+        const specializedSamples = instructions
+            .filter(i => i.is_specialized)
+            .reduce((sum, i) => sum + i.samples, 0);
+        const specPct = totalSamples > 0 ? Math.round(100 * specializedSamples / totalSamples) : 0;
+        const specializedCount = instructions.filter(i => i.is_specialized).length;
+
+        // Determine specialization level class
+        let specClass = 'low';
+        if (specPct >= 67) specClass = 'high';
+        else if (specPct >= 33) specClass = 'medium';
+
+        // Build specialization summary
+        let html = `<div class="bytecode-spec-summary ${specClass}">
+            <span class="spec-pct">${specPct}%</span>
+            <span class="spec-label">specialized</span>
+            <span class="spec-detail">(${specializedCount}/${instructions.length} instructions, ${specializedSamples.toLocaleString()}/${totalSamples.toLocaleString()} samples)</span>
+        </div>`;
+
+        html += '<div class="bytecode-header">' +
+            '<span class="bytecode-opname">Instruction</span>' +
+            '<span class="bytecode-samples">Samples</span>' +
+            '<span>Heat</span></div>';
+
+        for (const instr of instructions) {
+            const heatPct = (instr.samples / maxSamples) * 100;
+            const isHot = heatPct > 50;
+            const specializedClass = instr.is_specialized ? ' specialized' : '';
+            const baseOpHtml = instr.is_specialized
+                ? `<span class="base-op">(${escapeHtml(instr.base_opname)})</span>` : '';
+            const badge = instr.is_specialized
+                ? '<span class="specialization-badge">SPECIALIZED</span>' : '';
+
+            // Build location data attributes for cross-referencing with source spans
+            const hasLocations = instr.locations && instr.locations.length > 0;
+            const locationData = hasLocations
+                ? `data-locations='${JSON.stringify(instr.locations)}' data-line="${lineNum}" data-opcode="${instr.opcode}"`
+                : '';
+
+            html += `<div class="bytecode-instruction" ${locationData}>
+                <span class="bytecode-opname${specializedClass}">${escapeHtml(instr.opname)}${baseOpHtml}${badge}</span>
+                <span class="bytecode-samples${isHot ? ' hot' : ''}">${instr.samples.toLocaleString()}</span>
+                <div class="bytecode-heatbar"><div class="bytecode-heatbar-fill" style="width:${heatPct}%"></div></div>
+            </div>`;
+        }
+
+        panel.innerHTML = html;
+        panel.dataset.populated = 'true';
+
+        // Add hover handlers for bytecode instructions to highlight source spans
+        panel.querySelectorAll('.bytecode-instruction[data-locations]').forEach(instrEl => {
+            instrEl.addEventListener('mouseenter', highlightSourceFromBytecode);
+            instrEl.addEventListener('mouseleave', unhighlightSourceFromBytecode);
+        });
+    } catch (e) {
+        panel.innerHTML = '<div class="bytecode-error">Error loading bytecode</div>';
+        console.error('Error parsing bytecode data:', e);
+    }
+}
+
+/**
+ * Highlight source spans when hovering over bytecode instruction
+ */
+function highlightSourceFromBytecode(e) {
+    const instrEl = e.currentTarget;
+    const lineNum = instrEl.dataset.line;
+    const locationsStr = instrEl.dataset.locations;
+
+    if (!lineNum) return;
+
+    const lineDiv = document.getElementById(`line-${lineNum}`);
+    if (!lineDiv) return;
+
+    // Parse locations and highlight matching spans by column range
+    try {
+        const locations = JSON.parse(locationsStr || '[]');
+        const spans = lineDiv.querySelectorAll('.instr-span');
+        spans.forEach(span => {
+            const spanStart = parseInt(span.dataset.colStart);
+            const spanEnd = parseInt(span.dataset.colEnd);
+            for (const loc of locations) {
+                // Match if span's range matches instruction's location
+                if (spanStart === loc.col_offset && spanEnd === loc.end_col_offset) {
+                    span.classList.add('highlight-from-bytecode');
+                    break;
+                }
+            }
+        });
+    } catch (err) {
+        console.error('Error parsing locations:', err);
+    }
+
+    // Also highlight the instruction row itself
+    instrEl.classList.add('highlight');
+}
+
+/**
+ * Remove highlighting from source spans
+ */
+function unhighlightSourceFromBytecode(e) {
+    const instrEl = e.currentTarget;
+    const lineNum = instrEl.dataset.line;
+
+    if (!lineNum) return;
+
+    const lineDiv = document.getElementById(`line-${lineNum}`);
+    if (!lineDiv) return;
+
+    const spans = lineDiv.querySelectorAll('.instr-span.highlight-from-bytecode');
+    spans.forEach(span => {
+        span.classList.remove('highlight-from-bytecode');
+    });
+
+    instrEl.classList.remove('highlight');
+}
+
+/**
+ * Escape HTML special characters
+ * @param {string} text - Text to escape
+ * @returns {string} Escaped HTML
+ */
+function escapeHtml(text) {
+    const div = document.createElement('div');
+    div.textContent = text;
+    return div.innerHTML;
+}
+
+/**
+ * Toggle all bytecode panels at once
+ */
+function toggleAllBytecode() {
+    const buttons = document.querySelectorAll('.bytecode-toggle');
+    if (buttons.length === 0) return;
+
+    const someExpanded = Array.from(buttons).some(b => b.classList.contains('expanded'));
+    const expandAllBtn = document.getElementById('toggle-all-bytecode');
+
+    buttons.forEach(button => {
+        const isExpanded = button.classList.contains('expanded');
+        if (someExpanded ? isExpanded : !isExpanded) {
+            toggleBytecode(button);
+        }
+    });
+
+    // Update the expand-all button state
+    if (expandAllBtn) {
+        expandAllBtn.classList.toggle('expanded', !someExpanded);
+    }
+}
+
+// Keyboard shortcut: 'b' toggles all bytecode panels, Enter/Space activates toggle switches
+document.addEventListener('keydown', function(e) {
+    if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
+        return;
+    }
+    if (e.key === 'b' && !e.ctrlKey && !e.altKey && !e.metaKey) {
+        toggleAllBytecode();
+    }
+    if ((e.key === 'Enter' || e.key === ' ') && e.target.classList.contains('toggle-switch')) {
+        e.preventDefault();
+        e.target.click();
+    }
+});
+
+// Handle hash changes
+window.addEventListener('hashchange', () => setTimeout(scrollToTargetLine, 50));
+
+// Rebuild scroll marker on resize
+window.addEventListener('resize', buildScrollMarker);
+
+</script>
+</body>
+</html>
index a4275835059efaa256c026139709aeb39db06ea3..f6efc5ff22a5e128e9c63cb83ac1f790dbe3ad86 100644 (file)
@@ -436,7 +436,12 @@ latex_appendices = ['glossary', 'about', 'license', 'copyright']
 
 epub_author = 'Python Documentation Authors'
 epub_publisher = 'Python Software Foundation'
-epub_exclude_files = ('index.xhtml', 'download.xhtml')
+epub_exclude_files = (
+    'index.xhtml',
+    'download.xhtml',
+    '_static/tachyon-example-flamegraph.html',
+    '_static/tachyon-example-heatmap.html',
+)
 
 # index pages are not valid xhtml
 # https://github.com/sphinx-doc/sphinx/issues/12359
index a05adf8c3da20edc28c38f754a9321eb7d2cef5b..e0e583d00500f7730d5981939fd94218e41dcebe 100644 (file)
@@ -406,12 +406,12 @@ and the base instruction.
 
 Opcode information appears in several output formats:
 
-- **Live mode**: An opcode panel shows instruction-level statistics for the
-  selected function, accessible via keyboard navigation
-- **Flame graphs**: Nodes display opcode information when available, helping
-  identify which instructions consume the most time
+- **Flame graphs**: Hovering over a frame displays a tooltip with a bytecode
+  instruction breakdown, showing which opcodes consumed time in that function
 - **Heatmap**: Expandable bytecode panels per source line show instruction
   breakdown with specialization percentages
+- **Live mode**: An opcode panel shows instruction-level statistics for the
+  selected function, accessible via keyboard navigation
 - **Gecko format**: Opcode transitions are emitted as interval markers in the
   Firefox Profiler timeline
 
@@ -679,6 +679,14 @@ deterministic profilers generate. This is the default output format::
    python -m profiling.sampling run script.py
    python -m profiling.sampling run --pstats script.py
 
+.. figure:: tachyon-pstats.png
+   :alt: Tachyon pstats terminal output
+   :align: center
+   :width: 100%
+
+   The pstats format displays profiling results in a color-coded table showing
+   function hotspots, sample counts, and timing estimates.
+
 Output appears on stdout by default::
 
    Profile Stats (Mode: wall):
@@ -780,6 +788,19 @@ an interactive flame graph visualization::
    python -m profiling.sampling run --flamegraph script.py
    python -m profiling.sampling run --flamegraph -o profile.html script.py
 
+.. figure:: tachyon-flamegraph.png
+   :alt: Tachyon interactive flame graph
+   :align: center
+   :width: 100%
+
+   The flame graph visualization shows call stacks as nested rectangles, with
+   width proportional to time spent. The sidebar displays runtime statistics,
+   GIL metrics, and hotspot functions.
+
+.. only:: html
+
+   `Try the interactive example <../_static/tachyon-example-flamegraph.html>`__!
+
 If no output file is specified, the profiler generates a filename based on
 the process ID (for example, ``flamegraph.12345.html``).
 
@@ -850,6 +871,33 @@ Firefox Profiler timeline:
 For this reason, the :option:`--mode` option is not available with Gecko format;
 all relevant data is captured automatically.
 
+.. figure:: tachyon-gecko-calltree.png
+   :alt: Firefox Profiler Call Tree view
+   :align: center
+   :width: 100%
+
+   The Call Tree view shows the complete call hierarchy with sample counts
+   and percentages. The sidebar displays detailed statistics for the
+   selected function including running time and sample distribution.
+
+.. figure:: tachyon-gecko-flamegraph.png
+   :alt: Firefox Profiler Flame Graph view
+   :align: center
+   :width: 100%
+
+   The Flame Graph visualization shows call stacks as nested rectangles.
+   Functions names are visible in the call hierarchy.
+
+.. figure:: tachyon-gecko-opcodes.png
+   :alt: Firefox Profiler Marker Chart with opcodes
+   :align: center
+   :width: 100%
+
+   The Marker Chart displays interval markers including CPU state, GIL
+   status, and opcodes. With ``--opcodes`` enabled, bytecode instructions
+   like ``BINARY_OP_ADD_FLOAT``, ``CALL_PY_EXACT_ARGS``, and
+   ``CALL_LIST_APPEND`` appear as markers showing execution over time.
+
 
 Heatmap format
 --------------
@@ -860,6 +908,15 @@ showing sample counts at the source line level::
    python -m profiling.sampling run --heatmap script.py
    python -m profiling.sampling run --heatmap -o my_heatmap script.py
 
+.. figure:: tachyon-heatmap.png
+   :alt: Tachyon heatmap visualization
+   :align: center
+   :width: 100%
+
+   The heatmap overlays sample counts directly on your source code. Lines are
+   color-coded from cool (few samples) to hot (many samples). Navigation
+   buttons (▲▼) let you jump between callers and callees.
+
 Unlike other formats that produce a single file, heatmap output creates a
 directory containing HTML files for each profiled source file. If no output
 path is specified, the directory is named ``heatmap_PID``.
@@ -886,6 +943,22 @@ The heatmap interface provides several interactive features:
 - **Dark/light theme**: toggle with preference saved across sessions
 - **Line linking**: click line numbers to create shareable URLs
 
+When opcode-level profiling is enabled with :option:`--opcodes`, each hot line
+can be expanded to show which bytecode instructions consumed time:
+
+.. figure:: tachyon-heatmap-with-opcodes.png
+   :alt: Heatmap with expanded bytecode panel
+   :align: center
+   :width: 100%
+
+   Expanding a hot line reveals the bytecode instructions executed, including
+   specialized variants. The panel shows sample counts per instruction and the
+   overall specialization percentage for the line.
+
+.. only:: html
+
+   `Try the interactive example <../_static/tachyon-example-heatmap.html>`__!
+
 Heatmaps are especially useful when you know which file contains a performance
 issue but need to identify the specific lines. Many developers prefer this
 format because it maps directly to their source code, making it easy to read
@@ -903,6 +976,14 @@ data, similar to the ``top`` command for system processes::
    python -m profiling.sampling run --live script.py
    python -m profiling.sampling attach --live 12345
 
+.. figure:: tachyon-live-mode-2.gif
+   :alt: Tachyon live mode showing all threads
+   :align: center
+   :width: 100%
+
+   Live mode displays real-time profiling statistics, showing combined
+   data from multiple threads in a multi-threaded application.
+
 The display updates continuously as new samples arrive, showing the current
 hottest functions. This mode requires the :mod:`curses` module, which is
 available on Unix-like systems but not on Windows. The terminal must be at
@@ -918,6 +999,14 @@ main table, showing instruction-level statistics for the currently selected
 function. This panel displays which bytecode instructions are executing most
 frequently, including specialized variants and their base opcodes.
 
+.. figure:: tachyon-live-mode-1.gif
+   :alt: Tachyon live mode with opcode panel
+   :align: center
+   :width: 100%
+
+   Live mode with ``--opcodes`` enabled shows an opcode panel with a bytecode
+   instruction breakdown for the selected function.
+
 
 Keyboard commands
 -----------------
diff --git a/Doc/library/tachyon-flamegraph.png b/Doc/library/tachyon-flamegraph.png
new file mode 100644 (file)
index 0000000..a17cd30
Binary files /dev/null and b/Doc/library/tachyon-flamegraph.png differ
diff --git a/Doc/library/tachyon-gecko-calltree.png b/Doc/library/tachyon-gecko-calltree.png
new file mode 100644 (file)
index 0000000..71b0969
Binary files /dev/null and b/Doc/library/tachyon-gecko-calltree.png differ
diff --git a/Doc/library/tachyon-gecko-flamegraph.png b/Doc/library/tachyon-gecko-flamegraph.png
new file mode 100644 (file)
index 0000000..d427ed8
Binary files /dev/null and b/Doc/library/tachyon-gecko-flamegraph.png differ
diff --git a/Doc/library/tachyon-gecko-opcodes.png b/Doc/library/tachyon-gecko-opcodes.png
new file mode 100644 (file)
index 0000000..9741eb6
Binary files /dev/null and b/Doc/library/tachyon-gecko-opcodes.png differ
diff --git a/Doc/library/tachyon-heatmap-with-opcodes.png b/Doc/library/tachyon-heatmap-with-opcodes.png
new file mode 100644 (file)
index 0000000..5ad67d1
Binary files /dev/null and b/Doc/library/tachyon-heatmap-with-opcodes.png differ
diff --git a/Doc/library/tachyon-heatmap.png b/Doc/library/tachyon-heatmap.png
new file mode 100644 (file)
index 0000000..47ac111
Binary files /dev/null and b/Doc/library/tachyon-heatmap.png differ
diff --git a/Doc/library/tachyon-live-mode-1.gif b/Doc/library/tachyon-live-mode-1.gif
new file mode 100644 (file)
index 0000000..2d58e80
Binary files /dev/null and b/Doc/library/tachyon-live-mode-1.gif differ
diff --git a/Doc/library/tachyon-live-mode-2.gif b/Doc/library/tachyon-live-mode-2.gif
new file mode 100644 (file)
index 0000000..bbc2163
Binary files /dev/null and b/Doc/library/tachyon-live-mode-2.gif differ
index fddeaafe7e09a5c9d486f7c7ef21c37f1ce3917b..bf0901ec9f313e0d6190da46207517927c8bfc1f 100644 (file)
Binary files a/Doc/library/tachyon-logo.png and b/Doc/library/tachyon-logo.png differ
diff --git a/Doc/library/tachyon-pstats.png b/Doc/library/tachyon-pstats.png
new file mode 100644 (file)
index 0000000..d0281ad
Binary files /dev/null and b/Doc/library/tachyon-pstats.png differ